DynamoDBについて勉強したので、忘れたくないことをメモ。
参考サイト
-
コンセプトから学ぶAmazon DynamoDB | シリーズ | Developers.IO
- 公式の用語を用いていないので注意が必要
- DynamoDBの内部構造まで含めた解説がされており、深い理解ができる。
- 仕組みを理解した上で利用しないとパフォーマンスを下げる使い方をしてしまうのでとても参考になる。
覚えておきたい特徴
- パーティショニングされていてパーティションキーによって分散される
- スループットはWCU、RCUで指定できる
整理ポイント
- 主キーのみのテーブル
- パーティションキーを主キーとする
- パーティションキーでアイテムを取得
- 複合主キーのテーブル
- コンセプトから学ぶAmazon DynamoDB【複合キーテーブル篇】 | Developers.IO
- テーブル作成時にパーティションキーとソートキーを指定
- RDBの複合主キーのようにパーティションキーとソートキーの組み合わせが同じものは1つしか保存できない
- パーティションキーの重複が許される
- 一回で特定範囲の値を取得できる
- 主キーとインデックスの整理
- コンセプトから学ぶAmazon DynamoDB【インデックス俯瞰篇】 | Developers.IO
- 主キーは特定のアイテムを唯一に特定できる検索条件
- インデックスは特定の検索条件に一致するデータがどこに保存されているかを管理するデータ構造、重複してても良く検索条件で一意の値が取得できるとは限らない
- DynamoDB
- 主キー:パーティションキー or パーティションキー & ソートキー
- インデックス:LSI、GSI
- 複合主キーとなるパーティションキーとソートキー以外でも検索がしたい時に利用
- 結果整合性モデル
- データをコピーして3つのAZに分散配置
- ローカル・セカンダリ・インデックス(LSI)
- 複合主キーを持ったテーブルでしか利用できない
- テーブルと同じパーティションキーを利用して、異なるソートキーを持つインデックスを作成
- インデックスへの射影は選択をする
- 射影(どの属性をインデックスに含むか)は作成時に選択する
- 射影を主キーのみにした場合インデックスに対するクエリで主キーを見つけて、テーブルに対してその主キーでアイテムをGetする
- テーブル作成時にしか作成できない
- Global secondary index(GSI)
- 新しいパーティションキーとソートキーを持つインデックス
- インデックスなので重複しててもよい
- 任意のタイミングで作成可能
- 新しいパーティションキーとソートキーを持つインデックス