我目前有一个关系数据库,我计划迁移到neo4j。我们已经公开了apis,它将id作为输入,如/ entity / {id} / relatedEntities等。这些ID是db生成的自动增量ID。这些API的多个客户端可能已缓存了ID,因此为了保持向后兼容性,我需要继续使用这些ID。我的问题是在我开始添加新实体后迁移到neo4j时,如何在集群环境中继续生成这些ID(我计划为neo4j设置多个JVM和主/客户端节点)?
答案 0 :(得分:1)
从Neo4j 3.0.6开始,自动生成的序列不是功能集的一部分。
您可以使用指定序列标签的属性定义序列节点,在需要新数字时锁定该节点,然后增加并生成和解锁,尽管这可能很尴尬。如果它是写操作,那应该在集群环境中工作,因为写应该在集群的主节点上执行,但是在这个领域有更多经验的其他人可以确认或否认。
另一种方法是使用UUID而不是序列。您将需要将它们作为字符串而不是整数来处理,并且您将失去基于生成的ID进行比较的能力,但APOC过程支持UUID生成,并且在数学上它们将是唯一的,并且不会有与您过去使用的前一个数字ID的任何冲突。