В том, что вы здесь публикуете, есть доля правды, в основном потому, что распределение данных с помощью хеширования сложно с меньшими числами. Но давайте добавим одно предположение ... Допустим, мы используем vNodes с num_tokens: 4
*, установленным в cassandra.yaml
.
Так что с этим новым предположением распределение диапазона токенов, скорее всего, будет выглядеть примерно так:
Token Ranges
==============
N1 : 1-25, 126-150, 251-275, 376-400
N2 : 26-50, 151-175, 276-300, 401-425
N3 : 51-75, 176-200, 301-325, 426-450
N4 : 76-100, 201-225, 326-350, 451-475
N5 : 101-125, 226-250, 351-375, 476-500
Учитывая это распределение, ваши ключи теперь расположены следующим образом:
N1 has the partition keys : 5, 7
N2 has the partition keys : 1, 6, 8
N3 has the partition keys : 2, 9, 10
N4 has the partition keys : 3
N5 has the partition keys : 4
Теперь представьте, что в алгоритме распределения диапазона есть случайный компонент, и фактическое распределение могло бы быть даже лучше.
Как и во всех наборах данных, числа становятся лучше с увеличением объема данных. Я уверен, что вы увидите лучшее распределение с 1000 ключами разделов по сравнению с 10.
Кроме того, по мере увеличения размера вашего набора данных распространение данных получит выгоду от добавления новых узлов с настройкой allocate_tokens_per_keyspace
, Это позволит алгоритму распределения токенов принимать разумные (менее случайные) решения о назначении диапазона токенов на основе коэффициента репликации вашего пространства ключей.
* Примечание. Использование vNodes с num_tokens: 4
многими экспертами Cassandra считается оптимальная настройка производства. С новым алгоритмом по умолчанию 256 токенов довольно высоки.