DynamoDB
SQL
クオータ
キャパシティーモード
スループットのクオータ
ページネーション
1つの Query のサイズの制限 1MB
テーブルクエリ結果をページ分割する = LastEvaluatedKey を使う
https://docs.aws.amazon.com/ja_jp/amazondynamodb/latest/developerguide/Query.Pagination.html
PynamoDB + last_evaluated_key
https://pynamodb.readthedocs.io/en/latest/indexes.html#pagination-and-last-evaluated-key
メモ
同じもの
- partition key = hash key
- sort key = range key
テーブル設計
- query で partition key は完全一致だけ使える。マルチテナントみたいなサービスだったらテナントID。そうでないなら「何か決まった値」にするか「フルスキャンしたくない条件」をなにか探すか。。
- query で range key は大小比較(範囲絞り込み)できる。例えば UTCDateTimeAttribute = 文字列を格納して、日付で範囲指定。
- partition key だけのテーブル、partition + range のテーブルが可能。range key だけのテーブルは作れない。
GlobalSecondaryIndex
- 上記でカバーできないことをしたい場合は、テーブルに GSI を紐づけて partition / range key を別の値に設定する
PartiQL
- where 使うなら partition key を省略できない、など、制約はありそう
- PynamoDB の query と scan の使い分けほど厳しくはなさそう
過去スライド
https://www.slideshare.net/nishimotz/200429-python
<html> <iframe src="www.slideshare.net/slideshow/embed_code/key/M7addDvZBofHhI" width="595" height="485" frameborder="0" marginwidth="0" marginheight="0" scrolling="no" style="border:1px solid #CCC; border-width:1px; margin-bottom:5px; max-width: 100%;" allowfullscreen> </iframe> <div style="margin-bottom:5px"> <strong> <a href="www.slideshare.net/nishimotz/200429-python" title="200429 python" target="_blank">200429 python</a> </strong> from <strong><a href="https://www.slideshare.net/nishimotz" target="_blank">Takuya Nishimoto</a></strong> </div> </html>