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
的な。