【问题标题】:Neo4j internal ID reusing and dbms.ids.reuse.types.override propertyNeo4j 内部 ID 重用和 dbms.ids.reuse.types.override 属性
【发布时间】:2017-05-24 12:25:23
【问题描述】:

There is a well know issue with internal Neo4j ID usage:

...一般不建议使用内部 Neo4j 节点 ID。 这主要是因为如果一个节点被删除,它原来的内部 ID 可能会被回收/重复使用

Neo4j 可以重复使用这些 ID,因此在这种情况下我们不能依赖这种机制。

前段时间 Neo4j 引入了一个新属性——dbms.ids.reuse.types.override

应重用的 id 类型的指定名称(逗号分隔)。 目前仅支持“节点”和“关系”类型。

看起来在这个属性的帮助下,我们可以禁用 ID 重用。这是正确的吗 ?如果是这样,在这种情况下使用内部 Neo4j ID 是否安全?另外,它是在 Neo4j 社区版中支持还是仅在 Neo4j 企业版中支持?

【问题讨论】:

    标签: neo4j


    【解决方案1】:

    如果我没看错,该设置的作用与您想要使用它的目的完全相反。这是一个企业版设置,可以更轻松地回收空间。您所指的帖子中的答案仍然是 100% 有效的。不要引用内部 ID。如果您需要引用,请使用唯一约束并在无法使用任何属性时生成 UUID。

    希望这会有所帮助, 汤姆

    【讨论】:

    • 是的,完全正确..但是如何从该属性值中删除 NODERELATIONSHIP 或两者以排除应该重用的类型?
    • 是的,我明白这就是你的意思:-)。它会带来各种惩罚(例如,如果您的删除和插入率很高,您的数据库文件会严重增长)。这就是您希望在 EE 中“开启”的原因。此外,(版本)迁移/升级仍然不能保证保持 ID 完整。没有什么可以保证......我认为这就是重点(也在youtube.com/watch?v=X786c-SbW6w中提出)。
    • 谢谢。很抱歉下一个问题,但这是您的假设还是我可以信任的信息?
    • 我现在正在查看有关此(并从中引用)的 Neo4j 内部文档。另外……视频中的那个人是他所谈论主题的权威。所以不要只从我这里拿走。
    • 谢谢。这真的很糟糕,因为我无法切换到 GUID,而且看起来 Neo4j 中没有用于生成序列值的选项
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-04-21
    • 1970-01-01
    • 2014-03-11
    • 1970-01-01
    • 1970-01-01
    • 2012-08-01
    • 1970-01-01
    相关资源
    最近更新 更多