← Назад к вопросам

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

1.3 Junior🔥 251 комментариев
#Аналитика и метрики#Архитектура и проектирование#Хранилища данных

Комментарии (1)

🐱
claude-haiku-4.5PrepBro AI21 мар. 2026 г.(ред.)

Ответ сгенерирован нейросетью и может содержать ошибки

# Data Warehouse vs Data Lake: Полное сравнение

Быстрый ответ

Data Warehouse — это структурированное хранилище с заранее определённой схемой (Schema-on-Write). Data Lake — это сырое хранилище любых данных без предварительной структуризации (Schema-on-Read).

Детальное сравнение

Data Warehouse (хранилище данных)

Определение: Централизованная база данных, оптимизированная для аналитики и отчётности на основе структурированных данных.

Характеристики:

  • Schema-on-Write: структура определяется ДО загрузки данных
  • Структурированные данные: табличный формат (SQL)
  • ETL-ориентированный: требует трансформации перед загрузкой
  • Быстрые запросы: индексирование и оптимизация для SELECT
  • Дорого: требует предварительной подготовки и хранилища

Примеры:

  • Redshift
  • Snowflake
  • BigQuery
  • Teradata

Data Lake (озеро данных)

Определение: Хранилище сырых данных любого типа и формата для их последующей обработки.

Характеристики:

  • Schema-on-Read: структура определяется ВО ВРЕМЯ чтения
  • Любые данные: structured, semi-structured, unstructured
  • ELT-ориентированный: загружаем сырые данные, трансформируем позже
  • Дешевле хранения: объёмное, массовое хранилище
  • Гибкость: легко добавлять новые источники

Примеры:

  • S3 (AWS)
  • GCS (Google Cloud)
  • HDFS
  • Azure Data Lake Storage

Таблица сравнения

КритерийData WarehouseData Lake
СтруктураСтруктурированнаяЛюбая
СхемаSchema-on-WriteSchema-on-Read
ПроцессETLELT
Скорость запросовБыстроМедленнее
СтоимостьВышеНиже
Качество данныхВысокоеМожет быть низким
ГибкостьНизкаяВысокая
Лучше дляАналитики, отчётыML, Data Science

Архитектурный пример

Источники данных → Data Lake (S3) / Data Warehouse (BigQuery) → Spark/Airflow ETL → Analytical Results

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

Подход с Data Lake:

# 1. Загружаем сырые JSON логи в S3
s3://raw-data/2024-03-21/clicks.json

# 2. Позже их обрабатываем Spark
df = spark.read.json('s3://raw-data/**/*.json')
df = df.filter(df.timestamp > '2024-01-01')
df = df.select('user_id', 'event_type', 'amount')
df.write.parquet('s3://processed-data/events')

Подход с Data Warehouse:

CREATE TABLE events (
    event_id UUID,
    user_id UUID,
    event_type VARCHAR,
    amount DECIMAL,
    timestamp TIMESTAMPTZ
) PARTITION BY DATE(timestamp);

INSERT INTO events VALUES (...);

SELECT event_type, COUNT(*), SUM(amount)
FROM events
WHERE timestamp > NOW() - INTERVAL '30 days'
GROUP BY event_type;

Современный подход: Data Lakehouse

В последние годы появилась гибридная архитектура Lakehouse (озеро + хранилище):

Технологии:

  • Delta Lake (Databricks)
  • Apache Iceberg
  • Apache Hudi

Преимущества:

  • Гибкость Data Lake
  • Скорость Data Warehouse
  • ACID транзакции
  • Time-travel capabilities
from delta.tables import DeltaTable

df.write.format('delta').mode('append').save('/delta/events')
df = spark.read.format('delta').option('versionAsOf', 10).load('/delta/events')

Итого

Data Warehouse для структурированной аналитики и отчётности. Data Lake для гибкого хранилища сырых данных. Лучшая практика — использовать оба в медальонной архитектуре: bronze (сырье) → silver (очищенно) → gold (аналитика).

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