Suporte para sessões baseadas em script do Gremlin - Amazon Neptune

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 do TinkerPop Apache. As seções abaixo descrevem como usar sessões do Gremlin com Java.

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 um UUID exclusivo 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 na TinkerPop documentação.

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

No Gremlin Language Variant (GLV), você precisa criar um objeto SessionedClient para executar 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 string sessionName que você passar para o método de conexão 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(); } }