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

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

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

如果可以的話,請始終使用最新版本的 Apache TinkerPop Go 小鬼客戶端,gremlingo,您的引擎版本支持。較新的版本包含許多錯誤修正,其可以改善用戶端的穩定性、效能和可用性。

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

注意

只要您在編寫的小鬼查詢中僅使用 3. TinkerPop 4.x 功能,gremlingo 3.5.x 版本與 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 周遊。