【发布时间】:2015-06-12 01:17:33
【问题描述】:
我正在使用带有 py2neo 的烧瓶作为我的 Rest 服务,我有一个标签为“用户”的用户节点。
如何在 neo4j 中使用 py2neo 自动增加“用户”标签的 id?
【问题讨论】:
标签: python neo4j auto-increment py2neo
我正在使用带有 py2neo 的烧瓶作为我的 Rest 服务,我有一个标签为“用户”的用户节点。
如何在 neo4j 中使用 py2neo 自动增加“用户”标签的 id?
【问题讨论】:
标签: python neo4j auto-increment py2neo
你没有,你可能不应该。 Neo4j 已经提供了一个内部 id 字段,它是一个自动递增的整数。它不是节点的属性,但可以通过 id() 函数访问,如下所示:
MATCH (n:Person)
RETURN id(n);
因此,每当您创建任何节点时,neo4j 都会免费自动完成,而 py2neo 不会这样做。
如果您的代码需要不同类型的标识符,我建议您使用一些看似全球唯一的标识符,例如 UUID,这在 python 中很容易实现,而不是自动递增整数。
将自动递增的数字作为 ID 的问题在于,由于它们有一个模式(自动递增),人们开始依赖标识符的值,或者开始依赖对如何分配 ID 的期望.这在数据库中几乎总是一个坏主意。标识符的唯一目的是与其他所有内容不同。它没有任何意义,在某些情况下甚至不能保证不会改变。避免将任何对任何特定值或分配方案的依赖嵌入到您的代码中。
这就是我喜欢 UUID 的原因,因为它们的分配方案本质上是任意的,而且它们显然没有任何意义——所以它们不会诱使设计师对它们做任何聪明的事情。 :)
【讨论】: