繁体   English   中英

neo4j中节点之间的版本控制关系

[英]Versioning relationships between nodes in neo4j

假设有两个节点A和B,

(A)-[r]-(B)

r具有一个“权重”属性,可以说是A对B的依赖性的度量。

权重值经常变化,我希望将权重值版本化。 在两个相同节点之间建立新关系,并在最后创建的关系上添加属性['valid':true]是否可行?

我问这个问题是因为有人告诉我,如果需要对属性进行版本控制,则它们绝对应该是节点:

https://twitter.com/ikwattro/status/746997161645187072

但是,两个节点A和B之间的权重属性自然属于它们之间的关系。 如何使用节点保持重量?

编辑:

示例:假设A是带有标签:FRUIT的节点,而B是带有标签:PERSON的节点,进一步,让r是两者之间的关系,带有标签:LIKING,并且r的'weight'属性是a衡量人B喜欢水果A的程度。

r的weight属性不断变化,并且需要随时间对该版本进行版本控制。

我认为这取决于两件事: weight更新的频率以及将在版本weights上运行的查询:

  1. 如果您希望更新的数量很少,并且仅保留它们作为参考,则可以使用单一关系并将旧值存储在属性(例如,映射或什至字符串)中。

  2. 如果您希望更新的次数很少,并且希望定期查询数据,则对每个更新使用新的关系是合理的。

  3. 如果weight经常变化,而您实际上需要访问数据(即为数百万个水果收集数百万个重量值),则我不会将其存储在neo4j中。 使用带有PersonID, FruitID, weight, timestamp或其他数据存储的简单MySQL表。 仅将最新值存储在neo4j中。

我经常使用2.和3.,即使3.听起来有些大材小用,但只要您仅通过清晰的查询“外包”结构化数据,通常实现起来就很简单。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM