View a markdown version of this page

Menggunakan Go untuk menyambung ke instans Neptune DB - Amazon Neptune

Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.

Menggunakan Go untuk menyambung ke instans Neptune DB

penting

Memilih versi driver Apache TinkerPop Gremlin yang benar sangat penting untuk kompatibilitas dengan versi mesin Neptune Anda. Menggunakan versi yang tidak kompatibel dapat mengakibatkan kegagalan koneksi atau perilaku tak terduga. Untuk informasi kompatibilitas versi terperinci, lihatMengakses grafik Neptune dengan Gremlin.

catatan

Versi gremlingo 3.5.x kompatibel dengan versi 3.4.x selama Anda hanya menggunakan TinkerPop fitur 3.4.x dalam kueri Gremlin yang Anda tulis.

Bagian berikut memandu Anda melalui menjalankan sampel Go yang terhubung ke instance Amazon Neptune DB dan melakukan traversal Gremlin.

Anda harus mengikuti petunjuk ini dari instans Amazon EC2 di virtual private cloud (VPC) yang sama seperti instans DB Neptune Anda.

Sebelum memulai, lakukan hal berikut:

  • Unduh dan instal Go 1.17 atau yang lebih baru dari situs web go.dev.

Untuk terhubung ke Neptunus menggunakan Go
  1. Mulai dari direktori kosong, inisialisasi modul Go baru:

    go mod init example.com/gremlinExample
  2. Tambahkan gremlin-go sebagai ketergantungan modul baru Anda:

    go get github.com/apache/tinkerpop/gremlin-go/v3/driver
  3. Buat file bernama gremlinExample.go dan kemudian buka di editor teks.

  4. Salin yang berikut ini ke dalam gremlinExample.go file, ganti (your neptune endpoint) dengan alamat instance Neptune DB Anda:

    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()) } }
    catatan

    Format sertifikat Neptune TLS saat ini tidak didukung di Go 1.18+ dengan macOS, dan mungkin memberikan kesalahan 509 saat mencoba memulai koneksi. Untuk pengujian lokal, ini dapat dilewati dengan menambahkan "crypto/tls" ke impor dan memodifikasi DriverRemoteConnection pengaturan sebagai berikut:

    // 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. Masukkan perintah berikut untuk menjalankan sampel:

    go run gremlinExample.go

Kueri Gremlin di akhir contoh ini mengembalikan simpul (g.V().Limit(2)) dalam irisan. Irisan ini kemudian diiterasi dan dicetak dengan fmt.Println fungsi standar.

catatan

Bagian akhir dari kueri Gremlin, ToList(), diperlukan untuk mengirimkan traversal ke server untuk evaluasi. Jika Anda tidak menyertakan metode tersebut atau metode setara lain, kueri tidak diserahkan ke instans DB Neptune.

Berikut ini adalah contoh metode yang mengirimkan kueri ke instance Neptune DB:

  • ToList()

  • ToSet()

  • Next()

  • Iterate()

Langkah-langkah terminal ini berperilaku berbeda dalam mode skrip dan mode bytecode. Untuk daftar kanonik langkah-langkah terminal dan detail tentang bagaimana mereka mempengaruhi transaksi, lihatUji kode Gremlin dalam konteks Anda akan menyebarkannya.

Gunakan Iterate() saat Anda tidak memerlukan hasil kueri Anda (misalnya mutasi) karena menghemat biaya serialisasi.

Contoh sebelumnya mengembalikan dua vertex pertama dalam grafik menggunakan traversal g.V().Limit(2).ToList(). Untuk mengajukan kueri untuk sesuatu yang lain, ganti dengan traversal Gremlin lain dengan salah satu metode ending yang tepat.

Autentikasi IAM

Neptune mendukung otentikasi IAM untuk mengontrol akses ke cluster DB Anda. Jika Anda mengaktifkan otentikasi IAM, Anda perlu menggunakan penandatanganan Signature Version 4 untuk mengotentikasi permintaan Anda. Untuk petunjuk terperinci dan contoh kode untuk menghubungkan dari klien Go, lihatMenghubungkan ke database Amazon Neptune menggunakan otentikasi IAM dengan Gremlin Go.