As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.
Suporte para sessões baseadas em script do Gremlin
É possível usar sessões do Gremlin com transações implícitas no Amazon Neptune. Para obter informações sobre as sessões do Gremlin, consulte Considerando as sessões na documentação
nota
Esse atributo está disponível a partir da versão 1.0.1.0.200463.0 do mecanismo do Neptune.
Começando com a versão 1.1.1.0 TinkerPop e a versão 3.5.2 do motor Neptune, você também pode usar. Transações do Gremlin
Importante
No momento, o tempo máximo que o Neptune pode manter uma sessão aberta baseada em script é dez minutos. Se você não fechar uma sessão antes desse tempo, a sessão atingirá o tempo limite e tudo associado a ela será revertido.
Sessões do Gremlin no console do Gremlin
Se você criar uma conexão remota no Console do Gremlin sem o parâmetro session
, a conexão remota será criada no modo sem sessão. Nesse modo, cada solicitação enviada ao servidor é tratada como uma transação completa por si só, e nenhum estado é salvo entre as solicitações. Se uma solicitação falhar, apenas essa solicitação será revertida.
Se você criar uma conexão remota que não use o parâmetro session
, criará uma sessão baseada em script que durará até que você feche a conexão remota. Cada sessão é identificada por uma única UUID que o console gera e retorna para você.
Veja a seguir um exemplo de uma chamada de console que cria uma sessão. Depois que as consultas são enviadas, outra chamada fecha a sessão e confirma as consultas.
nota
O cliente do Gremlin deve estar sempre fechado para liberar recursos do lado do servidor.
gremlin> :remote connect tinkerpop.server conf/neptune-remote.yaml session . . . . . . gremlin> :remote close
Para obter mais informações e exemplos, consulte Sessões
Todas as consultas executadas durante uma sessão formam uma única transação que não é confirmada até que todas as consultas sejam bem-sucedidas e você feche a conexão remota. Se uma consulta falhar, ou se você não fechar a conexão no tempo de vida máximo da sessão permitido pelo Neptune, a transação da sessão não será confirmada e todas as consultas associadas serão revertidas.
Sessões do Gremlin no Gremlin Language Variant
Na variante da linguagem Gremlin (GLV), você precisa criar um SessionedClient
objeto para emitir várias consultas em uma única transação, como no exemplo a seguir.
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(); }
A linha 3 no exemplo anterior cria o objeto SessionedClient
de acordo com as opções de configuração definidas para o cluster em questão. A ferramenta sessionName
a string que você passa para o método connect se torna o nome exclusivo da sessão. Para evitar colisões, use um UUID para o nome.
O cliente inicia uma transação de sessão quando é inicializado. Todas as consultas executadas durante o formulário de sessão são confirmadas somente quando você chama client.close( )
. Novamente, se uma consulta falhar, ou se você não fechar a conexão no tempo de vida máximo da sessão permitido pelo Neptune, a transação da sessão falhará e todas as consultas associadas serão revertidas.
nota
O cliente do Gremlin deve estar sempre fechado para liberar recursos do lado do 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(); } }