Что такое шардирование в БД

«Что такое шардирование в БД» — вопрос из категории Базы данных, который задают на 33% собеседований Системный Аналитик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

Шардирование — это горизонтальное разделение данных в БД, когда таблица разбивается на части (шарды) и распределяется по разным серверам. Каждый шард содержит подмножество данных, что позволяет масштабировать нагрузку и повышать производительность.

Пример:
Разделение пользователей по ID:

-- Шард 1 (ID 1-1000)
CREATE TABLE users_shard1 (
    id INT PRIMARY KEY,
    name VARCHAR(100)
);

-- Шард 2 (ID 1001-2000)
CREATE TABLE users_shard2 (
    id INT PRIMARY KEY,
    name VARCHAR(100)
);

Плюсы:

  • Уменьшение нагрузки на отдельный сервер.
  • Возможность географического распределения.

Минусы:

  • Сложность JOIN-запросов между шардами.
  • Необходимость решардинга при росте данных.

Критерии шардирования:

  • По диапазону (даты, ID).
  • По хэшу (равномерное распределение).
  • По географическому признаку.