gpt4 book ai didi

version-control - 如何使用 neo4j 实现修订?

转载 作者:行者123 更新时间:2023-12-04 02:05:38 24 4
gpt4 key购买 nike

我有一个对象,我需要保留对其所做的所有更改的历史记录。我将如何使用 neo4j 来实现这一点?

最佳答案

与 RDBMS 一样,它取决于您的域和数据查询要求。

您的应用程序是否需要定期访问对象的所有版本,或者通常只是访问最新版本,旧版本可通过当前版本访问?这方面的一个例子可能是维基百科上的页面。例如,假设我们有一个版本为 3 的页面。然后我们可以如下建模:

(pages)-[:PAGE]->(V3)-[:PREV]->(V2)-[:PREV]->(V1)
^ ^
| |
category current
node version of page

在这里,只能看到当前版本构成主要结构的一部分,但您可能希望允许所有版本构成该结构的一部分。在这种情况下,您可以使用关系属性来指示版本并从类别节点链接所有页面版本:
  (V1)
^
|
[:PAGE(v=1)]
|
(pages)-[:PAGE(v=2)]->(V2)
|
[:PAGE(v=3)]
|
v
(V3)

在这里,您可以通过简单地指定您感兴趣的版本来立即遍历到页面的特定版本。

第三种选择可能是您希望所有旧版本都与主结构完全分离。为此,您可以使用多个类别节点,其中一个用于 (current_pages)另一个用于 (old_pages) .由于每个页面都被新版本取代,它与前一个类别断开链接,而是链接到后者。这将形成更多的“归档”类型系统,其中旧版本甚至可以移动到单独的数据库实例中。

所以你有这三个选项,还有更多我没想到的! Neo4j 允许您通过这种设计获得极大的灵活性,并且绝对没有“正确”的答案。但是,如果这些都没有激发您的灵感,请发布有关您的域的更多信息,以便可以根据您的需求量身定制答案。

干杯,
尼日

关于version-control - 如何使用 neo4j 实现修订?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12707538/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com