Выбор ответа Senior Хранилища: OLTP, OLAP, DWH, lakehouse обновлено

Time travel и хранение старых версий

Вопрос

Команда включила time travel в Iceberg и через полгода обнаружила, что объём хранилища вырос втрое, хотя данных почти не добавилось. В чём дело?

Попробуйте сами

Выберите вариант, и откроется разбор.

Показать ответ и разбор

Коротко

Правильный ответ: Старые снапшоты держат файлы, заменённые обновлениями и компакцией; нужна очистка снапшотов. Каждая запись создаёт новый снапшот, а файлы, на которые ссылаются старые снапшоты, нельзя удалить, пока снапшоты живы.

Варианты ответа

  1. Iceberg по умолчанию хранит каждую таблицу в трёх копиях для отказоустойчивости снапшотов
  2. Time travel дублирует прочитанные файлы при каждом SELECT, чтобы зафиксировать версию
  3. Старые снапшоты держат файлы, заменённые обновлениями и компакцией; нужна очистка снапшотовправильный ответ
  4. Parquet разжимает данные при чтении и сохраняет их обратно в несжатом виде для скорости

Разбор

Каждая запись создаёт новый снапшот, а файлы, на которые ссылаются старые снапшоты, нельзя удалить, пока снапшоты живы. При частых MERGE и компакциях объём растёт. Решение: процедуры expire snapshots и удаление orphan files по политике хранения. Тройного копирования формат не делает (это может быть свойство хранилища, но не Iceberg). SELECT ничего не пишет. Parquet не перезаписывает файлы при чтении.

Ответьте сами, а не прочитайте

В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.