Nig*_*all 11
与RDBMS一样,它取决于您的域和数据查询要求.
您的应用程序是否需要定期访问该对象的所有版本,或者通常仅访问最新版本,而旧版本是否可通过当前版本获得?这方面的一个例子可能是维基百科上的页面.例如,假设我们有一个版本3的页面.我们可以按如下方式对其进行建模:
(pages)-[:PAGE]->(V3)-[:PREV]->(V2)-[:PREV]->(V1)
^ ^
| |
category current
node version of page
Run Code Online (Sandbox Code Playgroud)
在这里,只能看到当前版本构成主结构的一部分,但您可能希望允许所有版本构成该结构的一部分.在这种情况下,您可以使用关系属性来指示版本,并从类别节点链接所有页面版本:
(V1)
^
|
[:PAGE(v=1)]
|
(pages)-[:PAGE(v=2)]->(V2)
|
[:PAGE(v=3)]
|
v
(V3)
Run Code Online (Sandbox Code Playgroud)
在这里,您只需指定您感兴趣的版本,即可立即遍历到特定版本的页面.
第三种选择可能是您希望所有旧版本与主结构完全分离.为此,您可以使用多个类别节点,一个用于(current_pages),另一个用于(old_pages).由于每个页面都被新版本取代,因此它与前一个类别取消链接,而是与后者相关联.这将形成更多的"归档"类型的系统,其中旧版本甚至可以移动到单独的数据库实例中.
所以你有这三个选项,加上我没有想到的更多选项!Neo4j通过这种设计为您提供了极大的灵活性,绝对没有"正确"的答案.如果这些都不能激发您的兴趣,请发布有关您的域名的更多信息,以便能够根据您的需求量身定制答案.
干杯,尼日
| 归档时间: |
|
| 查看次数: |
2846 次 |
| 最近记录: |