

# 与 DynamoDB 集成的最佳实践
<a name="bp-integration"></a>

将 DynamoDB 与其它服务集成时，应始终遵循使用每项服务的最佳实践。但是，您应该考虑一些特定于集成的最佳实践。

**Topics**
+ [在 DynamoDB 中创建快照](#bp-integration-snapshot)
+ [在 DynamoDB 中捕获数据更改](#bp-integration-change-data-capture)

## 在 DynamoDB 中创建快照
<a name="bp-integration-snapshot"></a>
+ 通常，我们建议使用[导出到 Amazon S3](S3DataExport.HowItWorks.md) 来创建用于初始复制的快照。它既具有成本效益，又不会与应用程序的流量争夺吞吐量。您也可以考虑备份并恢复到新表，然后再执行扫描操作。这样可以避免与应用程序争夺吞吐量，但成本效益通常要比导出低得多。
+ 导出时请务必设置 `StartTime`。这样可以轻松确定从何处开始更改数据捕获（CDC）。
+ 使用导出到 S3 时，请在 S3 存储桶上设置生命周期操作。通常，将到期操作设置为 7 天是安全的，但需要遵循公司可能制定的任何指导准则。即使您在摄取后明确删除项目，此操作也有助于发现问题，从而有助于减少不必要的成本并防止违反政策。

## 在 DynamoDB 中捕获数据更改
<a name="bp-integration-change-data-capture"></a>
+ 如果您需要近乎实时的 CDC，可以使用 [DynamoDB Streams](streamsmain.md) 或 [Amazon Kinesis Data Streams（KDS）](kds.md)。在决定使用哪个服务时，通常要考虑哪个最容易与下游服务一起使用。如果您需要在分区键级别按顺序处理事件，或者您的项目非常大，请使用 DynamoDB Streams。
+ 如果您不需要近乎实时的 CDC，则可以使用[通过增量导出来导出到 Amazon S3](S3DataExport.HowItWorks.md)，仅导出两个时间点之间发生的更改。

  如果您使用导出到 S3 来生成快照，这可能特别有用，因为您可以使用类似的代码来处理增量导出。通常，导出到 S3 比以前的流式传输选项稍微便宜一些，但成本通常不是使用哪个选项的主要因素。
+ 通常，一个 DynamoDB 流只能有两个用户同时使用。在规划集成策略时要考虑这一点。
+ 不要使用扫描来检测更改。这可能对小规模有效，但很快就会变得相当不切实际。