假设有两个节点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的权重属性不断变化,需要随时间对此属性进行版本化。
答案 0 :(得分:2)
我认为这取决于两件事:weight
更新的频率以及您将在版本化weights
上运行的查询:
如果您希望进行少量更新,并且仅保留它们以供参考,则可以使用单个关系并将旧值存储在属性中(例如地图甚至字符串)。
如果您希望进行少量更新,并且想要定期查询数据,则为每次更新使用新关系是合理的。
如果weight
频繁更改并且您确实需要访问数据(即为数百万个水果收集数百万的重量值),我不会将其存储在neo4j中。使用带有PersonID, FruitID, weight, timestamp
的简单MySQL表或其他一些数据存储。仅在neo4j中存储最新值。
我同时使用2.和3.很多,即使3.听起来有点过头,只要你只是通过明确的查询“外包”结构化数据,它通常很容易实现。