TGViewer
Системный анализ на максималках Системный анализ на максималках @system_analysis_max · 880 subscribers
Post #23 697
Просто о шардировании

Шардирование – слово, которое боятся произносить, как имя Волан-Де-Морта

📌 Определение

Вспомним пример из предыдущего поста, но заменим носки на книги📚: по 300 штук у нас хранятся дома, в гараже, на даче и у родителей

Принцип шардирования – разделение данных и хранение их на разных серверах. Части целого называют шардами

– Не путаем с репликацией. Тогда бы у всех книг было бы по 3 копии, и по 1200 книг мы бы хранили в разных местах. А если купили новую – пришлось бы делать копии

– Не путаем с партиционированием. Тогда бы все книги лежали дома (т.е. на одном сервере), но в разных углах


Когда используют шардирование?

Когда на сервере не хватает ресурсов для хранения. 1200 книг забили нашу единственную комнату в съемной однушке, поэтому мы приняли решение хранить их в разных местах 💡

Головная боль шардирования

Как распределить книги?


Тут как с партиционированием – по диапазону, по ключу. Например, книги можно шардировать по фамилиям авторов – в один шард от А до Ж, во второй от З до М и так далее

Когда я куплю новую книгу, то отвезу ее в определенное место согласно своим же правилам

Как понять, куда везти новую книгу?


Есть несколько методов маршрутизации:
– На стороне клиента. Мы знаем, в какие шарды что записано. Появляется логика на клиенте
– На стороне сервера. Кто-то другой за нас держит эту инфу, а мы просто передаем ему книгу. Дополнительная логика на сервере
– Маршрутизация встроена в БД. Все происходит автоматически, но такая функция встречается редко

Что делать, если нужно перераспределить книги?


Мы не задумывались о порядке, поэтому книжка Вигерса лежит между «Война и мир» и «Кулинарные рецепты Гордона Рамзи» 😁

Нужна перебалансировка (Rebalancing) – процесс перераспределения данных между существующими шардами

Сложности в самом процессе: допустим, это займет пару часов, но в этот период могут поступать новые данные

Способы решения:
1️⃣ На время допустить только чтение (проще всего)
2️⃣ Читать из старого шарда, а записывать в новый
3️⃣ Логическая репликация – делаем между старым и новым шардами логическую репликацию и переключаемся на новый

Что делать, если нужно добавить новое место хранения для книг?


Мы литературный гений, поэтому прочитали еще 300 книг. Осознали, что нужно еще одно место для хранения. Арендуем склад (это будет наш пятый шард) и думаем, как перераспределить нашу кипу

По научному это Решардинг (Resharding) – процесс изменения схемы шардирования (добавление/удаление шардов)

Тут на помощь придет такой метод, как Consistent Hashing – когда книги распределяются так, чтобы при добавлении нового места не пришлось перекладывать все заново

➡️ Примеры использования шардирования

1. Социальная сеть. Миллиарды лайков, постов, комментов. Шардируем по user_id и храним данные и действия пользователей в рамках одного шарда
2. Мессенджеры. Миллиарды сообщений. Шардируем по chat_id, храним их на разных шарах
3. Маркетплейсы. Тонны товаров и заказов. Товары можно шардировать по product_id, а заказы по user_id

—————

⬇️ Доводилось ли вам работать с системами, где использовалось шардирование? Пишите в комментах

#полезное_системный_анализ
  • 🔥 10
  • 👌 2
  • ❤‍🔥 1
More from @system_analysis_max
  1. Mar 27, 2026Прошел испытательный срок в Альфе 🅰️ Правда, это было 2 месяца назад, но время порефлекси…
  2. Mar 16, 2026Продолжая предыдущий пост Как вы помните, на прошлой неделе объявили о закрытии школы Syst…
  3. Mar 11, 2026Про опыт преподавания Давненько не писал в блог, пора исправляться Последние два месяца вы…
  4. Feb 10, 2026WebSocket на практике 📌 А вы знали, что в Postman можно протестировать не только REST API…
  5. Jan 21, 2026RabbitMQ на практике 📌 Часто ко мне на консультации приходят с запросом отточить какие-ни…
  6. Jan 15, 2026Первый пост в 2026 году Будет очень простым, потому что после выходных я еще не до конца в…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →