View a markdown version of this page

变更数据采集 (CDC) 流在亚马逊密钥空间中的工作原理 - Amazon Keyspaces(Apache Cassandra 兼容)

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

变更数据采集 (CDC) 流在亚马逊密钥空间中的工作原理

本节概述了变更数据捕获 (CDC) 流在 Amazon Keyspaces 中的工作原理。

Amazon Keyspaces 变更数据捕获 (CDC) 在 Amazon Keyspaces 表中记录了一系列有序的行级修改,并将这些信息存储在一个名流的日志中,最长可保存 24 小时。每一次行级修改都会生成一个新的 CDC 记录,该记录包含主键列信息以及包括所有列在内的行的 “之前” 和 “之后” 状态。应用程序可以访问直播并近乎实时地查看突变。

当您在表格上启用 CDC 时,Amazon Keyspaces 会创建一个新的 CDC 数据流,并开始捕获有关表中每项修改的信息。CDC 直播的亚马逊资源名称 (ARN) 格式如下:

arn:${Partition}:cassandra:{Region}:${Account}:/keyspace/${keyspaceName}/table/${tableName}/stream/${streamLabel}

首次启用 CDC 流时,您可以选择 CDC 流为每条记录收集的信息类型或视图类型。之后你无法更改直播的视图类型。亚马逊 Keyspaces 支持以下视图类型:

  • NEW_AND_OLD_IMAGES— 捕获突变之前和之后的行版本。这是默认值。

  • NEW_IMAGE— 捕获突变后的行版本。

  • OLD_IMAGE— 捕获突变之前行的版本。

  • KEYS_ONLY— 捕获已突变行的分区和群集键。

每个 CDC 直播都包含记录。每条记录代表 Amazon Keyspaces 表中的单行修改。记录在逻辑上被组织成组,称为分。这些组按主键范围(分区键、集群密钥范围的组合)进行逻辑组织,是 Amazon Keyspaces 的内部结构。每个分片充当多条记录的容器,并包含访问和迭代这些记录所需的信息。

亚马逊 Keyspaces CDC 数据流由分片组成,这些分片表示 CDC 关于行突变集合的记录。

每条 CDC 记录都被分配了一个序列号,该序列号反映了该记录在分片中发布的顺序。保证序列号在每个分片中不断增加且是唯一的。

亚马逊 Keyspaces 会自动创建和删除分片。根据流量负载,Amazon Keyspaces 还可以随着时间的推移拆分或合并分片。例如,Amazon Keyspaces 可以将一个分片拆分成多个新分片或将分片合并为一个新的单个分片。Amazon Keyspaces API 发布分片和 CDC 流信息,允许使用者的应用程序通过访问分片的整个谱系图,以正确的顺序处理记录。

亚马逊 Keyspaces CDC 基于以下原则,您在构建应用程序时可以依靠这些原则:

  • 每条行级突变记录在 CDC 流中只出现一次。

  • 当你按世系顺序消耗分片时,每条行级突变记录的出现顺序与主键上的实际突变顺序相同。

亚马逊 Keyspaces 中 CDC 数据流的数据保留工作原理

亚马逊 Keyspaces 将 CDC 数据流中的记录保留 24 小时。您无法更改保留期。如果您在表上禁用 CDC,则流中的数据可在 24 小时内继续可读。在此之后,数据将过期,记录将自动删除。

存活时间 (TTL) 数据到期如何与 Amazon Keyspaces 中的 CDC 数据流配合使用

Amazon Keyspaces 在 CDC 变更记录中调expirationTime用的元数据字段中显示该级别的到期时间以及行级别。 column/cell 当 Amazon Keyspaces TTL 检测到单元到期时,CDC 会创建新的变更记录,将 TTL 显示为变更的来源。有关 TTL 的更多信息,请参阅 使用 Amazon Keyspaces(Apache Cassandra 兼容)的生存时间(TTL)功能让数据过期

亚马逊密钥空间中的 CDC 直播的批量操作如何运作

批量操作在内部分为单独的行级修改。即使修改是在批量操作中进行的,Amazon Keyspaces 也会将 CDC 数据流中的所有记录保留在行级别。Amazon Keyspaces 保持 CDC 数据流中记录的顺序,其顺序与在行级或主键上发生的突变顺序相同。

静态列如何在 Amazon Keyspaces 的 CDC 流中工作

静态列值在 Cassandra 分区中的所有行之间共享。由于这种行为,Amazon Keyspaces 会将对静态列的任何更新捕获为 CDC 流中的单独记录。以下示例总结了静态列突变的行为:

  • 当仅更新静态列时,CDC 流会包含对该行中唯一列的静态列的行修改。

  • 当某行在未对静态列进行任何更改的情况下更新时,CDC 流将包含行修改,其中包含除静态列之外的所有列。

  • 当一行与静态列一起更新时,CDC 流包含两个单独的行修改,一个用于静态列,另一个用于行的其余部分。

静态加密对亚马逊密钥空间中的 CDC 直播的工作原理

为了加密 CDC 有序日志中的静态数据,Amazon Keyspaces 使用已用于该表的相同加密密钥。有关静态加密的更多信息,请参阅 Amazon Keyspaces 中的静态加密

多区域复制如何在 Amazon Keyspaces 中执行 CDC 流

您可以使用 update-table API 或 CQL 命令为多区域表的各个副本启用和禁用 CDC 流。ALTER TABLE由于异步复制和冲突解决,多区域表的 CDC 流之间不一致 AWS 区域。因此,Amazon Keyspaces 在数据流中捕获的记录在不同的区域可能以不同的顺序出现。

有关多区域复制的更多信息,请参阅Multi-Region Amazon Keyspaces 的复制(适用于 Apache Cassandra)

CDC 直播和整合 AWS 务

如何在 Amazon Keyspaces 中使用 CDC 流的 VPC 终端节点

您可以使用 VPC 终端节点访问亚马逊 Keyspace CDC 流。有关如何创建和访问流的 VPC 终端节点的信息,请参阅将 Amazon Keyspaces CDC 流与接口 VPC 终端节点一起使用

使用监控是如何在 Amazon Key CloudWatch spaces 中进行 CDC 直播的

您可以使用亚马逊监控 CloudWatch 对亚马逊 Keyspaces CDC 终端节点进行的 API 调用。有关可用指标的更多信息,请参阅Amazon Keyspaces 变更数据采集 (CDC) 的指标

使用 Logging with 在 Amazon Keyspaces 中的 CloudTrail 工作原理

Amazon Keyspaces CDC 与 AWS CloudTrail一项服务集成,可记录用户、角色或 AWS 服务在亚马逊密钥空间中采取的操作。 CloudTrail 将亚马逊密钥空间的数据定义语言 (DDL) API 调用和数据操作语言 (DML) API 调用捕获为事件。捕获的调用包括来自 Amazon Keyspaces 控制台的调用和对 Amazon Keyspaces API 操作的编程调用。

有关捕获的 CDC 事件的更多信息 CloudTrail,请参阅使用记录 Amazon Keyspaces API 调用 AWS CloudTrail

标记是如何在 Amazon Keyspaces 中使用 CDC 直播的

亚马逊 Keyspaces CDC 直播是一种可标记的资源。使用 CQL、 AWS SDK 或,以编程方式创建表时,可以为直播添加标签。 AWS CLI您还可以标记现有流、删除标签或查看直播的标签。有关更多信息,请参阅 在 Amazon Keyspaces 中标记密钥空间、表和流