2
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?

More than 1 year has passed since last update.

AWS DVA試験対策:DynamoDBの基本と試験でおさえるべきポイント

こんにちは☁️
今回は、AWS認定DVA(Developer Associate)試験に向けてよく問われる DynamoDB について、基本情報や機能、試験での狙われポイントをわかりやすく解説していきます!


🔰 基本情報

Amazon DynamoDB は、AWSが提供するフルマネージドな NoSQL データベースサービスです。
高速でスケーラブル、しかもサーバーレスなので、アプリケーション側でインフラの管理を気にせずに使えます。

✨ 特徴

  • キーバリュー型 & ドキュメント指向型をサポート
  • シームレスなスケーリング
  • 高可用性・高耐障害性(マルチAZ対応)

⚙️ 主な機能と特徴

✅ パーティションキー(Partition Key)とソートキー(Sort Key)

  • 主キーの構成に使われます。
  • 単一キー(パーティションキーのみ)と複合キー(パーティションキー+ソートキー)のどちらも可能。

📌 試験対策ポイント:データのユニーク性は主キーによって担保されます!


✅ グローバルセカンダリインデックス(GSI)・ローカルセカンダリインデックス(LSI)

比較項目 GSI(グローバルセカンダリインデックス) LSI(ローカルセカンダリインデックス)
作成タイミング テーブル作成後でも追加可能 テーブル作成時にのみ定義できる
パーティションキー テーブルと異なるキーを指定可能 テーブルと同じキーを使用
ソートキー 任意のキーを指定可能 テーブルとは異なるキーを指定可能
クエリ範囲 別のアクセスパターンを提供(完全に独立) 同一PK内での並び順変更などに有効
容量・スループット GSIごとにRCU/WCUを管理(別枠) テーブルと共有
コスト 別途スループットと保存コストがかかる テーブルコストに含まれる
サポートしている読み取り 結果整合性のみ 強整合性/結果整合性の両方に対応

🧱 作成時のキー構成

  • GSI:異なるパーティションキーと任意のソートキーを指定可能
    例:テーブルでは user_id を主キー → GSIでは emailcreated_at を使う

  • LSI:テーブルと同じパーティションキーを使い、ソートキーのみ変更可能
    例:user_id + timestamp で投稿履歴を並び替えなど

📌 試験対策ポイント

  • LSIは後から追加できない(最初に設計が必要)
  • GSIは柔軟で便利だけどコストに注意!
  • インデックス設計はアクセスパターンに合わせて!

✅ DynamoDB Streams

  • データの変更(追加・更新・削除)をキャプチャ可能
  • Lambda と組み合わせてリアクティブな処理が実現できる

📌 試験対策ポイント
Streams + Lambda = サーバーレスイベント処理 の定番構成!


✅ オートスケーリング(Auto Scaling)

  • 読み書き容量を自動で増減調整できる便利な機能!

📌 注意点
急な負荷には対応できないことも → プロビジョンド+バーストキャパシティも検討


📈 RCU / WCUとは?

種類 内容
RCU(Read Capacity Unit) 1秒間に4KBの強整合性読み取りが可能
WCU(Write Capacity Unit) 1秒間に1KBの書き込みが可能

📌 試験で覚えるべきポイント

  • 結果整合性読み込み → RCU 0.5個 / 4KB
  • 強整合性読み込み → RCU 1個 / 4KB
  • 書き込み → WCU 1個 / 1KB

🧪 DynamoDBのAPI操作まとめ

API操作 よくある用途 特徴 試験ポイント・注意点
PutItem データの登録・上書き 条件付き書き込み対応 ConditionExpression を活用
GetItem 単一アイテム取得 強整合性も指定可能 結果整合性がデフォルト
UpdateItem 属性の部分更新 UpdateExpression 必須 エイリアス記法に注意
DeleteItem 単一削除 主キー指定 Keyミスに注意
Query 条件付き検索 インデックス活用が可能 パーティションキー必須
Scan 全件取得 非効率、コスト高 フィルターは除外のみ
Transaction系 複数操作まとめて実行 ACID保証 最大25件、ロールバック可能
BatchGetItem 一括取得(最大100件) 結果整合性のみ対応 UnprocessedKeys に注意
BatchWriteItem 一括Put/Delete(最大25件) Updateは不可 UnprocessedItems 再試行必要

🧾 DynamoDB APIで使われる主なパラメータ

パラメータ名 目的 よく使うAPI 試験ポイント
ReturnConsumedCapacity 消費容量を取得 ほとんど全て "INDEXES" vs "TOTAL"
ConsistentRead 強整合性読み取り GetItem, Query GSIでは使用不可
ProjectionExpression 取得属性を絞る GetItem, Query, Scan 帯域削減・GSIとの相性
ExpressionAttributeNames 属性名を安全に指定 UpdateItem など 予約語対策に使う
ExpressionAttributeValues 値を安全に指定 条件式を含むすべてのAPI バリューの型も意識
ConditionExpression 条件付き操作 PutItem, UpdateItem, DeleteItem 整合性のためのバリデーション

🔐 DynamoDBのロックメカニズム(排他制御)

種類 サポート 実現方法 試験キーワード
悲観的ロック 不可(仕組みなし) そもそもDynamoDBは非対応
楽観的ロック ConditionExpression + バージョン管理 同時更新の競合回避
トランザクション TransactWriteItems 複数アイテムの整合性・一貫性

🧠 試験で問われやすいポイントまとめ

機能 覚えておくこと
パーティションキー データの分散とスケーラビリティに影響
GSI / LSI GSIは後から作成OK、LSIは作成時のみ
DynamoDB Streams Lambdaとの組み合わせでリアクティブ処理
Auto Scaling 自動スループット調整(限界に注意)
RCU / WCU 単位の計算と整合性の違いを理解
TTL(Time to Live) 自動的なアイテム削除に使える
API操作 条件付き操作、バッチ系は再試行処理が鍵

2
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
2
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?