Configure la consola de Gremlin para conectarse a una instancia de base de datos de Neptune - 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.

Configure la consola de Gremlin para conectarse a una instancia de base de datos de Neptune

La consola Gremlin le permite experimentar con TinkerPop gráficos y consultas en un entorno REPL (en read-eval-print bucle).

Instalación de la consola de Gremlin y conexión a ella de la forma habitual

Puede utilizar dicha consola para conectarse a una base de datos de gráficos remota. En la siguiente sección, se explica la instalación y la configuración de la consola de Gremlin para conectarse a una instancia de base de datos de Neptune de forma remota. Debe seguir estas instrucciones desde una EC2 instancia de Amazon en la misma nube privada virtual (VPC) que su instancia de base de datos de Neptune.

Si necesita ayuda para conectarse a Neptune conSSL/TLS(obligatorio), consulte. SSL/configuración TLS

nota

Si tiene habilitada la IAM autenticación en su clúster de base de datos de Neptune, siga las instrucciones Conexión con Neptune mediante la consola de Gremlin con firma de Signature Version 4 para instalar la consola Gremlin en lugar de las instrucciones que aparecen aquí.

Para instalar la consola de Gremlin y conectarse a Neptune
  1. Los archivos binarios de la consola de Gremlin requieren Java 8 o Java 11. En estas instrucciones se presupone el uso de Java 11. Puede instalar Java 11 en su EC2 instancia de la siguiente manera:

    • Si utilizas Amazon Linux 2 (AL2):

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

      sudo yum install java-11-amazon-corretto-devel
    • Para otras distribuciones, utilice la que sea adecuada de las siguientes opciones:

      sudo yum install java-11-openjdk-devel

      o bien:

      sudo apt-get install openjdk-11-jdk
  2. Introduce lo siguiente para configurar Java 11 como el tiempo de ejecución predeterminado de tu EC2 instancia.

    sudo /usr/sbin/alternatives --config java

    Cuando se le solicite, escriba el número para Java 11.

  3. Descargue la versión adecuada de la consola de Gremlin del sitio web de Apache. Consulte la página de versiones del motor de la versión del motor de Neptune que está utilizando para determinar qué versión de Gremlin es compatible. Por ejemplo, para la versión 3.6.5, puedes descargar la consola Gremlin del sitio web Apache Tinkerpop3 a tu instancia de la siguiente manera: EC2

    wget https://archive.apache.org/dist/tinkerpop/3.6.5/apache-tinkerpop-gremlin-console-3.6.5-bin.zip
  4. Descomprima el archivo .zip de la consola de Gremlin.

    unzip apache-tinkerpop-gremlin-console-3.6.5-bin.zip
  5. Cambie al directorio del directorio descomprimido.

    cd apache-tinkerpop-gremlin-console-3.6.5
  6. En el subdirectorio conf del directorio extraído, cree un archivo llamado neptune-remote.yaml con el texto siguiente. Reemplazar your-neptune-endpoint con el nombre de host o la dirección IP de su instancia de base de datos de Neptune. Los corchetes ([ ]) son obligatorios.

    nota

    Para obtener información acerca de cómo encontrar el nombre de host de la instancia de base de datos de Neptune, consulte la sección Conexión a los puntos de conexión de Amazon Neptune.

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

    Los serializadores se movieron del gremlin-driver módulo al nuevo gremlin-util módulo en la versión 3.7.0. El paquete cambió de org.apache.tinkerpop.gremlin.driver.ser a org.apache.tinkerpop.gremlin.util.ser.

  7. En un terminal, vaya al directorio de la consola de Gremlin (apache-tinkerpop-gremlin-console-3.6.5) y, a continuación, escriba el siguiente comando para ejecutarla.

    bin/gremlin.sh

    Debería ver los siguientes datos de salida:

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

    Ahora se encuentra en gremlin>. Escriba los pasos restantes en este punto.

  8. En el símbolo del sistema gremlin>, escriba lo siguiente para conectarse a la instancia de base de datos de Neptune.

    :remote connect tinkerpop.server conf/neptune-remote.yaml
  9. En la entrada gremlin>, escriba lo siguiente para cambiar al modo remoto. Esto envía todas las consultas de Gremlin a la conexión remota.

    :remote console
  10. Escriba lo siguiente para enviar una consulta al gráfico de Gremlin.

    g.V().limit(1)
  11. Cuando haya terminado, escriba lo siguiente para salir de la consola de Gremlin.

    :exit
nota

Utilice punto y coma (;) o un carácter de nueva línea (\n) para separar las instrucciones.

Cada recorrido anterior al final debe terminar en next() para ejecutarse. Solo se devuelven los datos del recorrido final.

Para obtener más información sobre la implementación de Gremlin en Neptune, consulte Conformidad con los estándares de Gremlin en Amazon Neptune.

Una forma alternativa de conectarse a la consola de Gremlin

Inconvenientes del enfoque de conexión normal

La forma más común de conectarse a la consola de Gremlin es la que hemos explicado anteriormente, utilizando comandos como estos en el símbolo del sistema de gremlin>:

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

Esto funciona bien y permite enviar consultas a Neptune. Sin embargo, saca del bucle al motor de scripts Groovy, por lo que Neptune trata todas las consultas como puras de Gremlin. Esto significa que los siguientes formularios de consulta fallan:

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

Lo más parecido a utilizar una variable cuando se está conectado de esta forma es utilizar la variable result que mantiene la consola y enviar la consulta utilizando :>, de esta forma:

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]

 

Una forma diferente de conectarse

También puede conectarse a la consola de Gremlin de una forma diferente, que tal vez le parezca más agradable, como esta:

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

Aquí neptune.properties toma esta forma:

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

El archivo my-cluster.yaml debería ser similar a esto:

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

Los serializadores se movieron del módulo al nuevo módulo en la versión gremlin-driver 3.7.0. gremlin-util El paquete cambió de org.apache.tinkerpop.gremlin.driver.ser a org.apache.tinkerpop.gremlin.util.ser.

Configurar la conexión de la consola de Gremlin de esta manera le permite realizar correctamente los siguientes tipos de consultas:

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

Puede evitar que se muestre el resultado, de esta manera:

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

Todas las formas habituales de realizar consultas (sin el paso del terminal) siguen funcionando. Por ejemplo:

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

Incluso puede usar el paso g.io().read() para cargar un archivo con este tipo de conexión.