Soweit ich es verstehe die IDs von Neo4j (ID(node)
) sind instabil und verhalten sich etwas wie Zeilennummern in SQL. Da IDs meist für Relationen in SQL verwendet werden und diese in Neo4j leicht modelliert werden, scheint IDS wenig nützlich zu sein, aber wie lösen Sie dann den Abruf bestimmter Knoten? Eine REST-API zu haben, die für jeden Knoten eindeutige Routen haben sollte (z. B. /api/concept/23
), scheint ein ziemlich Standardfall für Web-Anwendungen zu sein. Aber obwohl es so grundlegend, der einzig gangbare Weg zu sein, ich wäre entweder überAuto-Inkrement-Eigenschaft in Neo4j
- Sprache
- als unverbundenen Knoten spezifische Rahmenbedingungen gefunden, die die einzelnen Schritte unterhalten:
// get unique id
MERGE (id:UniqueId{name:'Person'})
ON CREATE SET id.count = 1
ON MATCH SET id.count = id.count + 1
WITH id.count AS uid
// create Person node
CREATE (p:Person{id:uid,firstName:'Gabriel',lastName:'Smith'})
RETURN p AS person
Quelle:http://www.neo4j.org/graphgist?8012859
Gibt es wirklich keinen einfacheren Weg und wenn nicht, ich Gibt es einen besonderen Grund dafür? Ist mein Ansatz ein Anti-Pattern im Kontext von Neo4j?
Dies beantwortet die Frage nicht. Autoinkrement-IDs können verwendet werden, um Objekte in der Reihenfolge der Erstellung zu sortieren, was mit UUIDs –
nicht möglich ist. Welchen Teil der Frage beantwortet Ihr Kommentar? –
Ich glaube, das Hinzufügen eines Unix-Zeitstempels oder irgendeines Datums-Zeit-Präfixes zu der zufälligen eindeutigen Zeichenkette würde das Sortierproblem beheben. – Guy