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

Importante

Escolher a versão correta do driver Apache TinkerPop Gremlin é fundamental para a compatibilidade com a versão do motor Neptune. Usar uma versão incompatível pode resultar em falhas de conexão ou comportamento inesperado. Para obter informações detalhadas sobre compatibilidade de versões, consulteAcessar o grafo do Neptune com o Gremlin.

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 estas instruções em uma instância do Amazon EC2 na mesma nuvem privada virtual (VPC) que a instância de banco de dados do 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 arquivo gremlinExample.go, substituindo (your neptune endpoint) pelo endereço da instância de banco de dados do 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

    No momento, o formato de certificado TLS do 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.