Amazon DynamoDB Advanced Design Pattern
RDBMSのように正規化するとNG。
スキーマ設計は、アクセスの方法、パターンを意識する。
GSIを利用してデータを引くパターンに適用していく。
複雑な条件での検索では、
フィルターを利用(Provisioningスループットの消費に注意)。
CopositeKey(キーの結合)を利用。
Sparse Indexesってのもある。
GSI Overloading(GSIの多重定義)
GSI側でインデックスを変える。インデックスの制限を回避出来るが、テーブル構成は複雑化する。
Vertical Partitioning
大きなデータを格納する時、GSIに逃がして、必要な時に取得しにいくようにする。
DesignPattern and best practices
DynamoDBTrigger
DynamoDBStream
TTL
即時に削除されるわけではない
TimeBase(時系列) Worklows
ホットデータとコールドデータでテーブルを分ける。
ホットデータテーブルをコールドデータテーブルへStreamを使用して転送。コールドデータテーブル一定期間来たらTTLで消す。
ProductCatalog
パーティショニングのデータが偏ってアクセス過多の時、RCUを高い見積もりを出してしまいコストがかさむ。
-> DAXによるキャッシングする方法。
逆に書き込み過多の場合、SQSで受けてキューで負荷調整をする。
パーティションキーをシャーディング(パーティショニング)することを検討。