Шардирование (sharding) – способ горизонтального масштабирования баз данных: данные разбиваются на части (шарды) по ключу, и каждая часть хранится на отдельном сервере. Например, клиенты с разными идентификаторами распределяются по нескольким узлам, и каждый узел обрабатывает свою долю запросов.
Стратегии
- По диапазону ключа.
- По хешу ключа – равномерное распределение.
- По справочнику (directory): таблица соответствия ключей и шардов.
- По географии или арендатору в многоарендных системах.
Плюсы
- Масштабирование записи и объёма за пределы одного сервера.
- Изоляция нагрузки.
Сложности
- Запросы и транзакции, затрагивающие несколько шардов.
- Перебалансировка при добавлении узлов.
- Неравномерная нагрузка (горячие шарды).
- Резервное копирование и согласованность.
Реализация
Встроено в распределённые и многие NoSQL-СУБД, в аналитические MPP-СУБД; для PostgreSQL используются расширения и прокси-решения шардирования.