Neo4j / Стратегия для сохранения истории изменений узлов
Давайте предположим график, касающийся автомобилей.
каждыйCar
может развиваться со временем, и мне нужно отслеживать эти изменения.
(чтобы иметь возможность отслеживать некоторые несоответствия эволюции и т. д.)
Я думал о реализациикопирование при записи механизм (какLinkedIn кажется, что), что означает создание совершенно новогоCar
узел каждый раз, когда один изCar
Свойства меняются.
Я бы закончил с таким графиком:
(Ferrari)-[:CURRENT]->(V3)-[:PREVIOUS]->(V2)-[:PREVIOUS]->(V1)
Я особенно заинтересован в получении самой последней версии, чтобы она звучала хорошо.
Тем не менее, как бороться с начальнымCar
UUID?
мойCar
UUID (который является индексированным свойством для облегчения запросов) автоматически генерируется через библиотеку (Apache).
Я представляю, что если я сохраню один и тот же начальный UUID для каждогоCar
версия, это может привести к некоторому конфликту:ПолучитьFerrari
чей UUID равен 123"=> возвращает более одного результата .. 3 результата, если 3 версии.
Безопасно и эффективно генерировать новый UUID бренда для каждой версии?
Таким образом, я знаю, что в этом случае единственный способ получить конкретную версию - это пройти по соответствующей части графа до правильной и не рассчитывать на простой запрос исходного UUID; это все еще кажется очень эффективным и легким с помощью простого запроса Cypher.
Я хочу сохранить сгенерированный UUID, так как наличие потенциального «угадываемого» REST URL (с использованием UUID ресурса) не рекомендуется.
Действительно, я мог бы иметь UUID, являющийся комбинацией междуCar
Модель и ее версия, но она кажется недостаточно «безопасной» с видимостью моих URL. Любой злоумышленник может легко получить старую версию, просто изменив URL.