

# Amazon DynamoDB の変更データキャプチャ
<a name="streamsmain"></a>

多くのアプリケーションでは、DynamoDB テーブルに保存された項目の変更を、変更の発生時にキャプチャすることで利点を利用できます。以下に示しているのは、いくつかのユースケースの例です。
+ 人気のモバイルアプリケーションは、1 秒あたり数千件の更新速度で、DynamoDB テーブルのデータを変更します。別のアプリケーションは、これらの更新に関するデータをキャプチャして保存し、モバイルアプリの使用状況メトリクスをほぼリアルタイムで提供します。
+ 金融アプリケーションは、DynamoDB テーブル内の株式市場データを変更します。並行して実行されるさまざまなアプリケーションは、これらの変化をリアルタイムで追跡し、リスクのある価値を計算し、株価の動きに基づいてポートフォリオを自動的にリバランスします。
+ 輸送車両や産業機器のセンサーは、DynamoDB テーブルにデータを送信します。さまざまなアプリケーションがパフォーマンスをモニタリングし、問題が検出されたときにメッセージングアラートを送信し、機械学習アルゴリズムを適用して潜在的な欠陥を予測し、データを圧縮して Amazon Simple Storage Service (Amazon S3) にアーカイブします。
+ アプリケーションは、友人の 1 人が新しい画像をアップロードするとすぐに、グループ内のすべての友人のモバイルデバイスに通知を自動送信します。
+ 新しいお客様がデータを DynamoDB テーブルに追加します。このイベントにより、新しいお客様にようこそメールを送信する別のアプリケーションが起動されます。

DynamoDB は、項目レベルの変更データキャプチャレコードのストリーミングをほぼリアルタイムでサポートします。これらのストリーミングを使用し、内容に基づいてアクションを実行するアプリケーションを構築できます。

**注記**  
DynamoDB Streams へのタグの追加、DynamoDB Streams での[属性ベースのアクセス制御 (ABAC)](access-control-resource-based.md) の使用はサポートされていません。

次の動画では、データキャプチャ変更の概念を紹介します。

[![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 には、変更データキャプチャ用の 2 つのストリーミングモデルがあります。DynamoDB 用 Kinesis Data Streams と DynamoDB Streams です。

アプリケーションに適したソリューションを選択しやすくするために、次の表に、各ストリーミングモデルの特徴をまとめてあります。


| プロパティ | DynamoDB 用 Kinesis Data Streams | DynamoDB Streams | 
| --- | --- | --- | 
| データ保持期間 |  [1 年](https://docs.aws.amazon.com/streams/latest/dev/kinesis-extended-retention.html)まで。 | 24 時間。 | 
| Kinesis Client Library (KCL) サポート | [KCL バージョン 1.X、2.X および 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)コンシューマー、または[ファンアウトが強化された](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) を使用して HTTP 経由でモデルをプルし、[ファンアウトを強化する](https://docs.aws.amazon.com/streams/latest/dev/enhanced-consumers.html)と、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)、[Amazon Managed Service for 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 テーブルで両方のストリーミングモデルを有効にすることができます。

次の動画では、これら 2 つのオプションの違いを詳しく説明しています。

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