0
说我有一个庞大的用户和其他类型的节点图。每种类型都有一个标签,有些可能有多个标签。由于我正在定义用户及其对节点的访问,因此用户和节点之间存在一种关系类型:CAN_ACCESS
。在其他对象之间,存在不同的关系类型,但是出于访问控制的目的,当我们从用户开始时,每件事都涉及CAN_ACCESS
关系。Neo4j标签,关系类型和密码匹配性能
我从来没有使用标签来执行匹配,所以我的意图和希望是,通过匹配标签来排除我的User
节点中存在一个严重使用关系类型的性能缺点。显然,这场比赛可能会变得凌乱:
MATCH (n:`User`)-[r1:`CAN_ACCESS`]->(n2)
但我永远不会那样做。我应该这样做:
MATCH (n:`User`)-[r1:`CAN_ACCESS`]->(n2:`LabelX`)
我的问题,则是本场比赛的目标端标签的用法是否实际上等同于具有User
和任何给定的标签之间的专用关系类型。换句话说,这是否:
MATCH (n:`User`)-[r1:`CAN_ACCESS`]->(n2:`LabelX`)
给我相同的性能,这一点:
MATCH (n:`User`)-[r1:`CAN_ACCESS_LABEL_X`]->(n2)
如果CAN_ACCESS_LABEL_X
总是去(N:`User`) - >(N:`LabelX`) ?
马克刚刚写了一篇关于此的好博客文章,表现并不完全一样,但足够好:http://www.markhneedham.com/blog/2014/09/30/neo4j-genericvague-relationship-names/ – 2014-10-03 22:30:47
哇!这确实是一个很好的时机。我开始研究基于此的应用程序代码,并在此过程中发现了Neo4j.rb中的一个错误。谢谢! – subvertallchris 2014-10-04 13:57:08