Сравнение форматов нового поколения
В модулях 15 и 16 мы разобрали четыре формата нового поколения: Lance, Vortex, Nimble, F3. Каждый атакует Parquet с разного фланга: Lance — random access для ML, Vortex — compressed compute для analytics, Nimble — wide schemas для Meta, F3 — extensibility через Wasm. Пора свести всё воедино.
Parquet остаётся де-факто стандартом. Форматы нового поколения не «убивают» Parquet — они решают конкретные проблемы, которые Parquet не может решить из-за architectural decisions 2013 года. Понимание каждого формата помогает выбрать правильный инструмент для конкретного workload.
Сравнительная матрица
Спектр философий дизайна
Каждый формат представляет уникальную философию. Расположим их на спектрах:
Encoding Strategy Comparison
Одно из ключевых различий — как каждый формат организует encoding pipeline:
Parquet: Fixed Set
Parquet: writer выбирает одну encoding per column: PLAIN, DICTIONARY, RLE, DELTA_BINARY_PACKED, BYTE_STREAM_SPLIT, DELTA_LENGTH_BYTE_ARRAY. Compression (ZSTD/LZ4/Snappy) — отдельный слой. Фиксированный набор.Lance: Container
Lance v2: container format. Encoding descriptor = protobuf 'any' message. Writer может embed любой encoding, described as protobuf. Unknown → skip. ~200 строк protobuf spec.Vortex: Cascading
Vortex: cascading encodings через Rust traits. BtrBlocks-inspired automatic selection. Каждый уровень каскада — отдельный encoding. White-box: engine знает структуру → compute on compressed.Nimble: Recursive Tree
Nimble: рекурсивное encoding tree. Произвольная глубина. Каждый узел = encoding step, создающий sub-streams. Block-level granularity. Known decoded size per block.F3: Wasm Decoders
F3: embedded Wasm decoders. Encoding = Wasm module. Любой algorithm компилируется в Wasm. Pipeline: chain of Wasm modules. Self-describing: decoder в файле.Metadata Efficiency
Все форматы нового поколения решают проблему metadata overhead, но по-разному:
Общий тренд: FlatBuffers побеждает для нового поколения форматов. Vortex, Nimble, F3 — все выбрали FlatBuffers. Lance использует Protobuf (всё ещё O(N) parse, но lightweight и с forward-compat). Parquet’s Thrift — legacy, который сложно заменить без breaking change.
Use Case Decision Tree
Когда использовать какой формат:
Какой workload?
Начало: какой у вас primary workload? Ответ определяет оптимальный формат. Если workload смешанный — Parquet или комбинация форматов.lance + LanceDB
Lance: pip install lance. Интеграция с PyTorch DataLoader, DuckDB, Polars. LanceDB для vector search + SQL. Production ready at petabyte scale.DuckDB + Vortex extension
Vortex через DuckDB: INSTALL vortex; LOAD vortex. Iceberg integration для data lake acceleration. Production: incubation stage, LF-backed.pyarrow.parquet / Spark
Parquet: universal standard. Если нет специфического bottleneck — Parquet. Для 90% workloads Parquet достаточно.Velox + Nimble reader
Nimble: only viable если уже используете Velox (Presto, Spark+Gluten). Иначе — Parquet с column projection или Lance.F3 отсутствует в decision tree — он не является production опцией. F3 — research prototype для study и inspiration. Если вам нужен extensible format в production → Vortex (pluggable encodings) или Lance (protobuf any).
Shared Techniques: конвергенция
Несмотря на разные философии, форматы нового поколения конвергируют на общих encoding techniques:
Общая тенденция: encoding research 2020-2025 двигается быстрее, чем форматы могут adopt. FastLanes, ALP, FSST, BtrBlocks — все появились после Parquet spec freeze. Новые форматы (Vortex, F3) designed to adopt these faster.
Hardware Acceleration: GPU Decode
Следующий рубеж — декодирование на GPU для ускорения analytics и ML:
«Заменят ли они Parquet?»
Ответ сложнее, чем «да» или «нет»:
Parquet = universal interchange + ideas migrate from new formats
Вероятный исход: Parquet остаётся universal interchange format. Специализированные форматы доминируют в своих нишах. Ideas из F3/Vortex/Nimble постепенно мигрируют в Parquet.Julien Le Dem (создатель Parquet) аргументирует: проще добавить недостающие возможности в Parquet, чем переключить экосистему на новый формат. Но это может значить, что «Parquet 3.0» будет выглядеть совсем иначе, чем Parquet 2013.
Summary Card
Конвергенция и дивергенция
Конвергенция (все согласны)
Конвергенция: все новые форматы согласны в некоторых архитектурных решениях. Эти решения — 'lessons learned' из 10 лет опыта с Parquet/ORC.Дивергенция (не согласны)
Дивергенция: фундаментальные disagreements о подходе к extensibility, ecosystem модели, и target workload. Каждый формат — уникальная точка в design space.Итоги
Четыре формата нового поколения представляют четыре разных ответа на ограничения Parquet:
-
Lance — ML-native: random access + vector search + versioning. Для data scientists и ML engineers, работающих с multimodal datasets.
-
Vortex — analytics-optimized: compressed compute + cascading encodings + DuckDB/Iceberg integration. Для data engineers, ищущих Parquet replacement в analytics stack.
-
Nimble — wide-schema: FlatBuffers metadata + block encoding + predictable memory. Для Meta-scale AI/ML training tables. Философия «библиотека как спецификация».
-
F3 — research prototype: embedded Wasm decoders + decoupled hierarchy. Proof of concept для instant extensibility. Влияет на Vortex и будущий Parquet.
Parquet не умирает. Parquet остаётся universal interchange format. Новые форматы занимают ниши, где Parquet’s 2013 architecture создаёт bottleneck. Ideas из новых форматов постепенно мигрируют обратно в Parquet (extensible encodings, better metadata). Конкуренция толкает всю ecosystem вперёд.