Перейти к содержимому
7 / 15

Как выбрать ключ шардирования и что делать с горячими шардами?

Шардирование — разрезание данных на независимые узлы. Всё держится на ключе шардирования: он должен быть почти во всех запросах, равномерно распределять данные и нагрузку и не меняться у записи — обычно это идентификатор арендатора или пользователя. Хеш даёт равномерность, но убивает диапазонные запросы; диапазон их сохраняет, но создаёт горячий шард на свежих данных. Формула hash % N запрещает менять число узлов, поэтому ключи раскладывают по фиксированному числу виртуальных корзин, а корзины — по узлам: переезд становится переносом корзины. Горячий шард обычно не ошибка хеша, а перекос данных, и лечится выделенным шардом или второй компонентой ключа. Главное вслух: шардирование убирает join'ы, транзакции между шардами и глобальную уникальность, поэтому это последний шаг.

Как выбрать ключ шардирования и что делать с горячими шардами? | JScriptiser