TGViewer
DataДжунгли🌳 DataДжунгли🌳 @data_jungle · 286 subscribers
Post #113 387
⚡️ Apache Iceberg: ACID на S3 и конец vendor lock-in 🧊

В прошлом посте разобрал, почему compute уехал отдельно от storage. Остался висящий хвост: данные в S3, а как там делать UPDATE, откатить кривой DAG, поменять схему без перезаливки 50 ТБ?
В DWH за это отвечала база. В озере на S3 — никто. До Iceberg.

🦖 Жизнь до этого: Hive
Hive table format = «папка в S3 это таблица, подпапки — партиции». Метаданные — только список путей.

Что не так:🔴

• Никакого ACID. Пайплайн упал на середине — читатели видят битые данные.
• Schema evolution через боль. Поменять тип колонки = переписать таблицу.
• Партиции зашиты в путь. Сменить схему партиционирования — перезаливай всё.
• Planner делает LIST по S3. На миллионе партиций умирает.
• UPDATE/DELETE нет. GDPR-удаление = читай партицию, фильтруй, перезаписывай.

☁️ Что сделал Iceberg

Не движок и не сторадж. Спецификация метаданных поверх обычных Parquet.
Слои:
- Каталог (Glue/Polaris/Unity/Nessie) — указатель на текущий metadata.json.
- metadata.json — схема, партиции, список снапшотов.
- Manifest list → manifest → data files (Parquet) со статистикой по колонкам.

Любая запись = новый metadata.json + атомарная замена указателя в каталоге. Старые файлы остаются. На этом построено всё:

🟢 ACID. Запись видна целиком или не видна. Конкуренция разруливается через optimistic concurrency на уровне каталога.
🟢 Time travel. SELECT ... FOR VERSION AS OF 12345. Откат на снапшот без бэкапов.
🟢 Schema evolution. Колонки идентифицируются по ID, переименование/смена типа — правка metadata.json, данные не трогаются.
🟢 Hidden partitioning. Партиции в метаданных. Меняешь day → hour через ALTER, старые данные не переписываешь.
🟢 Pruning без LIST. Planner читает manifest и сразу знает нужные файлы.
🟢 Branching/tagging как в git.

🛠 Что это значит для DE

Vendor lock-in мёртв. Один датасет в S3 одновременно читают Snowflake, Databricks, Trino, DuckDB, BigQuery — и видят одно и то же.
Война форматов закончилась. Snowflake купил Tabular, Databricks open-source-нул Unity Catalog, AWS выкатил S3 Tables (это Iceberg под капотом).
Индустрия сошлась на одном формате впервые за 15 лет.

⚖️ Где не подходит

• OLTP не закроет: каждая запись = коммит в каталог, это десятки миллисекунд. Частые мелкие апдейты убьют через write amplification.

Iceberg для аналитики, истории, ML-фич, маркетов — то есть 80% работы DE.
Используете в проде? На каком каталоге — Glue, Unity, Polaris, своё? Делитесь в комментах 👇

#data_engineering #iceberg #lakehouse #s3 #dj_architecture #DataJungle
  • 👍 4
  • ❤ 3
  • 🔥 2
More from @data_jungle
  1. Sep 29, 2026Мы уже проводим не первое интервью кандидатов на работе и вот что я могу посоветовать вам…
  2. Sep 11, 2026Неужели литкод это начало конца ? Google сменил стратегию интервью:) Что думаете обсудим ?
  3. Sep 1, 2026Всем привет 👋 Очень советую посмотреть это видео на ютубчике. Всегда с большим интересом…
  4. Aug 7, 2026🔍 Как читать план запроса: EXPLAIN, оценки и почему оптимизатор врёт #SQLWednesday В пост…
  5. Aug 3, 2026🧱 Parquet под капотом: почему «размер файла имеет значение» Мы шли сверху вниз: разделили…
  6. Jul 31, 2026🏝️ Gaps & Islands: как из потока событий собрать сессии одним оконным трюком #SQLWednesda…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →