Amazon QLDB 概览 - Amazon Quantum Ledger Database (Amazon QLDB)

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

Amazon QLDB 概览

以下章节高度概述了 Amazon QLDB 服务组件及其交互方式。

日记账优先

在传统的数据库架构中,通常将数据写入表中作为事务的一部分。事务日志 —(通常是内部实现)记录了所有事务及其对数据库所做的修改。事务日志是数据库的重要组成部分。在发生系统故障、灾难恢复或者数据复制时,您需要使用日志来重播事务。但是,数据库事务日志并非一成不变,也不是为用户提供直接、便捷的访问而设计的。

在 Amazon QLDB 中,日记账是数据库的核心。此日记账在结构上与事务日志类似,是一种不可变的、仅限附加的数据结构,用于存储您的应用程序数据以及相关的元数据。所有写入事务(包含更新和删除)都将首先提交到日记账中。

QLDB 使用日记账确定分类账数据的当前状态,方法是将其具体化为可查询的、用户定义的表格。这些表格还提供了所有事务数据(包含文档修订版和元数据)的可访问历史记录。此外,该日记账还处理分类账数据的并发性、排序、加密验证和可用性。

下图所示为 QLDB 日记账体系结构。

标题为 QLDB 的示意图:日记账是数据库,显示了日记账架构,其应用程序连接到分类账并将事务提交到日记账,这些事务被具体化为表格。
  • 在此示例中,应用程序连接到分类账并运行在名为cars的表中插入、更新和删除文档的事务。

  • 数据首先按顺序写入日记账。

  • 然后,使用内置视图将数据具体化至表中。您可通过这些视图查询汽车的当前状态和完整历史记录,并为每个版本分配一个版本号。

  • 您也可直接从日记中导出或流式传输数据。

不可变的

由于 QLDB 日记账仅限追加,因此它会完整记录所有无法修改或者覆盖的数据更改。没有 API 或其他方法可更改任何已提交的数据。这种日记账结构允许您访问和查询分类账完整历史记录。

注意

QLDB 支持不可变性的唯一例外是数据编修。使用此功能,您可以遵守监管法规,例如欧盟的《通用数据保护条例》(GDPR) 与《加州消费者隐私法》(CCPA)。

QLDB 还支持数据编修操作,允许您永久删除表历史记录中的非活动文档的修订内容。密文操作仅删除指定修订版中的用户数据,而日记账序列和文档元数据则保持不变。这样可保持分类账的整体数据完整性。有关更多信息,请参阅对文档修订版执行编校

QLDB 在事务中向日记账中写入一个数据块。每个块都包含代表您插入、更新和删除的文档修订版本的条目对象,以及提交这些修订的语句。这些数据块是按顺序排列以及哈希链的,以保证数据的完整性。

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

标题为记录的图表无法更改,它显示了 QLDB 中不可变的、仅限附加的日记结构,以及每个哈希链式日记账数据块的序号。

该图显示,事务以数据块的形式提交到日记账中,这些数据块被哈希链连接以供验证。每个数据块都有一个序列号来指定其地址。

可通过密码验证

日记账数据块通过加密哈希技术进行排序并链接在一起,类似于数据块链。QLDB 使用日记账哈希链,通过加密验证方法提供事务数据的完整性。使用摘要(代表日记账截至某个时间点的完整哈希链的哈希值)和默克尔审计证明(一种证明二叉哈希树中任何节点有效性的机制),您可以验证您的数据在任何时候都没有发生意想不到的变化。

下图显示了涵盖日记账在某个时间点的完整哈希链的摘要。

标题为使用 SHA-256 进行哈希链的示意图,显示了涵盖日记账完整哈希链的摘要,其日记账数据块结构包含表示 Ion 文档、PartiQL 语句和元数据的条目。

在此图中,使用 SHA-256 加密哈希函数对日记账数据块进行哈希处理,并按顺序链接到后续块。每个数据块都包含包含您的数据文档、元数据和事务中运行的 PartiQL 语句的条目。

有关更多信息,请参阅Amazon QLDB 中的数据验证

类似 SQL、且文档灵活

QLDB 使用 PartiQL 作为其查询语言,使用 Amazon Ion 作为其面向文档的数据模型。PartiQL 是开源、与 SQL 兼容的查询语言,现已扩展为可与 Ion 配合使用。使用 PartiQL,您可使用熟悉的 SQL 运算符插入、查询和管理数据。查询平面文档时,语法与使用 SQL 查询的关系表相同。要了解有关 PartiQL 的 QLDB 实现的更多信息,请参阅Amazon QLDB PartiQL 参考

Amazon Ion 是 JSON 的超集。Ion 是基于文档的开源数据格式,可让您灵活地存储和处理结构化、半结构化和嵌套数据。要了解有关 QLDB 中 Ion 的更多信息,请参阅 Amazon QLDB 中的 Amazon Ion 数据格式参考

有关传统关系数据库与 QLDB 中核心组件和功能的高级比较,请参阅从关系至分类账

开源开发人员工具

为了简化应用程序开发,QLDB 提供了各类编程语言的开源驱动程序。您可使用这些驱动程序通过在分类账上运行 PartiQL 语句,并处理这些语句的结果来与事务数据 API 进行交互。有关当前支持的驱动程序语言的信息和教程,请参阅 Amazon QLDB 驱动程序入门

Amazon Ion 还提供可为您处理 Ion 数据客户端库。有关处理 Ion 数据的开发者指南和代码示例,请参阅 GitHub 上的 Amazon Ion 文档

无服务器且高度可用

QLDB 完全托管、无服务器、且高度可用。该服务会自动扩展,以支持您的应用程序需求,您无需预配置实例或容量。您的数据的多个副本将在AWS 区域中的可用区内复制,并在中的可用区之间复制。

企业级

QLDB 事务完全符合原子性、一致性、隔离性与持久性 (ACID) 属性。QLDB 使用乐观并发控制 (OCC),事务以完全序列化性运行,即最高级别的隔离。这意味着不存在出现幻像读取、脏读、写入偏差或者其他类似并发问题的风险。有关更多信息,请参阅Amazon QLDB 并发模型