Amazon QLDB 中的 REDACT_REVISION 存储进程 - Amazon Quantum Ledger Database (Amazon QLDB)

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

Amazon QLDB 中的 REDACT_REVISION 存储进程

注意

2021 年 7 月 22 日之前创建的任何分类账目前都不符合编校资格。您可在 Amazon QLDB 控制台查看分类账的创建时间。

在 Amazon QLDB 中,使用 REDACT_REVISION 存储过程永久删除索引存储和日记账存储中的单个非活动文档修订版。此存储过程将删除指定版本的所有用户数据。但是,它将使日记账序列和文档元数据 (包括文档 ID 和哈希) 保持不变。该操作不可逆。

指定的文档修订版本必须是在历史记录中处于非活动状态的修订版。文档的最新有效修订版不符合此编校条件。

通过运行此存储过程提交编校请求后,QLDB 将异步处理数据的编校。修订完成后,指定修订的用户数据(由 data 结构表示)将被新的 dataHash 字段替换。该字段的值是已移除 data 结构的 Amazon Ion 哈希。因此,分类账保持了其整体数据的完整性,并通过现有验证 API 操作保持加密可验证性。

有关使用示例数据编校操作的示例,请参见对文档修订版执行编校中的编校示例

注意

要了解如何控制在指定表中运行此 PartiQL 命令的访问权限,请参阅请参阅《Amazon QLDB 开发人员》中的标准权限模式入门

修订注意事项和限制

开始在 Amazon QLDB 中进行数据编校之前,请务必查看以下注意事项和限制:

  • REDACT_REVISION 存储过程以单个非活动文档修订版中的用户数据为目标。若要编校多个修订版,必须为每个修订版运行一次存储进程。您可为每笔事务编校一个修订版。

  • 若要编校文档修订版中的特定字段,必须先使用单独的数据操作语言 (DML) 语句修改修订版。有关更多信息,请参阅编校修订版本中的特定字段

  • QLDB 收到编校请求后,您将无法取消或更改该请求。若要确认编校是否已完成,您可以检查修订的data结构是否已被dataHash字段所取代。要了解更多信息,请参阅 检查编校是否已完成

  • 编校对 QLDB 服务之外复制的任何 QLDB 数据没有影响。这包括 Amazon S3 的任何导出以及 Amazon Kinesis Data Streams 的任何导出。您必须使用其他数据保留方法管理存储在 QLDB 之外的任何数据。

  • 编校对日记账中记录的 PartiQL 语句的文字值没有影响。根据最佳实践标准,您应使用变量占位符而非文字值,以编程方式运行参数化语句。占位符以问号 (?) 的形式写在日记账内,而不是任何可能需要编校的敏感信息。

    若要了解如何使用 QLDB 驱动程序以编程方式运行 PartiQL 语句,请参阅驱动程序入门中每种支持的编程语言的教程。

语法

EXEC REDACT_REVISION `block-address`, 'table-id', 'document-id'

Arguments

`block-address`

要编校的文档修订版本的日记账数据块位置。地址是一种包含两个字段的 Amazon Ion 结构:strandIdsequenceNo

这是一个 Ion 字面值,以反引号表示。例如:

`{strandId:"JdxjkR9bSYB5jMHWcI464T", sequenceNo:17}`

要了解如何查找数据块地址,请参阅 查询文档元数据

'table-id'

待编校修订版本的表的唯一 ID,用单引号表示。

若要了解如何查找表 ID,请参阅 查询系统目录

'document-id'

待编校修订版本的唯一文档 ID,用单引号表示。

若要了解如何查找文档 ID,请参阅 查询文档元数据

返回值

表示要编校文档修订版的 Amazon Ion 结构,格式如下。

{ blockAddress: { strandId: String, sequenceNo: Int }, tableId: String, documentId: String, version: Int }
返回结构字段
  • blockAddress — 要编校的修订版本的日记账数据块位置。地址包含以下两个字段。

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

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

  • tableId — 您正在编校其修订版本的表的唯一 ID。

  • documentId — 要编校的修订版本的唯一文档 ID。

  • version — 要编校的文档修订版的版本号。

下面是含采样数据的返回结构示例。

{ blockAddress: { strandId: "CsRnx0RDoNK6ANEEePa1ov", sequenceNo: 134 }, tableId: "6GZumdHggklLdMGyQq9DNX", documentId: "IXlQPSbfyKMIIsygePeKrZ", version: 0 }

示例

EXEC REDACT_REVISION `{strandId:"7z2P0AyQKWD8oFYmGNhi8D", sequenceNo:7}`, '8F0TPCmdNQ6JTRpiLj2TmW', '05K8zpGYWynDlEOK5afDRc'