Sobes.tech
Middle — Senior
48

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

Условие задачи

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

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

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

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