Graph 使用Neo4j存储和查询属性历史记录
我需要维护一个树,其中包含属性通常为或字符串的节点,可以在运行时向节点添加新属性,等等。因此,像Neo4j这样的图形数据库是一个明显的解决方案。但有一个小小的变化:当一个属性被更改时,我需要保留其旧值的记录,并且能够高效地查询这些旧值(特别是像“从时间Z开始,为节点Y的属性X提供25个值”这样的查询,以支持分页,显然,“获取最新值”也需要高效)。有什么好的方式来表达这一点呢?几乎满足了我的需求,除了限制点击次数。但是从Graph 使用Neo4j存储和查询属性历史记录,graph,neo4j,graph-databases,Graph,Neo4j,Graph Databases,我需要维护一个树,其中包含属性通常为或字符串的节点,可以在运行时向节点添加新属性,等等。因此,像Neo4j这样的图形数据库是一个明显的解决方案。但有一个小小的变化:当一个属性被更改时,我需要保留其旧值的记录,并且能够高效地查询这些旧值(特别是像“从时间Z开始,为节点Y的属性X提供25个值”这样的查询,以支持分页,显然,“获取最新值”也需要高效)。有什么好的方式来表达这一点呢?几乎满足了我的需求,除了限制点击次数。但是从IndexHits的JavaDoc来看,如果我迭代尽可能多的内容,然后关闭迭代
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
。几乎满足了我的需要,除了限制点击次数。但是从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