dynamoDBのパーテション(データ格納領域)について記載します。
データ保管場所
DynamoDBのデータは、複数のアベイラビリティゾーンにパーティションという単位の領域内に保存されています。
パーティションの管理はDynamoDBが自動的に行ってくれます。
したがって、データは複数のアベイラビリティゾーンへ自動的にレプリケートされます。
パーティションを割り当てるタイミング
テーブル毎にパーティションを割り当てます。
パーティションの割り当てはテーブル作成時に行われます。
テーブル作成の際に、パーティション容量はキャパシティモードをプロビジョニングモードで作成した場合、指定したスループット要件に対応できる容量で作成されます。
テーブル作成時のステータスがCREATINGの時はテーブルにパーティションを割り当てている最中で、ACTIVEに変わるとパーティションの割り当てが完了して使用できる状態になります。
パーティションの容量が増えるケース
DynamoDBが自動的にパーティションを増やすタイミンは以下の通りです。
- スループット設定を増やし、増やした結果パーティション容量を超える場合
- 格納データサイズがパーティション容量を超える場合
パーティションキーとデータ格納領域
DynamoDBのデータの格納領域は、指定したパーティションキーを入力値として、DynamoDBの独自のハッシュ関数で得られた値により決定されます。
したがって、パーティションキーはハッシュキーとも呼ばれます。
データの取得、書き込みを行う際にパーティションキー(ハッシュキー)によりデータの取得先、書き込み先を決定します。
そのため、プライマリキーはパーティションを特定するキーとしてパーティションキーが使用されているようです。
複合プライマリキーとデータ格納場所
複合プライマリキーの場合、同じパーティションキーが存在します。パーティションの格納領域はパーティションキーにより決定しますが、同じパーティションキーが存在するため重複してしまいます。そこでソートキーを使用して、ソートキーの昇順でデータの格納場所が決定します。
複合プライマリキーの場合、同一のパーティションキーが存在するので、データ(項目)は同じパーティションで比較的近い場所に保存されます。
最後に
次回は、項目の自動削除設定について説明します。