SQLLab
Теория· 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
SnowflakeApache Hive
Synapse (Azure)Druid

Прочитайте урок до конца — прогресс засчитается автоматически