はじめに
Dynamoテーブルの設計で、参考になった内容を紹介します。
試験対策:AWS 認定 データベース – 専門知識(AWS Certified Database – Specialty)
目次
- DyanmoDBのテーブルのキー設計
- パーティションキー設計
- LSI設計
- GSI設計
- サイズの大きい属性の設計
- その他
DyanmoDBのテーブルのキー設計
- クエリパターンを洗い出し、適切なLSIやGSI選択
- スキャン禁止
スキャンは大量のシステムリソースを消費する
パーティションキー設計
- パーティションキーをユニーク設定し、ワークロードを分散
パーティションで分散して、クエリを効率よく実施できるようにする
- ホットパーティション(アクセス頻度高い)とコールドパーティション(アクセス頻度低い)でテーブルを分ける
キャパシティはパーティションごとに分配されるため、単一のパーティションにアクセスが集中するとスロットリングが起こる可能性がある
LSI設計
- インデックスが必要であれば、LSIを使用
※LSIは最大10GB
- 強力な整合性「ConsistentRead 」が必要な場合は、プライマリーキーやLSIを使用
読み込みは結果整合性を使用
キャパシティのコスト削減、
https://docs.aws.amazon.com/ja_jp/amazondynamodb/latest/developerguide/LSI.html#LSI.ThroughputConsiderations
GSI設計
- 非キー属性に対するクエリの速度を上げる必要がある場合に使用
- 結果整合性のデータ取得となる考慮
- パフォーマンスを必要とするクエリの対応
テーブルのレプリカ(GSI)を作成し、パフォーマンスを必要とするクエリで最大のキャパシティを使用可能
サイズの大きい属性
・圧縮して格納
・データの扱い方
メタデータはDynamoDB(検索等に使用)
オブジェクトはS3を使用
その他
・attribute名は分かりやすい名称にする