DynamoDBについての覚書
コアコンポーネント
- テーブル
- 項目
- 属性
「属性」の集合が「項目」
「項目」の集合が「テーブル」
プライマリキー
テーブルの各項目をいひ位に識別するため、デーブル内に同じキーを持つことはない。
2種類のプライマリーキーをサポート
パーティションキー
- パーティションキーとハッシュ関数を使用して項目が保存されるパーティション(DynamoDB内部の物理ストレージ:場所)が決まる
- パーティションキーのみを含むテーブルではパーティションキーの重複はNG
パーティションキーとソートキー
- 複合プライマリキー(二つの属性で構成される)
- パーティションの決め方は上記と同じ+ソートキーでパーティションごとにソートされて保存される
- 複合プライマリキー(2つの属性の組み合わせ)の重複はNGだが、どちらか一方の重複は存在が許される
セカンダリインデックス
- プライマリキーに対するクエリに追加で代替キーを使用してテーブル内のデータのクエリを行うことができる
- セカンダリインデックスの使用は必須ではない
- インデックスを使用するとデータのクエリを実行する際にアプリケーションの柔軟性が高まる
- 2種類のインデックス
- Global secondary index
- パーティションキーとソートキーを持つインデックス
- ローカルセカンダリインデックス
- テーブルと同じパーティションキーとことなるソートキーを持つインデックス
- Global secondary index
DynamoDBストリーム
- テーブルのデータ変更イベントをキャプチャするオプション
- ほぼリアルタイム+発生順にストリームされる
- イベント
- 新しい「項目」の追加>全ての「属性」を含む「項目」全体のイメージをキャプチャ
- 「項目」の更新>「項目」の「(変更前+変更後)の「属性」のイメージをキャプチャ
- 「項目」の削除>削除前に「項目」全体のイメージを取得