Transacciones de Gremlin en Neptune - Amazon Neptune

Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.

Transacciones de Gremlin en Neptune

Hay varios contextos en los que se ejecutan las transacciones de Gremlin. Al trabajar con Gremlin, es importante entender el contexto en el que se trabaja y cuáles son sus implicaciones:

  • Script-based: las solicitudes se realizan mediante cadenas de Gremlin basadas en texto, como esta:

    • Con el controlador Java y Client.submit(string).

    • Con la consola de Gremlin y :remote connect.

    • Usando el HTTPAPI.

  • Bytecode-based— Las solicitudes se realizan utilizando el código de bytes de Gremlin serializado típico de las variantes del lenguaje Gremlin (). GLV

    Por ejemplo, utilizando el controlador de Java, g = traversal().withRemote(...).

Para cualquiera de los contextos anteriores, existe el contexto adicional de la solicitud que se envía sin sesión o vinculada a una sesión.

nota

Las transacciones de Gremlin siempre deben confirmarse o revertirse, de modo que se puedan liberar los recursos del lado del servidor.

Solicitudes sin sesión

Cuando no hay sesión, una solicitud equivale a una sola transacción.

En el caso de los scripts, esto implica que una o más instrucciones de Gremlin enviadas en una sola solicitud se confirmarán o anularán como una sola transacción. Por ejemplo:

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();

En el caso del código de bytes, se realiza una solicitud sin sesión para cada recorrido que se genera y ejecuta desde g:

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();

Solicitudes vinculadas a una sesión

Cuando están vinculadas a una sesión, se pueden aplicar varias solicitudes en el contexto de una sola transacción.

En el caso de los scripts, esto implica que no es necesario concatenar todas las operaciones gráficas en un único valor de cadena integrado:

Cluster cluster = Cluster.open(); Client client = cluster.connect(sessionName); // session try { // 3 vertex additions in one request/transaction: client.submit("g.addV();g.addV();g.addV()").all().get(); } finally { client.close(); } try { // 3 vertex additions in three requests, but one transaction: client.submit("g.addV()").all().get(); // starts a new transaction with the same sessionName client.submit("g.addV()").all().get(); client.submit("g.addV()").all().get(); } finally { client.close(); }

En el caso del código de bytes, después, la transacción se puede controlar de forma TinkerPop 3.5.x explícita y la sesión se puede gestionar de forma transparente. Las variantes del lenguaje Gremlin (GLV) admiten la tx() sintaxis de Gremlin para una transacción de la siguiente manera: commit() rollback()

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(); } }

Aunque el ejemplo anterior está escrito en Java, también puede utilizar esta tx() sintaxis en Python, Javascript y. NET.

aviso

Las consultas de solo lectura sin sesión se ejecutan de SNAPSHOTforma aislada, pero las consultas de solo lectura que se ejecutan dentro de una transacción explícita se ejecutan de forma aislada. SERIALIZABLE Las consultas de solo lectura que se ejecutan bajo el aislamiento SERIALIZABLE generan una mayor sobrecarga y pueden bloquearse o quedar bloqueadas por escrituras simultáneas, a diferencia de las que se ejecutan bajo el aislamiento SNAPSHOT.