Помнишь, как мы обсуждали горизонтальное масштабирование? Ты добавил реплики для чтения, оптимизировал индексы, поставил самый мощный сервер, настроил PgBouncer — и всё равно база задыхается при записи (INSERT/UPDATE). Именно в этот момент разработчики понимают: пора резать.
Шардирование (Sharding) — это разбиение одной огромной базы данных на несколько независимых частей (шардов), каждая из которых живет на своем физическом сервере.
Важно: Сначала исчерпай простые решения!
Шардирование — это тяжелая операция. У нее всегда есть риск осложнений (разберем их позже). На System Design интервью никогда не предлагай шардирование первым шагом. Убедись, что ты исчерпал: 1) Индексы 2) Вертикальное масштабирование (больше RAM/CPU) 3) Read-реплики 4) Пулинг.
Как это делают в BigTech
Теория — это хорошо, но давай посмотрим, какие реальные боли заставляют IT-гигантов идти на шардирование и как они это реализуют.
- Кейс Notion (200 млрд блоков): 5 лет Notion жил на одной базе PostgreSQL. Но когда объем данных стал гигантским, встроенный сборщик мусора (
autovacuum) перестал успевать удалять мертвые строки. База начала пухнуть, CPU уперся в потолок. Вертикальное масштабирование больше не помогало. Они шардировали данные на 32 физических сервера (480 логических шардов). Обязательно прочитай, как они выбирали ключ шардирования и мигрировали без даунтайма. - Кейс Instagram (Миллиарды фото): Главная боль Instagram при переходе на шарды — как генерировать уникальные ID для постов, если серверов много? Они придумали алгоритм: генерировать 64-битный ID, куда прямо внутрь зашит таймстемп (41 бит) и номер логического шарда (13 бит). Это позволяет БД масштабироваться, сохраняя хронологический порядок постов. Технические детали алгоритма в их блоге.
- Кейс Uber (Отказ от схемы): Столкнувшись с проблемами роста Postgres, Uber перешли на MySQL и построили поверх него систему Schemaless. Чтобы не страдать от сложных JOIN-запросов между шардами, они кладут все данные одной поездки в один шард в виде append-only (только добавление) JSON-объектов. Глубокий разбор архитектуры Schemaless.