QLDBcatatan aliran di Kinesis - Database Buku Besar Amazon Quantum (AmazonQLDB)

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

QLDBcatatan aliran di Kinesis

penting

Pemberitahuan akhir dukungan: Pelanggan yang ada akan dapat menggunakan Amazon QLDB hingga akhir dukungan pada 07/31/2025. Untuk detail selengkapnya, lihat Memigrasi QLDB Buku Besar Amazon ke Amazon Aurora Postgre. SQL

QLDBAliran 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 QLDB aliran Anda. Setiap kali revisi dilakukan pada jurnal Anda, QLDB aliran 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 QLDB aliranARN, 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 dari setiap catatan muatan individu.

catatan

QLDBmenulis 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

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

  • CREATED— Rekaman pertama yang ditulis oleh QLDB aliran 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 QLDB aliran 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 QLDB jurnal 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. QLDBAliran 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

QLDBstream dapat mempublikasikan duplikat dan out-of-order catatan ke 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 terintegrasi QLDB dengan OpenSearch indeks untuk memberikan kemampuan 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 terintegrasi dengan QLDB Amazon OpenSearch Service, lihat GitHub repositori aws-samples/ -. amazon-qldb-streaming-amazon opensearch-service-sample-python