Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/tfs/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
是使用Neo4j';s的内部ID仍然不推荐?_Neo4j - Fatal编程技术网

是使用Neo4j';s的内部ID仍然不推荐?

是使用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本质上是指

我计划在我当前的项目中使用Neo4j(RESTAPI)。我已经读到不鼓励使用Neo4j的ID,因为该ID可以在重新启动时重新使用以进行优化。然而,这些线程可以追溯到2012年。在Neo4j的官方GitHub页面上,他们似乎承诺为Neo4j 2.x解决这个问题(早在2013年)。现在是2016年,Neo4j的版本是3.0


所以我的问题是:有什么变化吗?在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缓存),所以我不得不放弃它。我能问一下为什么它被否决吗?