Распределение данных в базе через шардирование

Для переходов по короткой ссылке удобен ключ шардирования, вычисляемый из short_link: GET сразу знает, куда обращаться. Шардирование только по user_id потребует дополнительного поиска владельца.

Короткий ответ

Что ответить на собеседовании

Для переходов по короткой ссылке удобен ключ шардирования, вычисляемый из short_link: GET сразу знает, куда обращаться. Шардирование только по user_id потребует дополнительного поиска владельца.

Подробный разбор

Ответ с пояснениями

Условие

Архитектура сервиса:

  • Клиенты отправляют POST‑запросы для создания сокращённых URL и GET‑запросы для получения оригинального адреса.
  • Все запросы проходят через API‑Gateway, который обеспечивает балансировку нагрузки и проверку прав доступа.
  • Запросы маршрутизируются к отдельным микросервисам TinyUrlPOST и TinyUrlGET.
  • Основное хранилище – MySQL‑БД, обслуживающая оба типа запросов.

Исходя из описанной схемы, сформулируйте план шардирования базы данных:

  • по какому критерию (например, по полю short_link или по user_id) следует делить данные;
  • какие стратегии (range‑based, hash‑based, list‑based и пр.) можно применить;
  • каким образом обеспечить масштабируемость и равномерное распределение нагрузки между шардовыми узлами;
  • как реализовать механизм маршрутизации запросов к соответствующему шару.

Ответ

Для переходов по короткой ссылке удобен ключ шардирования, вычисляемый из short_link: GET сразу знает, куда обращаться. Шардирование только по user_id потребует дополнительного поиска владельца.

Hash распределяет коды равномернее диапазонов с последовательной генерацией; виртуальные бакеты и таблица маршрутизации упрощают перенос данных. POST и GET должны использовать одну версию правил, а миграция бакета — учитывать параллельные записи и повторную доставку. Уникальность кода закрепляйте генератором и ограничением в однозначном шарде. Репликация решает отказоустойчивость, а не заменяет шардирование; горячие ссылки разгружайте кэшем.

ИИ-помощник для собеседований

Хочешь уверенно проходить собеседования?

Попробуй ИИ-помощник для собеседований: слышит вас и собеседника, анализирует экран, подсказывает ответы в реальном времени, работает без VPN и не попадает в захват экрана.

Подробнее