使用Neo4j存储和查询属性历史记录

时间:2012-05-09 20:17:20

标签: graph neo4j graph-databases

我需要维护一个树,其中包含通常具有属性的节点或字符串,可以在运行时将新属性添加到节点等。因此像Neo4j这样的图形数据库是一个明显的解决方案。但是有一点点扭曲:当一个属性被改变时,我需要保留其旧值的记录,并能够有效地查询这些旧值(特别是像“给我25个节点属性X的值的查询” Y,从时间Z“开始支持分页,显然”获得最新值“也需要高效。什么是代表这个的好方法?

1 个答案:

答案 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