OLAP и OLTP: в чём разница
Коротко
- OLTP (Online Transaction Processing) — системы для быстрых транзакций (заказы, платежи, регистрации). Работает с маленькими объёмами часто.
- OLAP (Online Analytical Processing) — системы для анализа больших объёмов (агрегаты, отчёты, BI). Работает с большими объёмами редко.
Разные задачи — разная архитектура.
Примеры
OLTP
- Оформление заказа в интернет-магазине.
- Перевод денег в банковском приложении.
- Регистрация пользователя.
- Лайк в соцсети.
Характеристики: коротко, часто, точно, много параллельных операций.
OLAP
- Отчёт «продажи по регионам за квартал».
- Дашборд DAU/MAU.
- Когортный анализ retention.
- A/B-анализ метрик.
Характеристики: долго, редко, миллионы строк, агрегаты.
Таблица отличий
| Критерий | OLTP | OLAP |
|---|---|---|
| Основная задача | Транзакции | Аналитика |
| Пример операции | INSERT / UPDATE | SELECT + GROUP BY |
| Объём данных в запросе | 1–10 строк | миллионы строк |
| Частота операций | Тысячи/сек | Десятки/сек |
| Время ответа | <100 мс | секунды — минуты |
| Нормализация | Высокая (3NF) | Низкая (denormalized) |
| Индексы | B-tree на PK/FK | Колоночные (ClickHouse) |
| Хранение | Строковое (row) | Колоночное (column) |
Строковое vs колоночное хранение
OLTP — row storage
Строки хранятся целиком:
Row 1: [id, name, email, age, city]
Row 2: [id, name, email, age, city]Быстро читать/писать одну строку. Идеально для SELECT * FROM users WHERE id = 1.
OLAP — column storage
Колонки хранятся отдельно:
Col id: [1, 2, 3, 4, ...]
Col age: [25, 30, 22, ...]Быстро агрегировать по колонке (SUM(amount), AVG(price)). Идеально для аналитики, которая читает 2-3 колонки из таблицы с 50.
Бонус: колоночное лучше сжимается (повторяющиеся значения в колонке) — меньше памяти.
Попробовать силы на подобных вопросах проще всего в тренажёре Карьерник — прямо в Telegram, без регистрации через сайт.
Популярные базы
OLTP
- PostgreSQL — стандарт.
- MySQL / MariaDB — часто в e-commerce.
- Oracle — корпорации, финансы.
- SQL Server — Microsoft-стек.
OLAP
- ClickHouse — open-source, российский, популярен в РФ.
- Snowflake — облачный, стандарт для enterprise.
- BigQuery (Google) — облачный, pay-per-query.
- Redshift (AWS) — облачный.
- Apache Druid — real-time OLAP.
- Vertica — on-prem enterprise.
Гибридные
- HTAP (Hybrid): PostgreSQL с columnstore, TiDB. Нишевое решение.
Когда что использовать
OLTP
- Production database для приложения.
- Checkout, регистрации, платежи.
- Где 1000+ параллельных пользователей делают микро-операции.
OLAP
- Dashboards.
- Аналитические отчёты.
- ML-training.
- Data Warehouse.
В больших компаниях данные из OLTP ежедневно копируются в OLAP через ETL.
Архитектура современного стека
Пользовательские действия
↓
OLTP (Postgres)
↓ ETL (Airflow / dbt)
Data Lake (S3)
↓
DWH / OLAP (ClickHouse, Snowflake)
↓
BI (Tableau, DataLens) — аналитикДанные движутся слева направо. Аналитик работает справа, разработчики — слева.
Аналитический запрос в OLTP — плохая идея
-- В Postgres на 100M строк
SELECT DATE_TRUNC('month', created_at), SUM(amount)
FROM orders GROUP BY 1;
-- 5 минут, блокирует записьТот же запрос в ClickHouse — 1–5 секунд без блокировок.
Вывод: для аналитики запросы лучше отправлять в OLAP, не в прод-базу.
Пройти 30–50 задач по теме за вечер можно в Telegram-тренажёре. Это то, что отличает «знаю» от «уверенно отвечу на собесе».
Когда PostgreSQL достаточно
Если у вас:
- <10M строк в основных таблицах.
- Аналитические запросы редко.
- Один сервер, без кластера.
→ PostgreSQL справится. Не нужен ClickHouse, если нет реальной потребности.
Типичные ошибки
1. Писать аналитику прямо в OLTP
Убивает перформанс production. Всегда копировать в DWH.
2. Использовать OLAP для транзакций
ClickHouse плохо работает с INSERT по одной строке. Только batch-инсерты.
3. Не понимать разницу в индексах
В OLTP — B-tree на FK. В OLAP — сортировка (ORDER BY в определении таблицы ClickHouse).
Читайте также
- ClickHouse vs PostgreSQL
- Data Warehouse vs Database
- SQL vs NoSQL
- PostgreSQL vs MySQL
- Нормализация БД
FAQ
Почему ClickHouse быстрее Postgres в аналитике?
Колоночное хранение + сжатие + параллелизм. Для агрегата на миллионах строк ClickHouse в 10-100x быстрее.
Можно ли Postgres использовать для OLAP?
Можно для небольших объёмов (<100M строк) и нечастых запросов. С расширениями типа cstore_fdw можно сделать колоночное хранение.
MongoDB — это OLAP?
Нет. MongoDB — документная OLTP-база. Для аналитики её используют реже, через отдельные инструменты (Mongo Aggregations, но ограничения).
Нужно ли аналитику знать OLTP?
Базово — да. Понимать, откуда берутся данные в DWH, как работают транзакции, что такое PK/FK.