0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

【AWS SAA対策】Amazon DynamoDB まとめ ― DAX・Global Tables・Capacity Mode・設計パターンを整理する

0
Posted at

はじめに

AWS Solutions Architect Associate (SAA) の学習中に整理した Amazon DynamoDB 関連の知識をまとめました。
DynamoDB は NoSQL のサーバーレスデータベースとして、容量モードの選択、DAX によるキャッシュ、Global Tables によるマルチリージョン展開など、多角的に出題されます。

本記事は個人の学習ノートをベースにしています。誤りがあればコメントでご指摘いただけると助かります。


サービス概要

DynamoDB の特徴

  • NoSQL(Key-Value / Document)
  • ミリ秒レイテンシー
  • サーバーレス(インフラ管理不要)
  • 水平スケール
  • アイテムサイズ上限: 400KB

Capacity Modes

モード 用途 課金
On-Demand 予測不能なトラフィック、急激なスパイク、新規テーブル 使った分だけ(pay-per-request)
Provisioned(Auto Scaling 付き) 予測可能なトラフィック、段階的な増加 プロビジョニング容量ベース

「急激なスパイク」には On-Demand を選びます。Auto Scaling は反応に遅延があるため、急激なスパイクには間に合わない場合があります。


DAX(DynamoDB Accelerator)

  • DynamoDB 専用のインメモリキャッシュ
  • DynamoDB API と完全互換 → コード変更が最小
  • ミリ秒 → マイクロ秒 に高速化
  • ホットパーティション問題を解消
  • ElastiCache Redis でも代替可能だが、実装がはるかに複雑

Global Tables

  • マルチリージョン、マルチライター(各リージョンで読み書き可能)
  • レプリケーションレイテンシー: 通常1秒未満
  • フルマネージド(カスタムレプリケーション不要)
  • Aurora Global Database との違い: マルチライター対応(Aurora は書き込みがプライマリのみ)

Deletion Protection

  • テーブル削除自体をブロック(予防的)
  • 設定するだけ → 運用負荷ゼロ

Point-in-Time Recovery(PITR)

  • 秒単位の粒度で過去35日間の任意時点に復元
  • 継続的・自動的にバックアップ
  • 誤書き込み・誤削除からの保護に最適

TTL(Time To Live)

  • アイテムに有効期限(Unix timestamp)を設定
  • 期限切れアイテムを自動削除(追加コストなし)
  • データ保持ポリシーの実装に最適

DynamoDB の制約

  • アイテムサイズ上限 400KB(20MB のドキュメントは格納不可)
  • DAX なしの DynamoDB 単体はインメモリではない

試験で問われる設計パターン


キャッシュ・パフォーマンス系

DynamoDB キャッシュ → DAX

シナリオ: DynamoDB に対する読み取りが頻繁で、レスポンスタイムを改善したいです。コード変更は最小限にしたい場合、どのキャッシュサービスが最適でしょうか?

正解: DAX(DynamoDB 用)+ CloudFront(S3 用)

  • DAX = DynamoDB API 互換でコード変更最小
  • ElastiCache Redis でも可能だが実装が複雑

DynamoDB ホットパーティション + リファクタリング最小 → DAX

シナリオ: スポーツアプリで人気アスリートのページにアクセスが集中し、ホットパーティション問題が発生しています。RCU を増加しても解決しません。リファクタリングを最小限にして解決するにはどうすべきでしょうか?

正解: DynamoDB DAX

  • DAX はホットキーをキャッシュして負荷を分散
  • ElastiCache はコード変更が大きい
  • Global Tables はレプリケーション用(ホットパーティション対策ではない)
  • RCU 増加ではホットパーティション問題は解決しない

容量モード系

予測不能トラフィック + 急激なスパイク → On-Demand

シナリオ: 新しく立ち上げるサービスで、トラフィックパターンが予測できません。急激なスパイクにも対応したい場合、どの容量モードが適切でしょうか?

正解: DynamoDB On-Demand Capacity Mode

  • Auto Scaling は反応遅延があり、急激なスパイクに不向き
  • On-Demand は即座にキャパシティを割り当て
  • 新規テーブル(パターン不明)にも On-Demand が推奨

グローバル展開系

マルチリージョン + 1秒未満の書き込み + グローバル同期 → Global Tables

シナリオ: グローバルに展開するアプリケーションで、各リージョンから1秒未満の書き込みレイテンシーが必要です。データはリージョン間で自動同期させたいです。どのサービスが最適でしょうか?

正解: DynamoDB Global Tables

  • マルチリージョン、マルチライター
  • Aurora Global DB は書き込みがプライマリリージョンのみ
  • RDS Cross-Region Read Replica は読み取り専用

DynamoDB グローバル HA + コスト効率 → Global Tables + Provisioned + Auto Scaling

シナリオ: DynamoDB をグローバルに展開して高可用性を確保しつつ、コスト効率も重視したいです。どの構成が最適でしょうか?

正解: Global Tables + Provisioned Capacity + Auto Scaling

  • Global Tables はネイティブレプリケーション
  • DAX はローカルキャッシュ(グローバル同期ではない)
  • Streams + Lambda によるカスタムレプリケーションは運用負荷が大きい

データ保護系

テーブルの誤削除防止 → Deletion Protection

シナリオ: 運用チームが誤って DynamoDB テーブルを削除してしまうリスクがあります。最も運用負荷の低い防止策はどれでしょうか?

正解: DynamoDB Deletion Protection

  • 予防的(削除自体をブロック)
  • PITR は復旧手段(削除防止ではない)
  • Lambda による自動復旧は運用負荷が大きい

破損データの復旧 → PITR

シナリオ: アプリケーションのバグにより DynamoDB のデータが破損しました。破損前の状態に戻すにはどうすべきでしょうか?

正解: DynamoDB PITR

  • 秒単位の粒度で過去35日間の任意時点に復元
  • On-Demand Backup は事前に取得している必要がある
  • Streams はカスタムコードが必要
  • Global Tables は破損データもレプリケートしてしまう

サービス選択系

NoSQL + ミリ秒レイテンシー + 水平スケール + サーバーレス → DynamoDB

シナリオ: NoSQL でミリ秒レイテンシー、水平スケール、サーバーレスという要件をすべて満たすデータベースはどれでしょうか?

正解: Amazon DynamoDB

  • ElastiCache = キャッシュ(メイン DB ではない)
  • RDS = リレーショナル(NoSQL 要件に不適)
  • Neptune = グラフ DB(Key-Value には不適)

ドキュメントサイズが 20MB → DynamoDB は不可

シナリオ: 20MB のドキュメントを保存する必要があります。DynamoDB は使えるでしょうか?

正解: 使えません。DynamoDB のアイテムサイズ上限は 400KB です。この場合は S3 をドキュメントストアとして使います。


おわりに

DynamoDB は「NoSQL + サーバーレス」の代表的なサービスであり、SAA でも頻出です。「急激なスパイク → On-Demand」「ホットパーティション → DAX」「マルチリージョン書き込み → Global Tables」「400KB 制限」という判断パターンを押さえておけば、ほとんどの問題に対応できます。

間違いや補足があればぜひコメントで教えてください。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?