We have multiple different database instances for which we are looking into using Ignite as a local caching layer. Each db has a unique id that we are using as part of the IgniteInstanceName and for the WorkDirectory path. We are running IgniteCache in Local mode with persistence enabled, as we effectively want to completely separate the Ignite caches for each db id. However, this is not working due to the IgniteCluster being shared and the BaselineTopology concept. So a couple of questions:
1. If the cache mode is local, why does IgniteCluster even come into play? All that we want to do is to read/write from the work directory corresponding to our db id. Is there a way to get persistence without activating the IgniteCluster? 2. How do we achieve the cache isolation we are looking for? Currently, if I have db A and B, this would result in IgniteA and IgniteB in separate JVM instances, each with their own directory. If I start IgniteA, and then IgniteB, IgniteB will complain about not being part of the BaselineTopology and will not use persistence. It seems like there are two options: -Have every node join the baseline topology when it comes up (I think there is one per machine by default). This seems like it could work, but I am worried about how rebalancing would work. If all of the server nodes are using LOCAL cache mode, then would rebalancing ever occur? If it doesn't, then this seems like it would be an easy enough solution. Also, where is the cluster state stored (Members of baseline topology, etc.)? -If rebalancing does come into play even if all caches are local, then it seems like separate clusters would have to be specified when starting up. https://apacheignite.readme.io/docs/tcpip-discovery seems to provide a way to do that by making sure that TcpDiscoverySpi and TcpCommunicationSpi have different port ranges for every instance of the cluster. Again, this seems kind of like overkill if we know in advance that all of the caches will be local and will not need any of the cluster functionality. Are there any other simpler options? We are only interested in the IgniteCache functionality at a local per process level, at least for now. We might have 10-20 different caches on the same machine, and need these caches to be completely separated with no risk of any of the data being rebalanced/exposed to a different client instance. Ideally we would get persistence without having to activate IgniteCluster, but it does not seem like that is an option.
