快速访问 Neo4j 中的节点

Fast access to nodes in Neo4j

我有一种方法可以创建包含节点和关系 yadda 的图表。我想 return 向我的调用方发送一个节点 ID 列表,以便稍后的步骤可以快速定位这些节点并创建其他关系。我将无法 return Node 实例。

在 SQL 世界中,我可以 return 主键或唯一键。在 neo4j 的世界里,我 return 做什么?有没有我可以使用的唯一节点标识符,而不会让自己陷入地狱的第 7 层?我自己做身份证吗?由于我沉浸在 SQL 中,我在学习 Neo4J 方式时遇到了麻烦。

Neo4j 中的每个节点(和关系)都有一个 ID,从技术上讲,它是相应数据存储文件中的偏移指针。您需要注意,删除某些节点并创建新节点可能会导致新节点具有以前使用的节点的 ID(因为它们会重用文件中的空闲区域)。

如果您确定没有删除图中的任何内容,您可以安全地使用内部节点 ID,例如通过 MATCH (n) RETURN id(n) limit 5。如果您确实使用节点 ID 删除了图表中的内容,那么这是通往地狱 7 级的一种方式:-)

一种更安全的方法是为要引用的节点分配一个人工标识符,例如一个uuid,把它放在索引中。有一些工具可用于此,例如https://github.com/graphaware/neo4j-uuid