Amazon DynamoDB - kin-kin/memo GitHub Wiki
AWS
Amazon DynamoDB
- NoSQL
- 3つのアベイラビリティーゾーンにデータのコピーを保存
- データの格納容量に制限なし
- KVS
- プライマリキーは最大2個
- パーティションキー(ハッシュキー) or パーティションキー(ハッシュキー) + ソートキー(レンジキー)
- パーティションキーで検索するように設計すると、パフォーマンスが向上する
- グローバルセカンダリインデックス(GSI)
- パーティションキーを変更したインデックス
- RCUは個別(別テーブルに近い)
- スパースなインデックスを使用すること
- マネジメントコンソールでGSIを追加したら、画面全体を更新すること
- ローカルセカンダリインデックス(LSI)
- ソートキーを変更したインデックス
- RCUをベーステーブルから継承するため、LSIを考慮して計算する
- DynamoDB Local
- 結果整合性
- DynamoDBの読み込みのデフォルト
- 書き込み直後に読み込むと、書き込み前のデータが返される可能性がある
- 書き込みは少なくとも2つのアベイラビリティーゾーンに書き込まれた時点でACK
- 強力な整合性
- 書き込まれたデータが3つのアベイラビリティーゾーンで完全に保存されたデータのみを読み込む
- RCUを2倍消費する
- スループットキャパシティ
- オンデマンドモード
- プロビジョニングモード
- 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に書き込みスルー
- アクセス制御
- 暗号化
- KMSを利用してデータを暗号化
- 使用するKMSのキーはすべてのテーブルで共通
- KMSへのアクセス許可があるIAMポリシーが必要
- テーブル作成時にのみ設定可能
References