Neo4j / Стратегия для сохранения истории изменений узлов

Давайте предположим график, касающийся автомобилей.
каждыйCar может развиваться со временем, и мне нужно отслеживать эти изменения.
(чтобы иметь возможность отслеживать некоторые несоответствия эволюции и т. д.)

Я думал о реализациикопирование при записи механизм (какLinkedIn кажется, что), что означает создание совершенно новогоCar узел каждый раз, когда один изCarСвойства меняются.

Я бы закончил с таким графиком:

(Ferrari)-[:CURRENT]->(V3)-[:PREVIOUS]->(V2)-[:PREVIOUS]->(V1)

Я особенно заинтересован в получении самой последней версии, чтобы она звучала хорошо.

Тем не менее, как бороться с начальнымCar UUID?

мойCarUUID (который является индексированным свойством для облегчения запросов) автоматически генерируется через библиотеку (Apache).
Я представляю, что если я сохраню один и тот же начальный UUID для каждогоCar версия, это может привести к некоторому конфликту:ПолучитьFerrari чей UUID равен 123"=> возвращает более одного результата .. 3 результата, если 3 версии.

Безопасно и эффективно генерировать новый UUID бренда для каждой версии?

Таким образом, я знаю, что в этом случае единственный способ получить конкретную версию - это пройти по соответствующей части графа до правильной и не рассчитывать на простой запрос исходного UUID; это все еще кажется очень эффективным и легким с помощью простого запроса Cypher.

Я хочу сохранить сгенерированный UUID, так как наличие потенциального «угадываемого» REST URL (с использованием UUID ресурса) не рекомендуется.
Действительно, я мог бы иметь UUID, являющийся комбинацией междуCar Модель и ее версия, но она кажется недостаточно «безопасной» с видимостью моих URL. Любой злоумышленник может легко получить старую версию, просто изменив URL.

Ответы на вопрос(1)

Ваш ответ на вопрос