我需要维护一个树,其中包含通常具有属性的节点或字符串,可以在运行时将新属性添加到节点等。因此像Neo4j这样的图形数据库是一个明显的解决方案。但是有一点点扭曲:当一个属性被改变时,我需要保留其旧值的记录,并能够有效地查询这些旧值(特别是像“给我25个节点属性X的值的查询” Y,从时间Z“开始支持分页,显然”获得最新值“也需要高效。什么是代表这个的好方法?
答案 0 :(得分:1)
TimelineIndex
几乎可以提供我需要的东西。但是从IndexHits
的JavaDoc来看,如果我按需要迭代多次然后关闭迭代器,那似乎不应该太重要。
所以解决方案看起来像这样:代表我需要历史作为节点的每个属性;所以而不是
Sensor
-----
name = "battery"
measurement = 1
我有
Sensor attr
----- -+--> name = "measurement"
name = "battery" | value = 1
| timestamp = 100000000
|
+--> name = "measurement"
| value = 2
| timestamp = 100000001
|
+--> name = "measurement"
value = 1
timestamp = 100000002
然后我为每个TimelineIndex
节点和每个属性 - 历史记录保留Sensor
。