Amazon DynamoDB
Amazon DynamoDB
概要
Amazon DynamoDB は、規模を問わず一貫した高速応答を提供するフルマネージドの NoSQL キーバリュー/ドキュメントデータベースです。サーバーのプロビジョニングやパッチ、レプリケーションを意識せずに、ミリ秒(用途によってはマイクロ秒)単位の応答を任意のスケールで得られます。テーブルは自動的に複数のアベイラビリティーゾーンへ冗長化され、トラフィックの増減に合わせて柔軟にスケールします。サーバーレスアプリケーションのバックエンドや、超低レイテンシが要求される用途で広く採用されています。
主要な概念
キー設計とパーティション
各テーブルにはパーティションキー(必須)と、任意でソートキーを持つプライマリキーを定義します。パーティションキーのハッシュでデータが内部的に分散保存されるため、アクセスが特定キーに偏らないよう設計することがスループットと性能の鍵になります。クエリは原則キーに基づいて行い、リレーショナルDBとは異なるデータモデリングが求められます。
セカンダリインデックス
プライマリキー以外の属性で検索するには、グローバルセカンダリインデックス(GSI)やローカルセカンダリインデックス(LSI)を使います。GSI は別のパーティション/ソートキーで横断検索でき、LSI は同じパーティションキーで別のソートキーを使えます。アクセスパターンを先に洗い出し、それに合わせてインデックスを設計するのが定石です。
キャパシティモード
読み書きの料金・スケーリング方式として、トラフィックを予測してキャパシティを確保するプロビジョンドモードと、リクエスト量に応じて自動課金されるオンデマンドモードがあります。負荷が予測困難・断続的ならオンデマンド、安定して予測可能ならプロビジョンド(必要に応じてAuto Scaling)がコスト効率に優れます。
グローバルテーブルとストリーム
グローバルテーブルは複数リージョン間でマルチアクティブにレプリケーションし、各リージョンで読み書きできる構成で、グローバル展開や災害対策に使います。DynamoDB Streams はテーブルの変更履歴を時系列で配信し、Lambda と組み合わせて変更検知・派生処理・他システム連携を実現します。
TTLとDAX
TTL(Time To Live)を設定すると、指定した時刻を過ぎた項目を自動的に削除でき、セッションや一時データのクリーンアップとストレージ削減に役立ちます。さらに読み取りをマイクロ秒級に高速化したい場合は、インメモリキャッシュの DynamoDB Accelerator(DAX)を前段に置くことができます。
典型的なユースケース
- サーバーレスアプリのバックエンドとして任意スケールで低レイテンシなデータ層を持つ
- セッション管理やユーザープロファイルなど高頻度アクセスのキーバリューデータ
- IoTやゲームのように予測困難で急増するトラフィックをオンデマンドで吸収する
- グローバルテーブルで複数リージョンに展開し低レイテンシと災害対策を両立する
- DynamoDB StreamsとLambdaで変更を検知し派生処理や他システム連携を行う
試験での出題観点
DynamoDB は SAA・DVA で頻出のNoSQLです。「ミリ秒の安定応答」「任意スケール」「サーバーレス」「キーバリュー/ドキュメント」が要件ならDynamoDBが正解になりやすく、複雑な結合やトランザクション中心のリレーショナル要件ならRDS/Auroraと切り分けます。DVAではキー設計(ホットパーティションの回避)、GSI/LSIの使い分け、強い整合性と結果整合性の読み取り、TTLによる自動削除、DAXによる読み取り高速化が論点です。SAAではオンデマンドとプロビジョンドのコスト判断、グローバルテーブルによるマルチリージョン化が問われます。Streams + Lambda のイベント駆動連携も定番です。
関連サービス
最終更新日: 2026-06-24
本ページの内容は、AWS公式ドキュメントを基に作成し、運営者が編集・監修しています。詳しくは編集・品質管理方針をご覧ください。