コンシステント・ハッシュ法

コンシステント・ハッシュ法により、クラスター全体にデータを分散できるため、ノードの追加や除去の際に、再編成を最小限に抑えられます。

コンシステント・ハッシュ法により、クラスター全体にデータを分散できるため、ノードの追加や除去の際に、再編成を最小限に抑えられます。コンシステント・ハッシュ法は、パーティション・キーに基づいてデータをパーティション分割します(パーティション・キーおよびプライマリ・キーの説明については、CQL for Cassandra 2.2.xの「データ・モデリング例」を参照してください)。

たとえば、以下のようなデータがあるとします。

name age car gender
jim 36 camaro M
carol 37 bmw F
johnny 12   M
suzy 10   F

Cassandraは、ハッシュ値を各パーティション・キーに割り当てます。

パーティション・キー Murmur3ハッシュ値
jim -2245462676723223822
carol 7723358927203680754
johnny -6723372854036780875
suzy 1168604627387940318

クラスターの各ノードは、ハッシュ値に基づいたデータ範囲に対する責任を担います。

4つのノードで構成されるクラスターのハッシュ値

Cassandraは、パーティション・キーの値とノードが担当する範囲に従って各ノードにデータを置きます。たとえば、4ノードのクラスターでは、この例のデータは以下のように分散されます。

ノード 開始範囲 終了範囲 パーティション・キー ハッシュ値
A -9223372036854775808 -4611686018427387903 johnny -6723372854036780875
B -4611686018427387904 -1 jim -2245462676723223822
C 0 4611686018427387903 suzy 1168604627387940318
D 4611686018427387904 9223372036854775807 carol 7723358927203680754