Iceberg это табличный формат поверх файлов в озере (Parquet в S3/HDFS): таблица с схемой, атомарными транзакциями, версиями (снимками), эволюцией схемы и партиций, скрытым партиционированием и возможностью обновлять и удалять строки. Trino (бывший Presto) это распределённый SQL-движок, который выполняет запросы к Iceberg, Hive, Postgres, Kafka и другим источникам без копирования данных, с интерактивной задержкой. Вместе они дают lakehouse: дешёвое хранение в S3 и SQL поверх него.
Три уровня. Файл метаданных таблицы (metadata.json): схема, спецификация партиций, список снимков и текущий снимок. Manifest list на снимок: список manifest-файлов со статистикой по партициям. Manifest: список файлов данных с их партициями, числом строк и min/max по колонкам. Каталог (Hive Metastore, Glue, REST, Nessie) хранит только указатель на текущий metadata.json, и подмена указателя это атомарный коммит.
dbt это инструмент трансформаций внутри хранилища (ELT): модели как SQL-файлы с SELECT, dbt сам создаёт таблицы и представления, строит граф зависимостей по ref(), запускает в правильном порядке, тестирует (unique, not_null, relationships), документирует. Lineage получается из ref() автоматически: граф моделей от источников до витрин, видно, что сломается при изменении таблицы, и можно пересчитать только зависимые модели.