

# 将更改数据捕获与 Amazon DynamoDB 结合使用
<a name="streamsmain"></a>

当存储在 DynamoDB 表中的项目发生更改时，许多应用程序都会因能够捕获此类更改而受益。下面是一些使用场景示例：
+ 一个热门移动应用程序以每秒数千次更新的速率修改 DynamoDB 表中的数据。第二个应用程序捕获和存储有关这些更新的数据，并提供针对该移动应用程序的近乎实时用量指标。
+ 财务应用程序修改 DynamoDB 表中的股票市场数据。并行运行的不同应用程序实时跟踪这些变化，计算风险价值，并根据股票价格变动自动重新平衡投资组合。
+ 运输车辆和工业设备中的传感器将数据发送到 DynamoDB 表中。不同的应用程序监控性能并在检测到问题时发送消息警报，通过应用机器学习算法预测任何潜在缺陷，并将数据压缩和存档到 Amazon Simple Storage Service (Amazon S3)。
+ 一旦某个好友上传新图片，一个应用程序就会自动向群组中的所有好友的移动设备发送通知。
+ 一个新客户将数据添加到 DynamoDB 表。此事件调用另一个应用程序，以便向该新客户发送欢迎电子邮件。

DynamoDB 支持近实时流式处理项目级别更改数据捕获记录。可以构建使用这些流并根据内容采取操作的应用程序。

**注意**  
不支持向 DynamoDB Streams 添加标签以及将[基于属性的访问权限控制（ABAC）](access-control-resource-based.md)和 DynamoDB Streams 结合使用。

以下视频将向您介绍更改数据捕获概念。

[![AWS Videos](http://img.youtube.com/vi/VVv_-mZ5Ge8/0.jpg)](http://www.youtube.com/watch?v=VVv_-mZ5Ge8)


**Topics**
+ [更改数据捕获的流式传输选项](#streamsmain.choose)
+ [使用 Kinesis Data Streams 捕获 DynamoDB 的更改](kds.md)
+ [将更改数据捕获用于 DynamoDB Streams](Streams.md)

## 更改数据捕获的流式传输选项
<a name="streamsmain.choose"></a>

DynamoDB 提供了两个用于更改数据捕获的流模型：Kinesis Data Streams for DynamoDB 和 DynamoDB Streams。

为了帮助选择适合应用程序的解决方案，下表总结了每个流式处理模型的功能。


| 属性 | Kinesis Data Streams for DynamoDB | DynamoDB Streams | 
| --- | --- | --- | 
| 数据保留 |  最多 [1 年](https://docs.aws.amazon.com/streams/latest/dev/kinesis-extended-retention.html)。 | 24 小时。 | 
| Kinesis Client Library (KCL) 支持 | 支持 [KCL versions 1.X, 2.X, and 3.X](https://docs.aws.amazon.com/streams/latest/dev/custom-kcl-consumers.html)。 | 支持 [KCL 版本 1.X 版和 2.X 版](https://docs.aws.amazon.com/streams/latest/dev/custom-kcl-consumers.html)。 | 
| 使用者数 | 每个分片最多同时 [5 个](https://docs.aws.amazon.com/streams/latest/dev/service-sizes-and-limits.html)消费者，或者 [enhanced fan-out](https://docs.aws.amazon.com/streams/latest/dev/enhanced-consumers.html) 的每个分片最多同时 20 个消费者。 | 每个分片最多 [2 个](https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/Limits.html#limits-dynamodb-streams)消费者。 | 
| 吞吐量配额 | 无限制。 | 由 DynamoDB 表和 AWS 区域的吞吐量[配额](https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/Limits.html#limits-dynamodb-streams)决定。 | 
| 记录传输模型 | 使用 [GetRecords](https://docs.aws.amazon.com/kinesis/latest/APIReference/API_GetRecords.html) 和 [enhanced fan-out](https://docs.aws.amazon.com/streams/latest/dev/enhanced-consumers.html) 在 HTTP 拉取模型，Kinesis Data Streams 使用 [SubscribeToShard](https://docs.aws.amazon.com/kinesis/latest/APIReference/API_SubscribeToShard.html) 在 HTTP/2 推送记录。 | 使用 [GetRecords](https://docs.aws.amazon.com/amazondynamodb/latest/APIReference/API_streams_GetRecords.html) 通过 HTTP 提取模型。 | 
| 记录排序 | 每条流记录上的时间戳属性可用于标识 DynamoDB 表中发生更改的实际顺序。 | 对于 DynamoDB 表中修改的每个项目，流记录将按照对该项目进行的实际修改的顺序显示。 | 
| 重复记录 | 重复记录偶尔会出现在流中。 | 流中不会显示重复记录。 | 
| 流处理选项 | 使用 [AWS Lambda](https://docs.aws.amazon.com/lambda/latest/dg/with-kinesis.html)、[适用于 Apache Flink 的亚马逊托管服务](https://docs.aws.amazon.com/kinesisanalytics/latest/dev/what-is.html)、[Kinesis Data Firehose](https://docs.aws.amazon.com/firehose/latest/dev/what-is-this-service.html) 或 [AWS Glue 流式传输 ETL](https://docs.aws.amazon.com/glue/latest/dg/add-job-streaming.html) 处理流记录。 | 使用 [AWS Lambda](https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/Streams.Lambda.html) 或者 [DynamoDB Streams Kinesis Adapter](https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/Streams.KCLAdapter.html) 处理流记录。 | 
| 持久性等级 | [可用区](https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/disaster-recovery-resiliency.html)可提供无中断的自动失效转移功能。 | [可用区](https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/disaster-recovery-resiliency.html)可提供无中断的自动失效转移功能。 | 

您可以在同一 DynamoDB 表上启用两个流式处理模型。

下面的视频详细介绍了这两个选项之间的差异。

[![AWS Videos](http://img.youtube.com/vi/UgG17Wh2y0g/0.jpg)](http://www.youtube.com/watch?v=UgG17Wh2y0g)
