PRO

Что такое шардирование и репликация?

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

Репликация

Репликация — это механизм, при котором копия данных поддерживается на нескольких серверах. Базовый вариант:

  • master (primary) — узел, куда идут операции записи INSERT/UPDATE/DELETE;

  • replica (standby/slave) — один или несколько узлов, которые получают изменения от мастера и содержат его копию.

Основные цели репликации:

  • отказоустойчивость: если мастер падает, можно переключиться на реплику;

  • масштабирование чтения: читать можно и с реплик (read‑replicas), разгружая мастер;

  • геораспределение: ближе к пользователю можно держать реплику для быстрых чтений.

Важно помнить о возможной задержке репликации: данные могут появиться на реплике с небольшой задержкой относительно мастера.

Шардирование

Шардирование (sharding) — это разделение базы на несколько независимых фрагментов (шардов), каждый из которых хранится на своём сервере/кластере.

Пример: у вас есть таблица users, и вы решаете хранить пользователей с id от 1 до 1 000 000 на одном сервере, от 1 000 001 до 2 000 000 — на другом и т.д. Каждый такой диапазон — отдельный шард.

Цели шардирования:

  • горизонтальное масштабирование записи и хранения: данные и нагрузка распределяются между несколькими серверами;

  • обход ограничений одного узла по диску, памяти, CPU.

Шардирование сложнее репликации, потому что:

  • данные распределены, к разным шардам могут идти разные запросы;

  • нужно продумывать «ключ шардирования» (по какому полю делим: user_id, регион, хэш и т.п.);

  • сложнее делать запросы, которые затрагивают несколько шардов (глобальные агрегации, JOIN между шардами);

  • менять схему шардирования потом дорого.

Как они сочетаются

Шардирование и репликация не взаимоисключают друг друга:

  • каждый шард может иметь свою репликацию (master + несколько replicas);

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

Формулировка уровня middle

Репликация копирует одни и те же данные на несколько узлов, чтобы повысить доступность и масштабировать чтение. Шардирование делит данные на части и распределяет их по разным узлам, чтобы масштабировать хранение и запись. На практике часто комбинируют: шардирование по ключу и репликация внутри каждого шарда.

Оцени свой прогресс

Честно оцени своё понимание этого вопроса, чтобы мы могли построить твой учебный трек максимально эффективно.
Читать в блоге