Configurar o console do Gremlin para conectar-se a uma instância de banco de dados do Neptune - Amazon Neptune

As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.

Configurar o console do Gremlin para conectar-se a uma instância de banco de dados do Neptune

O Gremlin Console permite que você experimente TinkerPop gráficos e consultas em um ambiente REPL (read-eval-print loop).

Instalar o console do Gremlin e conectar-se a ele da maneira usual

Você pode usar o Gremlin Console para conectar-se a um banco de dados de gráficos remoto. A seção a seguir descreve a instalação e a configuração do console do Gremlin para conectar-se remotamente a uma instância de banco de dados do Neptune. Você deve seguir essas instruções de uma EC2 instância da Amazon na mesma nuvem privada virtual (VPC) da sua instância de banco de dados Neptune.

Para obter ajuda na conexão com Neptune SSL comTLS/(o que é obrigatório), consulte. SSL/TLSconfiguração

nota

Se você tiver a IAMautenticação habilitada em seu cluster de banco de dados Neptune, siga as instruções para instalar o console do Gremlin Estabelecer conexão com o Neptune usando o console do Gremlin com a assinatura do Signature versão 4 em vez das instruções aqui.

Como instalar o console do Gremlin e se conectar ao Neptune
  1. Os binários do console do Gremlin exigem o Java 8 ou 11. Essas instruções pressupõem o uso do Java 11. Você pode instalar o Java 11 na sua EC2 instância da seguinte forma:

    • Se você estiver usando o Amazon Linux 2 (AL2):

      sudo amazon-linux-extras install java-openjdk11
    • Se você estiver usando o Amazon Linux 2023 (AL2023):

      sudo yum install java-11-amazon-corretto-devel
    • Para outras distribuições, use qualquer uma das seguintes opções que seja apropriada:

      sudo yum install java-11-openjdk-devel

      ou:

      sudo apt-get install openjdk-11-jdk
  2. Digite o seguinte para definir o Java 11 como o tempo de execução padrão na sua EC2 instância.

    sudo /usr/sbin/alternatives --config java

    Quando solicitado, insira o número do Java 11.

  3. Baixe a versão apropriada do console do Gremlin pelo site da Apache. É possível conferir a página de versão do mecanismo da versão do mecanismo do Neptune que você está executando no momento para determinar qual versão do Gremlin é compatível. Por exemplo, para a versão 3.6.5, você pode baixar o console Gremlin do site Apache Tinkerpop3 na sua instância da seguinte forma: EC2

    wget https://archive.apache.org/dist/tinkerpop/3.6.5/apache-tinkerpop-gremlin-console-3.6.5-bin.zip
  4. Descompacte o arquivo zip do Gremlin Console.

    unzip apache-tinkerpop-gremlin-console-3.6.5-bin.zip
  5. Altere os diretórios para o diretório descompactado.

    cd apache-tinkerpop-gremlin-console-3.6.5
  6. No subdiretório conf do diretório extraído, crie um arquivo chamado neptune-remote.yaml com o seguinte texto. Substituir your-neptune-endpoint com o nome do host ou endereço IP da sua instância de banco de dados Neptune. Os colchetes ([ ]) são necessários.

    nota

    Para obter informações sobre como localizar o nome do host da instância de banco de dados do Neptune, consulte a seção Conectar-se a endpoints do Amazon Neptune.

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

    Os serializadores foram movidos do gremlin-driver módulo para o novo gremlin-util módulo na versão 3.7.0. O pacote mudou de org.apache.tinkerpop.gremlin.driver.ser para org.apache.tinkerpop.gremlin.util.ser.

  7. Em um terminal, navegue até o diretório do Gremlin Console (apache-tinkerpop-gremlin-console-3.6.5) e, em seguida, insira o comando a seguir para executar o Gremlin Console.

    bin/gremlin.sh

    A seguinte saída deverá ser mostrada:

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

    Agora você está no prompt do gremlin>. Você inserirá as etapas restantes nesse prompt.

  8. No prompt gremlin>, insira o seguinte para conectar-se a instâncias de banco de dados do Neptune.

    :remote connect tinkerpop.server conf/neptune-remote.yaml
  9. No prompt gremlin>, insira o seguinte para alternar para modo remoto. Isso envia todas as consultas do Gremlin para a conexão remota.

    :remote console
  10. Insira o seguinte para enviar uma consulta para o Gremlin Graph.

    g.V().limit(1)
  11. Ao terminar, insira o seguinte para sair do Gremlin Console.

    :exit
nota

Use um ponto e vírgula (;) ou um caractere de nova linha (\n) para separar cada instrução.

Cada travessia anterior à travessia final deve terminar em next() a ser executada. Somente os dados da travessia final são retornados.

Para obter mais informações sobre a implementação do Gremlin no Neptune, consulte Conformidade com os padrões do Gremlin no Amazon Neptune.

Uma forma alternativa de se conectar ao console do Gremlin

Desvantagens da abordagem de conexão normal

A forma mais comum de se conectar ao console do Gremlin é a explicada acima, usando comandos como este no prompt gremlin>:

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

Isso funciona bem e permite que você envie consultas ao Neptune. No entanto, retira o mecanismo de script Groovy do circuito, então, o Neptune trata todas as consultas como Gremlin puro. Isso significa que os seguintes formatos de consulta falham:

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

O mais próximo que você pode chegar de usar uma variável quando conectado dessa maneira é usar a variável result mantida pelo console e enviar a consulta usando :>, desta 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]

 

Uma forma diferente de se conectar

Também é possível conectar-se ao console do Gremlin de outra maneira talvez mais agradável, desta forma:

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

Aqui neptune.properties assume o seguinte formato:

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

O arquivo my-cluster.yaml deve ser semelhante a este:

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

Os serializadores foram movidos do gremlin-driver módulo para o novo gremlin-util módulo na versão 3.7.0. O pacote mudou de org.apache.tinkerpop.gremlin.driver.ser para org.apache.tinkerpop.gremlin.util.ser.

Configurar a conexão do console do Gremlin dessa forma permite fazer os seguintes tipos de consulta com êxito:

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

Você pode evitar a exibição do resultado da seguinte maneira:

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

Todas as formas comuns de consulta (sem a etapa terminal) continuam funcionando. Por exemplo:

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

Você pode até usar a etapa g.io().read() para carregar um arquivo com esse tipo de conexão.