2013年1月8日火曜日

Cassandra1.2のデフォルトパーテショナーに関して

 1.2では1.1と比べ幾つか仕様変更や追加があります

その中でパーテショナーの設定ではデフォルトパーテショナーが変更され、RandomPartitionerから新たに追加されたMurmur3Partitionerに変更になりました

Murmur3Partitionerに関してはハッシュ値をRandomPartitionerより早く取得できシノニムも少なく抑えられるハッシュ関数で、事実上RandomPartitionerと同じ立ち位置になります

しかし、トークンのレンジ範囲はMurmur3PartitionerとRandomPartitionerでは違いがあります
・RandomPartitionerのレンジ範囲
                     0 ~ 2^127
( 0 ~ 170141183460469231731687303715884105728 )

・Murmur3Partitionerのレンジ範囲
                 -2^63 ~ 2^63 - 1
( -9223372036854775808 ~ 9223372036854775807 )

Murmur3Partitionerに対応したノードのトークン値を均等にする求め方はpythonを使い
python -c 'print [((2**64 / リングのノード数) * i) - 2**63 for i in range(リングのノード数)]'
で求め、複数のリングが存在する場合はリングごとに1ずつ値をずらします

例)3ノードのリングが2つある場合
python -c 'print [((2**64 / 3) * i) - 2**63 for i in range(3)]
[-9223372036854775808L, -3074457345618258603L, 3074457345618258602L]

なので

一つ目のリングのノード3つは
-9223372036854775808
-3074457345618258603
3074457345618258602

二つ目のリングのノード3つは一つずらし
-9223372036854775807
-3074457345618258602
3074457345618258603

また、1.2に移行する際などデフォルトパーテショナーが変更されているので注意が必要です(必ず使用していたパーテショナーに合わせてください)

0 件のコメント:

コメントを投稿

JWT(Jason Webトークン)を理解するJWT(Jason Webトークン)を理解する

JWT ( Jason Web トークン)を理解する   JSON Web Token はオープンスタンダードです。これは、任意の 2 つの機関 ( ユーザー、サーバー)間で情報を転送するために使用されます。 JWT では、ユーザーデー...