パーティショナー
パーティショナーは、クラスター内のノードにデータをどのように分散させるかを決定します(レプリカを含む)。
パーティショナーは、クラスター内のノードにデータをどのように分散させるかを決定します(レプリカを含む)。基本的には、パーティショナーは、行を表すトークンをパーティション・キーから導き出す機能です。通常はハッシュによって行われます。データの各行は、トークンの値によってクラスター全体に分散されます。
Murmur3Partitioner
とRandomPartitioner
はどちらも、トークンを使用して各ノードに等しい割合のデータを割り振ることで、すべてのテーブルのデータをリング、またはキースペースのような他のまとまりの全域に均等に分散します。テーブルがユーザー名やタイムスタンプなど、異なるパーティション・キーを使用している場合でも同じです。さらに、ハッシュ範囲の各部分が平均して等しい行数を受け取るので、クラスターに対する読み取りおよび書き込み要求も均等に分散され、ロード・バランシングが簡易になります。詳細については、「コンシステント・ハッシュ法」を参照してください。
2つのパーティショナーの主な違いは、トークンのハッシュ値を生成する方法です。RandomPartitioner
では、暗号化ハッシュを使用するため、Murmur3Partitioner
よりも生成に時間がかかります。Cassandraではさほど暗号化ハッシュを必要としていないため、Murmur3Partitioner
を使用すると、パフォーマンスが3〜5倍改善します。
Cassandraでは、cassandra.yamlファイルで設定できる以下のパーティショナーを提供しています。
Murmur3Partitioner
(デフォルト):MurmurHashハッシュ値に基づいてデータをクラスター全体に均等に分散させます。RandomPartitioner
:MD5ハッシュ値に基づいてデータをクラスター全体に均等に分散させます。ByteOrderedPartitioner
:キーのバイトに基づいてデータの辞書的な順序の分散を維持します。
Murmur3Partitioner
は、Cassandra 1.2以降の新しいクラスター用のデフォルトのパーティション・ストラテジであり、新しいクラスターではほとんどの場合に適切な選択肢となります。ただし、これらのパーティショナーは互換性がなく、一方のパーティショナーでパーティションされたデータをもう一方のパーティショナーに簡単に変換することはできません。
パッケージ・インストール | /etc/cassandra/cassandra.yaml |
tarボール・インストール | install_location/resources/cassandra/conf/cassandra.yaml |
Windowsインストール | C:\Program Files\DataStax Community\apache-cassandra\conf\cassandra.yaml |