Melakukan Kueri Riwayat Riwayat Revisi - 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.

Melakukan Kueri Riwayat Riwayat Revisi

Amazon QLDB menyimpan riwayat lengkap setiap dokumen dalam tabel. Anda dapat melihat ketiga revisi dokumen registrasi kendaraan yang sebelumnya Anda masukkan, diperbarui, dan dihapusMemperbarui dan menghapus dokumen dengan menanyakan fungsi riwayat bawaan.

Fungsi Riwayat

Fungsi sejarah di QLDB adalah ekstensi PartiQL yang mengembalikan revisi dari tampilan yang ditentukan sistem tabel Anda. Jadi, ini mencakup data Anda dan metadata terkait dalam skema yang sama dengan tampilan berkomitmen.

Sintaks

SELECT * FROM history( table_name | 'table_id' [, `start-time` [, `end-time` ] ] ) AS h [ WHERE h.metadata.id = 'id' ]
Pendapat
table_name | 'table_id'

Entah nama tabel atau ID tabel. Nama tabel adalah identifier PartiQL yang dapat Anda tunjukkan dengan tanda kutip ganda atau tidak ada tanda kutip. Sebuah ID tabel adalah string literal yang harus tertutup dalam tanda kutip tunggal. Untuk mempelajari selengkapnya menggunakan ID tabel, lihatMenanyakan sejarah tabel tidak aktif.

`start-time `,` akhir waktu`

(Opsional) Menentukan rentang waktu di mana setiap revisi aktif. Parameter ini tidak menentukan rentang waktu selama revisi berkomitmen pada jurnal dalam transaksi.

Waktu mulai dan akhir adalah literal timestamp Ion yang dapat dilambangkan dengan backticks (`...`). Untuk mempelajari selengkapnya, lihat Menanyakan Ion dengan PartiQL di Amazon QLDB.

Parameter waktu ini memiliki perilaku berikut:

  • Start-time dan end-time keduanya inklusif. Mereka harus berada dalam format tanggal dan waktu ISO 8601 dan dalam Waktu Universal Terkoordinasi (UTC).

  • Waktu mulai harus kurang dari atau sama dengan waktu akhir dan dapat berupa tanggal sewenang-wenang di masa lalu.

  • Waktu akhir harus kurang atau sama dengan tanggal dan waktu UTC saat ini.

  • Jika Anda menentukan waktu mulai tetapi bukan waktu akhir, kueri Anda akan menetapkan waktu akhir ke tanggal dan waktu saat ini. Jika Anda tidak menentukan keduanya, kueri Anda akan mengembalikan keseluruhan riwayat.

'id'

(Opsional) ID dokumen yang ingin Anda kueri pada riwayat revisi, dilambangkan dengan tanda kutip tunggal.

Tip

Sebagai praktik terbaik, kualifikasi kueri riwayat dengan rentang tanggal (start-time dan end-time) dan ID dokumen (metadata.id). Dalam QLDB, setiapSELECT permintaan diproses dalam transaksi dan tunduk pada batas batas waktu transaksi.

Kueri sejarah tidak menggunakan indeks yang Anda buat di atas meja. Riwayat QLDB diindeks oleh ID dokumen saja, dan Anda tidak dapat membuat indeks riwayat tambahan saat ini. Kueri riwayat yang menyertakan waktu mulai dan waktu akhir mendapatkan manfaat kualifikasi rentang tanggal.

Contoh kueri Riwayat

Untuk menanyakan riwayat dokumen registrasi kendaraan, gunakan dokumenid yang sebelumnya Anda simpanMemperbarui dan menghapus dokumen. Misalnya, kueri riwayat berikut menampilkan revisi apa pun untuk ID dokumenADR2Ll1fGsU4Jr4EqTdnQF yang pernah aktif di antara2019-06-05T00:00:00Z dan2019-06-05T23:59:59Z.

catatan

Ingat bahwa parameter waktu mulai dan akhir tidak menentukan rentang waktu ketika revisi berkomitmen ke jurnal dalam transaksi. Misalnya, jika revisi dilakukan sebelumnya2019-06-05T00:00:00Z dan tetap aktif melewati waktu mulai itu, kueri contoh ini akan mengembalikan revisi tersebut dalam hasil.

Pastikan untuk menggantiid, waktu mulai, dan waktu akhir dengan nilai Anda sendiri.

SELECT * FROM history(VehicleRegistration, `2019-06-05T00:00:00Z`, `2019-06-05T23:59:59Z`) AS h WHERE h.metadata.id = 'ADR2Ll1fGsU4Jr4EqTdnQF' --replace with your id

Hasil kueri Anda akan terlihat serupa dengan yang berikut ini:

{ blockAddress:{ strandId:"JdxjkR9bSYB5jMHWcI464T", sequenceNo:14 }, hash:{{B2wYwrHKOWsmIBmxUgPRrTx9lv36tMlod2xVvWNiTbo=}}, data: { VIN: "1HVBBAANXWH544237", LicensePlateNumber: "LS477D", State: "WA", City: "Tacoma", PendingPenaltyTicketAmount: 42.20, ValidFromDate: 2011-10-26T, ValidToDate: 2023-09-25T, Owners: { PrimaryOwner: { PersonId: "KmA3XPKKFqYCP2zhR3d0Ho" }, SecondaryOwners: [] } }, metadata:{ id:"ADR2Ll1fGsU4Jr4EqTdnQF", version:0, txTime:2019-06-05T20:53:321d-3Z, txId:"HgXAkLjAtV0HQ4lNYdzX60" } }, { blockAddress:{ strandId:"JdxjkR9bSYB5jMHWcI464T", sequenceNo:17 }, hash:{{LGSFZ4iEYWZeMwmAqcxxNyT4wbCtuMOmFCj8pEd6Mp0=}}, data: { VIN: "1HVBBAANXWH544237", LicensePlateNumber: "LS477D", State: "WA", PendingPenaltyTicketAmount: 42.20, ValidFromDate: 2011-10-26T, ValidToDate: 2023-09-25T, Owners: { PrimaryOwner: { PersonId: "KmA3XPKKFqYCP2zhR3d0Ho" }, SecondaryOwners: [] }, City: "Bellevue" }, metadata:{ id:"ADR2Ll1fGsU4Jr4EqTdnQF", version:1, txTime:2019-06-05T21:01:442d-3Z, txId:"9cArhIQV5xf5Tf5vtsPwPq" } }, { blockAddress:{ strandId:"JdxjkR9bSYB5jMHWcI464T", sequenceNo:19 }, hash:{{7bm5DUwpqJFGrmZpb7h9wAxtvggYLPcXq+LAobi9fDg=}}, metadata:{ id:"ADR2Ll1fGsU4Jr4EqTdnQF", version:2, txTime:2019-06-05T21:03:76d-3Z, txId:"9GslbtDtpVHAgYghR5FXbZ" } }

Output mencakup atribut metadata yang memberikan detail tentang kapan setiap item dimodifikasi, dan transaksi mana. Dari data ini, Anda bisa melihat yang berikut ini:

  • Dokumen ini diidentifikasi secara unik oleh sistem-ditugaskanid:ADR2Ll1fGsU4Jr4EqTdnQF. Ini adalah UUID yang diwakili dalam string Base62 dikodekan.

  • INSERTPernyataan menciptakan revisi awal dokumen (versi0).

  • Setiap pembaruan berikutnya membuat revisi baru dengan dokumen yang samaid dan nomor versi yang bertambah.

  • txIdBidang menunjukkan transaksi yang dilakukan setiap revisi, dantxTime menunjukkan kapan masing-masing berkomitmen.

  • SebuahDELETE pernyataan menciptakan revisi baru namun akhir dari sebuah dokumen. Revisi akhir ini hanya memiliki metadata.

Untuk mempelajari cara menghapus revisi secara permanen, lanjutkan keMenyunting revisi dokumen.