本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
查询文档元数据
重要
终止支持通知:现有客户可以在2025年7月31日终止支持QLDB之前使用亚马逊。有关更多详细信息,请参阅将亚马逊QLDB账本迁移到亚马逊 Aurora Postgr SQL
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 哈希值。哈希值涵盖了修订版data
和metadata
字段,可用于加密验证。 -
data
— 文档的用户数据属性。如果您对修订版进行编校,则此
data
结构将替换为dataHash
字段,该字段的值是已删除data
结构的 Ion 哈希。 -
metadata
— 文档的元数据属性。-
id
— 系统为文档分配的唯一 ID。 -
version
— 文档的版本号。这是从零开始的整数,随着每个文档修订版本的增加而递增。 -
txTime
– 文档修订提交到日记账的时间戳。 -
txId
– 提交文档修订的事务唯一 ID。
-
加入已提交和用户视图
您可编写将已提交视图中的表与用户视图中的表连接起来的查询。例如,您可能希望将一个表id
文档与另一个表的用户定义字段连接起来。
以下查询分别将两个名为 DriversLicense
和 Person
的表与其 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。