

# 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 バケットにライフサイクルアクションを設定します。通常、Expiration アクションは 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)を使用して、2 つの時点の間に発生した変更のみをエクスポートできます。

  S3 へのエクスポートを使用してスナップショットの生成を行った場合は、同様のコードを使用して増分エクスポートを処理できるため、特に便利です。通常、S3 へのエクスポートは以前のストリーミングオプションよりも若干安価ですが、どのオプションを使用するかを決める主な要素はコストではありません。
+ 通常、DynamoDB ストリームの同時コンシューマーは、最大 2 人です。統合戦略を計画する際には、この点を考慮してください。
+ スキャンを使用して変更を検出しないでください。これは小規模ではうまくいくかもしれませんが、すぐに実用的ではなくなります。