Какие знаешь способы масштабирования БД

«Какие знаешь способы масштабирования БД» — вопрос из категории Базы данных, который задают на 27% собеседований Системный Аналитик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

Горизонтальное масштабирование (Sharding)
Разделение данных на части (шарды) и распределение по разным серверам. Например, пользователей можно шардировать по ID или региону.

-- Пример шардинга по диапазону ID
-- Сервер 1: ID 1-1000
-- Сервер 2: ID 1001-2000

Вертикальное масштабирование
Увеличение мощности сервера (CPU, RAM, SSD). Подходит для нагрузок, которые не распределяются легко.

Репликация (Master-Slave)
Чтение с реплик, запись в мастер. Уменьшает нагрузку на мастер-сервер.

-- Настройка репликации в MySQL
CHANGE MASTER TO 
MASTER_HOST='master_host',
MASTER_USER='repl_user',
MASTER_PASSWORD='password';

Кэширование (Redis, Memcached)
Хранение часто запрашиваемых данных в памяти для ускорения доступа.

Партиционирование таблиц
Разделение одной таблицы на физические части (например, по датам).

-- Партиционирование по месяцам
CREATE TABLE logs (
    id INT,
    log_date DATE
) PARTITION BY RANGE (MONTH(log_date));