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】DynamoDB

Last updated at Posted at 2025-03-10

はじめに

AWS DVA取得に向けた勉強の一環です。
新たな学びがあったら随時追記していきます。

正確性は保証しませんので参考程度に見てください。

特徴

  • フルマネージドの Key-Value データベース
  • NoSQL(SQLライクな言語 PartiQL 使用可能)
  • サーバーレス
  • 優れた水平の拡張性
  • 3つのAZにデータ保存

データモデル

Primary Key

  • パーティションで分散管理、ソートで並び替え
  • Partition Key(主キー)
    • アクセス分散のためランダム値を推奨
    • 日付などを使う場合はサフィックスを付与
  • Sort Key
    • 複合主キーとして使用可能
  • Attributes(属性)

キャパシティモード

  • オンデマンドキャパシティモード
    • 使用量と価格が変動
  • プロビジョンドキャパシティモード
    • 使用量と価格が固定
    • Auto Scaling 設定可能

コスト

  • 読み込み・書き込みは従量課金
  • データ転送に課金
  • バックアップ・復元は GB 単位で課金
  • レプリケート書き込み要求にも課金
  • 変更データのキャプチャ
  • DynamoDB Accelerator (DAX)
    • 1時間あたり課金
    • キャッシュにより読み取りを高速化(ミリ秒 → マイクロ秒)
    • 書き込みはキャッシュとDynamoDBテーブルの両方に適用
  • DynamoDB Streams
    • 直近24時間のCUD変更履歴を保存
    • Lambdaと連携して変更検出や通知が可能
    • グローバルテーブルの利用に必要

セカンダリインデックス

ローカルセカンダリインデックス(LSI)

  • 元テーブルと同じパーティション内で検索を完結
  • テーブル作成時のみ設定可能
  • パーティションキーごとのインデックスサイズ上限は 10GB

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

  • 主キーとは別の属性を使ったインデックス
  • 後から設定可能

デメリット

  • 書き込みコストが高くなる
  • ストレージを消費する

インデックスの多用は推奨されず、多用する場合は RDS を検討するのが望ましい。
検索性向上とストレージ・パフォーマンスのトレードオフを考慮する必要がある。

グローバルテーブル

  • 任意のリージョンにレプリカテーブルを作成できる

書き込み

  • 1秒以内に3つのAZにレプリケートされ、結果整合性が保たれる

強力な整合性の読み込み

  • 変更が反映されたデータを返す
  • レイテンシが高くなる
  • スループット消費が大きくなる

API

  • 基本操作
    • PutItem
    • UpdateItem
    • GetItem
    • DeleteItem
  • 検索
    • クエリ(検索結果の配列を返す)
    • スキャン(全項目を走査するため時間がかかる)
  • バッチ処理
    • BatchWriteItem / BatchGetItem(大量データの書き込み・読み込み)
    • 途中で失敗しても最後まで処理を継続
  • トランザクション
    • 複数のアクションをまとめて処理
    • All or Nothing(一つ失敗した場合はすべて失敗)

バックアップ

オンデマンドバックアップ

  • 任意のタイミングで取得
  • 数秒で復元可能
  • 明示的に削除しない限り保持

ポイントインタイムリカバリ(PITR)

  • 5分おきにログを取得
  • 最大35日前のログまで保持

復元

  • 既存のテーブルではなく新規テーブルとして復元
  • 復元時に設定変更可能
    • セカンダリインデックス
    • キャパシティモード
    • WCU / RCU
    • 暗号化
  • 復元後に設定が必要
    • Auto Scaling
    • IAMポリシー
    • CloudWatch
    • タグ
    • ストリーム設定
    • TTL

セキュリティ

  • IAMによるアクセス制御
    • テーブル、インデックス、ストリームごとに ARN を持つ
  • 暗号化
    • DynamoDB管理、AWS KMS、ユーザー管理による暗号化が使用可能
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?