

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

# 变更数据捕获 (CDC) 流在 Amazon Keyspaces 中的工作原理
<a name="cdc_how-it-works"></a>

本节概述了变更数据捕获 (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 数据流为每条记录收集的信息*类型或视图类型*。之后你无法更改直播的视图类型。Amazon Keyspaces 支持以下视图类型：
+ `NEW_AND_OLD_IMAGES`— 捕获突变之前和之后的行的版本。这是默认值。
+ `NEW_IMAGE`— 捕获突变之后的行的版本。
+ `OLD_IMAGE`— 捕获突变之前行的版本。
+ `KEYS_ONLY`— 捕获被突变的行的分区和群集键。

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

![\[Amazon Keyspaces CDC 流由表示行突变集合的 CDC 记录的分片组成。\]](http://docs.amazonaws.cn/keyspaces/latest/devguide/images/keyspaces_cdc.png)


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

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

Amazon Keyspaces CDC 基于以下原则，您可以在构建应用程序时依靠这些原则：
+ 每条行级突变记录在 CDC 数据流中只出现一次。
+ 当你按世系顺序消耗分片时，每条行级突变记录的显示顺序与主键上的实际突变顺序相同。

**Topics**
+ [数据留存](#CDC_how-it-works-data-retention)
+ [TTL 数据过期](#CDC_how-it-works-ttl)
+ [分批操作](#CDC_how-it-works-batch-operations)
+ [静态列](#CDC_how-it-works-static)
+ [静态加密](#CDC_how-it-works-encryption)
+ [多区域复制](#CDC_how-it-works-mrr)
+ [与 Amazon 服务集成](#howitworks_integration)

## 如何在 Amazon Keyspaces 中为 CDC 数据流保留数据
<a name="CDC_how-it-works-data-retention"></a>

Amazon Keyspaces 在 CDC 直播中将记录保留 24 小时。您无法更改保留期。如果您在表上禁用 CDC，则可以在 24 小时内继续读取流中的数据。在此时间之后，数据将过期，记录将自动删除。

## 存活时间 (TTL) 数据过期如何与 Amazon Keyspaces 中的 CDC 数据流配合使用
<a name="CDC_how-it-works-ttl"></a>

Amazon Keyspaces 在 CDC 变更记录中名`expirationTime`为的元数据字段中显示该级别的过期时间以及行级别。 column/cell 当 Amazon Keyspaces TTL 检测到单元格已过期时，CDC 会创建一个新的更改记录，显示 TTL 是更改的来源。有关 TTL 的更多信息，请参阅 [使用 Amazon Keyspaces（Apache Cassandra 兼容）的生存时间（TTL）功能让数据过期](TTL.md)。

## 如何对 Amazon Keyspaces 中的 CDC 直播进行批量操作
<a name="CDC_how-it-works-batch-operations"></a>

Batch 操作在内部分为单独的行级修改。Amazon Keyspaces 在行级别保留 CDC 流中的所有记录，即使修改是在批量操作中发生的。Amazon Keyspaces 按与行级或主键上发生的突变顺序相同的顺序维护 CDC 流中的记录顺序。

## 静态列在 Amazon Keyspaces 的 CDC 流中是如何工作的
<a name="CDC_how-it-works-static"></a>

在 Cassandra 中，静态列值在分区中的所有行之间共享。由于这种行为，Amazon Keyspaces 会将静态列的任何更新作为单独的记录捕获到 CDC 流中。以下示例总结了静态列突变的行为：
+ 当仅更新静态列时，CDC 流会包含对静态列的行修改，作为该行中唯一的列。
+ 当更新某行而不对静态列进行任何更改时，CDC 流将包含行修改，其中包含除静态列之外的所有列。
+ 当一行与静态列一起更新时，CDC 流包含两个单独的行修改，一个用于静态列，另一个用于该行的其余部分。

## 对于 Amazon Keyspaces 中的 CDC 直播进行静态加密的工作原理
<a name="CDC_how-it-works-encryption"></a>

为了对 CDC 排序日志中的静态数据进行加密，Amazon Keyspaces 使用的加密密钥与表中已使用的加密密钥相同。有关静态加密的更多信息，请参阅 [Amazon Keyspaces 中的静态加密](EncryptionAtRest.md)。

## 多区域复制如何适用于 Amazon Keyspaces 中的 CDC 流
<a name="CDC_how-it-works-mrr"></a>

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

有关多区域复制的更多信息，请参阅[Amazon Keyspaces 的多区域复制（适用于 Apache Cassandra）](multiRegion-replication.md)。

## CDC 直播并与 Amazon 服务集成
<a name="howitworks_integration"></a>

### 如何在 Amazon Keyspaces 中使用用于 CDC 流的 VPC 终端节点
<a name="CDC_how-it-works-vpc"></a>

您可以使用 VPC 终端节点访问 Amazon Keyspaces CDC 直播。有关如何创建和访问直播的 VPC 终端节点的信息，请参阅[将 Amazon Keyspaces CDC 流与接口 VPC 终端节点一起使用](vpc-endpoints-streams.md)。

### 使用 Amazon Key CloudWatch spaces 中的 CDC 直播进行监控的工作原理
<a name="CDC_how-it-works-monitoring"></a>

您可以使用亚马逊监控对 Amazon CloudWatch Keyspaces CDC 终端节点进行的 API 调用。有关可用指标的更多信息，请参阅[Amazon Keyspaces 变更数据采集 (CDC) 的指标](metrics-dimensions.md#keyspaces-cdc-metrics)。

### 在 Amazon Key CloudTrail spaces 中使用 CDC 直播进行日志记录的工作原理
<a name="CDC_how-it-works-logging"></a>

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

有关捕获的 CDC 事件的更多信息 CloudTrail，请参阅[使用记录 Amazon Keyspaces API 调用 Amazon CloudTrail](logging-using-cloudtrail.md)。

### 在 Amazon Keyspaces 中为 CDC 直播添加标签的工作原理
<a name="CDC_how-it-works-tagging"></a>

Amazon Keyspaces CDC 流是一种可标记的资源。当你使用 CQL、 Amazon SDK 或，以编程方式创建表时，你可以为直播添加标签。 Amazon CLI您还可以为现有直播添加标签、删除标签或查看直播的标签。有关更多信息，请参阅 [在 Amazon Keyspaces 中标记密钥空间、表和流](Tagging.Operations.md)。