TGViewer
METANIT.COM METANIT.COM @devnull22 · 5.83K subscribers
Post #3092 1.57K
Что такое sharding (шардинг)?
(продолжение предыдущего поста)

Шардинг (sharding) — это паттерн архитектуры базы данных, при котором база данных разбивается на более мелкие части (шарды/сегменты), каждая из которых хранится и обрабатывается независимо. Это позволяет повысить производительность, масштабируемость и удобство обслуживания крупных баз данных.
Шардинг — это мощный инструмент для управления большими базами данных, позволяющий балансировать нагрузку, повышать производительность и обеспечивать масштабируемость. Выбор стратегии шардинга зависит от структуры данных и требований к системе.

Разберём подробно различные стратегии и типы шардинга.

#### 1. Типы шардинга

а) Вертикальный шардинг (Vertical)
- Суть: разбиение базы данных по столбцам (колонкам), а не по строкам.
- Пример на изображении: исходная таблица с колонками ID, First Name, Last Name разделена на две части:
- Partition 1: содержит ID и First Name;
- Partition 2: содержит ID и Last Name.
- Применение: подходит для случаев, когда к определённым колонкам обращаются чаще, чем к другим (например, данные аутентификации пользователей в одном шарде, а журналы активности — в другом).

б) Горизонтальный шардинг (Horizontal)
- Суть: разделение базы данных по строкам (а не по колонкам), при этом каждая строка хранится только в одном шарде.
- Пример на изображении: данные распределены по нескольким шардам, каждый из которых содержит подмножество строк исходной таблицы.
- Применение: идеально для приложений с большим объёмом данных, где строки можно сегментировать (например, по географическим регионам или идентификаторам пользователей).

#### 2. Стратегии шардинга

а) Range Based Sharding (шардинг на основе диапазона значений)
- Суть: данные распределяются по шардам в зависимости от диапазона значений определённого поля (например, возраста).
- Пример на изображении: таблица с полем Age разделена на три диапазона:
- 20 < Age ≤ 30: содержит только запись Rohit (28);
- 30 < Age ≤ 40: содержит записи Alex (32), Adam (34), Foo (36);
- 40 < Age ≤ 50: содержит записи John (45), Anshu (50).
- Особенности: может приводить к неравномерному распределению нагрузки (некоторые шарды перегружены, другие — недогружены).
- Применение: подходит для данных с временными метками или последовательных данных (журналы, события).

б) Key Based Sharding (шардинг на основе ключа)
- Суть: использование хэш-функции для распределения данных по шардам. Хэш-функция принимает ключ (например, ID) и возвращает значение, определяющее, в какой шард попадёт запись.
- Пример на изображении: используется функция ID % 3, которая вычисляет хэш-значение для каждого ID:
- ID 1 → Hash = 1 % 3 = 1 → попадает в Shard #1;
- ID 2 → Hash = 2 % 3 = 2 → попадает в Shard #2;
- ID 3 → Hash = 3 % 3 = 0 → попадает в Shard #3;
- и так далее.
- Особенности: обеспечивает более равномерное распределение данных по шардам.
- Применение: подходит для систем, где важна балансировка нагрузки (например, хранение пользовательских сессий).

в) Directory Based Sharding (шардинг на основе каталога)
- Суть: используется специальная служба (каталог), которая отслеживает, в каком шарде хранятся те или иные данные. Каталог сопоставляет ключи шардов с их местоположением.
- Пример на изображении: таблица ID | Map показывает, в каком шарде хранится каждая запись:
- ID 1 → Map 1 → Shard #1;
- ID 2 → Map 3 → Shard #3;
- ID 3 → Map 1 → Shard #1;
- и так далее.
- Особенности: позволяет работать с неравномерным распределением данных и сложными критериями разбиения.
- Применение: подходит для сложных систем с динамическим распределением данных.

#### 3. Ключевые особенности шардинга, отражённые на изображении
  • 👍 4
  • ❤ 2
  • 🤝 2
More from @devnull22
  1. Mar 19, 2026Добавил в руководство по JavaScript главу про работу с датами и временем с помощью Tempora…
  2. Mar 19, 2026Роскомнадзор перестал полностью справляться с блокировками в интернете Роскомнадзор (РКН)…
  3. Mar 18, 2026Минцифры опубликовало законопроект о государственном регулировании ИИ. Закон должен начать…
  4. Mar 18, 2026Microsoft призвала разработчиков создавать ИИ-приложения в Electron на Windows 11 Microsof…
  5. Mar 18, 2026Oracle анонсировала проект Detroit, который будет развиваться в составе OpenJDK и нацелен…
  6. Mar 17, 2026Вышла новая версия платформы Java - JDK 26. JDK 26 — краткосрочная версия с поддержкой Pre…
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 →