Uso de Go 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.

Uso de Go para conectarse a una instancia de base de datos de Neptune

Si puede, utilice siempre la versión más reciente del cliente Apache TinkerPop Go Gremlin, compatible con la versión de su motor. Las versiones más recientes contienen numerosas correcciones de errores que mejoran la estabilidad, el rendimiento y la facilidad de uso del cliente.

La gremlingo versión que se utilizará normalmente se alineará con TinkerPop las versiones descritas en la tabla del cliente Java Gremlin.

nota

Las versiones 3.5.x de gremlingo son retrocompatibles con las versiones 3.4.x siempre y cuando solo utilices las funciones de la versión TinkerPop 3.4.x en las consultas de Gremlin que escribas.

En la siguiente sección se indica cómo ejecutar una muestra de Go que se conecta a una instancia de base de datos de Amazon Neptune y realiza un recorrido Gremlin.

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.

Antes de comenzar, haga lo siguiente:

  • Descargue e instale Go 1.17 o una versión posterior desde el sitio web go.dev.

Para conectarse a Neptune mediante Go
  1. A partir de un directorio vacío, inicialice un nuevo módulo de Go:

    go mod init example.com/gremlinExample
  2. Añada gremlin-go como dependencia de su nuevo módulo:

    go get github.com/apache/tinkerpop/gremlin-go/v3/driver
  3. Cree un archivo con el nombre gremlinExample.go y, a continuación, ábralo en un editor de texto.

  4. Copie lo siguiente en el gremlinExample.go archivo y reemplace (tu punto final de Neptuno) con la dirección de su instancia de base de datos de 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

    El formato de TLS certificado de Neptune no es compatible actualmente con Go 1.18+ con macOS y puede generar un error 509 al intentar iniciar una conexión. En el caso de las pruebas locales, puede omitirlo añadiendo “crypto/tls” a las importaciones y modificando la configuración de DriverRemoteConnection de la siguiente manera:

    // 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. Escriba el comando siguiente para ejecutar el ejemplo:

    go run gremlinExample.go

La consulta de Gremlin al final de este ejemplo devuelve los vértices (g.V().Limit(2)) en un sector. A continuación, este segmento se itera y se imprime con la función fmt.Println estándar.

nota

La parte final de la consulta de Gremlin, ToList(), es necesaria para enviar el recorrido al servidor para su evaluación. Si no incluye ese método u otro equivalente, la consulta no se envía a la instancia de base de datos de Neptune.

Los siguientes métodos envían la consulta a la instancia de base de datos de Neptune:

  • ToList()

  • ToSet()

  • Next()

  • GetResultSet()

  • Iterate()

El ejemplo anterior devuelve los dos primeros vértices del gráfico utilizando el recorrido g.V().Limit(2).ToList(). Para otras consultas, sustitúyalo por otro recorrido de Gremlin con uno de los métodos de finalización adecuados.