Amazon DynamoDB - kin-kin/memo GitHub Wiki

AWS

Amazon DynamoDB

  • NoSQL
    • 3つのアベイラビリティーゾーンにデータのコピーを保存
    • データの格納容量に制限なし
  • KVS
    • プライマリキーは最大2個
      • パーティションキー(ハッシュキー) or パーティションキー(ハッシュキー) + ソートキー(レンジキー)
      • パーティションキーで検索するように設計すると、パフォーマンスが向上する
  • グローバルセカンダリインデックス(GSI)
    • パーティションキーを変更したインデックス
    • RCUは個別(別テーブルに近い)
    • スパースなインデックスを使用すること
    • マネジメントコンソールでGSIを追加したら、画面全体を更新すること
  • ローカルセカンダリインデックス(LSI)
    • ソートキーを変更したインデックス
    • RCUをベーステーブルから継承するため、LSIを考慮して計算する
  • DynamoDB Local
    • DynamoDBのエンジンのみのライブラリ
  • 結果整合性
    • DynamoDBの読み込みのデフォルト
    • 書き込み直後に読み込むと、書き込み前のデータが返される可能性がある
    • 書き込みは少なくとも2つのアベイラビリティーゾーンに書き込まれた時点でACK
  • 強力な整合性
    • 書き込まれたデータが3つのアベイラビリティーゾーンで完全に保存されたデータのみを読み込む
    • RCUを2倍消費する
  • スループットキャパシティ
    • オンデマンドモード
      • RCUとWCUの設定不要、従量課金
    • プロビジョニングモード
      • RCUとWCUの値として固定値を設定する
    • DynamoDB Auto Scaling
      • 最小キャパシティユニット・最大キャパシティユニット・ターゲット使用率を設定して自動管理
    • スループットキャパシティの変更は無停止で行うことが可能
    • キャパシティユニットは1秒あたりの検索結果数(強力な整合性の場合)
      • 結果整合性の場合はその倍
      • トランザクションオペレーションはRCU/WCUが2倍かかる
        • prepare/commitフェーズが追加されるため
  • RCU
    • 1RCU = 1秒間に4KBまでのデータを2回読み込み可能 (結果整合性)
      • RCUのチャンク計算は、1アイテムのバイト数を4KBで割ってから個数をかける
    • 1RCU = 1秒間に4KBまでのデータを1回読み込み可能 (強力な整合性)
    • RCUはFilterExpressionの処理の前(DynamoDBが結果を返す直前)までで消費する
  • WCU
    • 1WCU = 1秒間に1KBまでのデータを1回書き込み可能
  • オンデマンドバックアップ
    • バックアップ操作を行った時点のテーブルデータをすべて保存
  • 継続的バックアップ
    • 有効にした時点からテーブルに対するすべての更新処理を記録
    • 最大で35日間
    • ポイントインタイムリカバリが可能
  • DynamoDBストリーム
    • テーブル内の項目レベルの変更を最大24時間保存
    • エンドポイントが提供され、時系列データを取得可能
  • DynamoDB Accelerator
    • DynamoDBのインメモリキャッシュサービス
    • 結果整合性の読み込みはキャッシュを返す
      • キャッシュがなければDynamoDBから遅延読み込み
    • 強力な整合性の読み込みはキャッシュをせず、DynamoDBから直接返す
    • 書き込みはDynamoDBに書き込みスルー
  • アクセス制御
    • IAMポリシーを使用する
  • 暗号化
    • KMSを利用してデータを暗号化
      • 使用するKMSのキーはすべてのテーブルで共通
      • KMSへのアクセス許可があるIAMポリシーが必要
    • テーブル作成時にのみ設定可能

References