0

PHPを使用して行キーに対応するCassandraトークンを計算するにはどうすればよいですか

「彼ら」は、これは 10 進数に変換された MD5 であると言いますが、私が計算しているものは、正しいトークンではないようです。

//this is one of the ways i tried,
number_format(hexdec( md5($key ) ), 0, '', '')

//this is second:
md5_hex_to_dec( md5($key) );


function md5_hex_to_dec($hex_str)
{
    // here i experimented with higher bit.
    $c = $hex_str[0];
    $c1 = hexdec($c);
    if ($c1 > 7)
                $c1 = $c1 - 7;
    // --- eo ----
    $hex_str[0] = dechex($c1);
    $arr = str_split($hex_str, 4);
    foreach ($arr as $grp) {
        $dec[] = str_pad(hexdec($grp), 5, '0', STR_PAD_LEFT);
    }
    return implode('', $dec);
}
4

1 に答える 1

0

各 cassandra ノードには、格納するハッシュの RANGE を表すトークンがあります。すなわち。行キーからトークンを計算するには、

  1. ハッシュを取得する
  2. リング内のすべてのトークンを把握し、それがどの範囲に属しているかを把握します (つまり、どの範囲を見つけて、その範囲の開始トークンを見つけます)。

すなわち。md5ハッシュしたら、それをそのハッシュよりも小さいトークンにマップする必要があります。

ディーン

于 2012-10-15T13:22:33.660 に答える