2016-04-11 2 views

Antwort

5

Bei der Verwendung von Titan und abhängig vom Anwendungsfall wird das Mutieren einer Kante nicht empfohlen, da dies intern zu einem Löschen und Neuschaffen dieser Kante führt (beachten Sie, dass sich die Kanten-ID ändert). Wenn Sie das Cassandra-Backend verwenden, kann dies zu creation of tombstones führen, die Sie selbst behandeln müssen. Vermeiden Sie, Kanten zu mutieren, wenn Sie können. Eigentlich sollten Kanten als "Fakten" gesehen werden, die sich nicht ändern (daher die Unveränderlichkeit): Eine "Besuchs-Tatsache" ist passiert, also wurde eine "besuchte Kante" erstellt. Tatsachen ändern sich nicht, aber sie können durch neue Tatsachen (neue Ränder) entwertet werden.

Wenn Sie erwarten, dass die Benutzer nur wenige Besuche haben, sollten Sie eine Kante mutieren und eine count Eigenschaft inkrementieren, obwohl Sie einige der Vorteile einer Graphdatenbank verlieren (ich würde sagen, das ist eine Art von Antipattern). Wenn Sie viele Besuche erwarten, können Sie pro Besuch eine neue Kante hinzufügen (ich würde diese Route wählen), und das wäre ein perfekter Anwendungsfall für eine Diagrammdatenbank. Bei höheren Volumina und einem schnelleren Abruf der Gesamtzahl der Besuche möchten Sie möglicherweise auch die Anzahl der Besuche (Kantenanzahl) verfolgen, indem Sie eine Zählereigenschaft auf dem besuchten Eckpunkt speichern.

+2

Ich denke, das wird besser Ansatz sein. Anstatt die Zählung zu erhöhen, sollte ich die Kante selbst bei jedem neuen Besuch mit einem Zeitstempel versehen. –

3

Wenn Sie also die Mutation ausführen wollen Sie so etwas wie (vorausgesetzt, die Eigenschaft bereits erstellt wurde) tun können:

Edge edge = g.traversal().V(user1.id).outE("Label").as("found_edge").otherV().hasId(user2.id).select("found_edge").next(); 
int newValue = egde.value("count") + 1; 
edge.property("count", newValue); 
g.commit(); 

aber, wie von @jbmusso wies darauf hin, das ist sehr unvorsichtig. Grabsteine ​​werden schnell zu einem Problem und Ihr System skaliert einfach nicht.

Verwandte Themen