AWS DVAの勉強でまとめました。
パーティションキーとは?
RDBMSでいうプライマリキー
もしソートキーを追加する場合はパーティションキーとソートキーの組み合わせがプライマリキーになる
↓の例で言うと、user_idをパーティションキーにするみたいな感じ
user_id | phone_number | |
---|---|---|
1 | a@gmail.com | xxx-xxxx-xxxx |
2 | b@gmail.com | xxx-xxxx-xxxx |
3 | c@gmail.com | xxx-xxxx-xxxx |
4 | d@gmail.com | xxx-xxxx-xxxx |
5 | e@gmail.com | xxx-xxxx-xxxx |
6 | f@gmail.com | xxx-xxxx-xxxx |
パーティションキーの設計
テーブルは物理的にはパーティションに分割されているらしい。
そしてキャパシティはテーブルごとに割り当てられるから、パーティションキーが↓のようになっていたら特定のテーブルにアクセスが偏ってしまう。
user_rank
が パーティションキーとする
user_rank | user_id | phone_number | |
---|---|---|---|
A | 1 | a@gmail.com | xxx-xxxx-xxxx |
A | 2 | b@gmail.com | xxx-xxxx-xxxx |
A | 3 | c@gmail.com | xxx-xxxx-xxxx |
A | 4 | d@gmail.com | xxx-xxxx-xxxx |
B | 5 | e@gmail.com | xxx-xxxx-xxxx |
C | 6 | f@gmail.com | xxx-xxxx-xxxx |
user_rankがAのテーブルに偏る、、!
だからパーティションキーにする値は、なるべく分散されるような値にしたほうが良い。user_idとか、、
それか、パーティションキーの値にランダムなサフィックスを追加する
A
じゃなくて A_001〜A_200
的な。