Menggunakan Gremlin untuk mengakses grafik di Amazon Neptunus - Amazon Neptune

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

Menggunakan Gremlin untuk mengakses grafik di Amazon Neptunus

Anda dapat menggunakan Konsol Gremlin untuk bereksperimen dengan TinkerPop grafik dan kueri di lingkungan REPL (loop). read-eval-print

Tutorial berikut memandu Anda melalui menggunakan konsol Gremlin untuk menambahkan vertex, edge, properti, dan banyak lagi ke grafik Neptune, menyoroti beberapa perbedaan dalam implementasi Gremlin khusus Neptune.

catatan

Contoh ini mengasumsikan bahwa Anda telah menyelesaikan hal berikut ini:

  • Anda telah terhubung menggunakan SSH ke instans Amazon EC2.

  • Anda telah membuat sebuah klaster Neptune seperti yang dijelaskan di Membuat klaster DB.

  • Anda telah menginstal konsol Gremlin seperti yang diterangkan dalam Menginstal konsol Gremlin.

Menggunakan Konsol Gremlin
  1. Ubah direktori ke dalam folder tempat file konsol Gremlin di-unzip.

    cd apache-tinkerpop-gremlin-console-3.6.5
  2. Masukkan perintah berikut untuk menjalankan Konsol Gremlin.

    bin/gremlin.sh

    Anda akan melihat output berikut:

    \,,,/ (o o) -----oOOo-(3)-oOOo----- plugin activated: tinkerpop.server plugin activated: tinkerpop.utilities plugin activated: tinkerpop.tinkergraph gremlin>

    Anda sekarang berada di prompt gremlin>. Anda memasukkan langkah-langkah yang tersisa pada prompt ini.

  3. Di prompt gremlin>, masukkan hal berikut untuk menyambung ke instans DB Neptune.

    :remote connect tinkerpop.server conf/neptune-remote.yaml
  4. Di prompt gremlin>, masukkan hal berikut ini untuk beralih ke mode jarak jauh. Ini mengirimkan semua kueri Gremlin ke koneksi remote.

    :remote console
  5. Tambahkan vertex dengan label dan properti.

    g.addV('person').property('name', 'justin')

    Vertex ditugaskan ID string yang berisi GUID. Semua ID vertex adalah string di Neptune.

  6. Tambahkan simpul dengan id kustom.

    g.addV('person').property(id, '1').property('name', 'martin')

    Properti id tidak dikutip. Ini adalah kata kunci untuk ID vertex. ID vertex di sini adalah string dengan nomor 1 di dalamnya.

    Nama properti normal harus berada di dalam tanda kutip.

  7. Ubah properti atau tambahkan properti jika tidak ada.

    g.V('1').property(single, 'name', 'marko')

    Di sini Anda mengubah properti name untuk vertex dari langkah sebelumnya. Ini akan menghapus semua nilai yang ada dari properti name.

    Jika Anda tidak menentukan single, ia justru akan menambahkan nilainya ke properti name jika belum dilakukannya.

  8. Tambahkan properti, tetapi tambahkan properti jika properti sudah memiliki nilai.

    g.V('1').property('age', 29)

    Neptune menggunakan set secara kardinal sebagai tindakan default.

    Perintah ini menambahkan properti age dengan nilai 29, tetapi tidak menggantikan nilai yang ada.

    Jika properti age sudah memiliki nilai, perintah ini menambahkan 29 ke properti. Sebagai contoh, jika properti age adalah 27, nilai baru akan menjadi [ 27, 29 ].

  9. Tambahkan beberapa simpul.

    g.addV('person').property(id, '2').property('name', 'vadas').property('age', 27).iterate() g.addV('software').property(id, '3').property('name', 'lop').property('lang', 'java').iterate() g.addV('person').property(id, '4').property('name', 'josh').property('age', 32).iterate() g.addV('software').property(id, '5').property('name', 'ripple').property('lang', 'java').iterate() g.addV('person').property(id, '6').property('name', 'peter').property('age', 35)

    Anda dapat mengirim beberapa pernyataan pada saat yang sama ke Neptune.

    Pernyataan dapat dipisahkan dengan baris baru ('\n'), spasi (' '), titik koma ('; '), atau kosong (misalnya: g.addV(‘person’).iterate()g.V() berlaku).

    catatan

    Konsol Gremlin mengirimkan perintah terpisah di setiap baris baru ('\n'), sehingga masing-masing mereka menjadi transaksi terpisah dalam kasus itu. Contoh ini memiliki semua perintah pada baris terpisah untuk dibaca. Hapus baris baru karakter ('\n') untuk mengirimkannya sebagai perintah tunggal melalui Konsol Gremlin.

    Semua pernyataan selain pernyataan terakhir harus diakhiri dengan langkah pengakhiran, seperti .next() atau .iterate(), atau mereka tidak akan berjalan. Konsol Gremlin tidak memerlukan langkah-langkah pengakhiran ini. Gunakan .iterate setiap kali Anda tidak memerlukan hasil yang akan diserialkan.

    Semua pernyataan yang dikirim bersama-sama disertakan dalam satu transaksi dan berhasil atau gagal bersama-sama.

  10. Tambahkan tepi.

    g.V('1').addE('knows').to(__.V('2')).property('weight', 0.5).iterate() g.addE('knows').from(__.V('1')).to(__.V('4')).property('weight', 1.0)

    Berikut adalah dua cara berbeda untuk menambahkan edge.

  11. Tambahkan sisa grafik Modern.

    g.V('1').addE('created').to(__.V('3')).property('weight', 0.4).iterate() g.V('4').addE('created').to(__.V('5')).property('weight', 1.0).iterate() g.V('4').addE('knows').to(__.V('3')).property('weight', 0.4).iterate() g.V('6').addE('created').to(__.V('3')).property('weight', 0.2)
  12. Hapus simpul.

    g.V().has('name', 'justin').drop()

    Menghapus vertex dengan properti name sama dengan justin.

    penting

    Berhenti di sini, dan Anda memiliki grafik Apache TinkerPop Modern lengkap. Contoh di bagian Traversal TinkerPop dokumentasi menggunakan grafik Modern.

  13. Jalankan traversal.

    g.V().hasLabel('person')

    Mengembalikan semua vertex person.

  14. Jalankan Traversal dengan nilai (valueMap ()).

    g.V().has('name', 'marko').out('knows').valueMap()

    Mengembalikan kunci, pasangan nilai untuk semua vertex yang “diketahui” marko.

  15. Tentukan beberapa label.

    g.addV("Label1::Label2::Label3")

    Neptune mendukung beberapa label untuk sebuah vertex. Ketika Anda membuat label, Anda dapat menentukan beberapa label dengan memisahkannya dengan ::.

    Contoh ini menambahkan sebuah vertex dengan tiga label yang berbeda.

    Langkah hasLabel cocok dengan vertex ini dengan salah satu dari tiga label tersebut: hasLabel("Label1"), hasLabel("Label2"), dan hasLabel("Label3").

    Pembatas :: dicadangkan untuk penggunaan ini saja.

    Anda tidak dapat menentukan beberapa label di langkah hasLabel. Misalnya, hasLabel("Label1::Label2") tidak cocok dengan apa pun.

  16. Tentukan Waktu/tanggal.

    g.V().property(single, 'lastUpdate', datetime('2018-01-01T00:00:00'))

    Neptune tidak mendukung Java Date. Gunakan datetime() sebagai gantinya. datetime() menerima string datetime yang sesuai dengan ISO8061.

    Mendukung format berikut: YYYY-MM-DD, YYYY-MM-DDTHH:mm, YYYY-MM-DDTHH:mm:SS, dan YYYY-MM-DDTHH:mm:SSZ.

  17. Hapus simpul, properti, atau tepi.

    g.V().hasLabel('person').properties('age').drop().iterate() g.V('1').drop().iterate() g.V().outE().hasLabel('created').drop()

    Berikut adalah beberapa contoh drop.

    catatan

    Langkah .next() tidak bekerja dengan .drop(). Gunakan .iterate() sebagai gantinya.

  18. Setelah selesai, masukkan yang berikut ini untuk keluar dari Gremlin Console.

    :exit
catatan

Gunakan titik koma (;) atau karakter baris baru (\n) untuk memisahkan setiap pernyataan.

Setiap traversal sebelum traversal akhir harus diakhiri dengan iterate() yang akan dieksekusi. Hanya data dari traversal akhir yang dikembalikan.