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
importante
La elección de la versión correcta del controlador Apache TinkerPop Gremlin es fundamental para la compatibilidad con la versión del motor Neptune. El uso de una versión incompatible puede provocar fallos de conexión o un comportamiento inesperado. Para obtener información detallada sobre la compatibilidad de versiones, consulteAcceso al gráfico de Neptune con 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.
Siga estas instrucciones desde una instancia de Amazon EC2 que esté 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
-
A partir de un directorio vacío, inicialice un nuevo módulo de Go:
go mod init example.com/gremlinExample -
Añada gremlin-go como dependencia de su nuevo módulo:
go get github.com/apache/tinkerpop/gremlin-go/v3/driver -
Cree un archivo con el nombre
gremlinExample.goy, a continuación, ábralo en un editor de texto. -
Copie lo siguiente en el archivo
gremlinExample.goy sustituyapor la dirección de su instancia de base de datos de Neptune:(your neptune endpoint)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 del certificado TLS de Neptune no es compatible actualmente en Go 1.18+ con macOS y puede generar un error 509 al intentar iniciar una conexión. Para las pruebas locales, esto se puede omitir añadiendo «» a las importaciones y modificando la configuración de la siguiente manera: crypto/tls
DriverRemoteConnection// 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} }) -
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.
A continuación, se muestran ejemplos de métodos que envían la consulta a la instancia de base de datos Neptune:
ToList()ToSet()Next()Iterate()
Estos pasos finales se comportan de forma diferente en el modo script y en el modo bytecode. Para ver una lista canónica de pasos de terminal y detalles sobre cómo afectan a las transacciones, consulte. Pruebe el código de Gremlin en el contexto en el que lo va a implementar
Úselo Iterate() cuando no necesite los resultados de sus consultas (por ejemplo, las mutaciones), ya que ahorra costes de serialización.
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.
Autenticación de IAM
Neptune admite la autenticación de IAM para controlar el acceso a su clúster de base de datos. Si tiene habilitada la autenticación de IAM, debe utilizar la firma de la versión 4 de Signature para autenticar sus solicitudes. Para obtener instrucciones detalladas y ejemplos de código para conectarse desde un cliente Go, consulte. Conexión a bases de datos de Amazon Neptune mediante la autenticación de IAM con Go de Gremlin