Erstellen von effizienten Multi-Thread-Gremlin-Schreibvorgängen - Amazon Neptune

Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.

Erstellen von effizienten Multi-Thread-Gremlin-Schreibvorgängen

Es gibt einige Richtlinien für das Multi-Thread-Laden von Daten in Neptune mithilfe von Gremlin.

Weisen Sie nach Möglichkeit jedem Thread eine Reihe von Vertices und/oder Edges zum Einfügen oder Ändern zu, die nicht kollidieren. Beispiel: Thread 1 adressiert den ID-Bereich 1–50 000, Thread 2 adressiert den ID-Bereich 50 001–100 000 und so weiter. Dadurch verringert sich das Risiko, eine ConcurrentModificationException zu erhalten. Um sicher zu gehen, sollten Sie alle Schreibvorgänge mit einem try/catch-Block umgeben. Wenn einer der Blöcke fehlschlägt, können Sie es nach einer kurzen Verzögerung erneut versuchen.

Stapelverarbeitungs-Schreibvorgänge in einer Stapelgröße zwischen 50 und 100 (Vertices oder Edges) funktionieren im Allgemeinen gut. Wenn zahlreiche Eigenschaften für jeden Vertex hinzugefügt werden, ist eine Zahl näher an 50 als an 100 möglicherweise die bessere Wahl. Es lohnt sich, etwas zu experimentieren. Für gestapelte Schreibvorgänge können Sie etwas verwenden, das in etwa wie folgt aussieht:

g.addV(‘test’).property(id,’1’).as(‘a’). addV(‘test’).property(id,’2’). addE(‘friend’).to(‘a’).

Dies wird dann in jeder Stapeloperation wiederholt.

Das Verwenden von Stapeln ist deutlich effizienter als das Hinzufügen von einem Vertex oder einer Edge pro Gremlin-Umlaufzeit zum Server.

Wenn Sie einen Gremlin Language Variant (GLV) -Client verwenden, können Sie einen Batch programmgesteuert erstellen, indem Sie zuerst einen Traversal erstellen. Erweitern Sie ihn dann und durchlaufen Sie ihn schließlich, z. B.:

t.addV(‘test’).property(id,’1’).as(‘a’) t.addV(‘test’).property(id,’2’) t.addE(‘friend’).to(‘a’) t.iterate()

Es wird empfohlen, nach Möglichkeit den Gremlin Language Variant-Client zu verwenden. Sie können aber auch ähnlich mit einem Client verfahren, der Abfragen als Textzeichenfolgen übermittelt, indem Sie einen Stapel durch Verketten von Zeichenfolgen erstellen.

Wenn Sie eine der Gremlin-Client-Bibliotheken anstelle von Basic HTTP für Abfragen verwenden, sollten sich die Threads alle denselben Client, Cluster oder Verbindungspool teilen. Möglicherweise müssen Sie die Einstellungen optimieren, um den bestmöglichen Durchsatz zu erhalten. Dazu gehören Einstellungen wie die Größe des Verbindungspools und die Anzahl der Worker-Threads, die der Gremlin-Client verwendet.