Карта / SQL / Репликация, шардирование, партиционирование

Репликация, шардирование, партиционирование

Три способа масштабировать базу данных, когда одного сервера становится мало — каждый решает свою проблему.

Репликация — копия базы на другом сервере, синхронизируется автоматически. Решает проблему отказоустойчивости и нагрузки на чтение: пишешь в главный сервер (master), читаешь можно с копий (replicas) — нагрузка распределяется.

Шардирование — разделение данных по разным серверам по какому-то ключу (например, пользователи с id 1-1000 на сервере A, 1001-2000 на сервере B). Решает проблему, когда данных слишком много для одного сервера.

Партиционирование — разделение одной большой таблицы на части внутри одной базы, обычно по диапазону значений (по дате, по региону):

CREATE TABLE orders_2026 PARTITION OF orders
FOR VALUES FROM ('2026-01-01') TO ('2027-01-01');
Репликация — копии master копия копия
<text x="340" y="14" text-anchor="middle" font-size="11" fill="currentColor" opacity="0.6">Шардирование — разные данные</text>
<rect x="280" y="40" width="80" height="40" fill="currentColor" fill-opacity="0.06" stroke="currentColor" stroke-opacity="0.4"/><text x="320" y="64" text-anchor="middle" font-size="10.5" fill="currentColor">id 1-1000</text>
<rect x="370" y="40" width="80" height="40" fill="currentColor" fill-opacity="0.06" stroke="currentColor" stroke-opacity="0.4"/><text x="410" y="64" text-anchor="middle" font-size="10.5" fill="currentColor">id 1001-2000</text>
Копнуть глубже

Главная сложность шардирования — выбор ключа. Если выбрать неудачный ключ шардирования, данные распределятся неравномерно (один шард перегружен, другие простаивают), а JOIN между шардами становится дорогим или невозможным напрямую — нужна дополнительная логика на стороне приложения.

Партиционирование решает другую проблему, чем шардирование — данные остаются на одном сервере, просто физически разложены по частям внутри базы. Это ускоряет запросы, которые затрагивают только одну партицию (например, “заказы за 2026 год”), и упрощает обслуживание (можно удалить целую старую партицию вместо миллионов DELETE).

🎤 Закрыл тему, если можешь объяснить:
• чем репликация отличается от шардирования по сути проблемы, которую решают;
• что такое партиционирование и чем оно отличается от шардирования (если дошёл до 3-го слоя).