如何分区单个Neo4j数据库?

Zub*_*air 5 neo4j

是否可以对一个Neo4j数据库进行划分,以便在一个数据库中有多个起点,以便可以隔离所有查询,而不是拥有多个数据库?

我已经考虑过这个问题,我认为它可以达到一定程度,但是一旦使用像标签这样的东西,那么这个想法将无法工作,因为标签查询将始终跨越整个数据库.

无论如何,我想知道是否有人成功完成了这项工作以及他们是如何做到的.

Ken*_*ani 5

你所描述的听起来像多租户.Neo4j 2.0.1目前不支持多租户作为功能.在Neo4j数据库实例中实现多租户架构有各种方法和策略.

您可以按标签对属性图的集合进行分区.由于节点可以有多个标签,因此您可以使用该分区的唯一标识标签标记一个分区.

请参阅此处标签上的文档:http://docs.neo4j.org/chunked/milestone/graphdb-neo4j-labels.html

此策略需要注意的是确保所有Cypher调用都包含标签的分区标识符,以确保两个分区在图中彼此隔离.确保来自一个分区的关系不会跨越到另一个分区非常重要.

例如,分区1可以是标签Partition1.假设您的应用程序上下文正在运行Partition1:

MERGE (user:User:Partition1 { name: 'Peter' })
RETURN user
Run Code Online (Sandbox Code Playgroud)

假设您的应用程序上下文正在运行Partition2:

MERGE (user:User:Partition2 { name: 'Peter' })
RETURN user
Run Code Online (Sandbox Code Playgroud)

执行这两个查询时,会为Partition1和创建两个单独的Peters Partition2.

您只需要确保应用程序运行的分区标签将其标签附加到每个查询.虽然这很乏味,但目前建议采用多租户方式.