[英]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
上运行的查询:
如果您希望更新的数量很少,并且仅保留它们作为参考,则可以使用单一关系并将旧值存储在属性(例如,映射或什至字符串)中。
如果您希望更新的次数很少,并且希望定期查询数据,则对每个更新使用新的关系是合理的。
如果weight
经常变化,而您实际上需要访问数据(即为数百万个水果收集数百万个重量值),则我不会将其存储在neo4j中。 使用带有PersonID, FruitID, weight, timestamp
或其他数据存储的简单MySQL表。 仅将最新值存储在neo4j中。
我经常使用2.和3.,即使3.听起来有些大材小用,但只要您仅通过清晰的查询“外包”结构化数据,通常实现起来就很简单。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.