Uso del AWS SDK para ejecutar consultas de Gremlin - Amazon Neptune

Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.

Uso del AWS SDK para ejecutar consultas de Gremlin

Con el AWS SDK, puede ejecutar consultas de Gremlin en su gráfico de Neptune utilizando el lenguaje de programación que prefiera. El SDK de la API de datos de Neptune (nombre del servicioneptunedata) proporciona la ExecuteGremlinQueryacción para enviar consultas de Gremlin.

Debe ejecutar estos ejemplos desde una instancia de Amazon EC2 en la misma nube privada virtual (VPC) que el clúster de base de datos de Neptune, o desde una ubicación que tenga conectividad de red con el punto final del clúster.

A continuación, encontrará enlaces directos a la documentación de referencia de la API del neptunedata servicio en cada idioma del SDK:

Ejemplos del SDK de Gremlin AWS

Los siguientes ejemplos muestran cómo configurar un neptunedata cliente, ejecutar una consulta de Gremlin e imprimir los resultados. Sustituya YOUR_NEPTUNE_HOST y YOUR_NEPTUNE_PORT por el punto final y el puerto de su clúster de base de datos Neptune.

Configuración de tiempo de espera y reintento del lado del cliente

El tiempo de espera del cliente del SDK controla cuánto tiempo espera el cliente para recibir una respuesta. No controla cuánto tiempo se ejecuta la consulta en el servidor. Si se agota el tiempo de espera del cliente antes de que finalice el servidor, es posible que la consulta continúe ejecutándose en Neptune mientras el cliente no tenga forma de recuperar los resultados.

Recomendamos establecer el tiempo de espera de lectura del lado del cliente en 0 (sin tiempo de espera) o en un valor que sea al menos unos segundos más largo que la configuración neptune_query_timeout del lado del servidor en su clúster de base de datos Neptune. Esto permite a Neptune controlar cuándo se agota el tiempo de espera de las consultas.

También recomendamos establecer el número máximo de reintentos en 1 (sin reintentos). Si el SDK vuelve a intentar una consulta que aún se está ejecutando en el servidor, es posible que se dupliquen las operaciones. Esto es especialmente importante en el caso de las consultas de mutación, en las que un reintento podría provocar escrituras duplicadas no deseadas.

Python
  1. Siga las instrucciones de instalación para instalar Boto3.

  2. Cree un archivo con el nombre gremlinExample.py y pegue el siguiente 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}) ) # 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. Ejecute el ejemplo: python gremlinExample.py

Java
  1. Siga las instrucciones de instalación para configurar el AWS SDK para Java.

  2. Usa el siguiente código para configurar una consulta de GremlinNeptunedataClient, ejecutar una e imprimir el 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 las instrucciones de instalación para configurar el AWS SDK. JavaScript Instale el paquete de cliente neptunedata:. npm install @aws-sdk/client-neptunedata

  2. Cree un archivo con el nombre gremlinExample.js y pegue el siguiente código:

    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. Ejecute el ejemplo: node gremlinExample.js