Edited at

AWS Dev Day Tokyo 2018 参加メモ


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で受けてキューで負荷調整をする。

  パーティションキーをシャーディング(パーティショニング)することを検討。