Supporto delle sessioni basate su script Gremlin - Amazon Neptune

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

Supporto delle sessioni basate su script Gremlin

È possibile utilizzare le sessioni Gremlin con transazioni implicite in Amazon Neptune. Per informazioni sulle sessioni Gremlin, consulta Considering Sessions nella documentazione di TinkerPop Apache. Le sezioni seguenti descrivono come utilizzare le sessioni Gremlin con Java.

Nota

Questa funzionalità è disponibile a partire dal rilascio 1.0.1.0.200463.0 del motore Neptune.

A partire dalla versione 1.1.1.0 TinkerPop e dalla versione 3.5.2 del motore Neptune, puoi anche usare. Transazioni Gremlin

Importante

Attualmente il periodo di tempo massimo in cui Neptune può mantenere aperta una sessione basata su script è pari a 10 minuti. Se non si chiude una sessione prima di questo tempo, la sessione scade e tutto il contenuto viene sottoposto a rollback.

Sessioni Gremlin sulla console Gremlin

Se crei una connessione remota sulla console Gremlin senza il parametro session, la connessione remota viene creata in modalità senza sessioni . In questa modalità, ogni richiesta inviata al server viene considerata come una transazione completa in sé e nessuno stato viene salvato tra le richieste. Se una richiesta ha esito negativo, viene eseguito il rollback solo di quella richiesta.

Se si crea una connessione remota che utilizza il parametro session, si crea una sessione basata su script che dura finché non si chiude la connessione remota. Ogni sessione è identificata da un codice univoco UUID che la console genera e ti restituisce.

Di seguito è riportato un esempio di una chiamata della console che crea una sessione. Dopo aver inviato le query, un'altra chiamata chiude la sessione ed esegue il commit delle query.

Nota

Il client Gremlin deve essere sempre chiuso per rilasciare le risorse lato server.

gremlin> :remote connect tinkerpop.server conf/neptune-remote.yaml session . . . . . . gremlin> :remote close

Per ulteriori informazioni ed esempi, consulta Sessioni nella TinkerPop documentazione.

Tutte le query eseguite durante una sessione formano una singola transazione di cui non viene eseguito il commit finché tutte le query non vanno a buon fine e la connessione remota non viene chiusa. Se una query non riesce o se non si chiude la connessione entro la durata massima della sessione supportata da Neptune, non viene eseguito il commit della transazione di sessione e viene eseguito il rollback di tutte le query in essa contenute

Sessioni Gremlin nella variante del linguaggio Gremlin

Nella variante del linguaggio Gremlin (GLV), è necessario creare un SessionedClient oggetto per emettere più interrogazioni in un'unica transazione, come nell'esempio seguente.

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 riga 3 nell'esempio precedente crea l'oggetto SessionedClient in base alle opzioni di configurazione impostate per il cluster in questione. Il sessionName la stringa che passate al metodo connect diventa il nome univoco della sessione. Per evitare collisioni, utilizzate un come UUID nome.

Il client avvia una transazione di sessione quando viene inizializzato. Il commit di tutte le query che esegui durante il modulo di sessione viene eseguito solo quando chiami client.close( ). Ancora una volta, se una singola query non riesce o se non si chiude la connessione entro la durata massima supportata da Neptune, la transazione della sessione non riesce e viene eseguito il rollback di tutte le query in essa contenute.

Nota

Il client Gremlin deve essere sempre chiuso per rilasciare le risorse lato server.

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