是使用Neo4j';s的内部ID仍然不推荐?
我计划在我当前的项目中使用Neo4j(RESTAPI)。我已经读到不鼓励使用Neo4j的ID,因为该ID可以在重新启动时重新使用以进行优化。然而,这些线程可以追溯到2012年。在Neo4j的官方GitHub页面上,他们似乎承诺为Neo4j 2.x解决这个问题(早在2013年)。现在是2016年,Neo4j的版本是3.0是使用Neo4j';s的内部ID仍然不推荐?,neo4j,Neo4j,我计划在我当前的项目中使用Neo4j(RESTAPI)。我已经读到不鼓励使用Neo4j的ID,因为该ID可以在重新启动时重新使用以进行优化。然而,这些线程可以追溯到2012年。在Neo4j的官方GitHub页面上,他们似乎承诺为Neo4j 2.x解决这个问题(早在2013年)。现在是2016年,Neo4j的版本是3.0 所以我的问题是:有什么变化吗?在API中公开ID是否仍然不安全?还是我们仍然坚持使用UUID来保证唯一性?Neo4j内部ID不应用于引用外部系统中的节点或关系。这些ID本质上是指
所以我的问题是:有什么变化吗?在API中公开ID是否仍然不安全?还是我们仍然坚持使用UUID来保证唯一性?Neo4j内部ID不应用于引用外部系统中的节点或关系。这些ID本质上是指向文件存储中某个位置以引用节点或关系的偏移量 正如您所指出的,当数据被删除时,可以回收文件存储中的空白空间,这意味着可以回收内部ID 如果您在外部系统中引用节点/关系,一种常见的方法是生成UUID并将其作为属性存储在节点上(使用索引以便高效地查找节点) 在Neo4j 3.x中,有一个用于从Cypher生成UUID的函数。例如:
CREATE (p:Person)
SET p.name = "Will",
p.uuid = apoc.create.uuid()
另外,请查看哪些将为您生成uuid,并确保没有人可以更改或删除它们,而无需更改您的查询。我以前曾尝试在Spring Data neo4j和存储库接口设置中使用neo4j uuid。我在创建实体时遇到了uuid为null的问题(很可能是由于ORM缓存),所以我不得不放弃它。我能问一下为什么它被否决吗?