Learning Platform
Troubleshooting
Глоссарий

Глоссарий — Modern storage formats

Справочник ключевых терминов курса Modern storage formats.

10 категорий · 66 терминов

Файловые форматы

Parquet

Apache Parquet
Термин

Колоночный файловый формат хранения, де-факто стандарт для аналитических рабочих нагрузок в data lake. Организует данные в Row Group → Column Chunk → Page иерархию. Поддерживает предикатную фильтрацию через min/max статистику, Bloom-фильтры и эффективные кодировки (PLAIN, DICTIONARY, DELTA_BINARY_PACKED).

Пример:
import pyarrow.parquet as pq

# Чтение с предикатной фильтрацией
table = pq.read_table(
    'data.parquet',
    filters=[('year', '>=', 2024)]
)

# Запись с настройкой Row Group
pq.write_table(
    table, 'output.parquet',
    row_group_size=1_000_000
)
Подробнее в уроках:

Row Group

Row Group
Термин

Горизонтальная партиция данных в Parquet-файле — набор строк, хранящихся вместе. Каждый Row Group содержит Column Chunk для каждой колонки. Типичный размер — 128 MB (по умолчанию в Spark). Row Group определяет единицу параллельного чтения и уровень предикатной фильтрации.

Подробнее в уроках:

Column Chunk

Column Chunk
Термин

Фрагмент данных одной колонки внутри Row Group. Column Chunk состоит из одной или нескольких Pages и хранит статистику (min, max, null_count) для предикатной фильтрации. Каждый Column Chunk кодируется независимо — можно использовать оптимальную кодировку для каждой колонки.

Подробнее в уроках:

Page

Parquet Page
Термин

Минимальная единица ввода-вывода в Parquet. Data Page содержит закодированные и сжатые значения одной колонки. Dictionary Page хранит словарь для DICTIONARY-кодировки. Размер страницы (по умолчанию 1 MB) влияет на гранулярность чтения и эффективность column index.

Подробнее в уроках:

ORC

Optimized Row Columnar
Термин

Колоночный файловый формат, созданный в экосистеме Hadoop/Hive. Организует данные в Stripes (аналог Row Groups). Поддерживает ACID-транзакции через Hive, встроенные индексы (Row Index, Bloom Filter Index) и лёгковесную компрессию (ZLIB, Snappy, LZO, ZSTD).

Пример:
-- Создание ORC таблицы в Hive
CREATE TABLE events (
    event_id BIGINT,
    event_type STRING,
    timestamp TIMESTAMP
) STORED AS ORC
TBLPROPERTIES (
    'orc.compress'='ZSTD',
    'orc.stripe.size'='67108864'
);
Подробнее в уроках:

Stripe

ORC Stripe
Термин

Горизонтальная партиция данных в ORC-файле, аналог Row Group в Parquet. Каждый Stripe содержит Stream-ы для каждой колонки и собственный индекс. Типичный размер — 64 MB. Stripe включает Stripe Footer с метаданными для эффективного пропуска при чтении.

Подробнее в уроках:

Avro

Apache Avro
Термин

Строковый формат сериализации с встроенной схемой. Данные хранятся в Object Container File, разделённом на блоки с sync markers. Ключевое преимущество — Schema Resolution: читатель может использовать схему, отличную от схемы записи, что обеспечивает эволюцию схемы без перезаписи данных.

Пример:
from avro.datafile import DataFileReader, DataFileWriter
from avro.io import DatumReader, DatumWriter
import avro.schema

schema = avro.schema.parse(open('user.avsc').read())
writer = DataFileWriter(
    open('users.avro', 'wb'),
    DatumWriter(), schema
)
writer.append({'name': 'Alice', 'age': 30})
writer.close()
Подробнее в уроках:

Dremel-кодирование

Dremel Encoding
Термин

Метод представления вложенных структур (nested data) в колоночном формате, разработанный в Google Dremel. Использует Repetition Level и Definition Level для кодирования иерархии без потери структуры. Применяется в Parquet для хранения вложенных полей (list, map, struct).

Подробнее в уроках:

Сериализация

Protocol Buffers

Protocol Buffers (Protobuf)
Термин

Бинарный формат сериализации от Google для межсервисного обмена данными. Использует .proto-файлы для описания схемы и генерации кода. Wire format основан на tag-length-value кодировании с varint для целых чисел. Поддерживает прямую и обратную совместимость через номера полей.

Пример:
// user.proto
syntax = "proto3";

message User {
    int64 id = 1;
    string name = 2;
    repeated string tags = 3;
}
Подробнее в уроках:

Thrift

Apache Thrift
Термин

Фреймворк сериализации и RPC от Facebook (Meta). Поддерживает несколько протоколов сериализации: BinaryProtocol, CompactProtocol, JSONProtocol. CompactProtocol использует ZigZag и varint кодирование, аналогично Protobuf. Широко используется в Hive, Impala и внутренних сервисах Meta.

Подробнее в уроках:

MessagePack

MessagePack
Термин

Компактный бинарный формат сериализации, совместимый по типам с JSON, но значительно меньше по размеру. Не требует схемы — self-describing формат. Используется в Redis, Fluentd, msgpack-rpc. Занимает нишу между JSON (читаемость) и Protobuf (производительность).

Подробнее в уроках:

Varint

Variable-length Integer
Термин

Кодировка целых чисел переменной длины: маленькие значения занимают 1 байт, большие — до 10. Используется в Protobuf, Thrift CompactProtocol и ORC. Каждый байт использует 7 бит для данных и 1 бит-маркер продолжения (MSB). Экономит место при хранении данных с преобладанием малых значений.

Подробнее в уроках:

Schema Resolution

Schema Resolution
Термин

Процесс сопоставления схемы записи (writer schema) и схемы чтения (reader schema) в Avro. Позволяет читать данные, записанные с другой версией схемы: добавленные поля получают значения по умолчанию, удалённые поля игнорируются. Основа эволюции схемы без перезаписи данных.

Подробнее в уроках:

CSV

Comma-Separated Values
Термин

Текстовый формат хранения табличных данных, где значения разделены запятыми (или другим разделителем). Не имеет встроенной схемы, типов данных или сжатия. Несмотря на ограничения (RFC 4180 не покрывает все edge cases), остаётся универсальным форматом обмена данными.

Подробнее в уроках:

Apache Arrow

Arrow Memory Layout

Arrow Columnar Memory Format
Термин

Стандартизированный формат хранения колоночных данных в оперативной памяти. Каждый столбец хранится как набор буферов: validity buffer (битовая маска NULL), offset buffer (для строк и списков) и data buffer. Фиксированное расположение позволяет zero-copy обмен между процессами и языками.

Подробнее в уроках:

Arrow IPC

Arrow Inter-Process Communication
Термин

Формат передачи Arrow-данных между процессами. Streaming IPC — последовательные Schema + RecordBatch сообщения, File IPC (Feather v2) — произвольный доступ с footer. Данные передаются без сериализации/десериализации (zero-copy), если выравнивание совпадает.

Подробнее в уроках:

Feather

Feather Format (v2)
Термин

Файловый формат для быстрого обмена DataFrame между Python (pandas/polars) и R. Feather v2 — это Arrow IPC File Format с опциональным LZ4/ZSTD сжатием. Оптимизирован для максимальной скорости чтения/записи, а не для долговременного хранения.

Подробнее в уроках:

Arrow Flight

Arrow Flight Protocol
Термин

Высокопроизводительный RPC-протокол поверх gRPC для потоковой передачи Arrow-данных по сети. Flight передаёт RecordBatch в формате Arrow IPC без десериализации на промежуточных узлах. Поддерживает параллельные потоки через FlightEndpoint и авторизацию через middleware.

Подробнее в уроках:

Zero-copy

Zero-copy Data Access
Термин

Техника доступа к данным без копирования из одного буфера в другой. Arrow обеспечивает zero-copy через стандартизированный memory layout: процесс-получатель работает напрямую с буферами отправителя. Требует одинакового выравнивания (8-byte alignment) и порядка байт (little-endian).

Подробнее в уроках:

RecordBatch

Arrow Record Batch
Термин

Единица данных в Arrow — набор столбцов (arrays) одинаковой длины, объединённых общей схемой. RecordBatch — основная единица передачи в IPC и Flight, единица обработки в DataFusion, DuckDB и Polars. Типичный размер — 8K-64K строк.

Подробнее в уроках:

Кодировки и сжатие

Dictionary Encoding

Dictionary Encoding
Термин

Кодировка, заменяющая повторяющиеся значения индексами в словаре. Эффективна при низкой кардинальности (< 10K уникальных значений). Используется в Parquet (PLAIN_DICTIONARY), ORC и Arrow. Размер словаря ограничен размером Data Page — при переполнении Parquet переключается на PLAIN.

Пример:
# Parquet Dictionary Encoding
# Данные: ['RU','US','RU','DE','RU','US']
# Словарь: {0:'RU', 1:'US', 2:'DE'}
# Индексы: [0, 1, 0, 2, 0, 1]
# Экономия: 6 строк → 3 записи + 6 индексов
Подробнее в уроках:

Run-Length Encoding

Run-Length Encoding (RLE)
Термин

Кодировка, заменяющая последовательности одинаковых значений парой (значение, длина серии). В Parquet используется гибрид RLE/Bit-Packing для Repetition/Definition Levels и словарных индексов. Эффективна для отсортированных данных и колонок с длинными сериями.

Подробнее в уроках:

Delta Encoding

Delta Encoding
Термин

Кодировка, хранящая разности между последовательными значениями вместо абсолютных. Идеальна для монотонно растущих данных (timestamps, auto-increment ID). В Parquet реализована как DELTA_BINARY_PACKED (целые) и DELTA_LENGTH_BYTE_ARRAY (строки переменной длины).

Подробнее в уроках:

BtrBlocks

BtrBlocks
Термин

Система кодирования из TU Munich, автоматически выбирающая оптимальную схему кодирования для каждого блока данных. Использует sampling и cost model для выбора из пула кодировок (RLE, Dictionary, FOR, Bit-Packing, Pseudodecimal). Показывает 2-4x лучшее сжатие по сравнению с Parquet при сопоставимой скорости декодирования.

Подробнее в уроках:

FastLanes

FastLanes
Термин

Фреймворк кодирования из CWI Amsterdam, оптимизирующий Bit-Packing и Delta для SIMD-инструкций. Ключевая идея — унифицированный транспоз, позволяющий обрабатывать 1024 значения за одну SIMD-операцию независимо от ширины бит. Достигает пропускной способности 30-40 GB/s на современных CPU.

Подробнее в уроках:

ALP

Adaptive Lossless floating-Point compression
Термин

Алгоритм сжатия чисел с плавающей запятой из CWI Amsterdam (авторы DuckDB). Использует наблюдение, что реальные float-данные часто имеют короткое десятичное представление. ALP находит множители 10^e и 10^f для приведения float к целым, затем применяет целочисленное сжатие.

Подробнее в уроках:

FSST

Fast Static Symbol Table
Термин

Алгоритм сжатия строк из CWI Amsterdam. Строит символьную таблицу из 255 частотных подстрок (1-8 байт) и заменяет вхождения однобайтовыми кодами. Обеспечивает декомпрессию со скоростью >5 GB/s и совместимость с SIMD-фильтрацией без полной декомпрессии.

Подробнее в уроках:

Bit-Packing

Bit-Packing
Термин

Кодировка, хранящая каждое значение в минимальном количестве бит. Если максимальное значение в колонке — 15, достаточно 4 бит вместо 32. В Parquet используется совместно с RLE (гибридная RLE/Bit-Packing кодировка). FastLanes оптимизирует Bit-Packing для SIMD-обработки.

Подробнее в уроках:

Эволюция схемы

Эволюция схемы

Schema Evolution
Термин

Способность формата или системы обрабатывать данные, записанные с предыдущими версиями схемы, без перезаписи. Включает добавление/удаление колонок, переименование, изменение типов. Разные форматы поддерживают разные уровни: Avro — через Schema Resolution, Parquet — через merge схем, Iceberg — через Column ID.

Подробнее в уроках:

Обратная совместимость

Backward Compatibility
Термин

Свойство схемы: новый читатель может прочитать данные, записанные старым писателем. В Avro достигается через default-значения для новых полей. В Confluent Schema Registry это проверяется автоматически при регистрации новой версии схемы.

Подробнее в уроках:

Schema Registry

Schema Registry
Термин

Централизованный сервис для хранения, версионирования и валидации схем данных. Confluent Schema Registry — стандарт для Kafka: producer и consumer регистрируют/получают схемы по ID. Обеспечивает контроль совместимости при эволюции. Альтернативы: AWS Glue Schema Registry, Apicurio.

Подробнее в уроках:

Прямая совместимость

Forward Compatibility
Термин

Свойство схемы: старый читатель может прочитать данные, записанные новым писателем. Достигается, когда новая версия только удаляет опциональные поля или добавляет поля с default-значениями в старой схеме. Требуется при rolling updates, когда старые consumer-ы работают одновременно с новыми producer-ами.

Подробнее в уроках:

Полная совместимость

Full Compatibility
Термин

Комбинация прямой и обратной совместимости: и старые, и новые читатели могут обрабатывать и старые, и новые данные. Самый строгий уровень, гарантирующий безопасные rolling updates в обоих направлениях. В Confluent Schema Registry задаётся как FULL или FULL_TRANSITIVE.

Подробнее в уроках:

Column ID

Column ID
Термин

Уникальный числовой идентификатор колонки в Apache Iceberg. В отличие от Parquet (привязка по имени) или Avro (привязка по позиции), Iceberg использует Column ID для отслеживания колонок при переименовании и реорганизации. Это обеспечивает безопасное переименование без перезаписи данных.

Подробнее в уроках:

Delta Lake

Delta Log

Delta Transaction Log
Термин

Журнал транзакций Delta Lake — директория _delta_log/ с JSON-файлами (.json) и контрольными точками (.checkpoint.parquet). Каждый коммит создаёт новый JSON-файл с actions (add, remove, metadata, protocol). Delta Log обеспечивает ACID-транзакции, time travel и конкурентный доступ.

Подробнее в уроках:

Checkpoint

Delta Checkpoint
Термин

Контрольная точка Delta Lake — Parquet-файл со снимком состояния таблицы на определённую версию. Создаётся каждые 10 коммитов (по умолчанию). При чтении таблицы Delta читает последний checkpoint и применяет более поздние JSON-коммиты, что ускоряет start-up при большом числе коммитов.

Подробнее в уроках:

Z-Ordering

Z-Order Clustering
Термин

Метод кластеризации данных в файлах Delta Lake по нескольким колонкам одновременно. Использует Z-кривую (кривую Мортона) для интерливинга битов нескольких колонок, обеспечивая co-locality по всем измерениям. Значительно ускоряет запросы с фильтрами по нескольким колонкам — data skipping пропускает больше файлов.

Пример:
-- Delta Lake Z-Ordering
OPTIMIZE events ZORDER BY (country, event_type);

-- delta-rs (Python)
dt = DeltaTable('s3://bucket/events')
dt.optimize.z_order(['country', 'event_type'])
Подробнее в уроках:

Change Data Feed

Change Data Feed (CDF)
Термин

Механизм Delta Lake для отслеживания изменений (insert, update, delete) между версиями таблицы. При включённом CDF Delta записывает дополнительные файлы _change_data/ с метаданными изменений. Используется для инкрементальной обработки и CDC-пайплайнов.

Подробнее в уроках:

Delta Kernel

Delta Kernel
Термин

Библиотека для чтения/записи Delta Lake без привязки к Spark. Delta Kernel предоставляет стандартизированный API для построения коннекторов к Delta-таблицам на любом движке (Flink, Trino, Presto). Устраняет проблему дублирования логики транзакций в каждом коннекторе.

Подробнее в уроках:

UniForm

Delta UniForm
Термин

Функция Delta Lake, автоматически генерирующая метаданные Iceberg и Hudi при записи. Позволяет читать Delta-таблицы через Iceberg или Hudi API без конвертации данных. Решает проблему vendor lock-in — данные хранятся как Delta, но доступны через любой табличный формат.

Подробнее в уроках:

Apache Iceberg

Iceberg Catalog

Iceberg Catalog
Термин

Сервис, хранящий указатель на текущий metadata-файл каждой Iceberg-таблицы. Каталог — единственная точка мутации: атомарный swap указателя обеспечивает ACID. Реализации: Hive Metastore, AWS Glue, Nessie, REST Catalog, JDBC Catalog. Выбор каталога определяет concurrent write guarantees.

Подробнее в уроках:

Snapshot

Iceberg Snapshot
Термин

Неизменяемый снимок состояния Iceberg-таблицы в определённый момент. Snapshot указывает на manifest list, который перечисляет manifest-файлы с путями к data-файлам. Цепочка snapshot-ов обеспечивает time travel, а snapshot isolation — конкурентное чтение и запись.

Подробнее в уроках:

Hidden Partitioning

Hidden Partitioning
Термин

Механизм Iceberg, извлекающий partition-значение из данных автоматически через Transform (year, month, day, hour, bucket, truncate). В отличие от Hive-partitioning, пользователь пишет WHERE ts > '2024-01-01', а Iceberg сам определяет, какие партиции пропустить. Partition Evolution позволяет менять схему партиционирования без перезаписи данных.

Подробнее в уроках:

Manifest File

Iceberg Manifest File
Термин

Avro-файл, перечисляющий набор data-файлов с их partition values, column-level min/max статистикой и статусом (added/deleted). Manifest List указывает на manifest-файлы. Двухуровневая структура (manifest list → manifest → data files) позволяет эффективно пропускать нерелевантные data-файлы при фильтрации.

Подробнее в уроках:

Row-level Deletes

Row-level Delete Operations
Термин

Механизмы удаления отдельных строк в Iceberg без перезаписи целых файлов. Position Deletes указывают конкретные (file, row_position) пары. Equality Deletes хранят значения ключей удалённых строк. Iceberg v2 поддерживает оба формата; при чтении merge-on-read объединяет data и delete файлы.

Подробнее в уроках:

Partition Evolution

Partition Evolution
Термин

Возможность Iceberg менять схему партиционирования таблицы без перезаписи существующих данных. Старые файлы сохраняют прежнюю схему, новые файлы используют новую. Iceberg разрешает запросы, охватывающие обе схемы, через metadata-driven planning. Уникальная возможность, отсутствующая в Hive и Delta Lake.

Подробнее в уроках:

Hudi и Paimon

Hudi Timeline

Hudi Timeline
Термин

Упорядоченный журнал всех действий над Hudi-таблицей: коммиты, compaction, cleaning, rollback. Хранится в директории .hoodie/ как файлы с форматом [timestamp].[action].[state]. Timeline обеспечивает конкурентный доступ, time travel и инкрементальные запросы.

Подробнее в уроках:

Copy-on-Write

Copy-on-Write (CoW)
Термин

Тип таблицы Hudi (и Iceberg), где каждое обновление перезаписывает весь файл, содержащий изменённые строки. CoW обеспечивает быстрое чтение (нет merge overhead), но медленную запись при частых обновлениях. Оптимален для read-heavy workloads с редкими обновлениями.

Подробнее в уроках:

Merge-on-Read

Merge-on-Read (MoR)
Термин

Тип таблицы Hudi, где обновления записываются в log-файлы (delta), а объединение с base-файлами происходит при чтении или фоновом compaction. MoR обеспечивает быструю запись за счёт замедления чтения. Оптимален для write-heavy и near-real-time сценариев.

Подробнее в уроках:

Hudi Index

Hudi Indexing
Термин

Подсистема Hudi для маппинга record key → file group. Определяет, в какой файл попадёт обновление записи. Типы: Bloom Index (bloom filter в каждом файле), Simple Index (brute-force), HBase Index (для глобального индексирования), Bucket Index (hash-based, без lookups).

Подробнее в уроках:

Paimon LSM-Tree

Paimon LSM-Tree Storage
Термин

Apache Paimon использует Log-Structured Merge-Tree как основу хранения, в отличие от файл-ориентированных Delta/Iceberg/Hudi. Данные записываются в уровни LSM-дерева, background compaction объединяет уровни. Это обеспечивает высокую скорость записи потоковых данных и эффективные point lookups.

Подробнее в уроках:

Changelog Producer

Paimon Changelog Producer
Термин

Механизм Paimon для генерации потока изменений (changelog) при записи или compaction. Режимы: none, input, lookup, full-compaction. Позволяет downstream-системам (Flink) обрабатывать только изменения, а не полный снимок. Аналог Change Data Feed в Delta Lake.

Подробнее в уроках:

Форматы нового поколения

Lance

Lance Format
Термин

Колоночный формат, оптимизированный для ML и vector search. Ключевая особенность — адресация по fragment + row для быстрого random access к отдельным строкам. Поддерживает версионирование данных, ANN-индексы (IVF-PQ) и append-only запись. Основа LanceDB — embedded vector database.

Подробнее в уроках:

Vortex

Vortex Format
Термин

Формат от Spiral AI, хранящий данные в сжатом виде с возможностью вычислений без декомпрессии (compressed compute). Использует Cascading Encoding — цепочки кодировок, декомпозирующие данные послойно. Поддерживает pushdown операции (filter, take, compare) прямо на сжатых данных.

Подробнее в уроках:

Nimble

Nimble (Meta)
Термин

Формат от Meta, разработанный как эволюция ORC для масштабов data warehouse Meta (эксабайты). Декларативная схема кодирования через EncodingLayout позволяет выбирать оптимальную кодировку для каждого уровня вложенности колонки. Velox-native — интеграция с движком Velox без промежуточных копий.

Подробнее в уроках:

F3

F3 (Meta)
Термин

Формат от Meta с WebAssembly-декодерами: схема кодирования хранится как WASM-модуль внутри файла. Любой читатель с WASM-рантаймом может декодировать данные без знания конкретной кодировки. Это устраняет проблему координации writer-reader при добавлении новых кодировок.

Подробнее в уроках:

Compressed Compute

Compressed Compute
Термин

Подход к обработке данных, при котором операции (filter, aggregate, compare) выполняются непосредственно на сжатых данных без полной декомпрессии. Реализован в Vortex через специализированные compute kernels для каждого типа кодировки. Сокращает memory bandwidth и увеличивает эффективный объём L1/L2 cache.

Подробнее в уроках:

Cascading Encoding

Cascading Encoding
Термин

Техника многослойного кодирования в Vortex: данные проходят через цепочку кодировок (Dict → Delta → BitPack), каждая из которых извлекает определённую закономерность. Конечный результат — максимально компактное представление с сохранением возможности pushdown-операций на каждом уровне.

Подробнее в уроках:

Общие концепции

Lakehouse

Lakehouse Architecture
Термин

Архитектурный подход, объединяющий гибкость data lake (дешёвое объектное хранилище) с ACID-транзакциями и управлением метаданными data warehouse. Реализуется через табличные форматы (Delta Lake, Iceberg, Hudi) поверх S3/GCS/ADLS. Позволяет использовать один storage layer для ETL, BI, ML и streaming.

Подробнее в уроках:

Колоночное хранение

Columnar Storage
Термин

Метод организации данных, при котором значения одной колонки хранятся вместе. Преимущества: эффективное сжатие (однородные данные), column pruning (читаются только нужные колонки), SIMD-friendly обработка. Парадигма Parquet, ORC и Arrow. Оптимально для аналитических (OLAP) запросов.

Подробнее в уроках:

Строковое хранение

Row-oriented Storage
Термин

Метод организации данных, при котором все поля одной строки хранятся вместе. Оптимально для OLTP-нагрузок: insert, update, point lookups. Используется в СУБД (PostgreSQL, MySQL) и форматах сериализации (Avro, JSON). Неэффективно для аналитики — приходится читать все колонки даже при запросе одной.

Подробнее в уроках:

Predicate Pushdown

Predicate Pushdown
Термин

Оптимизация, при которой фильтр (WHERE) применяется на уровне storage engine до загрузки данных в оперативную память. В Parquet: skip Row Group по min/max статистике и Bloom-фильтрам. В Iceberg: skip manifest и data files по partition spec. Критически важна для производительности аналитических запросов.

Подробнее в уроках:

Data Skipping

Data Skipping
Термин

Техника пропуска файлов или фрагментов данных на основе метаданных, без чтения самих данных. В Parquet — skip Row Groups по column statistics. В Delta Lake — skip файлов по data skipping stats. В Iceberg — skip manifest-файлов по partition summary. Чем лучше кластеризация данных, тем эффективнее data skipping.

Подробнее в уроках:

Compaction

Compaction
Термин

Процесс объединения множества мелких файлов в меньшее количество крупных. В Delta Lake — OPTIMIZE команда. В Iceberg — rewrite_data_files(). В Hudi — async compaction для MoR-таблиц. В Paimon — LSM-tree compaction levels. Необходим для борьбы с проблемой мелких файлов (small file problem).

Подробнее в уроках:

Time Travel

Time Travel
Термин

Возможность запрашивать данные на определённую версию или момент времени. В Delta Lake — VERSION AS OF / TIMESTAMP AS OF через Delta Log. В Iceberg — через snapshot-цепочку. В Hudi — через Timeline. Используется для аудита, отладки, воспроизводимости ML-экспериментов.

Подробнее в уроках:

Benchmarking

Storage Benchmarking
Термин

Систематическое измерение производительности форматов хранения: скорость чтения/записи, коэффициент сжатия, latency запросов, memory footprint. Ключевые методологические требования: изоляция переменных, прогревание кешей, учёт I/O amplification, статистическая значимость. Форматы ведут себя по-разному на разных workloads.

Подробнее в уроках: