Hello,
- In a development environment I want to have a test-mode database and a development-mode database on a single machine. Unit and functional tests are run against the test-mode database so that data in the development-mode database (which mimics production-mode) is not disturbed. This is fairly common in, for example, Ruby on Rails development environments. Right now, I'm forced to install two Neo4j server instances each running on different ports and manage separate configurations for those instances.
- In a production environment, I want to have separate graph DBs for unrelated data. For example, I might want to have one graph DB for application data and another one for "administrative data" such as session information, statistics, etc. The data is unrelated and I will never construct a query across these separate graph DBs.
- Multi-tenancy. I'm hosting data from several different users or applications that is unrelated. Again, I will never construct a query across these graph DBs.
I'm sure there are more use-cases. I know that the above can be simulated using Tinkerpop partitions, however I don't want to add yet another component into the mix. Custom Node/Relationships properties or labels (in 1.9) could be used, but this forces me to write a persistence layer to manage this.
So really the best solution would be to have the Neo4j server manage these namespaces including making the Neo4j console and Monitoring/Management Web interface "namespace aware" as well as making these namespaces addressable via the REST API. This is fairly common in RDBMSes. You typically don't install multiple instances of the DB server. You define multiple schemas, databases, or table spaces all managed by a single DB server instance.
Thanks.
-brian