View a markdown version of this page

Verwendung der AWS SDK zum Ausführen von OpenCypher-Abfragen - Amazon Neptune

Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.

Verwendung der AWS SDK zum Ausführen von OpenCypher-Abfragen

Mit dem AWS SDK können Sie OpenCypher-Abfragen für Ihr Neptune-Diagramm mithilfe einer Programmiersprache Ihrer Wahl ausführen. Das Neptune-Daten-API-SDK (Dienstnameneptunedata) bietet die Aktion zum Senden von OpenCypher-Abfragen. ExecuteOpenCypherQuery

Sie müssen diese Beispiele von einer Amazon EC2-Instance in derselben Virtual Private Cloud (VPC) wie Ihr Neptune DB-Cluster aus ausführen, oder von einem Standort aus, der über Netzwerkkonnektivität zu Ihrem Cluster-Endpunkt verfügt.

Direkte Links zur API-Referenzdokumentation für den neptunedata Service in den einzelnen SDK-Sprachen finden Sie unten:

openCypher AWS SDK-Beispiele

Die folgenden Beispiele zeigen, wie Sie einen neptunedata Client einrichten, eine OpenCypher-Abfrage ausführen und die Ergebnisse drucken. Ersetzen Sie YOUR_NEPTUNE_HOST und YOUR_NEPTUNE_PORT durch den Endpunkt und den Port Ihres Neptune DB-Clusters.

Client-side Timeout und Konfiguration erneut versuchen

Das SDK-Client-Timeout steuert, wie lange der Client auf eine Antwort wartet. Es steuert nicht, wie lange die Abfrage auf dem Server läuft. Wenn beim Client ein Timeout auftritt, bevor der Server fertig ist, kann die Abfrage auf Neptune weiter ausgeführt werden, während der Client keine Möglichkeit hat, die Ergebnisse abzurufen.

Wir empfehlen, das clientseitige Lese-Timeout auf 0 (kein Timeout) oder auf einen Wert einzustellen, der mindestens ein paar Sekunden länger ist als die serverseitige neptune_query_timeout-Einstellung in Ihrem neptune_query_timeout (Parameter auf Cluster-Ebene) Neptune-DB-Cluster. Dadurch kann Neptune kontrollieren, wann bei Abfragen ein Timeout auftritt.

Wir empfehlen außerdem, die maximale Anzahl von Wiederholungsversuchen auf 1 (keine Wiederholungen) einzustellen. Wenn das SDK eine Abfrage wiederholt, die noch auf dem Server ausgeführt wird, kann dies zu doppelten Vorgängen führen. Dies ist besonders wichtig bei Mutationsabfragen, bei denen ein erneuter Versuch zu unbeabsichtigten doppelten Schreibvorgängen führen könnte.

Python
  1. Folgen Sie den Installationsanweisungen, um Boto3 zu installieren.

  2. Erstellen Sie eine Datei mit dem Namen openCypherExample.py und fügen Sie den folgenden Code ein:

    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. Führen Sie das Beispiel aus: python openCypherExample.py

Java
  1. Folgen Sie den Installationsanweisungen, um das AWS SDK für Java einzurichten.

  2. Verwenden Sie den folgenden CodeNeptunedataClient, um eine OpenCypher-Abfrage einzurichten, auszuführen und das Ergebnis auszudrucken:

    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. Folgen Sie den Installationsanweisungen, um das SDK für einzurichten. AWS JavaScript Installieren Sie das Neptunedata-Client-Paket:. npm install @aws-sdk/client-neptunedata

  2. Erstellen Sie eine Datei mit dem Namen openCypherExample.js und fügen Sie den folgenden Code ein:

    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. Führen Sie das Beispiel aus: node openCypherExample.js