パーティションとデータ分散 - Amazon DynamoDB

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

パーティションとデータ分散

Amazon DynamoDB はデータをパーティションに保存します。パーティションは、ソリッドステートドライブ (SSD) によってバックアップされ、AWS リージョン内の複数のアベイラビリティーゾーン間で自動的にレプリケートされる、テーブル用のストレージの割り当てです。パーティション管理は DynamoDB によって完全に処理されます。パーティションを自分で管理する必要はありません。

テーブルを作成するときに、テーブルの最初のステータスは CREATING になります。このフェーズでは、DynamoDB はテーブルに十分なパーティションを割り当て、プロビジョニングされたスループット要件に対応できるようにします。テーブルのステータスが ACTIVE に変わったらテーブルデータの書き込みと読み取りを開始できます。

DynamoDB では、以下の状況でテーブルに追加のパーティションが割り当てられます。

  • テーブルのプロビジョニングされたスループット設定を、既存のパーティションがサポートできる以上に増やした。

  • 既存のパーティションが容量いっぱいになり、より多くのストレージ領域が必要になった。

パーティション管理は自動的にバックグラウンドで自動的に発生し、アプリケーションに対して透過的です。テーブルは利用可能な状態のままで、プロビジョニングされたスループット要件を完全にサポートします。

詳細については、「パーティションキーの設計」を参照してください。

DynamoDB のグローバルセカンダリインデックスもパーティションで構成されます。グローバルセカンダリインデックスのデータは、基本テーブルのデータとは別に保存されますが、インデックスパーティションはテーブルパーティションと同様に動作します。

データ分散: パーティションキー

テーブルにシンプルなプライマリキー (パーティションキーのみ) がある場合、DynamoDB はパーティションキーの値に基づいて、各項目を保存および取得します。

テーブルに項目を書き込むため、DynamoDB はパーティションキーの値を、内部ハッシュ関数への入力として使用します。ハッシュ関数からの出力値によって、項目が保存されるパーティションが決まります。

テーブルから項目を読み取るには、項目に対するパーティションキーの値を指定する必要があります。DynamoDB はこの値をハッシュ関数への入力として使用して、項目が見つかるパーティションを提供します。

次の図は、複数のパーティションにまたがる Pets という名前のテーブルを示しています。テーブルのキーはAnimalType(このキー属性のみが表示されます)。DynamoDB はそのハッシュ関数を使用して、新しい項目を保存する場所を決定します (この場合は文字列のハッシュ値に基づく)。Dog。項目はソート順に保存されないことに注意してください。各アイテムの場所は、そのパーティションキーのハッシュ値によって決まります。

注記

DynamoDB は、パーティション数にかかわらず、項目がテーブルのパーティション全体に渡って均一に分散している状態に対して最適化されています。テーブルの項目数に対して大きな個別の値を持つことができるパーティションキーを選択することをお勧めします。

データ分散: パーティションキーおよびソートキー

テーブルに複合プライマリキー (パーティションキーとソートキー) がある場合、DynamoDB はで説明したのと同じ方法でパーティションキーのハッシュ値を計算します。データ分散: パーティションキー。ただし、同じパーティションキー値を持つ項目はすべて、ソートキー値順に物理的に近くに格納されます。

テーブルに項目を書き込むため、DynamoDB はパーティションキーのハッシュ値を計算し、項目を含めるパーティションを決定します。そのパーティションでは、いくつかの項目で同じパーティションキー値を持つことができます。DynamoDB は、同じパーティションキーを持つ他のアイテムと並べ替えキーの昇順で項目を保存します。

テーブルから項目を読み取るには、パーティションキーとソートキーの値を指定する必要があります。DynamoDB は、パーティションキーのハッシュ値を計算し、項目が見つかるパーティションを提供します。

テーブルから複数の項目を 1 回の操作で読み取ることができます (Query必要な項目が同じパーティションキー値を持っている場合)。DynamoDB は、そのパーティションキーの値を持つすべての項目を返します。オプションでソートキーに条件を適用し、特定範囲内の値を持つ項目だけを返すことができます。

Pets テーブルに、AnimalType (パーティションキー) と Name (ソートキー) で構成される複合プライマリキーがあるとします。次の図は、DynamoDB がパーティションキーの値を持つ項目を書き込む様子を示しています。Dogのソートキー値フィド

その同じ項目をペットテーブルでは、DynamoDB はDogを呼び出し、これらのアイテムが格納されているパーティションを生成します。次に、DynamoDB はソートキー属性値が見つかるまでスキャンします。フィド

AnimalTypeDog のすべての項目を読み込むには、ソートキーの条件を指定しないで Query オペレーションを発行できます。デフォルトでは、項目は保存されている順序 (つまり、ソートキーによって昇順でソート) で返されます。オプションで、代わりに降順をリクエストできます。

一部のみを照会するにはDog項目は、ソートキーに条件を適用できます (たとえば、Dog項目の場所名前範囲内にある文字で始まる場合AスルーK).

注記

DynamoDB テーブルでは、パーティションキーの値ごとに個別のソートキー値の数に上限はありません。あなたは何十億を格納する必要がある場合Dog内の項目をします。ペットテーブルでは、DynamoDB はこの要件を自動的に処理するのに十分なストレージを割り当てます。