パーティショナー

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

パーティショナーは、クラスター内のノードにデータをどのように分散させるかを決定します(レプリカを含む)。基本的には、パーティショナーは、行を表すトークンをパーティション・キーから導き出す機能です。通常はハッシュによって行われます。データの各行は、トークンの値によってクラスター全体に分散されます。

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

2つのパーティショナーの主な違いは、トークンのハッシュ値を生成する方法です。RandomPartitionerでは、暗号化ハッシュを使用するため、Murmur3Partitionerよりも生成に時間がかかります。Cassandraではさほど暗号化ハッシュを必要としていないため、Murmur3Partitionerを使用すると、パフォーマンスが3〜5倍改善します。

Cassandraでは、cassandra.yamlファイルで設定できる以下のパーティショナーを提供しています。

  • Murmur3Partitioner(デフォルト):MurmurHashハッシュ値に基づいてデータをクラスター全体に均等に分散させます。
  • RandomPartitionerMD5ハッシュ値に基づいてデータをクラスター全体に均等に分散させます。
  • ByteOrderedPartitioner:キーのバイトに基づいてデータの辞書的な順序の分散を維持します。

Murmur3Partitionerは、Cassandra 1.2以降の新しいクラスター用のデフォルトのパーティション・ストラテジであり、新しいクラスターではほとんどの場合に適切な選択肢となります。ただし、これらのパーティショナーは互換性がなく、一方のパーティショナーでパーティションされたデータをもう一方のパーティショナーに簡単に変換することはできません。

注: 仮想ノード(vnode)を使用している場合は、トークンを計算する必要はありません。vnodeを使用していない場合は、トークンを計算して、cassandra.yamlファイルのinitial_tokenパラメーターに割り当てる必要があります。「トークンの生成」を参照して、使用するパーティショナーの種類に応じた方法を使用してください。
cassandra.yamlファイルの場所は、インストールのタイプによって異なります。
パッケージ・インストール /etc/cassandra/cassandra.yaml
tarボール・インストール install_location/resources/cassandra/conf/cassandra.yaml
Windowsインストール C:\Program Files\DataStax Community\apache-cassandra\conf\cassandra.yaml