Einrichten der Gremlin-Konsole zum Herstellen einer Verbindung mit einer Neptune-DB-Instance - 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.

Einrichten der Gremlin-Konsole zum Herstellen einer Verbindung mit einer Neptune-DB-Instance

Die Gremlin-Konsole ermöglicht es Ihnen, mit TinkerPop Graphen und Abfragen in einer REPL (read-eval-print Loop-) Umgebung zu experimentieren.

Installieren der Gremlin-Konsole und Herstellen üblicher Verbindungen

Mit der Gremlin-Konsole können Sie eine Verbindung zu einer Remote-Graph-Datenbank herstellen. Der folgende Abschnitt führt Sie durch die Installation und Konfiguration der Gremlin-Konsole zum Herstellen einer Remote-Verbindung mit einer Neptune-DB-Instance. Sie müssen diesen Anweisungen von einer EC2 Amazon-Instance aus folgen, die sich in derselben Virtual Private Cloud (VPC) wie Ihre Neptune-DB-Instance befindet.

Hilfe beim Herstellen einer Verbindung zu Neptune mitSSL/TLS(was erforderlich ist) finden Sie unter. SSL/Konfiguration TLS

Anmerkung

Wenn Sie die IAMAuthentifizierung auf Ihrem Neptune-DB-Cluster aktiviert haben, folgen Sie den Anweisungen unter Herstellen von Verbindungen mit Neptune über die Gremlin-Konsole mit Signature-Version-4-Signierung So installieren Sie die Gremlin-Konsole und nicht den Anweisungen hier.

Installieren der Gremlin-Konsole und Verbinden mit Neptune
  1. Die Binärdateien der Gremlin-Konsole erfordern Java 8 oder Java 11. Diese Anweisungen setzen die Verwendung von Java 11 voraus. Sie können Java 11 wie folgt auf Ihrer EC2 Instance installieren:

    • Wenn Sie Amazon Linux 2 (AL2) verwenden:

      sudo amazon-linux-extras install java-openjdk11
    • Wenn Sie Amazon Linux 2023 (AL2023) verwenden:

      sudo yum install java-11-amazon-corretto-devel
    • Verwenden Sie für andere Distributionen die jeweils zutreffende Anweisung:

      sudo yum install java-11-openjdk-devel

      oder:

      sudo apt-get install openjdk-11-jdk
  2. Geben Sie Folgendes ein, um Java 11 als Standard-Runtime für Ihre EC2 Instance festzulegen.

    sudo /usr/sbin/alternatives --config java

    Geben Sie die Nummer für Java 11 ein, wenn Sie aufgefordert werden.

  3. Laden Sie die entsprechende Version der Gremlin-Konsole von der Apache-Website herunter. Auf der Seite Engine-Version der von Ihnen aktuell ausgeführten Neptune-Engine-Version finden Sie Informationen zur unterstützten Gremlin-Version. Für Version 3.6.5 können Sie beispielsweise die Gremlin-Konsole von der Apache Tinkerpop3-Website wie folgt auf Ihre Instance herunterladen: EC2

    wget https://archive.apache.org/dist/tinkerpop/3.6.5/apache-tinkerpop-gremlin-console-3.6.5-bin.zip
  4. Entpacken Sie die ZIP-Datei der Gremlin-Konsole.

    unzip apache-tinkerpop-gremlin-console-3.6.5-bin.zip
  5. Ändern Sie die Verzeichnisse im extrahierten Verzeichnis.

    cd apache-tinkerpop-gremlin-console-3.6.5
  6. Erstellen Sie im Unterverzeichnis conf des extrahierten Verzeichnisses eine Datei namens neptune-remote.yaml mit dem folgenden Text. Ersetzen your-neptune-endpoint mit dem Hostnamen oder der IP-Adresse Ihrer Neptune-DB-Instance. Die eckigen Klammern ([ ]) sind erforderlich.

    Anmerkung

    Informationen zum Ermitteln des Hostnamens Ihrer Neptune-DB-Instance finden Sie im Abschnitt Verbinden mit Amazo-Neptune-Endpunkten.

    hosts: [your-neptune-endpoint] port: 8182 connectionPool: { enableSsl: true } serializer: { className: org.apache.tinkerpop.gremlin.util.ser.GraphBinaryMessageSerializerV1, config: { serializeResultToString: true }}
    Anmerkung

    Serializer wurden in Version 3.7.0 vom gremlin-driver Modul auf das neue gremlin-util Modul verschoben. Das Paket wurde von org.apache.tinkerpop.gremlin.driver.ser zu org.apache.tinkerpop.gremlin.util.ser geändert.

  7. Navigieren Sie in einem Terminalfenster zu dem Verzeichnis der Gremlin-Konsole (apache-tinkerpop-gremlin-console-3.6.5), und geben Sie den folgenden Befehl ein, um die Gremlin-Konsole auszuführen.

    bin/gremlin.sh

    Die Ausgabe sollte folgendermaßen aussehen:

    \,,,/ (o o) -----oOOo-(3)-oOOo----- plugin activated: tinkerpop.server plugin activated: tinkerpop.utilities plugin activated: tinkerpop.tinkergraph gremlin>

    Sie sehen nun die gremlin>-Eingabeaufforderung. Die nächsten Schritte geben Sie über diese Eingabeaufforderung ein.

  8. Geben Sie an der gremlin>-Eingabeaufforderung Folgendes ein, um eine Verbindung zur Neptune-DB-Instance herzustellen.

    :remote connect tinkerpop.server conf/neptune-remote.yaml
  9. Geben Sie an der gremlin>-Eingabeaufforderung Folgendes ein, um in den Remote-Modus zu wechseln. Dadurch werden alle Gremlin-Abfragen an die Remote-Verbindung gesendet.

    :remote console
  10. Geben Sie Folgendes ein, um eine Abfrage an den Gremlin-Graph zu senden.

    g.V().limit(1)
  11. Wenn Sie fertig sind, geben Sie den folgenden Befehl ein, um die Gremlin-Konsole zu beenden.

    :exit
Anmerkung

Verwenden Sie ein Semikolon (;) oder ein Zeilenumbruchzeichen (\n), um die Anweisungen voneinander abzutrennen.

Jede Traversierung, die der letzten Traversierung vorausgeht, muss zum Ausführen mit next() enden. Es werden nur die Daten der letzten Traversierung zurückgegeben.

Weitere Informationen zur Neptune-Implementierung von Gremlin finden Sie unter Einhaltung der Gremlin-Standards in Amazon Neptune.

Alternative Möglichkeit für die Verbindung mit der Gremlin-Konsole

Nachteile des normalen Ansatzes für die Verbindung

Die häufigste Art der Verbindung mit der Gremlin-Konsole wird oben beschrieben, bei der an der gremlin>-Eingabeaufforderung Befehle wie diese verwendet werden:

gremlin> :remote connect tinkerpop.server conf/(file name).yaml gremlin> :remote console

Das funktioniert gut und ermöglicht Ihnen das Senden von Abfragen an Neptune. Dabei wird jedoch die Groovy-Skript-Engine nicht berücksichtigt, sodass Neptune alle Abfragen als reines Gremlin behandelt. Das bedeutet, dass die folgenden Abfrageformulare fehlschlagen:

gremlin> 1 + 1 gremlin> x = g.V().count()

Sie kommen bei einer Verbindung dieser Art der Verwendung einer Variablen am nächsten, wenn Sie die von der Konsole verwaltete Variable result verwenden und die Abfrage wie folgt mit :> senden:

gremlin> :remote console ==>All scripts will now be evaluated locally - type ':remote console' to return to remote mode for Gremlin Server - [krl-1-cluster.cluster-ro-cm9t6tfwbtsr.us-east-1.neptune.amazonaws.com/172.31.19.217:8182] gremlin> :> g.V().count() ==>4249 gremlin> println(result) [result{object=4249 class=java.lang.Long}] gremlin> println(result['object']) [4249]

 

Eine andere Art der Verbindung

Sie können auch auf eine andere Art eine Verbindung mit der Gremlin-Konsole herstellen, die Sie vielleicht nützlicher finden:

gremlin> g = traversal().withRemote('conf/neptune.properties')

Hier hat neptune.properties das folgende Format:

gremlin.remote.remoteConnectionClass=org.apache.tinkerpop.gremlin.driver.remote.DriverRemoteConnection gremlin.remote.driver.clusterFile=conf/my-cluster.yaml gremlin.remote.driver.sourceName=g

Die Datei my-cluster.yaml sollte wie folgt aussehen:

hosts: [my-cluster-abcdefghijk.us-east-1.neptune.amazonaws.com] port: 8182 serializer: { className: org.apache.tinkerpop.gremlin.util.ser.GraphBinaryMessageSerializerV1, config: { serializeResultToString: false } } connectionPool: { enableSsl: true }
Anmerkung

Serializer wurden in Version 3.7.0 vom Modul auf das neue Modul gremlin-driver verschoben. gremlin-util Das Paket wurde von org.apache.tinkerpop.gremlin.driver.ser zu org.apache.tinkerpop.gremlin.util.ser geändert.

Wenn Sie die Verbindung der Gremlin-Konsole so konfigurieren, können Sie die folgenden Arten von Abfragen erfolgreich ausführen:

gremlin> 1+1 ==>2 gremlin> x=g.V().count().next() ==>4249 gremlin> println("The answer was ${x}") The answer was 4249

Sie können die Anzeige des Ergebnisses wie folgt vermeiden:

gremlin> x=g.V().count().next();[] gremlin> println(x) 4249

Alle gewöhnlichen Abfragemethoden (ohne terminalen Schritt) funktionieren weiter. Beispielsweise:

gremlin> g.V().count() ==>4249

Sie können sogar den Schritt g.io().read() verwenden, um eine Datei über diese Art von Verbindung zu laden.