"Iceberg для БАБУШЕК! Очень коротко и прямо, чтобы даже ваш сосед-алкаш понял. Айсберг это надстройка над S3 хранилищем. Само S3 считайте это как Яндекс Диск, куда мы складываем файлики и папочки. Можно зайти и посмотреть, что у нас там хранится. Например когда мы записываем данные в S3, то это просто создается папочка и туда складываются CSV, Parquet и так далее. А когда мы настроим над S3 еще и Iceberg, то у нас создается папки data и metadata. В папку data складываются сами данные. В папку metadata складываются файлики с метаинформацией. Что за метаинформация? Там есть три вида файликов: один .json и два файлика .avro. Они просто описывают, из чего состоит наша таблица (схема, снепшоты, изменения и так далее). По факту, когда мы записываем все новые данные в таблицу, то в папке metadata постоянно создаются новые файлики меты. Т.е. буквально ""чихнули в таблицу — получили три файлика"". Зачем так много файликов? Фишка айсберга в том, что он записывает себе в метаданные вообще все изменения. Записали данные, удалили, изменили — все это он знает. Поэтому мы можем в любой момент откатиться на предыдущую версию таблицы или вообще на любую другую, которая когда-либо была. Это буквально путешествие во времени. Ну например вы что-то не то удалили из таблицы.. Можно откатиться. А что еще? Как вы знаете, если просто записывать в голый S3 паркеты, то операции DELETE или UPDATE там не работают. Либо ты перезаписываешь целый файл, либо придумывай что-то другое. А в айсберге можно писать, как в SQL методы UPDATE и DELETE. Ведь, как я сказал, он запоминает любой чих и вздох и просто делает у себя пометочки, что такие-то строчки были удалены и изменены. Какие есть проблемы? Ну раз он такой крутой и класный, то есть и нюансы. Например если мы часто делаем вставки, обновления и удаления из таблицы, то копится много метаинформации + при удалении у нас добавляются, так называемые, ""delete файлики"". Они там используются, чтобы при чтении данных вычеркивать те строки, которые мы когда-то удалили. И В ЧЕМ ПРОБЛЕМА? (на самом деле там есть два вида хранения CopyOnWrite и MergeOnRead — это для душнил) Короче проблема в том, что копится реально куча мелких файликов. Это все потом влияет на скорость чтения. Поэтому в айсберге придумали всякие фишки, которые позволяют удалять и компактить файлы с данными и метой. Главное про это не забывать! Что еще? В айсберге можно, как в гитхабе создавать ветки. Т.е. буквально ветка main это ваша главная версия таблицы. А можно создать ветку рядом и работать с таблицей, как угодно ее менять и это никак не будет аффектить на главную ветку. Ну и дальше по аналогии с гитом. Конечно есть еще больше функционала, но он уже слишком для этого поста. ——— Мы в Bootcamp уже настроили Iceberg в S3 и даже есть ГОТОВЫЙ Jupyter Notebook, чтобы протестировать! Записаться и попасть уже в чат можно тут - @bootcampych_bot"