Support untuk sesi berbasis skrip Gremlin - Amazon Neptune

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

Support untuk sesi berbasis skrip Gremlin

Anda dapat menggunakan sesi Gremlin dengan transaksi implisit di Amazon Neptune. Untuk informasi tentang sesi Gremlin, lihat Mempertimbangkan Sesi dalam dokumentasi TinkerPop Apache. Bagian di bawah ini menjelaskan cara menggunakan sesi Gremlin dengan Java.

catatan

Fitur ini tersedia mulai dari Rilis mesin Neptune 1.0.1.0.200463.0.

Dimulai dengan rilis mesin Neptunus 1.1.1.0 TinkerPop dan versi 3.5.2, Anda juga dapat menggunakan. Transaksi Gremlin

penting

Saat ini, waktu terlama Neptunus dapat menjaga sesi berbasis skrip terbuka adalah 10 menit. Jika Anda tidak menutup sesi sebelum itu, waktu sesi habis dan semua yang ada di dalamnya di-rollback.

Sesi Gremlin pada konsol Gremlin

Jika Anda membuat koneksi jauh pada Konsol Gremlin tanpa parameter session, koneksi jauh dibuat di mode sessionless. Dalam mode ini, setiap permintaan yang diserahkan ke server diperlakukan sebagai transaksi lengkap dalam permintaan itu sendiri, dan tidak ada status yang disimpan antara permintaan. Jika permintaan gagal, hanya permintaan tersebut yang di-rollback.

Jika Anda membuat koneksi jarak jauh yang menggunakan session parameter, Anda membuat sesi berbasis skrip yang berlangsung hingga Anda menutup koneksi jarak jauh. Setiap sesi diidentifikasi oleh UUID unik yang dihasilkan konsol dan dikembalikan kepada Anda.

Berikut ini adalah contoh satu panggilan konsol yang menciptakan sesi. Setelah kueri dikirimkan, panggilan lain menutup sesi dan melakukan kueri.

catatan

Klien Gremlin harus selalu ditutup untuk melepaskan sumber daya sisi server.

gremlin> :remote connect tinkerpop.server conf/neptune-remote.yaml session . . . . . . gremlin> :remote close

Untuk informasi dan contoh selengkapnya, lihat Sesi dalam TinkerPop dokumentasi.

Semua pertanyaan yang Anda jalankan selama sesi membentuk satu transaksi yang tidak dilakukan sampai semua permintaan berhasil dan Anda menutup sambungan jarak jauh. Jika kueri gagal, atau jika Anda tidak menutup koneksi dalam masa sesi maksimum yang Neptune dukung, transaksi sesi tidak dilakukan, dan semua kueri di dalamnya di-rollback.

Sesi Gremlin dalam Varian Bahasa Gremlin

Dalam varian bahasa Gremlin (GLV), Anda perlu membuat objek SessionedClient untuk mengeluarkan beberapa kueri dalam satu transaksi, seperti dalam contoh berikut.

try { // line 1 Cluster cluster = Cluster.open(); // line 2 Client client = cluster.connect("sessionName"); // line 3 ... ... } finally { // Always close. If there are no errors, the transaction is committed; otherwise, it's rolled back. client.close(); }

Baris 3 pada contoh sebelumnya membuat SessionedClient objek sesuai dengan opsi konfigurasi yang ditetapkan untuk cluster yang dimaksud. String sessionName yang Anda loloskan ke metode connect menjadi nama unik sesi. Untuk menghindari tabrakan, gunakan UUID untuk nama tersebut.

Klien mulai transaksi sesi ketika diinisialisasi. Semua kueri yang Anda jalankan selama bentuk sesi dilakukan hanya ketika Anda memanggil client.close( ). Sekali lagi, jika kueri gagal, atau jika Anda tidak menutup koneksi dalam masa sesi maksimum yang Neptune dukung, transaksi sesi gagal, dan semua kueri di dalamnya di-rollback.

catatan

Klien Gremlin harus selalu ditutup untuk melepaskan sumber daya sisi server.

GraphTraversalSource g = traversal().withRemote(conn); Transaction tx = g.tx(); // Spawn a GraphTraversalSource from the Transaction. // Traversals spawned from gtx are executed within a single transaction. GraphTraversalSource gtx = tx.begin(); try { gtx.addV('person').iterate(); gtx.addV('software').iterate(); tx.commit(); } finally { if (tx.isOpen()) { tx.rollback(); } }