В чем разница между Data Warehouse и Data Lake?

«В чем разница между Data Warehouse и Data Lake?» — вопрос из категории Моделирование данных и DWH, который задают на 46% собеседований Data Инженер. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

Data Warehouse (DWH) и Data Lake — это два подхода к хранению данных для аналитики, которые решают разные задачи.

Аспект Data Warehouse (DWH) Data Lake
Данные Структурированные, очищенные, преобразованные. Любые: сырые, структурированные, полуструктурированные (JSON, XML), неструктурированные (логи, изображения).
Схема Schema-on-Write: Определяется перед загрузкой данных (звезда, снежинка). Schema-on-Read: Применяется при чтении данных для анализа.
Цель Бизнес-аналитика (BI), отчётность, дашборды. Исследовательский анализ, машинное обучение, хранение "сырья".
Пользователи Бизнес-аналитики, дата-аналитики. Инженеры данных, data scientists.
Технологии Snowflake, Amazon Redshift, Google BigQuery. Hadoop (HDFS), Amazon S3, Azure Data Lake Storage.
Стоимость Выше для хранения (оптимизировано под вычисления). Ниже для хранения больших объёмов.

Практический пример:

  • В Data Lake (S3) мы можем хранить сырые JSON-логи с веб-сервиса.
  • Затем ETL-процесс (например, на Spark или в Airflow) очищает, структурирует эти данные и загружает их в таблицы Data Warehouse (Redshift).
  • Аналитики строят SQL-отчёты уже на подготовленных данных в DWH.
-- Пример: Загрузка очищенных данных из озера в витрину DWH
INSERT INTO dw.user_activity_daily
SELECT
    user_id,
    DATE(event_time) as activity_date,
    COUNT(*) as events_count
FROM
    -- Источник: данные из Data Lake, прочитанные со схемой
    read_parquet('s3://data-lake/raw_events/date=2023-10-01/*.parquet')
GROUP BY 1, 2;