«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 для следующей.
- Zone 1 — RAW (S3/MinIO + Iceberg): сырые данные из источников. Append-only, partitioned by date. Engines: Kafka Connect, Debezium, Spark Streaming.
- Zone 2 — STAGING (Iceberg + dbt): deduplicated, schema-validated. Технические трансформации (cast, rename). Engine: Trino + dbt.
- Zone 3 — MARTS (Iceberg + dbt): бизнес-логика, агрегации. Daily/Hourly refresh. Engine: Trino + dbt + Spark.
- Zone 4 — HOT (ClickHouse mirror): sub-second queries для real-time dashboards. Subset of MARTS, refresh каждые 5-15 мин. Engine: ClickHouse.
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. Что даёт:
- Schema evolution — добавить/удалить колонку без переписывания файлов
- Time travel —
SELECT * FROM events FOR VERSION AS OF 1234567 - Partition evolution — поменять партиционирование без миграции
- ACID транзакции — на object storage
- Hidden partitioning — пользователь не видит partition keys, optimizer сам подставляет
-- Создание 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:
- Federation (joins из разных источников)
- Ad-hoc queries (один раз, не на dashboard)
- Большие batch processing
Когда ClickHouse > Trino:
- Real-time dashboards (sub-second)
- High concurrency (1000+ users)
- Простые агрегации по дате
Шаг 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 | Список всех таблиц + queries | 2-4 нед |
| 2. Iceberg layer | Перелить raw → S3 + Iceberg | 4-8 нед |
| 3. Trino setup | Поднять Trino cluster, тестировать queries | 3-6 нед |
| 4. ClickHouse hot-mirror | Top-20 dashboards в CH | 4-8 нед |
| 5. dbt rewrite | Переписать модели на Iceberg dialect | 8-12 нед |
| 6. Параллельный run + cutover | A/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 нужны:
- 1 Senior DE (архитектура, troubleshooting)
- 1-2 Middle DE (pipelines, dbt)
- 1 SRE / DevOps (Kubernetes, monitoring)
Если меньше — будут 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+ блог-постов.
Смежные посты
- Iceberg vs Delta vs Hudi
- ClickHouse CODEC: LZ4/ZSTD/Delta/T64
- ClickHouse MV + Projections
- PostgreSQL vs ClickHouse
- dbt macros паттерны
- Аналитик → DE roadmap
Сравнить Free и Pro → (1999₽/мес, экономит часы рутины)
Источники
- Habr 1035136: «DWH 2026: 4 зоны вместо Inmon/Kimball/Data Vault»
- Habr 1022460: «Airflow + ClickHouse вытесняет Airflow + PostgreSQL»
- Habr 991588: «Medallion в ClickHouse»
- Iceberg Docs: «Table format spec» (iceberg.apache.org)
- Trino Docs: «Federation» (trino.io/docs/current)
- Cian Tech: «Iceberg + ClickHouse» (habr.com/859484)