View a markdown version of this page

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

Usar o AWS SDK para executar consultas OpenCypher

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

Você deve executar esses exemplos a partir de uma instância do Amazon EC2 na mesma nuvem privada virtual (VPC) do seu cluster de banco de dados Neptune ou de 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:

openCypher AWS Exemplos de SDK

Os exemplos a seguir mostram como configurar um neptunedata cliente, executar uma consulta do OpenCypher 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.

Client-side configuração de tempo limite e nova tentativa

O tempo limite do cliente SDK controla quanto tempo o cliente espera por uma resposta. Ele não controla por quanto tempo a consulta é executada no servidor. Se o cliente atingir o tempo limite antes do término 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 como 0 (sem tempo limite) ou como um valor que seja pelo menos alguns segundos maior do que a configuração neptune_query_timeout do lado do servidor em seu cluster de banco de dados neptune_query_timeout (parâmetro em nível de cluster) Neptune. Isso permite que o 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 poderá 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 openCypherExample.py e cole o seguinte código:

    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}) ) response = client.execute_open_cypher_query( openCypherQuery='MATCH (n) RETURN n LIMIT 1' ) print(json.dumps(response['results'], indent=2))
  3. Execute o exemplo: python openCypherExample.py

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

  2. Use o código a seguir para configurar umaNeptunedataClient, executar uma consulta OpenCypher 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.ExecuteOpenCypherQueryRequest; import software.amazon.awssdk.services.neptunedata.model.ExecuteOpenCypherQueryResponse; // 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(); ExecuteOpenCypherQueryRequest request = ExecuteOpenCypherQueryRequest.builder() .openCypherQuery("MATCH (n) RETURN n LIMIT 1") .build(); ExecuteOpenCypherQueryResponse response = client.executeOpenCypherQuery(request); System.out.println(response.results().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 openCypherExample.js e cole o seguinte código:

    import { NeptunedataClient, ExecuteOpenCypherQueryCommand } 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); const input = { openCypherQuery: "MATCH (n) RETURN n LIMIT 1" }; const command = new ExecuteOpenCypherQueryCommand(input); const response = await client.send(command); console.log(JSON.stringify(response, null, 2));
  3. Execute o exemplo: node openCypherExample.js