Для числа шардов 2^k остаток от деления неотрицательного хеша можно заменить маской hash & (n-1). Это удобно, но не гарантирует лучшее распределение.
Почему для количества шардов удобна степень двойки, а не, например, тройка?
Для числа шардов 2^k остаток от деления неотрицательного хеша можно заменить маской hash & (n-1). Это удобно, но не гарантирует лучшее распределение.
Короткий ответ
Что ответить на собеседовании
Подробный разбор
Ответ с пояснениями
Для числа шардов 2^k остаток от деления неотрицательного хеша можно заменить маской hash & (n-1). Это удобно, но не гарантирует лучшее распределение.
Нужен качественный хеш, в том числе его младшие биты: маска использует именно их. Три шарда тоже допустимы через остаток от деления, а современный компилятор может оптимизировать вычисления. Реальные критерии — конкуренция, горячие ключи и стоимость миграции. Не выбирайте число шардов исключительно ради одной дешёвой операции.