OLAP и OLTP
Граница между OLTP и OLAP объясняет, почему обычно нельзя «просто построить аналитику в боевой базе» и зачем нужны отдельные хранилища.
OLTP
- Оптимизирован под короткие транзакции с строгими гарантиями ACID.
- Хранение по строкам — удобно для записи и точечных чтений.
- Объёмы: миллионы или сотни миллионов строк, не более.
- Примеры: PostgreSQL, MySQL, MS SQL Server, Oracle.
OLAP
- Оптимизирован под аналитические запросы по огромным таблицам.
- Колонное хранение и сжатие — гораздо быстрее агрегатов.
- Объёмы: миллиарды и триллионы строк.
- Примеры: BigQuery, Snowflake, Redshift, ClickHouse, Vertica.
Почему важно различать
- Тяжёлые аналитические запросы в OLTP роняют продукт.
- OLAP плохо подходит для записи единичных строк и онлайн-операций.
- В современных архитектурах эти роли разделяют намеренно и связывают пайплайнами.
Когда применять и когда нет
Применять
- При проектировании архитектуры данных компании
- При выборе базы под новый продукт или новый аналитический проект
- В обсуждении производительности отчётов и нагрузки на продукт
Не применять
- В очень маленьком проекте — обычно никаких отдельных OLAP-систем не нужно, всё помещается в одну OLTP-базу с view-аналитикой
Примеры применения
Команда продукта решает построить «дашборд для руководства» прямо в Postgres-базе сервиса. После пары запросов с агрегатами по миллионам строк продакшн «лёг» на 10 минут. Через неделю команда подняла отдельный ClickHouse, налила туда нужные данные через пайплайн, и нагрузка на продукт перестала зависеть от аналитики совсем. Один и тот же отчёт в Postgres шёл 45 секунд, в ClickHouse — 200 миллисекунд.
Часто задаваемые вопросы
В небольших объёмах — да, многие OLTP-базы тянут аналитические запросы поверх обычных индексов. Но при росте таблиц и запросов производительность быстро падает, и приходится разводить нагрузку на отдельные системы.
HTAP (hybrid transactional / analytical processing) — попытка сделать одну систему и для транзакций, и для аналитики. Примеры: TiDB, SingleStore. Это интересный класс решений, но в большинстве случаев пока компании всё равно предпочитают разделять OLTP и OLAP.