Amazon DynamoDB の変更データキャプチャ - Amazon DynamoDB

Amazon DynamoDB の変更データキャプチャ

多くのアプリケーションでは、DynamoDB テーブルに保存された項目の変更を、変更の発生時にキャプチャすることで利点を利用できます。以下に示しているのは、いくつかのユースケースの例です。

  • 人気のモバイルアプリケーションは、1 秒あたり数千件の更新速度で、DynamoDB テーブルのデータを変更します。別のアプリケーションは、これらの更新に関するデータをキャプチャして保存し、モバイルアプリの使用状況メトリクスをほぼリアルタイムで提供します。

  • 金融アプリケーションは、DynamoDB テーブル内の株式市場データを変更します。並行して実行されるさまざまなアプリケーションは、これらの変化をリアルタイムで追跡し、リスクのある価値を計算し、株価の動きに基づいてポートフォリオを自動的にリバランスします。

  • 輸送車両や産業機器のセンサーは、DynamoDB テーブルにデータを送信します。さまざまなアプリケーションがパフォーマンスをモニタリングし、問題が検出されたときにメッセージングアラートを送信し、機械学習アルゴリズムを適用して潜在的な欠陥を予測し、データを圧縮して Amazon Simple Storage Service (Amazon S3) にアーカイブします。

  • アプリケーションは、友人の 1 人が新しい画像をアップロードするとすぐに、グループ内のすべての友人のモバイルデバイスに通知を自動送信します。

  • 新しいお客様がデータを DynamoDB テーブルに追加します。このイベントにより、新しいお客様にようこそメールを送信する別のアプリケーションが起動されます。

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

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

変更データキャプチャのストリーミングオプション

DynamoDB には、変更データキャプチャ用の 2 つのストリーミングモデルがあります。DynamoDB 用 Kinesis Data Streams と DynamoDB Streams です。

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

プロパティ DynamoDB 用 Kinesis Data Streams DynamoDB Streams
データ保持期間 1 年まで。 24 時間。
Kinesis Client Library (KCL) サポート KCL バージョン 1.X および 2.X サポート。 KCL バージョン 1.X サポート。
コンシューマー数 シャードごとに最大 5 つの同時コンシューマー、またはファンアウトが強化されたシャードごとに最大 20 の同時コンシューマー。 シャードごとに最大 2 つの同時コンシューマー。
スループットクォータ 無制限。 DynamoDB テーブルと AWS リージョンによるスループットクォータの対象となります。
レコードの配信モデル GetRecords を使用して HTTP 経由でモデルをプルし、ファンアウトを強化すると、Kinesis Data Streams は SubscribeToShard を使用して HTTP/2 経由でレコードをプッシュします。 GetRecords を使用した HTTP 経由のプルモデル。
レコードの順序 各ストリーミングレコードのタイムスタンプ属性を使用して、DynamoDB テーブルで変更が発生した実際の順序を特定できます。 DynamoDB テーブルで変更された各項目について、ストリーミングレコードは項目に対する実際の変更と同じ順序で出現します。
重複レコード 重複レコードがストリーミングに表示される場合があります。 重複レコードがストリーミングに表示されません。
ストリーミング処理オプション AWS LambdaAmazon Managed Service for Apache FlinkKinesis Data Firehose、または AWS Glue ストリーミング ETL を使用してストリームレコードを処理します。 AWS LambdaDynamoDB Streams Kinesis adapter を使用してストリームレコードを処理します。
耐久性 アベイラビリティーゾーンにより、中断することなく自動的にフェイルオーバーできます。 アベイラビリティーゾーンにより、中断することなく自動的にフェイルオーバーできます。

同じ DynamoDB テーブルで両方のストリーミングモデルを有効にすることができます。

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