Output ekspor jurnal dalam QLDB - 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.

Output ekspor jurnal dalam QLDB

Pekerjaan ekspor jurnal QLDB Amazon menulis dua file manifes selain objek data yang berisi blok jurnal Anda. Ini semua disimpan di bucket Amazon S3 yang Anda berikan dalam permintaan ekspor Anda. Bagian berikut menjelaskan format dan isi dari setiap objek output.

catatan

Jika Anda menentukan JSON sebagai format output dari pekerjaan ekspor Anda, QLDB akan mengubah data jurnal Amazon Ion ke JSON di objek data yang diekspor. Untuk informasi lebih lanjut, lanjutkan keDown-convert ke JSON.

File manifes

Amazon QLDB membuat dua file manifes dalam bucket S3 yang disediakan untuk setiap permintaan ekspor. File manifes awal dibuat segera setelah Anda mengirimkan permintaan ekspor. File manifes akhir ditulis setelah ekspor selesai. Anda dapat menggunakan file-file ini untuk memeriksa status pekerjaan ekspor Anda di Amazon S3.

Format untuk isi file manifes sesuai dengan format output yang diminta untuk ekspor.

Manifes awal

Manifes awal menunjukkan bahwa pekerjaan ekspor Anda telah dimulai. Ini berisi parameter input yang Anda berikan ke permintaan. Selain tujuan Amazon S3 dan parameter waktu mulai dan berakhir untuk ekspor, file ini juga berisi file. exportId exportIdIni adalah ID unik yang diberikan QLDB untuk setiap pekerjaan ekspor.

Konvensi penamaan file adalah sebagai berikut.

s3://DOC-EXAMPLE-BUCKET/prefix/exportId.started.manifest

Berikut ini adalah contoh file manifes awal dan isinya dalam format teks Ion.

s3://DOC-EXAMPLE-BUCKET/journalExport/8UyXulxccYLAsbN1aon7e4.started.manifest
{ ledgerName:"my-example-ledger", exportId:"8UyXulxccYLAsbN1aon7e4", inclusiveStartTime:2019-04-15T00:00:00.000Z, exclusiveEndTime:2019-04-15T22:00:00.000Z, bucket:"DOC-EXAMPLE-BUCKET", prefix:"journalExport", objectEncryptionType:"NO_ENCRYPTION", outputFormat:"ION_TEXT" }

Manifes awal mencakup outputFormat satu-satunya jika ditentukan dalam permintaan ekspor. Jika Anda tidak menentukan format output, data yang diekspor default ke format. ION_TEXT

Operasi DescribeJournalS3Export API dan jenis konten objek Amazon S3 yang diekspor juga menunjukkan format output.

Manifes akhir

Manifes terakhir menunjukkan bahwa pekerjaan ekspor Anda untuk untaian jurnal tertentu telah selesai. Pekerjaan ekspor menulis file manifes akhir terpisah untuk setiap untai.

catatan

Di Amazon QLDB, untai adalah partisi jurnal buku besar Anda. QLDB saat ini mendukung jurnal dengan untai tunggal saja.

Manifes akhir mencakup daftar urutan kunci objek data yang ditulis selama ekspor. Konvensi penamaan file adalah sebagai berikut.

s3://DOC-EXAMPLE-BUCKET/prefix/exportId.strandId.completed.manifest

strandIdIni adalah ID unik yang diberikan QLDB ke untai. Berikut ini adalah contoh file manifes akhir dan isinya dalam format teks Ion.

s3://DOC-EXAMPLE-BUCKET/journalExport/8UyXulxccYLAsbN1aon7e4.JdxjkR9bSYB5jMHWcI464T.completed.manifest
{ keys:[ "2019/04/15/22/JdxjkR9bSYB5jMHWcI464T.1-4.ion", "2019/04/15/22/JdxjkR9bSYB5jMHWcI464T.5-10.ion", "2019/04/15/22/JdxjkR9bSYB5jMHWcI464T.11-12.ion", "2019/04/15/22/JdxjkR9bSYB5jMHWcI464T.13-20.ion", "2019/04/15/22/JdxjkR9bSYB5jMHWcI464T.21-21.ion" ] }

Obyek data

Amazon QLDB menulis objek data jurnal dalam bucket Amazon S3 yang disediakan baik dalam teks atau representasi biner format Amazon Ion, atau dalam format teks JSON Lines.

Dalam format JSON Lines, setiap blok dalam objek data yang diekspor adalah objek JSON yang valid yang dibatasi oleh baris baru. Anda dapat menggunakan format ini untuk mengintegrasikan ekspor JSON secara langsung dengan alat analitik seperti Amazon Athena AWS Glue dan karena layanan ini dapat mengurai JSON yang dibatasi baris baru secara otomatis. Untuk informasi selengkapnya tentang format, lihat JSON Lines.

Nama objek data

Pekerjaan ekspor jurnal menulis objek data ini dengan konvensi penamaan berikut.

s3://DOC-EXAMPLE-BUCKET/prefix/yyyy/mm/dd/hh/strandId.startSn-endSn.ion|.json
  • Data output dari setiap pekerjaan ekspor dipecah menjadi beberapa bagian.

  • yyyy/mm/dd/hh— Tanggal dan waktu ketika Anda mengajukan permintaan ekspor. Objek yang diekspor dalam jam yang sama dikelompokkan di bawah awalan Amazon S3 yang sama.

  • strandId— ID unik dari untai tertentu yang berisi blok jurnal yang sedang diekspor.

  • startSn-endSn— Rentang nomor urut yang termasuk dalam objek. Nomor urut menentukan lokasi blok dalam untai.

Misalnya, anggaplah Anda menentukan jalur berikut.

s3://DOC-EXAMPLE-BUCKET/journalExport/

Pekerjaan ekspor Anda membuat objek data Amazon S3 yang terlihat mirip dengan yang berikut ini. Contoh ini menunjukkan nama objek dalam format Ion.

s3://DOC-EXAMPLE-BUCKET/journalExport/2019/04/15/22/JdxjkR9bSYB5jMHWcI464T.1-5.ion

Isi objek data

Setiap objek data berisi objek blok jurnal dengan format berikut.

{ blockAddress: { strandId: String, sequenceNo: Int }, transactionId: String, blockTimestamp: Datetime, blockHash: SHA256, entriesHash: SHA256, previousBlockHash: SHA256, entriesHashList: [ SHA256 ], transactionInfo: { statements: [ { //PartiQL statement object } ], documents: { //document-table-statement mapping object } }, revisions: [ { //document revision object } ] }

Blok adalah objek yang berkomitmen pada jurnal selama transaksi. Sebuah blok berisi metadata transaksi bersama dengan entri yang mewakili revisi dokumen yang dilakukan dalam transaksi dan pernyataan PartiQL yang melakukannya.

Berikut ini adalah contoh blok dengan data sampel dalam format teks Ion. Untuk informasi tentang bidang dalam objek blok, lihatIsi jurnal di Amazon QLDB.

catatan

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

{ blockAddress:{ strandId:"JdxjkR9bSYB5jMHWcI464T", sequenceNo:1234 }, transactionId:"D35qctdJRU1L1N2VhxbwSn", blockTimestamp:2019-10-25T17:20:21.009Z, blockHash:{{WYLOfZClk0lYWT3lUsSr0ONXh+Pw8MxxB+9zvTgSvlQ=}}, entriesHash:{{xN9X96atkMvhvF3nEy6jMSVQzKjHJfz1H3bsNeg8GMA=}}, previousBlockHash:{{IAfZ0h22ZjvcuHPSBCDy/6XNQTsqEmeY3GW0gBae8mg=}}, entriesHashList:[ {{F7rQIKCNn0vXVWPexilGfJn5+MCrtsSQqqVdlQxXpS4=}}, {{C+L8gRhkzVcxt3qRJpw8w6hVEqA5A6ImGne+E7iHizo=}} ], transactionInfo:{ statements:[ { statement:"CREATE TABLE VehicleRegistration", startTime:2019-10-25T17:20:20.496Z, statementDigest:{{3jeSdejOgp6spJ8huZxDRUtp2fRXRqpOMtG43V0nXg8=}} }, { statement:"CREATE INDEX ON VehicleRegistration (VIN)", startTime:2019-10-25T17:20:20.549Z, statementDigest:{{099D+5ZWDgA7r+aWeNUrWhc8ebBTXjgscq+mZ2dVibI=}} }, { statement:"CREATE INDEX ON VehicleRegistration (LicensePlateNumber)", startTime:2019-10-25T17:20:20.560Z, statementDigest:{{B73tVJzVyVXicnH4n96NzU2L2JFY8e9Tjg895suWMew=}} }, { statement:"INSERT INTO VehicleRegistration ?", startTime:2019-10-25T17:20:20.595Z, statementDigest:{{ggpon5qCXLo95K578YVhAD8ix0A0M5CcBx/W40Ey/Tk=}} } ], documents:{ '8F0TPCmdNQ6JTRpiLj2TmW':{ tableName:"VehicleRegistration", tableId:"BPxNiDQXCIB5l5F68KZoOz", statements:[3] } } }, revisions:[ { hash:{{FR1IWcWew0yw1TnRklo2YMF/qtwb7ohsu5FD8A4DSVg=}} }, { blockAddress:{ strandId:"JdxjkR9bSYB5jMHWcI464T", sequenceNo:1234 }, hash:{{t8Hj6/VC4SBitxnvBqJbOmrGytF2XAA/1c0AoSq2NQY=}}, data:{ VIN:"1N4AL11D75C109151", LicensePlateNumber:"LEWISR261LL", State:"WA", City:"Seattle", PendingPenaltyTicketAmount:90.25, ValidFromDate:2017-08-21, ValidToDate:2020-05-11, Owners:{ PrimaryOwner:{ PersonId:"GddsXfIYfDlKCEprOLOwYt" }, SecondaryOwners:[] } }, metadata:{ id:"8F0TPCmdNQ6JTRpiLj2TmW", version:0, txTime:2019-10-25T17:20:20.618Z, txId:"D35qctdJRU1L1N2VhxbwSn" } } ] }

Di revisions lapangan, beberapa objek revisi mungkin hanya berisi hash nilai dan tidak ada atribut lainnya. Ini adalah revisi sistem internal saja yang tidak berisi data pengguna. Pekerjaan ekspor mencakup revisi ini di blok masing-masing karena hash dari revisi ini adalah bagian dari rantai hash penuh jurnal. Rantai hash penuh diperlukan untuk verifikasi kriptografi.

Down-convert ke JSON

Jika Anda menentukan JSON sebagai format output dari pekerjaan ekspor Anda, QLDB akan mengubah data jurnal Amazon Ion ke JSON di objek data yang diekspor. Namun, mengonversi Ion ke JSON hilang dalam kasus tertentu di mana data Anda menggunakan tipe Ion kaya yang tidak ada di JSON.

Untuk detail tentang aturan konversi Ion ke JSON, lihat Mengonversi ke bawah ke JSON di Buku Masak Amazon Ion.

Ekspor pustaka prosesor (Java)

QLDB menyediakan kerangka kerja yang dapat diperluas untuk Java yang merampingkan pemrosesan ekspor di Amazon S3. Pustaka kerangka kerja ini menangani pekerjaan membaca output ekspor dan iterasi melalui blok yang diekspor dalam urutan berurutan. Untuk menggunakan prosesor ekspor ini, lihat GitHub repositori amazon-qldb-export-processorawslabs/ -java.