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.
Compatibilidad con sesiones basadas en scripts de Gremlin
Puede utilizar sesiones de Gremlin con transacciones implícitas en Amazon Neptune. Para obtener información sobre las sesiones de Gremlin, consulte Considerar las sesiones
nota
Esta característica está disponible a partir de la versión 1.0.1.0.200463.0 del motor de Neptune.
A partir de las versiones 1.1.1.0 y TinkerPop 3.5.2 del motor Neptune, también puede utilizar. Transacciones de Gremlin
importante
Actualmente, el tiempo máximo durante el que Neptune puede mantener una sesión abierta es de 10 minutos. Si no cierra una sesión antes de que se agote el tiempo, la sesión expirará y todo lo que se haya hecho volverá a su estado inicial.
Temas
Sesiones de Gremlin en la consola de Gremlin
Si crea una conexión remota en la consola de Gremlin sin el parámetro session
, la conexión remota se crea en el modo sin sesión . En este modo, cada solicitud que se envía al servidor se trata como una transacción completa en sí misma y no se guarda ningún estado entre las solicitudes. Si se produce un error en la solicitud, solo se revierte esta.
Si crea una conexión remota que emplea el parámetro session
, crea una sesión basada en script que dura hasta que se cierre la conexión remota. Cada sesión se identifica mediante un identificador único UUID que la consola genera y le devuelve.
A continuación se muestra un ejemplo de una llamada a la consola que crea una sesión. Una vez enviadas las consultas, otra llamada cierra la sesión y confirma las consultas.
nota
El cliente de Gremlin siempre debe estar cerrado para liberar los recursos del servidor.
gremlin> :remote connect tinkerpop.server conf/neptune-remote.yaml session . . . . . . gremlin> :remote close
Para obtener más información y ejemplos, consulte las sesiones
Todas las consultas que ejecuta durante una sesión forman una única transacción que no se confirma hasta que todas las consultas se completan correctamente y se cierra la conexión remota. Si se produce un error con una solicitud o si no cierra la conexión en el plazo máximo de duración de una sesión que Neptune admite, la transacción de la sesión no se confirmará y todas las solicitudes de la misma se revertirán.
Sesiones de Gremlin en la variante de lenguaje Gremlin
En la variante del lenguaje Gremlin (GLV), necesitas crear un SessionedClient
objeto para emitir múltiples consultas en una sola transacción, como en el siguiente ejemplo.
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(); }
La línea 3 del ejemplo anterior crea el objeto SessionedClient
en función de las opciones de configuración establecidas para el clúster en cuestión. La sessionName
La cadena que se pasa al método de conexión se convierte en el nombre exclusivo de la sesión. Para evitar colisiones, utilice una como UUID nombre.
El cliente inicia una transacción de sesión cuando se inicializa. Todas las consultas que ejecuta durante el formulario de sesión se confirman solo cuando llama a client.close( )
. Si se produce un error de nuevo con una única solicitud o si no cierra la conexión en el plazo máximo de duración de una sesión que Neptune admite, la transacción de la sesión no se confirmará y todas las solicitudes de la misma se revertirán.
nota
El cliente de Gremlin siempre debe estar cerrado para liberar los recursos del servidor.
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(); } }