Шардирование распределяет строки между несколькими независимыми узлами по ключу, чтобы масштабировать объём данных и нагрузку. Это отличается от репликации, где узлы хранят копии.
Что такое шардирование и что нужно учитывать при его проектировании?
Шардирование распределяет строки между несколькими независимыми узлами по ключу, чтобы масштабировать объём данных и нагрузку. Это отличается от репликации, где узлы хранят копии.
Короткий ответ
Что ответить на собеседовании
Подробный разбор
Ответ с пояснениями
Шардирование распределяет строки между несколькими независимыми узлами по ключу, чтобы масштабировать объём данных и нагрузку. Это отличается от репликации, где узлы хранят копии.
Ключ должен давать достаточно равномерное распределение и позволять маршрутизировать типовые запросы без обхода всех шардов. Важны горячие ключи, рост числа узлов и перенос данных без потерь.
Заранее определяют глобальные ID, уникальность, транзакции между шардами, резервное копирование и восстановление. Диапазонное распределение удобно для интервалов, хеширование — для балансировки; универсального ключа нет. Прежде чем шардировать, стоит проверить индексы, запросы и пределы более простой схемы.