Creo que este tema se trata mejor en la lista de correo de usuarios de cassandra; ahí es donde están las personas
Cassandra no tiene balanceo automático de carga pero pero puede que lo haga en un futuro no muy lejano. La rama 0.5 puede ser capaz de esto ahora.
Esencialmente cuando arranca un nodo en un sistema que ya se está ejecutando, debe encontrar un lugar en el anillo que equilibrará la carga y se colocará allí. Siempre que agregue nodos de uno en uno (es decir, espere a que un nodo termine la inicialización antes de agregar otro), eso funcionará bastante bien, siempre que su distribución de claves no cambie demasiado con el tiempo.
Sin embargo, sus claves pueden cambiar con el tiempo (especialmente si están basadas en el tiempo) por lo que es posible que desee una solución.
Depende de lo que desee escanear. Si solo necesita escanear el rango PARTE de la clave, puede actualizar el bit que no desea escanear en rango, y usarlo como la primera parte de la clave.
voy a utilizar el término "partición" para referirse a la parte de la clave que no desea variar exploración
function makeWholeKey(partition, key) {
return concat(make_hash(partition), partition, key);
}
Ahora bien, si desea variar escanear las llaves dentro de una partición dada , puede escanear el rango entre makeWholeKey (p, start) y makeWholeKey (p, end)
Pero si quiere escanear las particiones, no tiene suerte.
Pero puede hacer que sus nodos tengan tokens que estén distribuidos uniformemente alrededor del rango de salida make_hash(), y obtendrá datos distribuidos uniformemente (suponiendo que tiene particiones SUFICIENTES que no se agrupan en una o dos valores hash)
Encontré más detalles sobre la idea de 'agregar hash a las teclas' en este blog http://blog.evanweaver.com/articles/2009/07/06/up-and-running-with-cassandra/ – deepblue