Какие знаешь способы шардирования БД
Python
Junior
Без компании
Какие знаешь способы шардирования БД
Ответы
Шардирование (горизонтальное партиционирование) делит данные по строкам между разными серверами. Основные подходы:
- **Хэш-шардирование**
Данные распределяются по шардам с помощью хэш-функции от ключа (например, `user_id % N`).
```
def get_shard(user_id, total_shards):
return user_id % total_shards
```
- **Диапазонное шардирование**
Данные делятся по диапазонам (например, пользователи A-M на шард1, N-Z на шард2).
- **Географическое шардирование**
Распределение по локациям (европейские пользователи → шард1, азиатские → шард2).
- **Шардирование по словарю**
Явное сопоставление ключей с шардами через lookup-таблицу.
**Проблемы:**
- Горячие шарды (неравномерная нагрузка).
- Сложные JOIN-запросы между шардами.
- Транзакции, затрагивающие несколько шардов.
**Примеры СУБД с поддержкой шардирования:** PostgreSQL (c расширениями), MongoDB, Cassandra.