LakehouseIcebergTrinoClickHouseDWHархитектура

Lakehouse 2026: Iceberg + Trino + ClickHouse — 4-зонная архитектура DWH

2026-06-02 12 мин

«Kimball vs Inmon vs Data Vault» — это спор 2015 года. В 2026 топ-компании используют 4-зонную lakehouse-архитектуру: Iceberg как storage, Trino как query engine, ClickHouse как hot-storage real-time. Это работает на петабайтах, дешевле Snowflake/BigQuery в 5-10×, и переехало в продакшен Cian, Avito, X5 Tech.

Этот гайд — что внутри 4-зонной архитектуры, кому она нужна, как мигрировать.


Что не так со старыми архитектурами

ПодходПроблема в 2026
Kimball star schemaДорого для real-time, негибко для new фич
Inmon EDWМесяцы на запуск новой витрины
Data Vault 2.0Сложно для аналитиков, нужен dedicated DE
Single-DB (PostgreSQL ETL)Падает на 500M+ rows
Snowflake/BigQuery$100K+/мес для mid-cap, vendor lock-in

Lakehouse решает: object storage (S3/MinIO/Yandex Cloud Storage) хранит данные в открытом формате (Iceberg/Hudi/Delta), любой query engine — Trino, Spark, ClickHouse, DuckDB — читает без копирования.


4 зоны архитектуры

Архитектура читается сверху вниз. Каждая зона read-only для следующей.

Flow: Zone 1 (RAW) → Zone 2 (STAGING) → Zone 3 (MARTS) → Zone 4 (HOT). Immutable lineage — можно пересчитать любую marta снова из RAW.


Apache Iceberg — основа storage layer

Iceberg — table format (не СУБД). Хранит метадату о Parquet-файлах на S3. Что даёт:

-- Создание Iceberg table в Trino
CREATE TABLE iceberg.analytics.events (
    event_id BIGINT,
    user_id BIGINT,
    event_ts TIMESTAMP,
    event_type VARCHAR,
    payload VARCHAR
) WITH (
    location = 's3://datalake/events/',
    partitioning = ARRAY['day(event_ts)'],
    format = 'PARQUET'
);

Подробнее про Iceberg vs Delta vs Hudi — в нашем посте.


Trino — query engine на S3/Iceberg

Trino (раньше Presto) — distributed SQL engine, который читает Iceberg + Hudi + Delta + Postgres + MySQL + Kafka одним SQL-запросом.

-- Federation: JOIN между Iceberg и PostgreSQL без копирования
SELECT
    e.event_type,
    COUNT(DISTINCT e.user_id) AS uniq_users,
    p.product_name
FROM iceberg.analytics.events e
JOIN postgres.crm.products p ON e.product_id = p.id
WHERE e.event_ts >= CURRENT_DATE - INTERVAL '7' DAY
GROUP BY e.event_type, p.product_name;

Когда Trino > ClickHouse:

Когда ClickHouse > Trino:


Шаг 1: где какой engine

Источник данных:
├─ Kafka stream → Iceberg (raw zone)
├─ PostgreSQL CDC → Iceberg (raw zone)
└─ Внешние API (logs/events) → S3 Parquet → Iceberg

Трансформации:
├─ Staging: Trino + dbt (читает Iceberg, пишет в Iceberg)
└─ Marts: Trino + dbt (агрегации, SCD2)

Read:
├─ Аналитик BI dashboard → ClickHouse (real-time)
├─ Аналитик ad-hoc SQL → Trino
├─ ML feature engineering → Spark + Iceberg
└─ Pipeline ETL → Airflow + Trino

Шаг 2: ClickHouse как hot-layer

Mart-таблицы из Iceberg зеркалируются в ClickHouse каждые 5-15 минут через materialized view или Airflow.

-- В ClickHouse: hot-mirror Iceberg-таблицы
CREATE TABLE events_hot (
    event_id UInt64,
    user_id UInt64,
    event_ts DateTime64 CODEC(Delta, ZSTD(3)),
    event_type LowCardinality(String),
    payload String CODEC(ZSTD(3))
) ENGINE = MergeTree
PARTITION BY toYYYYMM(event_ts)
ORDER BY (event_ts, user_id)
TTL event_ts + INTERVAL 30 DAY;  -- хранение только 30 дней

-- Refresh из Iceberg через Iceberg engine (CH 24.1+)
INSERT INTO events_hot
SELECT * FROM iceberg('s3://datalake/events/', 'AKEY', 'SKEY')
WHERE event_ts >= now() - INTERVAL 15 MINUTE;

Подробнее про CH CODEC — в гайде LZ4/ZSTD/Delta/T64.


Шаг 3: миграция с Snowflake / BigQuery

Если у тебя уже Snowflake на $50K+/мес — миграция на Lakehouse экономит 70-80%. Reality check: проект на 6-12 мес.

PhaseЧто делаетсяВремя
1. AuditСписок всех таблиц + queries2-4 нед
2. Iceberg layerПерелить raw → S3 + Iceberg4-8 нед
3. Trino setupПоднять Trino cluster, тестировать queries3-6 нед
4. ClickHouse hot-mirrorTop-20 dashboards в CH4-8 нед
5. dbt rewriteПереписать модели на Iceberg dialect8-12 нед
6. Параллельный run + cutoverA/B comparing → переключение4-6 нед

Шаг 4: troubleshooting

Проблема 1: Iceberg slow на mass-delete

Iceberg хранит manifest-файлы. Большие DELETE создают много manifests → slow read. Фикс: OPTIMIZE TABLE периодически (compaction).

Проблема 2: Trino + S3 latency

Каждый query идёт через S3 list/get. Локальная сеть → 50-100ms на listObjects. Фикс: Trino с local SSD cache (через CacheService), Iceberg metadata cache.

Проблема 3: ClickHouse out-of-sync с Iceberg

Hot-mirror отстаёт на 15 мин. Реал-time дашборды показывают неточное. Фикс: либо streaming (Kafka direct в CH), либо приём «UI кэширует с TTL 15 мин».

Проблема 4: dbt + Iceberg — slower than warehouse

dbt model на 1B rows на Iceberg может занимать 30-60 мин (vs 5-10 мин на Snowflake). Фикс: incremental models (см. dbt incremental гайд), partitioning по date.


Подводные камни

Грабли 1: «Lakehouse решит все проблемы»

Lakehouse — infra-инвестиция. Без хорошего dbt-проекта и качественной модели данных это просто дороже старого DWH (так как нужно держать Iceberg + Trino + ClickHouse).

Грабли 2: Iceberg vs Delta vs Hudi — выбирать рано

В 2026 Iceberg выигрывает (Snowflake, Databricks, Athena, Trino — все поддерживают). Hudi уходит вниз. Delta — лучший если у тебя Databricks.

Грабли 3: «без DE можно»

Нет. Для production Lakehouse нужны:

Если меньше — будут downtime'ы. Подробнее про DE-карьеру — в аналитик → DE roadmap.

Грабли 4: dataset size

Lakehouse имеет смысл от 5TB+. Меньше — overkill, лучше Snowflake/BigQuery или классический CH-only. Подробнее про DuckDB для startup'ов с < 5TB — в polars vs pandas гайде.


Частые вопросы

Iceberg или Delta?

Iceberg — open, не привязан к Databricks. Delta — лучше если ты уже на Databricks. В 2026 Iceberg выигрывает за счёт adoption у major vendors (Snowflake, AWS Athena, Trino, ClickHouse).

Trino или Presto?

Trino — это и есть Presto (форк после конфликта Facebook ↔ founders). В 2026 Trino — mainstream, Presto постепенно уходит.

Можно ли без S3?

Можно: MinIO (S3-compatible) on-prem, Yandex Cloud Storage в РФ, локальный HDFS. Iceberg storage-agnostic.

Сколько стоит Lakehouse на 10TB?

Self-hosted (S3 + Trino + CH на Kubernetes) — $5-15K/мес. Managed (AWS S3 + Athena + Snowflake) — $30-60K/мес. Сравни с Snowflake-only на 10TB — $80-150K/мес.

Где learn Iceberg + Trino?

Trino docs (trino.io), Iceberg docs (iceberg.apache.org), Habr статьи Cian/Avito про их Iceberg-migration. Pet-проект — поднять Trino + Iceberg в docker-compose, перелить open data (NYC Taxi).


Что дальше

Если хочешь практику — попробуй SQL-тренажёр с автопроверкой (5 задач бесплатно). DE-собес часто включает Iceberg/Trino-вопросы — там настоящий PostgreSQL 16, можно отрабатывать SQL deep dive.

Готов к собеседованиям? AI-интервью задаёт реальные DE-вопросы (system design, ETL дизайн, lakehouse архитектура). В Pro — безлимит мок-собесов + 491 SQL-задача + 612 тестовых заданий + 50+ блог-постов.

Смежные посты

Сравнить Free и Pro → (1999₽/мес, экономит часы рутины)

Источники

SQL-тренажёр
Тренируйся в SQL: настоящий PostgreSQL 16 + SQLite. 491 задача с автопроверкой, первые 5 бесплатно.
Открыть тренажёр →