Мне нужно поддерживать дерево, содержащее узлы с атрибутами, которые обычно или строками, новые атрибуты могут быть добавлены к узлу во время выполнения и т. Д. Таким образом, база данных графиков, такая как Neo4j, является очевидным решением , Но есть небольшой поворот: когда атрибут изменен, мне нужно сохранить запись его старого значения и иметь возможность эффективно запрашивать эти старые значения (в частности, такие запросы, как «дать мне 25 значений атрибута X узла Y, начиная с момента времени Z "для поддержки пейджинга и, очевидно,« получить последнюю ценность »также должно быть эффективным). Что было бы хорошим способом представить это?Сохранение и история свойств запроса с Neo4j
1
A
ответ
1
TimelineIndex
почти дает то, что мне нужно, за исключением предельного количества ударов. Но из JavaDoc IndexHits
кажется, что это не должно иметь большого значения, если я перебираю столько, сколько мне нужно, а затем закрываю итератор.
Итак, решение выглядит так: представляйте каждое свойство, для которого мне нужна история как узел; поэтому вместо
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
узла и каждое свойство-с-историей.