Configurazione della console Gremlin per la connessione a un'istanza database Neptune - Amazon Neptune

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

Configurazione della console Gremlin per la connessione a un'istanza database Neptune

La console Gremlin ti consente di sperimentare TinkerPop grafici e interrogazioni in un ambiente (loop). REPL read-eval-print

Installazione della console Gremlin e connessione ad essa nel modo consueto

Con la console Gremlin puoi connetterti a un database a grafo remoto. La sezione seguente illustra l'installazione e la configurazione della console Gremlin per connettersi in remoto a un'istanza database Neptune. È necessario seguire queste istruzioni da un'EC2istanza Amazon nello stesso cloud privato virtuale (VPC) dell'istanza DB Neptune.

Per informazioni sulla connessione a Neptune SSL conTLS/(che è obbligatorio), vedere. SSL/configurazione TLS

Nota

Se hai abilitato IAM l'autenticazione sul tuo cluster Neptune DB, segui le istruzioni Connessione a Neptune tramite la console Gremlin con la firma di Signature Version 4 per installare la console Gremlin anziché le istruzioni riportate qui.

Per installare la console Gremlin e connettersi a Neptune
  1. I binari della console Gremlin richiedono Java 8 o Java 11. Queste istruzioni presuppongono l'uso di Java 11. Puoi installare Java 11 sulla tua EC2 istanza come segue:

    • Se utilizzi Amazon Linux 2 (AL2):

      sudo amazon-linux-extras install java-openjdk11
    • Se utilizzi Amazon Linux 2023 (AL2023):

      sudo yum install java-11-amazon-corretto-devel
    • Per altre distribuzioni, usa l'opzione appropriata tra le seguenti:

      sudo yum install java-11-openjdk-devel

      oppure:

      sudo apt-get install openjdk-11-jdk
  2. Inserisci quanto segue per impostare Java 11 come runtime predefinito sulla tua EC2 istanza.

    sudo /usr/sbin/alternatives --config java

    Quando richiesto, immetti il numero per Java 11.

  3. Scarica la versione appropriata della console Gremlin dal sito Web di Apache. Controlla la pagina di rilascio del motore della versione del motore Neptune che stai utilizzando per determinare quale versione di Gremlin supporta. Ad esempio, per la versione 3.6.5, puoi scaricare la console Gremlin dal sito Web Apache Tinkerpop3 sulla tua istanza in questo modo: EC2

    wget https://archive.apache.org/dist/tinkerpop/3.6.5/apache-tinkerpop-gremlin-console-3.6.5-bin.zip
  4. Decomprimi il file zip della console Gremlin.

    unzip apache-tinkerpop-gremlin-console-3.6.5-bin.zip
  5. Cambiare directory nella directory decompressa.

    cd apache-tinkerpop-gremlin-console-3.6.5
  6. Nella sottodirectory conf della directory estratta, creare un file denominato neptune-remote.yaml con il testo seguente. Replace (Sostituisci) your-neptune-endpoint con il nome host o l'indirizzo IP dell'istanza DB di Neptune. Le parentesi quadre ([ ]) sono obbligatorie.

    Nota

    Per informazioni su come trovare il nome host dell'istanza database Neptune, consulta la sezione Connessione agli endpoint Amazon Neptune.

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

    I serializzatori sono stati spostati dal gremlin-driver modulo al nuovo gremlin-util modulo nella versione 3.7.0. Il pacchetto è cambiato da org.apache.tinkerpop.gremlin.driver.ser a org.apache.tinkerpop.gremlin.util.ser.

  7. In un terminale, vai alla directory della console Gremlin (apache-tinkerpop-gremlin-console-3.6.5) e immetti il comando seguente per eseguire la console Gremlin.

    bin/gremlin.sh

    Verrà visualizzato l'output seguente:

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

    Ora ti trovi al prompt gremlin>. Immetti i restanti passaggi in questo prompt.

  8. Al prompt gremlin>, immetti quanto segue per connetterti all'istanza database Neptune.

    :remote connect tinkerpop.server conf/neptune-remote.yaml
  9. Al prompt gremlin>, immetti quanto segue per passare alla modalità remota. In questo modo tutte le query Gremlin vengono inviate alla connessione remota.

    :remote console
  10. Immetti quanto segue per inviare una query al grafo Gremlin.

    g.V().limit(1)
  11. Al termine, immetti quanto segue per uscire dalla console di Gremlin.

    :exit
Nota

Utilizzare un punto e virgola (;) o un carattere nuova riga (\n) per separare ogni istruzione.

Ogni attraversamento che precede l'attraversamento finale deve terminare in next() per essere eseguito. Vengono restituiti solo i dati dell'ultimo attraversamento.

Per ulteriori informazioni sull'implementazione di Gremlin in Neptune, consulta Conformità agli standard Gremlin in Amazon Neptune.

Un modo alternativo per connettersi alla console Gremlin

Svantaggi dell'approccio di connessione normale

Il modo più comune per connettersi alla console Gremlin è quello spiegato sopra, utilizzando comandi come questo al prompt gremlin>.

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

Funziona bene e consente di inviare query a Neptune. Tuttavia, esclude il motore di script Groovy dal ciclo, quindi Neptune tratta tutte le query come puro Gremlin. Ciò significa che i seguenti moduli di query hanno esito negativo:

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

La cosa più vicina all'utilizzo di una variabile quando si è connessi in questo modo è utilizzare la variabile result gestita dalla console e inviare la query utilizzando :>, in questo modo:

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]

 

Un modo diverso di connettersi

Puoi anche connetterti alla console Gremlin in un modo diverso, che potresti trovare più comodo, come questo:

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

In questo caso il formato di neptune.properties è il seguente:

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

Il file my-cluster.yaml sarà simile al seguente:

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 }
Nota

I serializzatori sono stati spostati dal modulo al nuovo modulo nella versione gremlin-driver 3.7.0. gremlin-util Il pacchetto è cambiato da org.apache.tinkerpop.gremlin.driver.ser a org.apache.tinkerpop.gremlin.util.ser.

La configurazione della connessione alla console Gremlin in questo modo consente di effettuare correttamente i seguenti tipi di query:

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

Puoi evitare di visualizzare il risultato, in questo modo:

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

Tutti i metodi usuali di esecuzione di query (senza il passaggio terminale) continuano a funzionare. Per esempio:

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

Puoi anche usare il passaggio g.io().read() per caricare un file con questo tipo di connessione.