Catatan aliran QLDB dalam Kinesis - Amazon Quantum Ledger Database (Amazon QLDB)

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

Catatan aliran QLDB dalam Kinesis

Aliran QLDB Amazon menulis tiga jenis catatan data ke sumber daya Amazon Kinesis Data Streams yang diberikan: kontrol, ringkasan blokir, dan detail revisi. Ketiga jenis rekaman ditulis dalam representasi biner dari format Amazon Ion.

Catatan kontrol menunjukkan awal dan penyelesaian aliran QLDB Anda. Setiap kali revisi dilakukan pada jurnal Anda, aliran QLDB menulis semua data blok jurnal terkait dalam ringkasan blok dan catatan detail revisi.

Tiga jenis rekaman adalah polimorfik. Semuanya terdiri dari catatan tingkat atas umum yang berisi ARN aliran QLDB, jenis catatan, dan muatan catatan. Catatan tingkat atas ini memiliki format berikut.

{ qldbStreamArn: string, recordType: string, payload: { //control | block summary | revision details record } }

recordTypeBidang dapat memiliki salah satu dari tiga nilai:

  • CONTROL

  • BLOCK_SUMMARY

  • REVISION_DETAILS

Bagian berikut menjelaskan format dan isi setiap catatan muatan individu.

catatan

QLDB menulis semua catatan aliran ke Kinesis Data Streams dalam representasi biner Amazon Ion. Contoh berikut disediakan dalam representasi teks Ion untuk mengilustrasikan isi rekaman dalam format yang dapat dibaca.

Catatan kontrol

Aliran QLDB menulis catatan kontrol untuk menunjukkan peristiwa awal dan penyelesaiannya. Berikut ini adalah contoh catatan kontrol dengan data sampel untuk masing-masingcontrolRecordType:

  • CREATED— Catatan pertama yang ditulis oleh aliran QLDB ke Kinesis untuk menunjukkan bahwa aliran yang baru Anda buat aktif.

    { qldbStreamArn:"arn:aws:qldb:us-east-1:123456789012:stream/exampleLedger/IiPT4brpZCqCq3f4MTHbYy", recordType:"CONTROL", payload:{ controlRecordType:"CREATED" } }
  • COMPLETED— Catatan terakhir yang ditulis oleh aliran QLDB ke Kinesis untuk menunjukkan bahwa aliran Anda telah mencapai tanggal dan waktu akhir yang ditentukan. Catatan ini tidak ditulis jika Anda membatalkan streaming.

    { qldbStreamArn:"arn:aws:qldb:us-east-1:123456789012:stream/exampleLedger/IiPT4brpZCqCq3f4MTHbYy", recordType:"CONTROL", payload:{ controlRecordType:"COMPLETED" } }

Blokir catatan ringkasan

Catatan ringkasan blok mewakili blok jurnal tempat revisi dokumen Anda dilakukan. Blok adalah objek yang berkomitmen pada jurnal QLDB Anda selama transaksi.

Muatan catatan ringkasan blok berisi alamat blok, stempel waktu, dan metadata lain dari transaksi yang melakukan blok tersebut. Ini juga mencakup atribut ringkasan dari revisi di blok dan pernyataan PartiQL yang melakukannya. Berikut ini adalah contoh catatan ringkasan blok dengan data sampel.

catatan

Contoh ringkasan blok ini disediakan hanya untuk tujuan informasi. Hash yang ditampilkan bukanlah nilai hash yang dihitung secara nyata.

{ qldbStreamArn:"arn:aws:qldb:us-east-1:123456789012:stream/exampleLedger/IiPT4brpZCqCq3f4MTHbYy", recordType:"BLOCK_SUMMARY", payload:{ blockAddress:{ strandId:"ElYL30RGoqrFCbbaQn3K6m", sequenceNo:60807 }, transactionId:"9RWohCo7My4GGkxRETAJ6M", blockTimestamp:2019-09-18T17:00:14.601000001Z, blockHash:{{6Pk9KDYJd38ci09oaHxx0D2grtgh4QBBqbDS6i9quX8=}}, entriesHash:{{r5YoH6+NXDXxgoRzPREGAWJfn73KlZE0eTfbTxZWUDU=}}, previousBlockHash:{{K3ti0Agk7DEponywKcQCPRYVHb5RuyxdmQFTfrloptA=}}, entriesHashList:[ {{pbzvz6ofJC7mD2jvgfyrY/VtR01zIZHoWy8T1VcxlGo=}}, {{k2brC23DLMercmiOWHiURaGwHu0mQtLzdNPuviE2rcs=}}, {{hvw1EV8k4oOkIO36kblO/+UUSFUQqCanKuDGr0aP9nQ=}}, {{ZrLbkyzDcpJ9KWsZMZqRuKUkG/czLIJ4US+K5E31b+Q=}} ], transactionInfo:{ statements:[ { statement:"SELECT * FROM Person WHERE GovId = ?", startTime:2019-09-18T17:00:14.587Z, statementDigest:{{p4Dn0DiuYD3Xm9UQQ75YLwmoMbSfJmopOmTfMnXs26M=}} }, { statement:"INSERT INTO Person ?", startTime:2019-09-18T17:00:14.594Z, statementDigest:{{klMLkLfa5VJqk6JUPtHkQpOsDdG4HmuUaq/VaApQflU=}} }, { statement:"INSERT INTO VehicleRegistration ?", startTime:2019-09-18T17:00:14.598Z, statementDigest:{{B0gO9BWVNrzRYFoe7t+GVLpJ6uZcLKf5t/chkfRhspI=}} } ], documents:{ '7z2OpEBgVCvCtwvx4a2JGn':{ tableName:"Person", tableId:"LSkFkQvkIOjCmpTZpkfpn9", statements:[1] }, 'K0FpsSLpydLDr7hi6KUzqk':{ tableName:"VehicleRegistration", tableId:"Ad3A07z0ZffC7Gpso7BXyO", statements:[2] } } }, revisionSummaries:[ { hash:{{uDthuiqSy4FwjZssyCiyFd90XoPSlIwomHBdF/OrmkE=}}, documentId:"7z2OpEBgVCvCtwvx4a2JGn" }, { hash:{{qJID/amu0gN3dpG5Tg0FfIFTh/U5yFkfT+g/O6k5sPM=}}, documentId:"K0FpsSLpydLDr7hi6KUzqk" } ] } }

Di revisionSummaries lapangan, beberapa revisi mungkin tidak memiliki adocumentId. Ini adalah revisi sistem internal saja yang tidak berisi data pengguna. Aliran QLDB menyertakan revisi ini dalam catatan ringkasan blok masing-masing karena hash dari revisi ini adalah bagian dari rantai hash lengkap jurnal. Rantai hash penuh diperlukan untuk verifikasi kriptografi.

Hanya revisi yang memiliki ID dokumen yang diterbitkan dalam catatan rincian revisi terpisah, seperti yang dijelaskan di bagian berikut.

Revisi rincian catatan

Catatan rincian revisi mewakili revisi dokumen yang berkomitmen untuk jurnal Anda. Payload berisi semua atribut dari tampilan komited revisi, bersama dengan nama tabel terkait dan ID tabel. Berikut ini adalah contoh catatan revisi dengan data sampel.

{ qldbStreamArn:"arn:aws:qldb:us-east-1:123456789012:stream/exampleLedger/IiPT4brpZCqCq3f4MTHbYy", recordType:"REVISION_DETAILS", payload:{ tableInfo:{ tableName:"VehicleRegistration", tableId:"Ad3A07z0ZffC7Gpso7BXyO" }, revision:{ blockAddress:{ strandId:"ElYL30RGoqrFCbbaQn3K6m", sequenceNo:60807 }, hash:{{qJID/amu0gN3dpG5Tg0FfIFTh/U5yFkfT+g/O6k5sPM=}}, data:{ VIN:"1N4AL11D75C109151", LicensePlateNumber:"LEWISR261LL", State:"WA", City:"Seattle", PendingPenaltyTicketAmount:90.25, ValidFromDate:2017-08-21, ValidToDate:2020-05-11, Owners:{ PrimaryOwner:{PersonId:"7z2OpEBgVCvCtwvx4a2JGn"}, SecondaryOwners:[] } }, metadata:{ id:"K0FpsSLpydLDr7hi6KUzqk", version:0, txTime:2019-09-18T17:00:14.602Z, txId:"9RWohCo7My4GGkxRETAJ6M" } } } }

Menangani duplikat dan catatan out-of-order

Aliran QLDB dapat mempublikasikan duplikat dan catatan ke out-of-order Kinesis Data Streams. Jadi, aplikasi konsumen mungkin perlu menerapkan logikanya sendiri untuk mengidentifikasi dan menangani skenario tersebut. Ringkasan blok dan catatan detail revisi mencakup bidang yang dapat Anda gunakan untuk tujuan ini. Dikombinasikan dengan fitur layanan hilir, bidang ini dapat menunjukkan identitas unik dan urutan ketat untuk catatan.

Misalnya, pertimbangkan aliran yang mengintegrasikan QLDB dengan indeks untuk memberikan kemampuan OpenSearch pencarian teks lengkap melalui dokumen. Dalam kasus penggunaan ini, Anda harus menghindari pengindeksan revisi basi (out-of-order) dokumen. Untuk menerapkan pengurutan dan deduplikasi, Anda dapat menggunakan ID dokumen dan bidang versi eksternal di OpenSearch, bersama dengan ID dokumen dan bidang versi dalam catatan detail revisi.

Untuk contoh logika deduplikasi dalam contoh aplikasi yang mengintegrasikan QLDB dengan OpenSearch Amazon Service, lihat repositori aws-samples/ -. GitHub amazon-qldb-streaming-amazon opensearch-service-sample-python