Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.
Isi jurnal di Amazon QLDB
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
Di AmazonQLDB, jurnal adalah log transaksional yang tidak dapat diubah yang menyimpan riwayat lengkap dan dapat diverifikasi dari semua perubahan pada data Anda. Jurnal ini hanya ditambahkan dan terdiri dari sekumpulan blok yang diurutkan dan dirantai hash yang berisi data komitmen Anda dan metadata sistem lainnya. QLDBmenulis satu blok dirantai ke jurnal dalam suatu transaksi.
Bagian ini memberikan contoh blok jurnal dengan data sampel dan menjelaskan isi blok.
Contoh blok
Berikut ini adalah contoh blok dengan data sampel.
catatan
Contoh blok ini disediakan hanya untuk tujuan informasi. Hash yang ditampilkan bukanlah nilai hash yang dihitung secara nyata.
{ blockAddress:{ strandId:"4o5UuzWSW5PIoOGm5jPA6J", sequenceNo:25 }, transactionId:"3gtB8Q8dfIMA8lQ5pzHAMo", blockTimestamp:2022-06-08T18:46:46.512Z, blockHash:{{QS5lJt8vRxT30L9OGL5oU1pxFTe+UlEwakYBCrvGQ4A=}}, entriesHash:{{buYYc5kV4rrRtJAsrIQnfnhgkzfQ8BKjI0C2vFnYQEw=}}, previousBlockHash:{{I1UKRIWUgkM1X6042kcoZ/eN1rn0uxhDTc08zw9kZ5I=}}, entriesHashList:[ {{BUCXP6oYgmug2AfPZcAZup2lKolJNTbTuV5RA1VaFpo=}}, {{cTIRkjuULzp/4KaUEsb/S7+TG8FvpFiZHT4tEJGcANc=}}, {{3aktJSMyJ3C5StZv4WIJLu/w3D8mGtduZvP0ldKUaUM=}}, {{GPKIJ1+o8mMZmPj/35ZQXoca2z64MVYMCwqs/g080IM=}} ], transactionInfo:{ statements:[ { statement:"INSERT INTO VehicleRegistration VALUE ?", startTime:2022-06-08T18:46:46.063Z, statementDigest:{{KY2nL6UGUPs5lXCLVXcUaBxcEIop0Jvk4MEjcFVBfwI=}} }, { statement:"SELECT p_id FROM Person p BY p_id WHERE p.FirstName = ? and p.LastName = ?", startTime:2022-06-08T18:46:46.173Z, statementDigest:{{QS2nfB8XBf2ozlDx0nvtsliOYDSmNHMYC3IRH4Uh690=}} }, { statement:"UPDATE VehicleRegistration r SET r.Owners.PrimaryOwner.PersonId = ? WHERE r.VIN = ?", startTime:2022-06-08T18:46:46.278Z, statementDigest:{{nGtIA9Qh0/dwIplOR8J5CTeqyUVtNUQgXfltDUo2Aq4=}} }, { statement:"DELETE FROM DriversLicense l WHERE l.LicenseNumber = ?", startTime:2022-06-08T18:46:46.385Z, statementDigest:{{ka783dcEP58Q9AVQ1m9NOJd3JAmEvXLjzl0OjN1BojQ=}} } ], documents:{ HwVFkn8IMRa0xjze5xcgga:{ tableName:"VehicleRegistration", tableId:"HQZ6cgIMUi204Lq1tT4oaJ", statements:[0,2] }, IiPTRxLGJZa342zHFCFT15:{ tableName:"DriversLicense", tableId:"BvtXEB1JxZg0lJlBAtbtSV", statements:[3] } } }, revisions:[ { hash:{{FR1IWcWew0yw1TnRklo2YMF/qtwb7ohsu5FD8A4DSVg=}} }, { blockAddress:{ strandId:"4o5UuzWSW5PIoOGm5jPA6J", sequenceNo:25 }, hash:{{6TTHbcfIVdWoFC/j90BOZi0JdHzhjSXo1tW+uHd6Dj4=}}, data:{ VIN:"1N4AL11D75C109151", LicensePlateNumber:"LEWISR261LL", State:"WA", City:"Seattle", PendingPenaltyTicketAmount:90.25, ValidFromDate:2017-08-21, ValidToDate:2020-05-11, Owners:{ PrimaryOwner:{ PersonId:"3Ax20JIix5J2ulu2rCMvo2" }, SecondaryOwners:[] } }, metadata:{ id:"HwVFkn8IMRa0xjze5xcgga", version:0, txTime:2022-06-08T18:46:46.492Z, txId:"3gtB8Q8dfIMA8lQ5pzHAMo" } }, { blockAddress:{ strandId:"4o5UuzWSW5PIoOGm5jPA6J", sequenceNo:25 }, hash:{{ZVF/f1uSqd5DIMqzI04CCHaCGFK/J0Jf5AFzSEk0l90=}}, metadata:{ id:"IiPTRxLGJZa342zHFCFT15", version:1, txTime:2022-06-08T18:46:46.492Z, txId:"3gtB8Q8dfIMA8lQ5pzHAMo" } } ] }
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. Hash dari revisi ini adalah bagian dari rantai hash lengkap jurnal, yang diperlukan untuk verifikasi kriptografi.
Isi blok
Blok jurnal memiliki bidang-bidang berikut:
blockAddress
-
Lokasi blok di jurnal. Alamat adalah struktur Amazon Ion yang memiliki dua bidang:
strandId
dansequenceNo
.Misalnya:
{strandId:"BlFTjlSXze9BIh1KOszcE3",sequenceNo:14}
transactionId
-
ID unik dari transaksi yang melakukan blok.
blockTimestamp
-
Stempel waktu ketika blok itu dimasukkan ke jurnal.
blockHash
-
Nilai hash 256-bit yang secara unik mewakili blok. Ini adalah hash dari rangkaian dan.
entriesHash
previousBlockHash
entriesHash
-
Hash yang mewakili semua entri dalam blok, termasuk entri sistem internal saja. Ini adalah hash akar pohon Merkle di mana simpul daun terdiri dari semua hash di dalamnya.
entriesHashList
previousBlockHash
-
Hash dari blok berantai sebelumnya di jurnal.
entriesHashList
-
Daftar hash yang mewakili setiap entri dalam blok. Daftar ini dapat mencakup hash entri berikut:
-
Hash Ion yang mewakili
transactionInfo
. Nilai ini dihitung dengan mengambil hash Ion dari seluruhtransactionInfo
struktur. -
Hash akar pohon Merkle di mana simpul daun terdiri dari semua hash di dalamnya.
revisions
-
Hash Ion yang mewakili
redactionInfo
. Hash ini hanya ada di blok yang dilakukan oleh transaksi redaksi. Nilainya dihitung dengan mengambil hash Ion dari seluruhredactionInfo
struktur. -
Hash yang mewakili metadata sistem internal saja. Hash ini mungkin tidak ada di semua blok.
-
transactionInfo
-
Struktur Amazon Ion yang berisi informasi tentang pernyataan dalam transaksi yang melakukan blok. Struktur ini memiliki bidang-bidang berikut:
-
statements
— Daftar pernyataan PartiQL dan kapan mereka mulaistartTime
berjalan. Setiap pernyataan memilikistatementDigest
hash, yang diperlukan untuk menghitung hash struktur.transactionInfo
-
documents
— Dokumen IDs yang diperbarui oleh pernyataan. Setiap dokumentableId
mencakuptableName
dan miliknya, dan indeks setiap pernyataan yang memperbaruinya.
-
revisions
-
Daftar revisi dokumen yang dilakukan di blok. Setiap struktur revisi berisi semua bidang dari pandangan komitmen revisi.
Ini juga dapat mencakup hash yang mewakili revisi sistem internal saja yang merupakan bagian dari rantai hash penuh jurnal.
Revisi yang disunting
Di AmazonQLDB, sebuah DELETE
pernyataan hanya secara logis menghapus dokumen dengan membuat revisi baru yang menandainya sebagai dihapus. QLDBjuga mendukung operasi redaksi data yang memungkinkan Anda menghapus revisi dokumen yang tidak aktif secara permanen dalam riwayat tabel.
Operasi redaksi hanya menghapus data pengguna dalam revisi yang ditentukan, dan membiarkan urutan jurnal dan metadata dokumen tidak berubah. Ini menjaga integritas data keseluruhan buku besar Anda. Untuk informasi lebih lanjut dan contoh operasi redaksi, lihatMenyunting revisi dokumen.
Contoh revisi yang disunting
Perhatikan contoh blok sebelumnya. Di blok ini, misalkan Anda menyunting revisi yang memiliki ID dokumen HwVFkn8IMRa0xjze5xcgga
dan nomor versi. 0
Setelah redaksi selesai, data pengguna dalam revisi (diwakili oleh data
struktur) digantikan oleh bidang barudataHash
. Nilai bidang ini adalah hash Ion dari data
struktur yang dihapus. Akibatnya, buku besar mempertahankan integritas data secara keseluruhan dan tetap dapat diverifikasi secara kriptografis melalui operasi verifikasi yang ada. API
Contoh revisi berikut menunjukkan hasil redaksi ini, dengan dataHash
bidang baru disorot red italics
.
catatan
Contoh revisi ini disediakan hanya untuk tujuan informasi. Hash yang ditampilkan bukanlah nilai hash yang dihitung secara nyata.
...
{
blockAddress:{
strandId:"4o5UuzWSW5PIoOGm5jPA6J",
sequenceNo:25
},
hash:{{6TTHbcfIVdWoFC/j90BOZi0JdHzhjSXo1tW+uHd6Dj4=}},
dataHash:{{s83jd7sfhsdfhksj7hskjdfjfpIPP/DP2hvionas2d4=}},
metadata:{
id:"HwVFkn8IMRa0xjze5xcgga",
version:0,
txTime:2022-06-08T18:46:46.492Z,
txId:"3gtB8Q8dfIMA8lQ5pzHAMo"
}
}
...
QLDBjuga menambahkan blok baru ke jurnal untuk permintaan redaksi yang telah selesai. Blok ini mencakup redactionInfo
entri tambahan yang berisi daftar revisi yang disunting dalam transaksi, seperti yang ditunjukkan pada contoh berikut.
... redactionInfo:{ revisions:[ { blockAddress:{ strandId:"4o5UuzWSW5PIoOGm5jPA6J", sequenceNo:25 }, tableId:"HQZ6cgIMUi204Lq1tT4oaJ", documentId:"HwVFkn8IMRa0xjze5xcgga", version:0 } ] } ...
Aplikasi sampel
Untuk contoh kode Java yang memvalidasi rantai hash jurnal menggunakan data yang diekspor, lihat GitHub repositori aws-samples/ -java. amazon-qldb-dmv-sample
-
ValidateQldbHashChain.java
- Berisi kode tutorial yang mengekspor blok jurnal dari buku besar dan menggunakan data yang diekspor untuk memvalidasi rantai hash antar blok. -
JournalBlock.java
— Berisi metode bernama verifyBlockHash()
yang menunjukkan bagaimana menghitung setiap komponen hash individu dalam blok. Metode ini disebut dengan kode tutorial diValidateQldbHashChain.java
.
Untuk petunjuk tentang cara mengunduh dan menginstal aplikasi sampel lengkap ini, lihatMenginstal aplikasi sampel Amazon QLDB Java. Sebelum Anda menjalankan kode tutorial, pastikan Anda mengikuti Langkah 1-3 Tutorial Java untuk menyiapkan buku besar sampel dan memuatnya dengan data sampel.
Lihat juga
Untuk informasi selengkapnya tentang jurnal diQLDB, lihat topik berikut:
-
Mengekspor data jurnal dari Amazon QLDB— Untuk mempelajari cara mengekspor data jurnal ke Amazon Simple Storage Service (Amazon S3).
-
Streaming data jurnal dari Amazon QLDB— Untuk mempelajari cara mengalirkan data jurnal ke Amazon Kinesis Data Streams.
-
Verifikasi data di Amazon QLDB— Untuk mempelajari tentang verifikasi kriptografi data jurnal.