パーティショナー
パーティショナーは、クラスター内のノードにデータをどのように分散させるかを決定します(レプリカを含む)。
パーティショナーは、クラスター内のノードにデータをどのように分散させるかを決定します(レプリカを含む)。
パーティショナーは、行を表すトークンをパーティション・キーから導き出す機能です。通常はハッシュによって行われます。データの各行は、トークンの値によってクラスター全体に分散されます。クラスパス内にあるものであれば、独自のものも含めて、任意のIPartitionerを使用できます。
デフォルトのMurmur3Partitioner
は、トークンを使用して各ノードに等しい割合のデータを割り当てることで、すべてのテーブルのデータをリング、またはキースペースのような他のグループの全域に均等に分散します。テーブルがユーザー名やタイムスタンプなど、異なるパーティション・キーを使用している場合でも同じです。さらに、ハッシュ範囲の各部分が平均して等しい行数を受け取るので、クラスターに対する読み取りおよび書き込み要求が均等に分散され、ロード・バランス機能が簡素化されます。詳細については、「コンシステント・ハッシュ法」を参照してください。
- 仮想ノード:トークンの割り当てや計算は不要です。
- 単一トークン・アーキテクチャー:データがクラスター内のノード間で均等に分割されるようにするには、各ノードのcassandra.yamlファイルでinitial_tokenパラメーターの値を入力する必要があります。トークン値を決定するには、「単一トークン・アーキテクチャー・ノードのトークンを計算する」を参照してください。
DataStax Enterpriseには、以下のパーティショナーがあります。
Murmur3Partitioner
(デフォルト)- MurmurHashハッシュ値に基づいてデータをクラスター全体に均等に分散させます。このハッシュ関数は、-263~+263-1の可能な範囲でパーティション・キーの64ビットのハッシュ値を生成します。このパーティショナーは、ほとんどの場合に新しいクラスターに適しており、
RandomPartitioner
よりも3~5倍のパフォーマンスが得られます。 RandomPartitioner
- このパーティショナーは、後方互換性を維持するために含まれています。これは、行キーのMD5ハッシュ値を使用してノード全体に均等にデータを分散します。ハッシュ値の可能な範囲は、0~2127 -1です。データベースで必要とされない暗号化ハッシュを使用するため、
Murmur3Partitioner
よりもハッシュ値の生成に時間がかかります。 ByteOrderedPartitioner
- このパーティショナーは、後方互換性を維持するために含まれています。このパーティショナーはキーのバイトに基づいて行を辞書順に順序付けます。クラスターのロード・バランスをとるには非常に多くの管理オーバーヘッドが必要になり、シーケンシャル書き込みによってホット・スポットが発生し、1つのテーブルのバランスをとると同じクラスター内の別のテーブルの分散が不均一になる可能性があるため、推奨しません。
パーティショナーはcassandra.yamlファイルで変更できます。
パッケージ・インストールInstaller-Servicesインストール |
/etc/dse/cassandra/cassandra.yaml |
tarボール・インストールInstaller-No Servicesインストール |
installation_location/resources/cassandra/conf/cassandra.yaml |