Ugrás a tartalomhoz

шардинг

A Wikiszótárból, a nyitott szótárból

шардинг (šarding)

Kiejtés

  • IPA: [ʂərdʲɪnk]

Főnév

шардинг (šarding)

  1. (informatika) sharding

Шардинг – конспект



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. Итог

🔹 Шардинг – мощный инструмент для масштабирования баз данных, который позволяет разделять нагрузку и увеличивать производительность.
🔹 Выбор типа шардинга зависит от типа данных и задач проекта.
🔹 При правильной настройке шардинг повышает скорость работы БД и улучшает отказоустойчивость. 🚀