Transactions Gremlin à Neptune - Amazon Neptune

Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.

Transactions Gremlin à Neptune

Il existe plusieurs contextes dans lesquels Gremlintransactionssont exécutés. Lorsque vous travaillez avec Gremlin, il est important de comprendre le contexte dans lequel vous travaillez et quelles sont ses implications :

  • Script-based— Les requêtes sont faites à l'aide de chaînes Gremlin basées sur du texte, comme ceci :

    • Utilisation du pilote Java etClient.submit(string).

    • À l'aide de la console Gremlin et:remote connect.

    • À l'aide de l'API HTTP.

  • Bytecode-based— Les requêtes sont effectuées à l'aide du bytecode Gremlin sérialisé typique deVariantes du langage Gremlin(GLV).

    Par exemple, à l'aide du pilote Java,g = traversal().withRemote(...).

Pour l'un ou l'autre des contextes ci-dessus, il existe le contexte supplémentaire de l'envoi de la demande en tant que demande sans session ou liée à une session.

Demandes sans session

En l'absence de session, une demande équivaut à une transaction unique.

Pour les scripts, cela implique qu'une ou plusieurs instructions Gremlin envoyées dans une seule requête seront validées ou annulées en tant que transaction unique. Par exemple :

Cluster cluster = Cluster.open(); Client client = cluster.connect(); // sessionless // 3 vertex additions in one request/transaction: client.submit("g.addV();g.addV();g.addV()").all().get();

Pour le bytecode, une requête sans session est faite pour chaque traversée générée et exécutée à partir deg :

GraphTraversalSource g = traversal().withRemote(...); // 3 vertex additions in three individual requests/transactions: g.addV().iterate(); g.addV().iterate(); g.addV().iterate(); // 3 vertex additions in one single request/transaction: g.addV().addV().addV().iterate();

Demandes liées à une session

Lorsqu'elles sont liées à une session, plusieurs demandes peuvent être appliquées dans le contexte d'une seule transaction.

Pour les scripts, cela implique qu'il n'est pas nécessaire de concaténer toutes les opérations du graphe en une seule valeur de chaîne intégrée :

Cluster cluster = Cluster.open(); Client client = cluster.connect(sessionName); // session // 3 vertex additions in one request/transaction: client.submit("g.addV();g.addV();g.addV()").all().get(); client.close(); // 3 vertex additions in three requests, but one transaction: client.submit("g.addV()").all().get(); client.submit("g.addV()").all().get(); client.submit("g.addV()").all().get(); client.close();

Pour le bytecode, après TinkerPop 3.5.x, la transaction peut être contrôlée de manière explicite et la session gérée de manière transparente. Les variantes du langage Gremlin (GLV) supportent le langage de Gremlintx()Syntaxecommit()ourollback()une transaction comme suit :

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(); } catch (Exception ex) { tx.rollback(); }

Bien que l'exemple ci-dessus soit écrit en Java, vous pouvez également l'utilisertx()syntaxe en Python, Javascript et .NET.