Шардирование данных?

Middle
504 просмотров
AFK Offer AI

Шардирование — горизонтальное разделение данных между несколькими серверами. Каждый шард содержит уникальное подмножество данных.

Основные стратегии:

  • Hash-based: shard = hash(key) % num_shards — равномерное распределение
  • Range-based: A-M → shard1, N-Z → shard2 — удобно для range-запросов
  • Directory-based: lookup-таблица определяет расположение
Consistent hashing решает проблему добавления шардов: при добавлении нового шарда перемещается только 1/N данных вместо всех.

Проблемы шардирования:

  • Cross-shard JOIN — невозможен или очень дорог
  • Distributed transactions — нужен 2PC или Saga
  • Hot spots — один шард может быть нагружен больше других
  • Решардирование — сложная операция
Альтернативы перед шардированием: вертикальное масштабирование, read-реплики, партиционирование таблиц.

Следующий вопрос

Задача: реализуйте FizzBuzz — для чисел 1-100 выведите Fizz если делится на 3, Buzz если на 5, FizzBuzz если на оба