Posted at

DynamoDB Streams

More than 1 year has passed since last update.

DynamoDBに関する基本的な内容をまとめてみたものです。DynamoDBに関する、Web上にすでにある解説コンテンツをまとめたサイトの抜粋です。

DynamoDB Streams


ストリーム機能の概要

テーブルでストリームを有効にすると、DynamoDB はテーブル内のデータ項目に加えられた各変更に関する情報をキャプチャします。

アプリケーションがテーブル内の項目を作成、更新、または削除するたびに、DynamoDB Streams は変更された項目のプライマリキー属性を付けてストリームレコードを書き込みます。ストリームレコードには、DynamoDB テーブル内の単一の項目に加えられたデータ変更についての情報が含まれています。追加情報(変更された項目の前後のイメージ)をキャプチャするようにストリームを設定することもできます。

・DynamoDBに行われた追加、更新、削除の変更履歴を保持しとりだし可能

・過去24時間以内にそのテーブルのデータに対して行われた変更のストリームすべてにアクセス可能で、24時間経過したストリームデータは消去され、DynamoDB Streamsの容量は自動的に管理されます。


ストリームの有効化

新しいテーブルでは、そのテーブルの作成時にストリームを有効にできます。既存のテーブルでストリームを有効または無効にしたり、ストリームの設定を変更することもできます。DynamoDB Streams は非同期的に動作するため、ストリームを有効にしてもテーブルのパフォーマンスに影響は与えません。


ストリームの読み込みと処理

ストリームを読み込んで処理するには、アプリケーションが DynamoDB Streams エンドポイントに接続して API リクエストを発行する必要があります。

ストリームは、ストリームレコードで構成されています。各ストリームレコードは、ストリームが属する DynamoDB テーブル内の 1 件のデータ変更を表しています。各ストリームレコードには、レコードがストリームに発行された順序を反映したシーケンス番号が割り当てられます。

ストリームレコードは、グループ(つまり、シャード)に整理されます。各シャードは、複数のストリームレコードのコンテナとして機能し、これらのレコードへのアクセスと反復処理に必要な情報が含まれています。シャード内のストリームレコードは 24 時間後に自動的に削除されます。

シャードはエフェメラルであり、必要に応じて自動的に作成および削除されます。また、任意のシャードは複数の新しいシャードに分割できます。これもまた自動的に行われます (親シャードが 1 つの子シャードのみを持つ場合もあります)。アプリケーションが複数のシャードからレコードを並列処理できるように、シャードは親テーブルで高レベルな書き込みアクティビティに応じて分割される場合があります。

ストリームを無効にすると、開かれているシャードは閉じられます。


ストリームの順番保証

DynamoDB Streamsでは、DynamoDBのテーブルの特定の項目(item)に対して行われた変更は、正しい順序で表示されます。異なる項目(item)に対して行われた変更は、受信した順序とは異なる順序で DynamoDB ストリームに表示されることがあります。


ストリーム機能の使い所

DynamoDB Sreamsの使い所は、クロスリージョンレプリケーションやゲーム・ソーシャルサイト等でのユーザの集計・分析などのための非同期処理などとなります。

あるいはユーザが新しい写真をアップロードするとすぐにサークル内のすべての友人のモバイルデバイスに自動的に通知するモバイルアプリケーションの構築などが考えられます。