複合パーティション・キー

パーティション・キーには、複数のテーブル・カラムで定義したパーティション・キーを含めることができます。このパーティション・キーによって、データの格納先となるノードが決まります。

複合パーティション・キーのあるテーブルでは、Cassandraはパーティション・キーとして複数のカラムを使用します。これらのカラムは、取得を容易にするためにパーティション内で論理集合を形成します。単純なパーティション・キーとは対照的に、複合パーティション・キーではデータの存在場所を特定するために2つ以上のカラムを使用します。複合パーティション・キーは、格納されたデータが大きすぎて単一のパーティションに収まらない場合に使用されます。パーティション・キーに複数のカラムを使用すると、データがチャンクまたはバケットに分割されます。データはグループ分けされますが、小さいチャンクになります。 この方法は、Cassandraクラスターが1つのノードにデータを書き込む際、パーティションで大量の書き込みが行われるために、ホットスポットや輻輳に繰り返し遭遇する場合に有効です。Cassandraは時系列データによく使用されるため、ホットスポットは実際に問題となることがあります。year:month:day:hourによって着信データをバケットに分割し、4つのカラムを使用してパーティションにルーティングすることでホットスポットを減らすことができます。

データはパーティション・キーを使用して取得します。セカンダリ・インデックスを使用しない場合、テーブルからデータを取得するには、パーティション・キーで定義したすべてのカラムの値を指定する必要があることに注意してください。ここに示したテーブルは、複合パーティション・キーとして、プライマリ?キーでrace_yearrace_nameを使用しています。データを取得するには、両方のパラメーターを指定する必要があります。



複合パーティション・キーを持つテーブルを作成するには、以下の方法を使用します。
  • CREATE TABLE定義の最後のカラム定義の後にPRIMARY KEYキーワード、パーティション・キーのカラム名の順に挿入します。複合パーティション・キーのカラム名は、二重かっこで囲みます。

Cassandraは、データの行全体をパーティション・キーに従ってノードに格納します。パーティションにデータが多すぎ、データを複数のノードに分散させたい場合は、複合パーティション・キーを使ってください。