DynamoDB Streams
DynamoDB テーブルの変更をリアルタイムでキャプチャし、Lambda で処理するイベントソース
DynamoDB Streams とは
DynamoDB Streams は、DynamoDB テーブルのアイテムの追加・更新・削除をリアルタイムでキャプチャし、Lambda で処理するイベントソースである。CDC (Change Data Capture) の AWS 実装で、テーブルの変更を他のサービスに伝播する。
ユースケース
DynamoDB Streams はテーブルの変更をリアルタイムにキャプチャするため、他のデータストアとの同期や、変更をトリガーとした後続処理に活用できる。イベント駆動アーキテクチャの起点として機能する。
| ユースケース | 説明 |
|---|---|
| 検索インデックスの同期 | DynamoDB → OpenSearch |
| キャッシュの無効化 | DynamoDB → Lambda → ElastiCache 削除 |
| 集計テーブルの更新 | 注文追加 → 売上集計を更新 |
| 通知 | 新規注文 → SNS → メール送信 |
| 監査ログ | 全変更を S3 に保存 |
アーキテクチャ
DynamoDB テーブルへの書き込みが発生すると、Streams が変更レコードをキャプチャし、Lambda がそれを消費して後続の処理を実行する。Lambda は変更の種類 (INSERT、MODIFY、REMOVE) に応じて処理を分岐できる。
[DynamoDB テーブル] → [DynamoDB Streams] → [Lambda] → [OpenSearch / SNS / S3]
StreamViewType
StreamViewType を以下にまとめる。
| タイプ | 含まれるデータ |
|---|---|
| KEYS_ONLY | キー属性のみ |
| NEW_IMAGE | 変更後のアイテム |
| OLD_IMAGE | 変更前のアイテム |
| NEW_AND_OLD_IMAGES | 変更前後の両方 |
注意点
注意点を以下にまとめる。
| 注意点 | 対策 |
|---|---|
| 順序保証はパーティションキー内のみ | 同じキーの変更は順序保証 |
| 最大 2 つの Lambda を接続可能 | 3 つ以上は EventBridge Pipes 経由 |
| 24 時間でストリームレコードが期限切れ | 処理が遅延すると消失 |
| 冪等性が必要 | リトライで同じレコードが再送される |
実務での活用方法は関連書籍にも詳しい。
この記事は役に立ちましたか?
関連用語
Change Data Capture
データベースの変更をリアルタイムに検出し、下流システムに伝播させるデータ統合パターン
ストリーム処理
データを受信しながらリアルタイムで処理する手法で、バッチ処理と対比される
DynamoDB
AWS のフルマネージド NoSQL データベースで、ミリ秒単位のレイテンシとシームレスなスケーリングを提供する
シングルテーブル設計
DynamoDB で複数のエンティティを 1 つのテーブルに格納し、効率的なアクセスパターンを実現する設計手法
トランザクショナルアウトボックス
データベースへの書き込みとイベント発行を原子的に行うための分散システムパターン
オニオンアーキテクチャ
ドメインロジックを中心に据え、外側の層が内側に依存する同心円状のアーキテクチャ
関連する記事
技術書がキャリアを変えた話 - 読書とキャリアの関係
技術書の読書習慣がエンジニアのキャリアに影響する 3 つの経路と、キャリア段階に応じた読書戦略を具体的に解説します。
年収を上げた 1 冊 - エンジニア 50 人に聞いたキャリアを変えた本
エンジニアのキャリアに転機をもたらした本にはどんな共通点があるのか。50 人の回答から見えてきた、キャリアを変える本の 3 つの特徴を分析します。
技術書 1 冊分の知識で年収が 50 万円変わる計算
技術書への投資リターンを具体的な数字で試算します。1 冊 3000 円の本が、スキルアップを通じてどれだけの年収増につながりうるのか。投資対効果の観点から技術書の価値を考えます。