查询修订历史记录 - 亚马逊 Quantum Ledger 数据库(亚马逊QLDB)

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

查询修订历史记录

重要

终止支持通知:现有客户可以在2025年7月31日终止支持QLDB之前使用亚马逊。有关更多详细信息,请参阅将亚马逊QLDB账本迁移到亚马逊 Aurora Postgr SQL e。

Amazon 将每份文档的完整历史记录QLDB存储在一个表格中。通过查询内置的历史记录功能,您可以查看之前在更新和删除文档中插入、更新和删除的车辆登记文件的所有三个修订版。

历史记录函数

中的历史函数QLDB是一个 PartiQL 扩展,它从表的系统定义视图返回修订版。因此,它将您的数据和关联元数据包含在与提交的视图相同的架构中。

语法

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

表名或表格 ID。表名是 PartiQL 标识符,可以用双引号或不用引号来表示。表 ID 必须用单引号将表文本括起来。要了解有关使用表格的更多信息IDs,请参阅查询非活动表历史记录

`start-time`, `end-time`

(可选)指定所有处于活动状态的修订时间范围。此参数并未指定在事务中向日记账提交修订的时间范围。

开始和结束时间是 Ion 时间戳文字,可以用反引号(`...`)表示。要了解更多信息,请参阅在亚马逊中使用 partiQL 查询 Ion QLDB

这些时间参数包含以下行为:

  • 开始时间结束时间均包含在内。它们必须采用 ISO8601 日期和时间格式以及协调世界时 () UTC。

  • 开始时间必须小于或等于结束时间,并且可以是过去任何任意日期。

  • 结束时间必须小于或等于当前UTC日期和时间。

  • 如果您指定开始时间,但未指定结束时间,则查询会将结束时间默认为当前日期和时间。如果两者都未指定,则您的查询将返回整个历史记录。

'id'

(可选)若要查询其修订历史记录的文档 ID,用单引号表示。

提示

最佳做法是,使用日期范围(开始时间结束时间)和文档 ID(metadata.id)来限定历史记录查询。在中QLDB,每个SELECT查询都是在事务中处理的,并且受事务超时限制的约束。

历史记录查询不使用您在表上创建的索引。QLDB历史记录仅按文档 ID 编制索引,您目前无法创建其他历史索引。包含开始时间和结束时间的历史记录查询将从日期范围限定中获得便利。

历史记录查询示例

要查询车辆登记文件的历史记录,请使用您之前在更新和删除文档中保存的id。例如,以下历史记录查询会返回在2019-06-05T00:00:00Z2019-06-05T23:59:59Z之间处于活动状态的文档 ID ADR2Ll1fGsU4Jr4EqTdnQF的所有修订版。

注意

切记,开始和结束时间参数并指定在事务中向日记账提交修订的时间范围。例如,如果修订版本是在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。这是用 Base62 编码的字符串表示的。UUID

  • INSERT 语句创建版本号为零的文档的初始修订版(版本 0)。

  • 随后的每次更新都会创建一个具有相同文档 id 的新版本,并递增版本号。

  • txId 字段表示提交每个修订的事务,txTime显示每个修订的提交时间。

  • DELETE 语句会创建文档的新修订版,也是最终修订版。此最终修订版仅仅包含元数据。

若要了解如何永久删除修订版,请继续 对文档修订版执行编校