この問題は cassandra-user メーリング リストで取り上げるのが一番だと思います。そこに人がいます。
Cassandra にはまだ自動負荷分散機能がありませんが、それほど遠くない将来に機能する可能性があります。0.5 ブランチでは、これが可能になる可能性があります。
基本的に、すでに実行中のシステムでノードをブートストラップするときは、リング内で最適な負荷分散が行われる場所を見つけて、そこに配置する必要があります。ノードを 1 つずつ追加する場合 (つまり、1 つのノードがブートストラップを完了するのを待ってから別のノードを追加する場合)、鍵の配布が時間の経過とともにあまり変化しない限り、それはかなりうまく機能するはずです。
ただし、キーは時間の経過とともに変化する可能性があるため (特に時間ベースの場合)、回避策が必要になる場合があります。
何を範囲スキャンするかによって異なります。キーの一部のみを範囲スキャンする必要がある場合は、範囲スキャンしたくないビットをハッシュし、それをキーの最初の部分として使用できます。
ここで「パーティション」という用語を使用して、範囲スキャンしたくないキーの部分を参照します
function makeWholeKey(partition, key) {
return concat(make_hash(partition), partition, key);
}
特定のパーティション内のキーを範囲スキャンする場合は、makeWholeKey(p,start) と makeWholeKey(p,end) の間で範囲スキャンを行うことができます。
しかし、パーティションをスキャンしたい場合は、運が悪いです。
しかし、make_hash() 出力の範囲に均等に分散されたトークンをノードに持たせることができ、均等に分散されたデータを取得できます (十分なパーティションがあり、すべてが 1 つまたは 2 つのハッシュ値にまとまらないと仮定します)。