查询文档元数据 - 亚马逊 Quantum Ledger 数据库(亚马逊QLDB)

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

查询文档元数据

重要

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

INSERT 语句创建版本号为零的文档的初始修订版。为了对每个文档进行唯一标识,QLDBAmazon 会分配一个文档编号作为元数据的一部分。

除了文档 ID 和版本号外,还会将系统为每个文档生成的其他元数据QLDB存储在表格中。此元数据包含事务信息、日记账属性和文档的哈希值。

系统分配的所有标识符IDs都是通用唯一标识符 (UUID),每个标识符均以 Base62 编码的字符串表示。有关更多信息,请参阅 IDs在亚马逊上独一无二 QLDB

已提交视图

您可以通过查询已提交视图访问文档元数据。此视图从系统定义的表返回文档,该表直接对应于您的用户表。它包括您的数据和系统生成的元数据的最新已提交、未删除修订版。要查询此视图,请在查询中的表名中添加前缀 _ql_committed_。(前缀_ql_是QLDB为系统对象保留的。)

SELECT * FROM _ql_committed_VehicleRegistration AS r WHERE r.data.VIN IN ('1N4AL11D75C109151', 'KM8SRDHF6EU074761')

使用先前在创建带有索引的表和插入文档中插入的数据,此查询的输出显示了每个未删除文档的最新修订版的系统内容。系统文档的 metadata 字段中嵌套了元数据,您的用户数据嵌套在data字段中。

{ blockAddress:{ strandId:"JdxjkR9bSYB5jMHWcI464T", sequenceNo:14 }, hash:{{wCsmM6qD4STxz0WYmE+47nZvWtcCz9D6zNtCiM5GoWg=}}, data:{ VIN: "1N4AL11D75C109151", LicensePlateNumber: "LEWISR261LL", State: "WA", City: "Seattle", PendingPenaltyTicketAmount: 90.25, ValidFromDate: 2017-08-21T, ValidToDate: 2020-05-11T, Owners: { PrimaryOwner: { PersonId: "294jJ3YUoH1IEEm8GSabOs" }, SecondaryOwners: [{ PersonId: "5Ufgdlnj06gF5CWcOIu64s" }] } }, metadata:{ id:"3Qv67yjXEwB9SjmvkuG6Cp", version:0, txTime:2019-06-05T20:53:321d-3Z, txId:"HgXAkLjAtV0HQ4lNYdzX60" } }, { blockAddress:{ strandId:"JdxjkR9bSYB5jMHWcI464T", sequenceNo:14 }, hash:{{wPuwH60TtcCvg/23BFp+redRXuCALkbDihkEvCX22Jk=}}, data:{ VIN: "KM8SRDHF6EU074761", LicensePlateNumber: "CA762X", State: "WA", City: "Kent", PendingPenaltyTicketAmount: 130.75, ValidFromDate: 2017-09-14T, ValidToDate: 2020-06-25T, Owners: { PrimaryOwner: { PersonId: "IN7MvYtUjkp1GMZu0F6CG9" }, SecondaryOwners: [] } }, metadata:{ id:"JOzfB3lWqGU727mpPeWyxg", version:0, txTime:2019-06-05T20:53:321d-3Z, txId:"HgXAkLjAtV0HQ4lNYdzX60" } }
已提交视图字段
  • blockAddress — 分类账的日记账中提交文档修订的数据块的位置。可用于加密验证的地址包含以下两个字段。

    • strandId — 包含数据块的日记账链的唯一 ID。

    • sequenceNo — 一个索引号,用于指定数据块在链中的位置。

    注意

    本示例中的两个文档都具有相同的blockAddress,其sequenceNo相同。由于这些文档是在单个事务中插入的(在本例中为单个语句中),因此它们是在同一个数据块内提交的。

  • hash— 唯一表示文档修订版本的 SHA -256 Ion 哈希值。哈希值涵盖了修订版 datametadata 字段,可用于加密验证

  • data — 文档的用户数据属性。

    如果您对修订版进行编校,则此data结构将替换为dataHash字段,该字段的值是已删除data结构的 Ion 哈希。

  • metadata — 文档的元数据属性。

    • id — 系统为文档分配的唯一 ID。

    • version — 文档的版本号。这是从零开始的整数,随着每个文档修订版本的增加而递增。

    • txTime – 文档修订提交到日记账的时间戳。

    • txId – 提交文档修订的事务唯一 ID。

加入已提交和用户视图

您可编写将已提交视图中的表与用户视图中的表连接起来的查询。例如,您可能希望将一个表id文档与另一个表的用户定义字段连接起来。

以下查询分别将两个名为 DriversLicensePerson的表与其 PersonId和的文档 id字段连接起来,后者使用已提交的视图。

SELECT * FROM DriversLicense AS d INNER JOIN _ql_committed_Person AS p ON d.PersonId = p.metadata.id WHERE p.metadata.id = '1CWScY2qHYI9G88C2SjvtH'

要了解如何在默认用户视图中查询文档 ID 字段,请继续 通过 BY 子句查询文档 ID