Menggunakan Neptune Streams - Amazon Neptune

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

Menggunakan Neptune Streams

Dengan fitur Neptune Streams, Anda dapat membuat urutan lengkap entri log perubahan yang merekam setiap perubahan yang dibuat pada data grafik Anda saat itu terjadi. Untuk gambaran umum fitur ini, lihat Menangkap perubahan grafik secara real time menggunakan aliran Neptunus.

Mengaktifkan Neptune Streams

Anda dapat mengaktifkan atau menonaktifkan Aliran Neptunus kapan saja dengan mengatur neptune_streams parameter cluster DB. Mengatur parameter ke 1 mengaktifkan Stream dan mengaturnya ke 0 menonaktifkan Streams.

catatan

Setelah mengubah parameter cluster neptune_streams DB, Anda harus me-reboot semua instance DB di cluster agar perubahan diterapkan.

Anda dapat mengatur parameter cluster DB neptune_streams_expiry_days untuk mengontrol berapa hari, dari 1 hingga 90, bahwa catatan aliran tetap ada di server sebelum dihapus. Defaultnya adalah 7.

Neptune Streams awalnya diperkenalkan sebagai fitur eksperimental yang Anda aktifkan atau nonaktifkan dalam Mode Lab menggunakan parameter DB neptune_lab_mode Cluster (lihat). Mode Lab Neptune Menggunakan Mode Lab untuk mengaktifkan Stream sekarang tidak berlaku lagi dan akan dinonaktifkan di masa mendatang.

Menonaktifkan Neptune Streams

Anda dapat menonaktifkan Neptune Stream yang berproses kapan saja.

Untuk menonaktifkan Streaming, perbarui grup parameter Cluster DB sehingga nilai parameter neptune_streams diatur ke 0.

penting

Segera setelah Streams dimatikan, Anda tidak dapat mengakses data perubahan-log lagi. Pastikan untuk membaca apa yang Anda minati di sebelum mematikan Streams.

Menyebut Aliran Neptunus REST API

Anda mengakses Neptunus Streams menggunakan REST API yang mengirimkan permintaan ke salah satu HTTP GET titik akhir lokal berikut:

  • Untuk SPARQL grafik DB:https://Neptune-DNS:8182/sparql/stream.

  • Untuk Gremlin atau openCypher grafik DB: https://Neptune-DNS:8182/propertygraph/stream atau. https://Neptune-DNS:8182/pg/stream

catatan

Pada rilis engine 1.1.0.0, titik akhir aliran Gremlin (https://Neptune-DNS:8182/gremlin/stream) tidak digunakan lagi, bersama dengan format keluaran terkait (). GREMLIN_JSON Ini masih didukung untuk kompatibilitas mundur tetapi dapat dihapus di rilis mendatang.

Hanya HTTP GET operasi yang diizinkan.

Neptunus gzip mendukung kompresi respons, asalkan permintaan menyertakan Accept-Encoding header yang HTTP gzip menentukan sebagai format kompresi yang diterima (yaitu,). "Accept-Encoding: gzip"

Parameter
  • limit- panjang, opsional. Kisaran: 1—100.000. Default: 10.

    Menentukan angka maksimum catatan yang akan dikembalikan. Ada juga batas ukuran 10 MB pada respon yang tidak dapat diubah dan yang diutamakan daripada jumlah catatan yang ditentukan dalam parameter limit. Respon mencakup catatan pelanggaran ambang batas jika batas 10 MB tercapai.

  • iteratorType— String, opsional.

    Parameter ini dapat berupa salah satu nilai berikut:

    • AT_SEQUENCE_NUMBER(default) - Menunjukkan bahwa pembacaan harus dimulai dari nomor urutan acara yang ditentukan bersama oleh opNum parameter commitNum dan.

    • AFTER_SEQUENCE_NUMBER— Menunjukkan bahwa pembacaan harus dimulai tepat setelah nomor urut acara yang ditentukan bersama oleh opNum parameter commitNum dan.

    • TRIM_HORIZON— Menunjukkan bahwa pembacaan harus dimulai pada catatan terakhir yang belum dipangkas dalam sistem, yang merupakan catatan tertua yang belum kedaluwarsa (belum dihapus) dalam aliran log perubahan. Mode ini berguna selama startup aplikasi, ketika Anda tidak memiliki nomor urutan acara awal tertentu.

    • LATEST— Menunjukkan bahwa pembacaan harus dimulai pada catatan terbaru dalam sistem, yang merupakan catatan terbaru yang belum kedaluwarsa (belum dihapus) dalam aliran log perubahan. Ini berguna ketika ada kebutuhan untuk membaca catatan dari atas aliran saat ini agar tidak memproses catatan yang lebih lama, seperti selama pemulihan bencana atau peningkatan zero-downtime. Perhatikan bahwa dalam mode ini, paling banyak hanya ada satu catatan yang dikembalikan.

  • commitNum— panjang, iteratorType diperlukan kapan AT_SEQUENCE_NUMBER atauAFTER_SEQUENCE_NUMBER.

    Jumlah commit dari catatan awal yang akan dibaca dari stream log perubahan.

    Parameter ini diabaikan ketika iteratorType adalah TRIM_HORIZON atauLATEST.

  • opNum— panjang, opsional (defaultnya adalah1).

    Nomor urut operasi dalam commit yang ditentukan untuk mulai dibaca dari dalam data stream log perubahan.

Operasi yang mengubah data SPARQL grafik umumnya hanya menghasilkan catatan perubahan tunggal per operasi. Namun, operasi yang mengubah data grafik Gremlin dapat menghasilkan beberapa catatan perubahan per operasi, seperti dalam contoh berikut:

  • INSERT— Sebuah simpul Gremlin dapat memiliki beberapa label, dan elemen Gremlin dapat memiliki beberapa properti. Sebuah catatan perubahan terpisah yang dihasilkan untuk setiap label dan properti ketika elemen dimasukkan.

  • UPDATE— Ketika properti elemen Gremlin diubah, dua catatan perubahan dihasilkan: yang pertama untuk menghapus nilai sebelumnya, dan yang kedua untuk memasukkan nilai baru.

  • DELETE— Catatan perubahan terpisah dihasilkan untuk setiap properti elemen yang dihapus. Misalnya, ketika edge Gremlin dengan properti dihapus, satu catatan perubahan dihasilkan untuk masing-masing properti, dan setelah itu, satu dihasilkan untuk penghapusan label edge.

    Ketika vertex Gremlin dihapus, semua properti edge masuk dan keluar dihapus terlebih dahulu, selanjutnya label edge, selanjutnya properti vertex, dan terakhir label vertex. Setiap penghapusan ini menghasilkan catatan perubahan.

Format Respons Streaming API Neptunus

Respons terhadap permintaan Neptunus REST API Streams memiliki bidang berikut:

  • lastEventId— Pengidentifikasi urutan dari perubahan terakhir dalam respons aliran. ID peristiwa disusun dari dua bidang: A commitNum mengidentifikasi transaksi yang mengubah grafik, dan opNum mengidentifikasi operasi tertentu dalam transaksi itu. Ini ditunjukkan dalam contoh berikut.

    "eventId": { "commitNum": 12, "opNum": 1 }
  • lastTrxTimestamp— Waktu di mana komit untuk transaksi diminta, dalam milidetik dari zaman Unix.

  • format— Format serialisasi untuk catatan perubahan yang dikembalikan. Nilai yang mungkin adalah PG_JSON untuk Gremlin atau catatan openCypher perubahan, dan NQUADS untuk catatan SPARQL perubahan.

  • records— Array catatan aliran log perubahan serial yang disertakan dalam respons. Setiap record dalam records array berisi bidang-bidang ini:

    • commitTimestamp— Waktu di mana komit untuk transaksi diminta, dalam milidetik dari zaman Unix.

    • eventId— Pengidentifikasi urutan catatan perubahan aliran.

    • data— Gremlin serial,SPARQL, atau OpenCypher catatan perubahan. Format serialisasi setiap catatan dijelaskan secara lebih rinci di bagian selanjutnya,Format Serialisasi dalam Neptune Stream.

    • op— Operasi yang menciptakan perubahan.

    • isLastOp— Hanya hadir jika operasi ini adalah yang terakhir dalam transaksinya. Saat hadir, itu diatur ketrue. Berguna untuk memastikan bahwa seluruh transaksi dikonsumsi.

  • totalRecords— Jumlah total catatan dalam tanggapan.

Misalnya, respons berikut mengembalikan data perubahan Gremlin, untuk transaksi yang berisi lebih dari satu operasi:

{ "lastEventId": { "commitNum": 12, "opNum": 1 }, "lastTrxTimestamp": 1560011610678, "format": "PG_JSON", "records": [ { "commitTimestamp": 1560011610678, "eventId": { "commitNum": 1, "opNum": 1 }, "data": { "id": "d2b59bf8-0d0f-218b-f68b-2aa7b0b1904a", "type": "vl", "key": "label", "value": { "value": "vertex", "dataType": "String" } }, "op": "ADD" } ], "totalRecords": 1 }

Respons berikut mengembalikan data SPARQL perubahan untuk operasi terakhir dalam transaksi (operasi diidentifikasi oleh EventId(97, 1) dalam nomor transaksi 97).

{ "lastEventId": { "commitNum": 97, "opNum": 1 }, "lastTrxTimestamp": 1561489355102, "format": "NQUADS", "records": [ { "commitTimestamp": 1561489355102, "eventId": { "commitNum": 97, "opNum": 1 }, "data": { "stmt": "<https://test.com/s> <https://test.com/p> <https://test.com/o> .\n" }, "op": "ADD", "isLastOp": true } ], "totalRecords": 1 }

Pengecualian Aliran API Neptunus

Tabel berikut menjelaskan pengecualian Neptune Streams.

Kode Kesalahan HTTPKode OK atau Mengulang? Pesan

InvalidParameterException

400

Tidak

out-of-range Nilai atau tidak valid diberikan sebagai parameter input.

ExpiredStreamException

400

Tidak

Semua catatan yang diminta melebihi usia maksimum yang diizinkan dan telah kedaluwarsa.

ThrottlingException

500

Ya

Tingkat permintaan melebihi throughput maksimum.

StreamRecordsNotFoundException

404

Tidak

Sumber daya yang diminta tidak dapat ditemukan. Stream mungkin tidak ditentukan dengan benar.

MemoryLimitExceededException

500

Ya

Pemrosesan permintaan tidak berhasil karena kurangnya memori, tetapi dapat dicoba lagi ketika server tidak terlalu sibuk.