How to partition a single Neo4j database?

前端 未结 1 1035
难免孤独
难免孤独 2021-01-18 20:22

Can one Neo4j database be divided up so that there are multiple starting points in one database so that all queries can be isolated, instead of having multiple databases?

相关标签:
1条回答
  • 2021-01-18 21:01

    What you are describing sounds like multitenancy. Neo4j 2.0.1 does not at this time support multitenancy as a feature. There are various methods and strategies for implementing a multitenant architecture within your Neo4j database instance.

    You can partition sets of your property graph by label. Since nodes can have multiple labels, you can label one partition with a unique identifying label for that partition.

    Please refer to documentation on labels here: http://docs.neo4j.org/chunked/milestone/graphdb-neo4j-labels.html

    Things to note with this strategy are to ensure that all your Cypher calls contain the partition identifier for the label, to ensure that the two partitions are isolated from one another within the graph. It's important to ensure that relationships from one partition do not span into another partition.

    For example, partition 1 could be the label Partition1. Assuming your application context is operating on Partition1:

    MERGE (user:User:Partition1 { name: 'Peter' })
    RETURN user
    

    Assuming your application context is operating on Partition2:

    MERGE (user:User:Partition2 { name: 'Peter' })
    RETURN user
    

    When executing these two queries, two separate Peters are created for Partition1 and Partition2.

    You'll just need to ensure that the partition label your application is operating on appends its label to each one of your queries. While this is tedious, it is the suggested way to go about multitenancy at this time.

    0 讨论(0)
提交回复
热议问题