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

时间:2016-06-27 05:16:12

标签: neo4j graph-databases

假设有两个节点A和B,

(A)-[r]-(B)

r有一个属性' weight',这是A对B的依赖程度的衡量标准,让我们说。

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

我问这个问题,因为我被告知如果我需要对属性进行版本控制,它们肯定应该是节点:

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

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

编辑:

一个例子: 设A是标签为FRUIT的节点,B为标签:PERSON的节点 让r成为两者之间的关系,标签为:LIKING,' weight' r的属性是衡量B人喜欢水果A的程度。

r的权重属性不断变化,需要随时间对此属性进行版本化。

1 个答案:

答案 0 :(得分:2)

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

  1. 如果您希望进行少量更新,并且仅保留它们以供参考,则可以使用单个关系并将旧值存储在属性中(例如地图甚至字符串)。

  2. 如果您希望进行少量更新,并且想要定期查询数据,则为每次更新使用新关系是合理的。

  3. 如果weight频繁更改并且您确实需要访问数据(即为数百万个水果收集数百万的重量值),我不会将其存储在neo4j中。使用带有PersonID, FruitID, weight, timestamp的简单MySQL表或其他一些数据存储。仅在neo4j中存储最新值。

  4. 我同时使用2.和3.很多,即使3.听起来有点过头,只要你只是通过明确的查询“外包”结构化数据,它通常很容易实现。