パーティショナー

パーティショナーは、クラスター内のノードにデータをどのように分散させるかを決定します(レプリカを含む)。

パーティショナーは、クラスター内のノードにデータをどのように分散させるかを決定します(レプリカを含む)。

パーティショナーは、行を表すトークンをパーティション・キーから導き出す機能です。通常はハッシュによって行われます。データの各行は、トークンの値によってクラスター全体に分散されます。クラスパス内にあるものであれば、独自のものも含めて、任意のIPartitionerを使用できます。

デフォルトのMurmur3Partitionerは、トークンを使用して各ノードに等しい割合のデータを割り当てることで、すべてのテーブルのデータをリング、またはキースペースのような他のグループの全域に均等に分散します。テーブルがユーザー名やタイムスタンプなど、異なるパーティション・キーを使用している場合でも同じです。さらに、ハッシュ範囲の各部分が平均して等しい行数を受け取るので、クラスターに対する読み取りおよび書き込み要求が均等に分散され、ロード・バランス機能が簡素化されます。詳細については、「コンシステント・ハッシュ法」を参照してください。

トークンを各ノードに割り当てる必要があるかどうかは、アーキテクチャーのタイプによって異なります。
注: パーティショナーは互いに互換性がなく、一方のパーティショナーでパーティションされたデータをもう一方のパーティショナーに簡単に変換することはできません。

DataStax Enterpriseには、以下のパーティショナーがあります。

Murmur3Partitioner(デフォルト)
MurmurHashハッシュ値に基づいてデータをクラスター全体に均等に分散させます。このハッシュ関数は、-263~+263-1の可能な範囲でパーティション・キーの64ビットのハッシュ値を生成します。このパーティショナーは、ほとんどの場合に新しいクラスターに適しており、RandomPartitionerよりも3~5倍のパフォーマンスが得られます。
このパーティショナーを使用する場合は、CQLクエリーでトークン関数を使用して、すべての行をページングして取得できます。
RandomPartitioner
このパーティショナーは、後方互換性を維持するために含まれています。これは、行キーのMD5ハッシュ値を使用してノード全体に均等にデータを分散します。ハッシュ値の可能な範囲は、0~2127 -1です。データベースで必要とされない暗号化ハッシュを使用するため、Murmur3Partitionerよりもハッシュ値の生成に時間がかかります。
このパーティショナーを使用する場合は、CQLクエリーでトークン関数を使用して、すべての行をページングして取得できます。
ByteOrderedPartitioner
このパーティショナーは、後方互換性を維持するために含まれています。このパーティショナーはキーのバイトに基づいて行を辞書順に順序付けます。クラスターのロード・バランスをとるには非常に多くの管理オーバーヘッドが必要になり、シーケンシャル書き込みによってホット・スポットが発生し、1つのテーブルのバランスをとると同じクラスター内の別のテーブルの分散が不均一になる可能性があるため、推奨しません。

パーティショナーはcassandra.yamlファイルで変更できます。

cassandra.yamlファイルの場所は、インストールのタイプによって異なります。

パッケージ・インストールInstaller-Servicesインストール

/etc/dse/cassandra/cassandra.yaml

tarボール・インストールInstaller-No Servicesインストール

installation_location/resources/cassandra/conf/cassandra.yaml