Пример ответа
1) Короткий ответ
OLTP (Online Transaction Processing) базы оптимизированы для частых коротких операций записи и обновления, в то время как OLAP (Online Analytical Processing) системы предназначены для сложных аналитических запросов на чтение больших объемов данных.
2) Сравнение: OLTP vs OLAP
* Назначение и рабочие нагрузки:
* OLTP: Обработка повседневных бизнес-транзакций (заказы, платежи, обновления баланса). Высокая скорость записи.
* OLAP: Анализ исторических данных для бизнес-аналитики, отчетности, принятия решений. Сложные агрегирующие запросы на чтение.
* Модель данных и структура:
* OLTP: Нормализованная схема (3NF) для минимизации избыточности и аномалий при обновлении. Много таблиц, соединения.
* OLAP: Денормализованная схема (звезда, снежинка) для ускорения сложных запросов. Факты и измерения.
* Производительность и масштабирование:
* OLTP: Тысячи коротких операций в секунду (IOPS), низкая задержка. Оптимизированы по индексам для точечных запросов.
* OLAP: Десятки сложных запросов в минуту/час, но обработка терабайтов данных. Колоночное хранение, параллельная обработка.
Рекомендация: Используйте OLTP (PostgreSQL, MySQL) для операционных систем. Выбирайте OLAP (ClickHouse, Amazon Redshift, Google BigQuery) для хранилищ данных и аналитики.
5) Пример SQL-запроса
Типичный OLTP-запрос (поиск конкретного заказа):
```sql
SELECT order_id, total_amount, status
FROM orders
WHERE customer_id = 12345
AND created_date > '2024-01-01';
```
Типичный OLAP-запрос (аналитика продаж):
```sql
SELECT category,
YEAR(order_date) as year,
SUM(sales_amount) as total_sales
FROM sales_facts f
JOIN products p ON f.product_id = p.product_id
GROUP BY category, YEAR(order_date)
ORDER BY total_sales DESC;
```
6) Follow-up (вопросы интервьюеров + короткие ответы):
* Почему нельзя использовать OLTP для аналитики?
* Ответ: Производительность (долгие запросы блокируют транзакции).
* Как данные попадают из OLTP в OLAP?
* Ответ: Через ETL/ELT пайплайны.
7) Практический совет (2 шага на неделю):
1. Сравните производительность: Создайте одинаковую схему "заказы/клиенты" в PostgreSQL (OLTP) и ClickHouse (OLAP). Загрузите 1+ млн записей и сравните время выполнения агрегирующего запроса (SUM, GROUP BY).
2. Спроектируйте схему "звезда": Для любого бизнес-процесса (например, интернет-магазин) нарисуйте схему из одной таблицы фактов (продажи) и 4-5 таблиц измерений (товары, клиенты, время, магазины).