本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
使用 Go 连接到 Neptune 数据库实例
如果可以的话,请始终使用您的引擎版本支持的最新版本的 Apache TinkerPop Go Gremlin 客户端 g remlingo
要使用的gremlingo版本通常与 Java Gremlin 客户端表中描述的 TinkerPop版本保持一致。
以下部分将指导您完成 Go 示例的运行,该示例连接到 Neptune 数据库实例并执行 Gremlin 遍历。
您必须在 Neptune 数据库 EC2 实例所在的虚拟私有云 (VPC) 中的 Amazon 实例中按照这些说明进行操作。
开始之前,请执行以下操作:
从 go.dev
网站下载并安装 Go 1.17 或更高版本。
使用 Go 连接到 Neptune
-
从空目录开始,初始化一个新的 Go 模块:
go mod init example.com/gremlinExample -
添加 gremlin-go 作为新模块的依赖项:
go get github.com/apache/tinkerpop/gremlin-go/v3/driver -
创建一个名为
gremlinExample.go的文件,然后在文本编辑器中打开它。 -
将以下内容复制到
gremlinExample.go文件中,同时将替换为 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()) } }注意
搭载 macOS 的 Go 1.18+ 目前不支持 Neptune TLS 证书格式,尝试启动连接时可能会出现 509 错误。对于本地测试,可以通过在导入中添加“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} }) -
输入以下命令以运行示例:
go run gremlinExample.go
此示例结尾处的 Gremlin 查询将返回切片中的顶点 (g.V().Limit(2))。然后,对该切片进行迭代并使用标准 fmt.Println 函数进行打印。
注意
要将遍历提交到服务器进行评估,需要 Gremlin 查询的最后一部分 ToList()。如果您未包含该方法或其它等效方法,该查询将不会提交到 Neptune 数据库实例。
以下方法将查询提交到 Neptune 数据库实例:
ToList()ToSet()Next()GetResultSet()Iterate()
上述示例通过使用 g.V().Limit(2).ToList() 遍历返回图形中的前两个顶点。要查询其他内容,请将其替换为具有其中一种适当的结尾方法的其他 Gremlin 遍历。