是否可以将一个 Neo4j 数据库进行划分,使一个数据库中有多个起点,从而可以隔离所有查询,而不是拥有多个数据库?
我已经考虑过这一点,并且我认为它在一定程度上可以发挥作用,但是一旦使用了标签之类的东西,那么这个想法就行不通了,因为标签查询将始终跨越整个数据库。
无论如何,我想知道是否有人成功地做到了这一点以及他们是如何做到的。
您所描述的听起来像是多租户。 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
假设您的应用程序上下文正在运行Partition2
:
MERGE (user:User:Partition2 { name: 'Peter' })
RETURN user
执行这两个查询时,会创建两个单独的 PetersPartition1
and Partition2
.
您只需要确保您的应用程序正在操作的分区标签将其标签附加到您的每个查询中。虽然这很乏味,但这是目前建议的多租户方式。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)