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.
Sie können Gremlin-Sitzungen mit impliziten Transaktionen in Amazon Neptune verwenden. Informationen zu Gremlin-Sitzungen finden Sie unter Considering Sessions
Anmerkung
Dieses Feature ist ab Neptune-Engine-Version 1.0.1.0.200463.0 verfügbar.
Ab der Neptune-Engine-Version 1.1.1.0 und TinkerPop Version 3.5.2 können Sie auch verwenden. Gremline-Transaktionen
Wichtig
Zurzeit kann Neptune eine skriptbasierte Sitzung maximal 10 Minuten geöffnet lassen. Wenn Sie eine Sitzung nicht eher schließen, findet eine Zeitüberschreitung der Sitzung statt und alle ihre Einstellungen werden zurückgesetzt.
Gremlin-Sitzungen in der Gremlin-Konsole
Wenn Sie eine Remote-Verbindung auf der Gremlin-Konsole ohne den session
-Parameter erstellen, wird die Remote-Verbindung im sitzungslosen Modus erstellt. In diesem Modus wird jede Anforderung, die an den Server gesendet wird, als eine vollständige Transaktion an sich behandelt, und zwischen den Anforderungen wird kein Status gespeichert. Wenn eine Anforderung fehlschlägt, wird nur die betreffende Anforderung zurückgesetzt.
Wenn Sie eine Remote-Verbindung mit dem session
-Parameter erstellen, dann erstellen Sie eine skriptbasierte Sitzung, die solange dauert, bis Sie die Remote-Verbindung beenden. Jede Sitzung wird durch eine eindeutige UUID identifiziert, die die Konsole generiert und an Sie zurückgibt.
Es folgt ein Beispiel für einen Konsolenaufruf, der eine Sitzung erstellt. Nachdem Abfragen übermittelt wurden, schließt ein anderer Aufruf die Sitzung und führt ein Commit für die Abfragen durch.
Anmerkung
Der Gremlin-Client muss immer geschlossen sein, um serverseitige Ressourcen freigeben zu können.
gremlin> :remote connect tinkerpop.server conf/neptune-remote.yaml session
. . .
. . .
gremlin> :remote close
Weitere Informationen und Beispiele finden Sie in der Dokumentation unter Sessions
Alle Abfragen, die Sie während einer Sitzung ausführen, bilden eine einzelne Transaktion, für die erst ein Commit durchgeführt wird, wenn alle Abfragen erfolgreich sind und Sie die Remote-Verbindung schließen. Wenn eine Abfrage fehlschlägt oder wenn Sie die Verbindung nicht innerhalb der von Neptune maximal unterstützten Sitzungszeit schließen, wird kein Commit der Sitzungstransaktion durchgeführt und alle enthaltenen Abfragen werden zurückgesetzt.
Gremlin-Sitzungen in der Gremlin Language Variant
Sie müssen in der Gremlin Language Variant (GLV) ein SessionedClient
-Objekt erstellen, damit in einer einzelnen Transaktion mehrere Abfragen ausgegeben werden, vgl. das folgende Beispiel.
try { // line 1
Cluster cluster = Cluster.open(); // line 2
Client client = cluster.connect("sessionName"); // line 3
...
...
} finally {
// Always close. If there are no errors, the transaction is committed; otherwise, it's rolled back.
client.close();
}
Zeile 3 im Beispiel oben erstellt das SessionedClient
-Objekt entsprechend den Konfigurationsoptionen, die für den betreffenden Cluster festgelegt wurden. Die sessionName
Zeichenfolge, die Sie an die Connect-Methode übergeben, wird zum eindeutigen Namen der Sitzung. Um Kollisionen zu vermeiden, verwenden Sie eine UUID für den Namen.
Der Client startet eine Sitzungstransaktion, wenn er initialisiert wird. Für alle Abfragen, die Sie im Rahmen des Sitzungsformulars ausführen, werden nur Commits durchgeführt, wenn Sie client.close( )
aufrufen. Nochmals: Wenn eine einzelne Abfrage fehlschlägt oder wenn Sie die Verbindung nicht innerhalb der von Neptune maximal unterstützten Sitzungszeit schließen, schlägt die Sitzungstransaktion fehl und alle enthaltenen Abfragen werden zurückgesetzt.
Anmerkung
Der Gremlin-Client muss immer geschlossen sein, um serverseitige Ressourcen freigeben zu können.
GraphTraversalSource g = traversal().withRemote(conn);
Transaction tx = g.tx();
// Spawn a GraphTraversalSource from the Transaction.
// Traversals spawned from gtx are executed within a single transaction.
GraphTraversalSource gtx = tx.begin();
try {
gtx.addV('person').iterate();
gtx.addV('software').iterate();
tx.commit();
} finally {
if (tx.isOpen()) {
tx.rollback();
}
}