Amazon 中的核心概念和术语 QLDB - 亚马逊 Quantum Ledger 数据库(亚马逊QLDB)

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

Amazon 中的核心概念和术语 QLDB

重要

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

本节概述了 Amazon 中的核心概念和术语QLDB,包括账本结构和账本如何管理数据。作为账本数据库,与其他面向文档的数据库的QLDB不同之处在于以下关键概念。

QLDB数据对象模型

Amazon 中的基础数据对象模型描述QLDB如下:

  1. 分类账

    您的第一步是创建账本,这是中的主要 AWS 资源类型QLDB。要了解如何创建分类账,请参阅控制台入门中的第 1 步:创建新的分类账Amazon QLDB 账本的基本操作

    对于账本的ALLOW_ALLSTANDARD权限模式,您可以创建 AWS Identity and Access Management (IAM) 策略来授予对此账本资源运行API操作的权限。

    账本ARN格式:

    arn:aws:qldb:${region}:${account-id}:ledger/${ledger-name}
  2. 日记账账和表格

    要开始在QLDB账本中写入数据,首先要创建一个包含基本CREATE TABLE语句的。分类账数据由提交至分类账日记账文档的修订版组成。您可以在用户定义表格的上下文中将文档修订提交至分类账。在中QLDB,表格表示日记账中文档修订集合的实体化视图。

    在账本的STANDARD权限模式下,您必须创建IAM策略来授予在此表资源上运行 PartiQL 语句的权限。凭借对表资源的权限,您可以运行访问表当前状态的语句。您也可以使用内置 history() 函数查询表的修订历史记录。

    表格ARN格式:

    arn:aws:qldb:${region}:${account-id}:ledger/${ledger-name}/table/${table-id}

    有关向分类账及其关联资源授予权限的更多信息,请参阅 亚马逊是如何QLDB与之合作的 IAM

  3. Documents

    表由的修订版QLDB文档组成,这些版本是 Amazon Ion struct 格式的数据集。文档修订版表示由唯一文档 ID 标识的一系列文档的单一版本。

    QLDB存储已提交文档的完整变更历史记录。表格允许您查询其文档的当前状态,而该 history() 函数允许您查询表格文档的整个修订历史记录。有关查询和编写修订版的详细信息,请参阅 处理数据与历史记录

  4. 系统目录

    每个分类账还提供系统定义的目录资源,您可通过查询该资源列出分类账中的所有表和索引。在分类账的 STANDARD 权限模式下,您需要拥有该目录资源的 qldb:PartiQLSelect 权限才能执行以下操作:

    • 在系统目录表 information_schema.user_tables上运行SELECT语句。

    • QLDB控制台的账本详情页面上查看表格和索引信息。

    • 在控制台的 Parti QL 编辑器中查看表和索引列表。QLDB

    目录ARN格式:

    arn:aws:qldb:${region}:${account-id}:ledger/${ledger-name}/information_schema/user_tables

日记账账优先事务

当应用程序在QLDB账本中读取或写入数据时,它是在数据库事务中读取或写入数据的。所有事务均受Amazon 中的配额和限制 QLDB中定义的限制。在交易中QLDB,执行以下步骤:

  1. 分类账读取数据的当前状态。

  2. 执行事务中提供的语句,然后使用乐观并发控制 (OCC) 检查是否存在任何冲突,以确保完全可序列化的隔离。

  3. 如果未发现任何OCC冲突,则按如下方式返回交易结果:

    • 对于读取,返回结果集并以仅附加 SELECT 的方式将语句提交至日记账中。

    • 对于写入,请以仅限追加的方式将任何更新、删除或新插入的数据提交到日记账中。

日记账代表了关于所有日记账更改的、完整且不可变的历史记录。QLDB在交易中将一个链式区块写入日志。每个块都包含代表您插入、更新和删除的文档修订版本的条目对象,以及提交这些修订的 PartiQL 语句。

下面的示意图阐明了此日记账结构。

Amazon QLDB 日志结构图显示了一组构成一条链的区块以及每个区块的序列号和区块哈希。

该图显示事务作为包含文档修订条目的数据块提交到日记账账中。每个数据块都经过哈希处理,并链接到后续数据块进行验证。每个数据块都有一个序列号,用于指定其在链中的地址。

注意

在 Amazon 中QLDB,分支是账本日记账的分区。QLDB目前仅支持单链日记。

有关数据块的内容的更多信息,请参阅 Amazon 中的期刊内容 QLDB

查询数据

QLDB旨在满足高性能在线事务处理 (OLTP) 工作负载的需求。分类账根据提交至日记账账的事务信息,提供数据的可查询表格视图。中的表视图QLDB是表中数据的子集。视图采用实时维护,因此它们始终可供应用程序查询。

您可以使用 PartiQL SELECT 语句查询以下系统定义的视图:

  • 用户 - 仅包含您在表中写入的数据的最新有效版本(即用户数据的当前状态)。这是中的默认视图QLDB。

  • 已提交 – T您的用户数据和系统生成的元数据的最新有效版本。这是与您用户表直接对应的完整系统定义表。

除了这些可查询视图外,您还可以使用内置历史记录函数查询数据的修订历史记录。历史函数在与已提交视图相同的架构中返回您的用户数据和关联的元数据。

数据存储

中有两种类型的数据存储QLDB:

  • 日记账存储 - 分类账日记账账使用的磁盘空间。该日记账仅限附录,包含所有数据更改的完整、不可变且可验证历史记录。

  • 索引存储 - 分类账表、索引和索引历史记录使用的磁盘空间。索引存储包含的分类账数据针对高性能查询进行了优化。

将数据提交至日记账账后,它会具体化至您定义的表中。这些表经过优化,可实现更快、更高效查询。当应用程序使用事务数据读API取数据时,它会访问存储在索引存储中的表和索引。

QLDBAPI模型

QLDB提供了两种类型的应用程序代码APIs可以与之交互:

  • Amazon QLDB — QLDB 资源管理API(也称为控制平面)。这API仅用于管理账本资源和非事务性数据操作。您可以使用这些操作创建、删除、描述、列出和更新分类账。您还可以通过加密方式验证日记账数据,并导出或流式传输日记账块。

  • Amazon QLDB 会话 — QLDB 交易数据API。您可以使用它在带有 Parti QL 语句的账本上运行数据交易。API

    重要

    我们建议使用QLDB驱动程序或 QLDB shell 在账本上运行数据交易,而不是直接与QLDB会话API交互。

    • 如果您使用的是 AWS SDK,请使用QLDB驱动程序。该驱动程序在QLDB会话数据之上提供了一个高级抽象层,API并为您管理SendCommand操作。有关信息和支持的编程语言列表,请参阅 驱动程序入门

    • 如果你正在使用 AWS CLI,请使用外QLDB壳。shell 是一个命令行界面,它使用QLDB驱动程序与账本进行交互。有关信息,请参阅 使用 Amazon QLDB 外壳(API仅限数据)

有关这些API操作的更多信息,请参阅亚马逊QLDBAPI参考资料

后续步骤

要了解如何使用分类账处理数据,请参阅 在 Amazon 中处理数据和历史记录 QLDB 并遵循描述创建表、插入数据和运行基本查询过程的示例。本指南使用示例数据和查询示例作为上下文,详细说明这些概念的运行方式。

要使用QLDB控制台快速开始使用示例应用程序教程,请参阅开始使用 Amazon QLDB 控制台

有关本节中描述的关键术语和定义的列表,请参阅 Amazon QLDB 词汇表