| **パーティションキー** |
パーティションキーは、データアイテムが格納されている分散ストレージ内の論理パーティションを識別します。これらの論理パーティションは、ハッシュ関数を通じてバックエンドの物理ストレージノードにマッピングされます。
以下で説明するサンプルテーブル*Menu*では、属性Categoryがパーティションキーです。 |
| **ソートキー** |
プライマリソートキーは、特定のパーティション内をソートしてデータアイテムを見つけ、データ内のパーティションキーに一致するアイテムが1つ以上ある場合はソート順で返します。これは、キーハッシュの範囲から識別することで行われます。Catalystでは、NoSQLテーブル作成時にオプションでソートキーを追加できます。
以下で説明するサンプルテーブル*Menu*では、属性`DishName`がソートキーとして使用されます。 |
| **シンプルプライマリキー** |
Catalyst NoSQLのシンプルプライマリキーは、パーティションキーのみを示します。
NoSQLテーブルにソートキーなしでパーティションキーのみを設定する場合、パーティションキーがテーブルのプライマリキーとして機能し、アイテムを一意に識別します。これは、リレーショナルデータベースのプライマリキーの概念と同様です。
前のセクションで説明したサンプルテーブル*Travel*では、属性`DestinationName`がプライマリキーとして使用されます。この属性はすべてのアイテムに存在する必要があり、この属性に同じ値を持つ2つのアイテムは存在できません。
ただし、以下で説明するサンプルテーブル*Menu*では、パーティションキー`Category`はアイテムを一意に識別しません。同じ値を持つ複数のアイテムが存在できるためです。これは、*Menu*テーブルが複合プライマリキーを使用しているためです。
|
| **複合プライマリキー** |
複合プライマリキーは、パーティションキーとソートキーの両方を含み、アイテムを一意に識別します。つまり、両方のキーの組み合わせがプライマリキーとして機能します。複合プライマリキーを使用したテーブルのクエリは、データが複数のパーティションにまたがるため、グローバルです。
パーティションキーが一意である必要があるシンプルプライマリキーとは異なり、ソートキーも定義する限り、パーティションキーに非一意の値を格納できます。
> **注意:** テーブル内で同じパーティションキーを持つすべてのアイテムについて、ソートキーは一意である必要があります。
以下で説明するサンプルテーブル*Menu*には、パーティションキー`Category`とソートキー`DishName`が一緒にデータアイテム(料理)を一意に識別する複合プライマリキーが含まれています。 |
| **追加ソートキー** |
Catalyst NoSQLでは、複合プライマリキーの一部であるメインソートキー以外に、追加のソートキーを設定できます。
追加ソートキーは、メインソートキー以外の異なるキーに基づいてソートを実行する必要がある場合や、特定のアイテムのメインソートキーが不明な場合に使用されます。この場合、パーティションキーと追加ソートキーの組み合わせが複合プライマリキーとして使用されます。
追加ソートキーを使用したテーブルのクエリは、ローカルインデックスに類似しており、すべて同じパーティションキーと共に使用され、その特定のパーティション内のみでソートされます。
> **注意:** Catalystでは、テーブルに対して**最大5つの追加ソートキー**を設定できます。
以下で説明するサンプルテーブル*Menu*では、属性`PreparationTime`と`Calories`が追加ソートキーとして設定されています。 |