Usando o AWS SDK para executar consultas 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á.

Usando o AWS SDK para executar consultas do Gremlin

Com o AWS SDK, você pode executar consultas do Gremlin em seu gráfico do Neptune usando uma linguagem de programação de sua escolha. O SDK da API de dados Neptune (neptunedatanome do serviço) fornece a ação para enviar consultas ExecuteGremlinQuerydo Gremlin.

Você deve executar esses exemplos em uma instância do Amazon EC2 na mesma nuvem privada virtual (VPC) do seu cluster de banco de dados Neptune ou em um local que tenha conectividade de rede com o endpoint do seu cluster.

Links diretos para a documentação de referência da API para o neptunedata serviço em cada linguagem do SDK podem ser encontrados abaixo:

Exemplos do SDK do Gremlin AWS

Os exemplos a seguir mostram como configurar um neptunedata cliente, executar uma consulta Gremlin e imprimir os resultados. Substitua YOUR_NEPTUNE_HOST e YOUR_NEPTUNE_PORT pelo endpoint e pela porta do seu cluster de banco de dados Neptune.

Tempo limite do lado do cliente e configuração de nova tentativa

O tempo limite do cliente SDK controla quanto tempo o cliente espera por uma resposta. Ela não controla por quanto tempo a consulta é executada no servidor. Se o cliente expirar antes da conclusão do servidor, a consulta poderá continuar sendo executada no Neptune enquanto o cliente não tiver como recuperar os resultados.

Recomendamos definir o tempo limite de leitura do lado do cliente para 0 (sem tempo limite) ou para um valor que seja pelo menos alguns segundos a mais do que a configuração neptune_query_timeout do lado do servidor em seu cluster de banco de dados Neptune. Isso permite que Neptune controle quando as consultas atingem o tempo limite.

Também recomendamos definir o máximo de tentativas para 1 (sem novas tentativas). Se o SDK tentar novamente uma consulta que ainda está em execução no servidor, isso pode resultar em operações duplicadas. Isso é especialmente importante para consultas de mutação, nas quais uma nova tentativa pode causar gravações duplicadas não intencionais.

Python
  1. Siga as instruções de instalação para instalar o Boto3.

  2. Crie um arquivo chamado gremlinExample.py e cole o código a seguir:

    import boto3 import json from botocore.config import Config # Disable the client-side read timeout and retries so that # Neptune's server-side neptune_query_timeout controls query duration. client = boto3.client( 'neptunedata', endpoint_url=f'https://YOUR_NEPTUNE_HOST:YOUR_NEPTUNE_PORT', config=Config(read_timeout=None, retries={'total_max_attempts': 1}) ) # Use the untyped GraphSON v3 serializer for a cleaner JSON response. response = client.execute_gremlin_query( gremlinQuery='g.V().limit(1)', serializer='application/vnd.gremlin-v3.0+json;types=false' ) print(json.dumps(response['result'], indent=2))
  3. Execute o exemplo: python gremlinExample.py

Java
  1. Siga as instruções de instalação para configurar o AWS SDK for Java.

  2. Use o código a seguir para configurar umaNeptunedataClient, executar uma consulta Gremlin e imprimir o resultado:

    import java.net.URI; import java.time.Duration; import software.amazon.awssdk.core.client.config.ClientOverrideConfiguration; import software.amazon.awssdk.core.retry.RetryPolicy; import software.amazon.awssdk.services.neptunedata.NeptunedataClient; import software.amazon.awssdk.services.neptunedata.model.ExecuteGremlinQueryRequest; import software.amazon.awssdk.services.neptunedata.model.ExecuteGremlinQueryResponse; // Disable the client-side timeout and retries so that // Neptune's server-side neptune_query_timeout controls query duration. NeptunedataClient client = NeptunedataClient.builder() .endpointOverride(URI.create("https://YOUR_NEPTUNE_HOST:YOUR_NEPTUNE_PORT")) .overrideConfiguration(ClientOverrideConfiguration.builder() .apiCallTimeout(Duration.ZERO) .retryPolicy(RetryPolicy.none()) .build()) .build(); // Use the untyped GraphSON v3 serializer for a cleaner JSON response. ExecuteGremlinQueryRequest request = ExecuteGremlinQueryRequest.builder() .gremlinQuery("g.V().limit(1)") .serializer("application/vnd.gremlin-v3.0+json;types=false") .build(); ExecuteGremlinQueryResponse response = client.executeGremlinQuery(request); System.out.println(response.result().toString());
JavaScript
  1. Siga as instruções de instalação para configurar o AWS SDK para JavaScript. Instale o pacote do cliente neptunedata:. npm install @aws-sdk/client-neptunedata

  2. Crie um arquivo chamado gremlinExample.js e cole o código a seguir:

    import { NeptunedataClient, ExecuteGremlinQueryCommand } from "@aws-sdk/client-neptunedata"; import { NodeHttpHandler } from "@smithy/node-http-handler"; const config = { endpoint: "https://YOUR_NEPTUNE_HOST:YOUR_NEPTUNE_PORT", // Disable the client-side request timeout so that // Neptune's server-side neptune_query_timeout controls query duration. requestHandler: new NodeHttpHandler({ requestTimeout: 0 }), maxAttempts: 1 }; const client = new NeptunedataClient(config); // Use the untyped GraphSON v3 serializer for a cleaner JSON response. const input = { gremlinQuery: "g.V().limit(1)", serializer: "application/vnd.gremlin-v3.0+json;types=false" }; const command = new ExecuteGremlinQueryCommand(input); const response = await client.send(command); console.log(JSON.stringify(response, null, 2));
  3. Execute o exemplo: node gremlinExample.js