Какие знаешь способы масштабирования реляционных баз данных
Python
Middle
Без компании
Какие знаешь способы масштабирования реляционных баз данных
Ответы
Вот основные способы масштабирования реляционных СУБД:
**Вертикальное масштабирование (Scaling Up)**
- Увеличение ресурсов сервера (CPU, RAM, диски)
- Просто в реализации, но имеет физические ограничения
```
-- Пример: миграция на сервер с большими ресурсами
ALTER DATABASE mydb SET max_connections = 500;
```
**Горизонтальное масштабирование (Scaling Out)**
- **Шардинг** - разделение данных по разным серверам по ключу (user_id, region и т.д.)
- **Репликация**
- Master-Slave: запись только в мастер, чтение из реплик
- Master-Master: запись в любой узел (редко используется из-за сложностей)
**Оптимизация запросов и индексов**
- Создание правильных индексов
- Денормализация (в разумных пределах)
- Кэширование (Redis, Memcached)
**Пример шардинга на Python:**
```
def get_shard(user_id):
return user_id % 4 # 4 шарда
```
Выбор метода зависит от нагрузки: для read-heavy подойдет репликация, для write-heavy - шардинг.