查詢修訂記錄 - Amazon Quantum 賬本數據庫(AmazonQLDB)

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

查詢修訂記錄

重要

支援結束通知:現有客戶將能夠使用 Amazon,QLDB直到 2025 年 7 月 31 日終止支援為止。有關更多詳細信息,請參閱將 Amazon QLDB 分類帳遷移到 Amazon Aurora 郵政. SQL

Amazon 將每個文檔的完整歷史記錄QLDB存儲在一個表中。您可以查詢內建的歷史記錄功能,查看先前插入、更新和刪除的車輛登記文件更新和刪除文件的全部三個修訂版本。

歷史功能

中的歷史記錄函數QLDB是 PartiQL 擴充功能,它會從資料表的系統定義檢視中傳回修訂版本。因此,它將您的數據和關聯的元數據包含在與提交視圖相同的模式中。

語法

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

資料表名稱或資料表 ID。資料表名稱是 PartiQL 識別碼,您可以使用雙引號或不加引號來表示。資料表 ID 是字串常值,必須以單引號括住。若要進一步瞭解如何使用表格IDs,請參閱查詢非作用中表格的歷史記錄

`start-time`, `end-time`

(選擇性) 指定任何修訂作用中的時間範圍。這些參數不會指定修訂確認交易中分錄的時間範圍。

開始和結束時間是離子時間戳文字,可以用反引號()表示。`...`如需進一步了解,請參閱在 Amazon 中使用 PartiQL 查詢離子 QLDB

這些時間參數具有下列行為:

  • 時間和結束時間都包括在內。它們必須是 ISO8601 的日期和時間格式,並採用協調世界時()UTC。

  • 始時間必須小於或等於結束時間,並且可以是過去的任意日期。

  • 束時間必須小於或等於目前的UTC日期和時間。

  • 如果您指定開始時間而非結束時間,則查詢會將結束時間預設為目前的日期和時間。如果兩者都不指定,則查詢會傳回整個歷史記錄。

'id'

(選擇性) 您要查詢其修訂歷程記錄的文件 ID,以單引號表示。

提示

最佳作法是使用日期範圍 (開始時間和結束時間) 和文件 ID (metadata.id) 來限定歷史查詢。在中QLDB,每個SELECT查詢都會在交易中處理,且受到交易逾時限制的限制

歷程查詢不會使用您在資料表上建立的索引。QLDB歷史記錄僅依文件 ID 編製索引,而且您目前無法建立其他歷程記錄索引。包含開始時間和結束時間的歷史查詢可獲得日期範圍限定的好處。

歷史查詢示例

若要查詢車輛登記文件的歷史記錄,請使用您先前儲存的更新和刪除文件id例如,下列歷史記錄查詢會傳回2019-06-05T00:00:00Z和之間曾經使用過ADR2Ll1fGsU4Jr4EqTdnQF的文件 ID 的任何修訂2019-06-05T23:59:59Z

注意

請記住,開始時間和結束時間參數不會指定修訂確認至交易中分錄的時間範圍。例如,如果修訂版本在該開始時間之前已確認,2019-06-05T00:00:00Z且在該開始時間之前仍保持作用中狀態,則此範例查詢會在結果中傳回該修訂。

請務必視情況以id您自己的值取代、開始時間和結束時間。

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

您的查詢結果看起來應類似下列內容。

{ 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" } }

輸出包含中繼資料屬性,這些屬性提供了每個項目修改時間以及何種交易的詳細資訊。從這些數據中,您可以看到以下內容:

  • 文件由其系統指定的id:ADR2Ll1fGsU4Jr4EqTdnQF唯一識別。這是一個UUID以 Base62 編碼的字符串表示的。

  • INSERT陳述式會建立文件 (版本0) 的初始修訂版本。

  • 每次後續更新都會建立具有相同文件id和遞增版本號碼的新修訂版本。

  • txId欄位會指出認可每個修訂的作業事件,並txTime顯示每個修訂的確認時間。

  • DELETE陳述式會建立文件的新版本,但最終的修訂版本。此最終修訂版僅包含中繼資料。

要了解如何永久刪除修訂,請繼續編輯文件修訂版本