Neo4j / Strategie zur Aufzeichnung von Knotenänderungen

Nehmen wir ein Diagramm an, das sich mit Autos befasst.
JederCar kann sich im Laufe der Zeit weiterentwickeln, und ich muss diese Änderungen im Auge behalten.
(um einige Inkonsistenzen der Evolution usw. nachverfolgen zu können ...)

Ich dachte über die Implementierung einescopy-on-write Mechanismus (wieLinkedIn scheint zu tun), was bedeutet, eine völlig neue zu schaffenCar Knoten jedes Mal, wenn einer derCarDie Eigenschaften von ändern sich.

Am Ende hätte ich ein Diagramm wie das folgende:

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

Ich bin speziell daran interessiert, die aktuellste Version abzurufen, es würde also gut klingen.

Wie aber mit der Initiale umzugehen istCar UUID?

MeineCarDie UUID von (eine indizierte Eigenschaft zur Vereinfachung von Abfragen) wird automatisch über eine Bibliothek (Apache) generiert.
Ich stelle mir das vor, wenn ich für jede die gleiche initiale UUID behalteCar Version kann dies zu einem Konflikt führen: "Holen Sie sich dieFerrari deren UUID ist 123"=> Rückgabe von mehr als einem Ergebnis. 3 Ergebnisse bei 3 Versionen.

Ist es sicher und effizient, für jede Version eine neue Marken-UUID zu generieren?

Daher ist mir bewusst, dass in diesem Fall die einzige Möglichkeit zum Abrufen einer bestimmten Version darin besteht, den betreffenden Teil des Diagramms bis zur richtigen zu durchlaufen und nicht mit einer einfachen Abfrage der anfänglichen UUID zu rechnen. das scheint immer noch sehr effizient und einfach mit einer einfachen Cypher-Abfrage.

Ich möchte eine generierte UUID beibehalten, da eine mögliche "erratbare" REST-URL (unter Verwendung der UUID der Ressource) nicht ratsam ist.
In der Tat könnte ich eine UUID haben, die die Kombination zwischen derCar Modell und seine Version, aber es scheint nicht genug "sicher" mit einer Sichtbarkeit auf meinen URLs. Jede böswillige Person könnte es leicht schaffen, eine ältere Version abzurufen, indem sie nur die URL ändert.

Antworten auf die Frage(1)

Ihre Antwort auf die Frage