# OLTP и OLAP

## Определения

- **OLTP (Online Transaction Processing)** — класс систем, ориентированных на обработку большого количества коротких, строго консистентных транзакций. Это вся «операционка» бизнеса: создание заказов, списание средств, изменение статусов, обновление профилей клиентов.
- **OLAP (Online Analytical Processing)** — класс систем, ориентированных на выполнение сложных аналитических запросов по большим объёмам исторических данных. Это отчёты, дашборды, исследовательские запросы, «копание в прошлых данных», а не обслуживание текущих операций.

## Когда и для чего применяется

- **OLTP-системы**:
  - Характерны частые короткие операции чтения и записи с жёсткими требованиями к целостности данных.
  - Важны скорость отклика в миллисекундах/секундах и способность обрабатывать большое количество одновременных пользователей.
  - Примеры: интернет‑магазин (оформление заказов, оплата), банковская система (платежи, переводы), CRM (фиксация контактов и задач).
- **OLAP-системы**:
  - Характерны тяжёлые запросы, которые сканируют большие объёмы данных и делают агрегации по множеству измерений (по времени, продуктам, регионам и т.д.).
  - Допускается сравнительно более высокая латентность запроса, но важны масштабируемость и возможность строить сложные отчёты.
  - Примеры: отчёт о выручке по сегментам, анализ воронки продаж, продуктовая аналитика, план‑факт анализ, аудит операций за длительный период.

## Как реализуется

- **OLTP**:
  - Как правило, строится на реляционных базах данных с поддержкой транзакций.
  - Схема данных, как правило, нормализована: данные разбиваются на связанные таблицы, чтобы минимизировать дублирование и упростить обеспечение целостности.
  - Активно используются индексы для быстрых выборок по ключевым полям (идентификаторы, внешние ключи, статусы и т.д.).
- **OLAP**:
  - Хранилища данных для OLAP оптимизированы под чтение и агрегации: данные могут храниться в виде структур, удобных для массового сканирования и сжатия.
  - Широко применяются денормализованные модели (звезда, снежинка), в которых факты (события, операции) ссылаются на измерения (клиенты, продукты, время и т.п.).
  - Используются механизмы партиционирования и предрасчитанных агрегатов для ускорения типовых аналитических запросов.
- **Почему не «одна база для всего»**:
  - OLTP и OLAP имеют противоречивые требования к структуре данных и профилю нагрузки.
  - Попытка обслуживать и транзакционные, и тяжёлые аналитические запросы в одной и той же базе данных обычно приводит либо к деградации работы операционных систем, либо к ограничению аналитики.

