本文へスキップ
BecomeCoder

AWS SAA(ソリューションアーキテクト)コース · 第6章 データベースの設計 · レッスン34

DynamoDBの高度な機能 ― DAX・Streams・Global Tables

導入

DynamoDB単体でも高速ですが、SAAでは「さらに要件を満たすための周辺機能」の理解も問われます。キャッシュ、変更検知、マルチリージョン展開の3つを見ていきます。

説明

DAX(DynamoDB Accelerator) は、DynamoDB専用のインメモリキャッシュです。DynamoDB自体もミリ秒台で応答しますが、DAXを前段に置くとさらにマイクロ秒単位まで短縮できます。読み取りが極端に集中するホットキーの負荷を吸収するのに使います。

DynamoDB Streams は、テーブルへの変更(挿入・更新・削除)を時系列で記録するストリームです。Lambda関数をトリガーして、変更をリアルタイムに他システムへ連携できます(例:注文が追加されたら通知を送る、集計テーブルを更新する)。

Global Tables は、DynamoDBのマルチリージョン・マルチアクティブレプリケーション機能です。複数リージョンの同じテーブルに、どこからでも書き込め、双方向に自動同期されます。RDSのリードレプリカ(読み取り専用)とは異なり、どのリージョンでも書き込み可能な点が特徴です。

その他、TTL(Time To Live) で不要になった項目(セッション情報、期限切れデータなど)を自動削除でき、ストレージコストと管理の手間を削減できます。

flowchart TD
    App["アプリ"] -->|"読み取り集中"| DAX["DAX (マイクロ秒キャッシュ)"] --> DDB["DynamoDBテーブル"]
    DDB -->|"変更を検知"| Streams["DynamoDB Streams"] --> Lambda["Lambda関数"]
    DDB <-->|"双方向レプリケーション"| DDB2["別リージョンのテーブル<br/>(Global Tables)"]

いつRDSでなくDynamoDBかスキーマが柔軟に変化する/超高速な単純キー検索が中心/トラフィックが桁違いにスケールする/サーバーレスアーキテクチャと親和させたい、といった要件ではDynamoDB。複雑な結合・トランザクション・アドホックなSQLクエリが必要ならRDS/Auroraを選びます。

読んでみよう

「DynamoDBの読み取りをさらに高速化したい」→ DAX。「変更をトリガーに他処理を動かしたい」→ Streams+Lambda。「複数リージョンで低レイテンシーな書き込みが必要」→ Global Tables。この3点セットの使い分けはSAAの定番出題です。