Ответ
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;