шардинг
шардинг (šarding)
Kiejtés
- IPA: [ʂərdʲɪnk]
Főnév
шардинг • (šarding)
Шардинг – конспект
1. Введение
📌 Шардинг (Sharding) – это метод разделения базы данных на несколько частей (шардов) для повышения производительности и масштабируемости.
Каждый шард (shard) – это отдельный сервер или кластер, содержащий часть общей базы данных. Вместо одной огромной БД создаётся много маленьких, которые работают параллельно.
🔹 Используется в высоконагруженных системах, например:
- Социальные сети (Facebook, Twitter).
- Онлайн-магазины (Amazon, eBay).
- Игровые серверы (MMORPG).
2. Зачем нужен шардинг?
✅ Ускоряет обработку данных – уменьшает нагрузку на отдельный сервер.
✅ Уменьшает задержки – запросы обрабатываются локально.
✅ Позволяет масштабировать БД горизонтально – легко добавлять новые серверы.
✅ Обеспечивает отказоустойчивость – отказ одного шарда не ломает всю систему.
❌ Минусы шардинга:
- Сложная настройка и администрирование.
- Сложность кросс-шардовых запросов (JOIN между шардами).
- Балансировка нагрузки – важно равномерно распределять данные.
3. Виды шардинга
3.1. Горизонтальный шардинг
📌 Данные распределяются между разными серверами (каждый хранит часть таблицы).
🔹 Пример:
| Shard 1 (Сервер 1) | Shard 2 (Сервер 2) | Shard 3 (Сервер 3) |
|---|---|---|
| Пользователи A-M | Пользователи N-Z | Новые пользователи |
📌 Как работает:
- Таблица “users” разбивается по первой букве имени.
- Запросы направляются в нужный шард.
3.2. Вертикальный шардинг
📌 Разные таблицы хранятся на разных серверах (по функционалу).
🔹 Пример:
| Сервер 1 (Shard 1) | Сервер 2 (Shard 2) | Сервер 3 (Shard 3) |
|---|---|---|
| Таблица “users” | Таблица “orders” | Таблица “products” |
📌 Как работает:
- Сервер 1 хранит информацию о пользователях.
- Сервер 2 хранит историю заказов.
- Сервер 3 хранит каталог товаров.
3.3. Шардинг по хешу (Hash-Based Sharding)
📌 Алгоритм хеширования равномерно распределяет данные между шардами.
🔹 Пример:
def get_shard(user_id, num_shards):
return user_id % num_shards # Назначает шард по ID пользователя
- Если user_id = 123, num_shards = 3, то
123 % 3 = 0 → Shard 0.
📌 Плюсы:
✅ Автоматически балансирует нагрузку.
❌ Сложно перемещать данные при добавлении новых серверов.
3.4. Географический шардинг
📌 Данные распределяются по регионам.
🔹 Пример:
- Сервер 1 – пользователи из Европы.
- Сервер 2 – пользователи из Азии.
- Сервер 3 – пользователи из США.
📌 Плюсы:
✅ Уменьшает задержки, так как данные ближе к пользователю.
❌ Может возникнуть дисбаланс нагрузки (если один регион активнее).
4. Как реализуется шардинг?
📌 Программный уровень – приложение определяет, куда отправлять запросы.
📌 БД-уровень – встроенные механизмы (например, в PostgreSQL, MongoDB, Cassandra).
📌 Пример шардинга в MongoDB:
sh.addShard("shard1.example.com:27017")
sh.enableSharding("mydatabase")
sh.shardCollection("mydatabase.users", { "user_id": "hashed" })
5. Итог
🔹 Шардинг – мощный инструмент для масштабирования баз данных, который позволяет разделять нагрузку и увеличивать производительность.
🔹 Выбор типа шардинга зависит от типа данных и задач проекта.
🔹 При правильной настройке шардинг повышает скорость работы БД и улучшает отказоустойчивость. 🚀