TL

Cloud Service

Amazon DynamoDB

フルマネージドのサーバーレスNoSQL。一桁ミリ秒の応答とほぼ無限のスケールを、運用なしで実現する。

中級SAA-C03DVA-C02SAP-C02パフォーマンス効率信頼性コスト最適化
最終更新: 2026-05-31公式ドキュメント ↗
TL;DR要点だけ先に
  • 1.サーバー管理ゼロで一桁ミリ秒・ほぼ無限に伸びるNoSQL。
  • 2.PKをハッシュして自動でパーティション分割しスケールする。
  • 3.アクセスパターン駆動でキー設計、スパイクはオンデマンド。
Amazon DynamoDB のアーキテクチャ図
Amazon DynamoDB の構成イメージ

解決する課題

  • アクセスが急増しても落ちない/遅くならないDBが欲しい
  • DBの容量計画・シャーディングを自分でやりたくない
  • ミリ秒の応答を安定して出したい

主要概念と用語

  • テーブル / 項目(Item)/ 属性(Attribute)
  • パーティションキー(PK): データの分散先を決める最重要キー
  • ソートキー(SK): 同一PG内の並び/範囲検索
  • GSI / LSI: 別の属性で検索するためのインデックス
  • 容量モード: オンデマンド / プロビジョンド
  • DynamoDB Streams: 変更をイベントとして流す(Lambda連携)
  • TTL / DAX: 自動失効 / マイクロ秒キャッシュ

仕様・制限・クォータ

  • 1項目最大400KB
  • 結果整合性(デフォルト)と強い整合性を選べる
  • マルチAZへ自動複製、グローバルテーブルで多リージョン化

内部の仕組み

DynamoDBはPKをハッシュして内部パーティションへ分散します。アクセスが増えると自動でパーティションを分割しスケール。ゆえにPK設計=性能設計で、特定キーに偏るとホットパーティションで詰まります。

設計の鉄則

RDBの正規化ではなくアクセスパターン駆動設計。「どう問い合わせるか」を先に決めてキー/インデックスを設計する(シングルテーブル設計が定番)。

設計パターン / ベストプラクティス

  • アクセスパターンを列挙 → PK/SK と GSI を設計
  • スパイクが読めないなら オンデマンド 容量
  • 変更駆動の処理は Streams → Lambda
  • 読み取りが激しいなら DAX でキャッシュ

運用・監視・トラブルシュート

  • メトリクス: ConsumedRead/WriteCapacity ThrottledRequests
  • スロットルはホットパーティション or 容量不足を疑う
  • 大量読み取りの Scan は避け、Query で絞る

コスト

  • 読み書きキャパシティ(オンデマンド/プロビジョンド)+ストレージ
  • 定常負荷はプロビジョンド+Auto Scalingが安いことも

セキュリティ

  • 保存時暗号化はデフォルト(KMS)
  • IAMで項目/属性レベルまで条件付与可能
  • VPCからはゲートウェイ型VPCエンドポイントで到達

Well-Architected の観点

  • パフォーマンス効率: 一桁ミリ秒・自動スケール
  • 信頼性: マルチAZ複製・グローバルテーブル
  • コスト最適化: 容量モードの使い分け

試験で問われるポイント

頻出
  • アクセスパターン駆動のキー設計、ホットパーティション回避
  • 別属性検索=GSI(作成後も追加可)/ LSIは作成時のみ
  • スパイク=オンデマンド、変更連携=Streams
📝 DynamoDB ミニ確認テスト1 問 / 全 3

DynamoDBのテーブル設計で最も重要な考え方は?

関連サービス・比較

観点DynamoDBRDS/Aurora
モデルNoSQL(キーバリュー/ドキュメント)リレーショナル(SQL)
スケール水平・ほぼ無限・自動縦+リードレプリカ
クエリキー中心(JOINなし)柔軟なSQL/JOIN
運用サーバーレスマネージド(設定多め)

ハンズオン / CLI例

# オンデマンド課金でテーブル作成(PK=userId, SK=createdAt)
aws dynamodb create-table \
  --table-name Orders \
  --attribute-definitions AttributeName=userId,AttributeType=S AttributeName=createdAt,AttributeType=S \
  --key-schema AttributeName=userId,KeyType=HASH AttributeName=createdAt,KeyType=RANGE \
  --billing-mode PAY_PER_REQUEST

# 1ユーザーの注文を範囲検索(Scanではなく Query)
aws dynamodb query --table-name Orders \
  --key-condition-expression "userId = :u" \
  --expression-attribute-values '{":u":{"S":"user-123"}}'

AWS Service

Amazon DynamoDBを実務で読む

TL;DRは入口です。実際に選ぶ・使う段階では、何を解決するか、何と比較するか、導入後にどこで詰まるかまで見る必要があります。

解決すること

データベース

比較で見る軸

クラウド: AWS / カテゴリ: データベース / 難易度: intermediate

導入後に効く点

PKをハッシュして自動でパーティション分割しスケールする。

先に潰すリスク

サービス単体ではなく、権限、ネットワーク、監視、課金、バックアップを含めて設計する必要がある。

数字・仕様の読み方
クラウド
AWS
カテゴリ
データベース
難易度
intermediate
関連資格
SAA-C03 / DVA-C02 / SAP-C02
設計柱
performance / reliability / cost

判断チェックリスト

  • 自社の用途が「データベース / performance」に近いか確認する。
  • 強みである「サーバー管理ゼロで一桁ミリ秒・ほぼ無限に伸びるNoSQL。」が本当に評価軸になるか確認する。
  • 注意点の「サービス単体ではなく、権限、ネットワーク、監視、課金、バックアップを含めて設計する必要がある。」を運用で吸収できるか確認する。
  • 公開値や仕様値は、対象プラン・対象機種・対象リージョンまで確認する。
  • 既存システム、ID、ネットワーク、監視、バックアップとの接続方法を先に洗い出す。
  • 小さく試してから、本番移行、権限設計、障害時手順、コスト監視を決める。

次に確認する観点

データベースperformancereliabilitycostSAA-C03

他クラウドの同等サービス

役割が近いサービスです。設計の置き換えや比較検討の参考に。