使用 Go 连接到 Neptune 数据库实例 - Amazon Neptune
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

使用 Go 连接到 Neptune 数据库实例

如果可以的话,请始终使用您的引擎版本支持的最新版本的 Apache TinkerPop Go Gremlin 客户端 g remlingo。更新的版本包含大量错误修复,可以提升客户端的稳定性、性能和可用性。

要使用的gremlingo版本通常与 Java Gremlin 客户端表中描述的 TinkerPop版本保持一致。

注意

只要你在编写的 Gremlin 查询中只使用 3. TinkerPop 4.x 功能,gremlingo 3.5.x 版本就向后兼容 3.4.x 版本。

以下部分将指导您完成 Go 示例的运行,该示例连接到 Neptune 数据库实例并执行 Gremlin 遍历。

必须从与您的 Neptune 数据库实例位于同一虚拟私有云 (VPC) 中的 Amazon EC2 实例中按照这些说明操作。

开始之前,请执行以下操作:

  • go.dev 网站下载并安装 Go 1.17 或更高版本。

使用 Go 连接到 Neptune
  1. 从空目录开始,初始化一个新的 Go 模块:

    go mod init example.com/gremlinExample
  2. 添加 gremlin-go 作为新模块的依赖项:

    go get github.com/apache/tinkerpop/gremlin-go/v3/driver
  3. 创建一个名为 gremlinExample.go 的文件,然后在文本编辑器中打开它。

  4. 将以下内容复制到 gremlinExample.go 文件中,同时将 (your neptune endpoint) 替换为 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()) } }
    注意

    搭载 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} })
  5. 输入以下命令以运行示例:

    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 遍历。