Usar Go 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á.

Usar Go para conectar-se a uma instância de banco de dados do Neptune

Se você puder, sempre use a versão mais recente do cliente Apache TinkerPop Go Gremlin, gremlingo, compatível com a versão do seu motor. As versões mais recentes contêm várias correções de erros que melhoram a estabilidade, o desempenho e a usabilidade do cliente.

A gremlingo versão a ser usada normalmente se alinhará às TinkerPop versões descritas na tabela do cliente Java Gremlin.

nota

As versões 3.5.x do gremlingo são retrocompatíveis com as versões 3.4.x, desde que você use apenas os recursos TinkerPop 3.4.x nas consultas do Gremlin que você escreve.

A seção a seguir descreve a execução de um exemplo do Go que se conecta a uma instância de banco de dados do Amazon Neptune e executa um percurso do Gremlin.

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.

Antes de começar, faça o seguinte:

  • Baixe e instale o Go 1.17 ou posterior no site gov.dev.

Como conectar-se ao Neptune usando Go
  1. A partir de um diretório vazio, inicialize um novo módulo Go:

    go mod init example.com/gremlinExample
  2. Adicione gremlin-go como uma dependência do novo módulo:

    go get github.com/apache/tinkerpop/gremlin-go/v3/driver
  3. Crie um arquivo denominado gremlinExample.go e abra-o em um editor de texto.

  4. Copie o seguinte no gremlinExample.go arquivo, substituindo (seu endpoint de netuno) com o endereço da sua instância de banco de dados Neptune:

    package main import ( "fmt" gremlingo "github.com/apache/tinkerpop/gremlin-go/v3/driver" ) func main() { // Creating the connection to the server. driverRemoteConnection, err := gremlingo.NewDriverRemoteConnection("wss://(your neptune endpoint):8182/gremlin", func(settings *gremlingo.DriverRemoteConnectionSettings) { settings.TraversalSource = "g" }) if err != nil { fmt.Println(err) return } // Cleanup defer driverRemoteConnection.Close() // Creating graph traversal g := gremlingo.Traversal_().WithRemote(driverRemoteConnection) // Perform traversal results, err := g.V().Limit(2).ToList() if err != nil { fmt.Println(err) return } // Print results for _, r := range results { fmt.Println(r.GetString()) } }
    nota

    Atualmente, o formato de certificado TLS Neptune não é compatível com o Go 1.18+ com macOS e pode gerar um erro 509 ao tentar iniciar uma conexão. Para testes locais, isso pode ser ignorado adicionando “crypto/tls” às importações e modificando as configurações DriverRemoteConnection da seguinte forma:

    // Creating the connection to the server. driverRemoteConnection, err := gremlingo.NewDriverRemoteConnection("wss://your-neptune-endpoint:8182/gremlin", func(settings *gremlingo.DriverRemoteConnectionSettings) { settings.TraversalSource = "g" settings.TlsConfig = &tls.Config{InsecureSkipVerify: true} })
  5. Insira o seguinte comando para executar o exemplo:

    go run gremlinExample.go

A consulta do Gremlin no final deste exemplo exibe os vértices (g.V().Limit(2)) em uma fatia. Essa fatia é então iterada e impressa com a função fmt.Println padrão.

nota

A parte final da consulta do Gremlin, ToList(), é necessária para enviar a travessia ao servidor para avaliação. Se você não incluir esse método ou outro método equivalente, a consulta não será enviada à instância de banco de dados do Neptune.

Os seguintes métodos enviam a consulta à instância de banco de dados do Neptune:

  • ToList()

  • ToSet()

  • Next()

  • GetResultSet()

  • Iterate()

O exemplo anterior retorna os primeiros dois vértices do gráfico usando a travessia g.V().Limit(2).ToList(). Para consultar outro elemento, substitua-a por outra travessia do Gremlin com um dos métodos de término adequado.