使用 Go 連線至 Neptune 資料庫執行個體 - Amazon Neptune

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

使用 Go 連線至 Neptune 資料庫執行個體

如果可以的話,請一律使用您的引擎版本所支援的最新版 Apache TinkerPop Go Gremlin 用戶端 (gremlingo)。較新的版本包含許多錯誤修正,其可以改善用戶端的穩定性、效能和可用性。

要使用的 gremlingo 版本通常會與 Java Grimlin 用戶端表格中所述的 TinkerPop 版本保持一致。

注意

gremlingo 3.5.x 版與 TinkerPop 3.4.x 版回溯相容,只要您在撰寫的 Gremlin 查詢中僅使用 3.4.x 功能即可。

下節引導您逐步執行 Go 範例,其會連線至 Amazon 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 檔案,以 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} })
  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 周遊。