As I understand the num_tokens setting, it makes Cassandra do the following
pseudocode when a new node is added:
for 1...num_tokens do
my_token = rand(0, 2^128-1)
next_token = min(tokens in cluster where token > my_token)
my_range = (my_token, next_token - 1)
done
Now the new node owns num_tokens chunks of keys that previously belonged to
other nodes.
My point is, with 1 node in the cluster, the ring is divided into
num_tokens ranges. With N nodes, the ring is divided into N*num_tokens.
Correct? The docs do not make this clear for me.
And another point: the tokens are randomly chosen, so the ranges of keys
are not uniform, although with enough nodes in the cluster there probably
won't be any really large ranges. Correct?