<div><img src="https://mc.yandex.ru/watch/56654995" style="position:absolute; left:-9999px;" alt="" /></div>
Попробовать бесплатно

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.

Готовы применить теорию на практике?

Соберите команду в Shtab — единое пространство для проектов, целей и задач. Бесплатно до 5 человек.