Теория· 10 мин· 20 XP
Зачем нужен Data Warehouse
OLTP (Online Transaction Processing)
- Нормализованные таблицы (3NF)
- Оптимизирован для записи
- Тысячи мелких транзакций в секунду
- PostgreSQL, MySQL
OLAP (Online Analytical Processing)
- Денормализованные таблицы (звезда/снежинка)
- Оптимизирован для чтения
- Аналитические запросы по миллиардам строк
- ClickHouse, BigQuery, Snowflake, Redshift
Почему нельзя делать аналитику на OLTP?
sql
-- На OLTP: 20+ JOIN, нагрузка на продакшн
SELECT u.name, p.category, SUM(oi.price * oi.qty) AS revenue
FROM users u
JOIN orders o ON o.user_id = u.id
JOIN order_items oi ON oi.order_id = o.id
JOIN products p ON p.id = oi.product_id
JOIN categories c ON c.id = p.category_id
WHERE o.created_at BETWEEN '2024-01-01' AND '2024-03-31'
GROUP BY u.name, p.category;
В DWH — один-два JOIN к фактам:
sql
SELECT r.region_name, c.segment, SUM(f.revenue) AS total_revenue
FROM fact_orders f
JOIN dim_region r ON r.region_id = f.region_id
JOIN dim_customer c ON c.customer_id = f.customer_id
WHERE f.channel = 'online'
GROUP BY r.region_name, c.segment;
Инструменты DWH
| Облако | On-premise |
|---|---|
| BigQuery (GCP) | ClickHouse |
| Redshift (AWS) | Greenplum |
| Snowflake | Apache Hive |
| Synapse (Azure) | Druid |
Прочитайте урок до конца — прогресс засчитается автоматически