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
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
-
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.go
y, a continuación, ábralo en un editor de texto. -
Copie lo siguiente en el
gremlinExample.go
archivo y reemplace
con la dirección de su instancia de base de datos de Neptune:(tu punto final de Neptuno)
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} })
-
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.