2012-05-09 5 views
1

Мне нужно поддерживать дерево, содержащее узлы с атрибутами, которые обычно или строками, новые атрибуты могут быть добавлены к узлу во время выполнения и т. Д. Таким образом, база данных графиков, такая как Neo4j, является очевидным решением , Но есть небольшой поворот: когда атрибут изменен, мне нужно сохранить запись его старого значения и иметь возможность эффективно запрашивать эти старые значения (в частности, такие запросы, как «дать мне 25 значений атрибута X узла Y, начиная с момента времени Z "для поддержки пейджинга и, очевидно,« получить последнюю ценность »также должно быть эффективным). Что было бы хорошим способом представить это?Сохранение и история свойств запроса с Neo4j

ответ

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 узла и каждое свойство-с-историей.