Open7
Amazon DynamoDB
公式ドキュメント
DynamoDBのキー・インデックスについてまとめてみた - Qiita より引用
キーの種類
- パーティションキー
- データをどのパーティションに配置するか決定する。
- 各パーティションへのアクセスがなるべく均一になるようパーティションキーを設計すると良い。
- ソートキー
- ソートキーによってデータはパーティション内で並べ替えられて物理的に近くなるように配置される
- QueryAPIではソートキーを指定して取り出すデータの範囲をフィルタできる。
- ソートキーの設定は任意。
- プライマリキー
- 「パーティションキー」ま「パーティションキーとソートキーの複合キー」のこと。
- プライマリキーによってデータは一意に識別される。
セカンダリインデックス
- グローバルセカンダリインデックス(GSI)
- パーティションキーおよびソートキーを持つインデックス
- テーブルことに 20 個
- すべてのパーティションにまたがり、ベーステーブル内のすべてのデータを対象とする可能性があるため、グローバル」と見なされます
- ベーステーブルとは別に独自のパーティション領域に保存される
- ローカルセカンダリインデックス(LSI)
- パーティションキーはテーブルと同じだが、ソートキーが異なるインデックスです。
- テーブルごとに 5 個
- ローカルセカンダリインデックスのすべてのパーティションの範囲が同じパーティションキーバリューを持つベーステーブルのパーティションに限定されるという意味で「ローカル」
参考
パーティションキーおよびソートキーを持つインデックス
セカンダリインデックスを使用したデータアクセス性の向上 - Amazon DynamoDB
DynamoDB Streams
DynamoDB テーブルのデータ変更イベントをキャプチャするオプション
次のいずれかのイベントが発生するたびに、ストリーミングレコードを書き込む
- 新しい項目の追加
- すべての属性を含む項目全体のイメージをキャプチャ
- 項目の更新
- 項目で変更された属性について、「前」と「後」のイメージをキャプチャ
- 項目の削除
- 項目が削除される前に項目全体のイメージをキャプチャす
参考
DynamoDB API
コントロールプレーン
DynamoDB テーブルを作成、管理
ンデックス、ストリーム、およびテーブルに依存する他のオブジェクトを操作
データプレーン
テーブルのデータで、作成、読み込み、更新、および削除
セカンダリインデックスからデータを読み込むことができる
データ作成
- putItem
- 単一の項目を書き込む
- プライマリーキーの指定は必須
- BatchWriteItem
- 最大 25 個の項目をテーブルに書き込む
- 複数の項目を削除することもできる
データの読み取り
-
GetItem
- 単一の項目を取り出す。
- プライマリキーを指定が必須
- 項目全体またはその属性のサブセットのみを取り出すことができます。
-
BatchGetItem
- 最大 100 個の項目を取り出す
-
Query
- 特定のパーティションキーがあるすべての項目を取りす
- パーティションキーの値を指定が必須
-
Scan
- 指定されたテーブルまたはインデックスのすべての項目を取り出す
- オプションでフィルタリング条件を適用可能
データの更新
- UpdateItem
- 項目を更新する
- プライマリーキーの指定が必須
データの削除
- DeleteItem
- 単一の項目の削除
- プライマリーキーの指定が必須
- BatchWriteItem
- 最大 25 個の項目を削除
- 複数の項目を追加でもできる
Transactions
トランザクションによって不可分性、一貫性、分離性、耐久性 (ACID) が実現
参考
命名ルールおよびデータ型
名前付けルール
-
すべての名前は UTF-8 を使用してエンコードする必要があり、大文字と小文字が区別されます。
-
テーブル名とインデックス名の長さは 3~255 文字で、次の文字のみを含めることができます。
- a-z
- A-Z
- 0-9
- _ (下線)
-
- (ダッシュ)
- .(ドット)
-
属性名は 1 文字以上、64 KB 以下である必要があります。
-
以下の例外があります。これらの属性名は 255 文字以下である必要があります。
- セカンダリインデックスのパーティションキー名。
- セカンダリインデックスのソートキー名。
- ユーザー指定の射影された属性の名前 (ローカルセカンダリインデックスのみに適用)。
予約語と特殊文字
予約後
DynamoDB の予約語 - Amazon DynamoDB
特殊文字
# (ハッシュ) および : (コロン)
データ型
スカラー型
- スカラー型は 1 つの値を表すことができます。
Number
- 正、負、または 0
- 最大 38 桁
- 範囲
- 1E-130~9.9999999999999999999999999999999999999E+125
- -9.9999999999999999999999999999999999999E+125~-1E-130
- 可変長で先頭と末尾の0は切り捨て
String
- UTF-8 バイナリエンコードの Unicode
- サイズ上限は400KB
- 最小は0
Binary
- Base64でエンコードされた値
boolean
- true or false
null
ドキュメント型
- JSON ドキュメントで見られるように、入れ子の属性を持つ複雑な構造を表すことができます
- 最大 32 レベルの深さまで利用可能
- 400KBまで
- List
- Map
セット型
- セット型は複数のスカラー値を表すことができます。
- 要素はすべて同じ型でないといけない
- 要素は一意でないといけない
- 空は許可されない
サポートしているスカラ値
- 文字
- 数値
- バイナリ