原文: https://duckdb.org/2026/01/23/duckdb-vortex-extension
Parquet 的强劲挑战者出现了?DuckDB 正式官宣对 Vortex 格式的支持,实测查询速度最高提升 35%,性能表现堪称飞跃。
01 Parquet 的统治地位会受到挑战吗?
从事过大数据分析的朋友,大多体验过 CSV 这类“古老格式”带来的不便,也深刻感受过 Parquet 带来的效率变革。然而,时代在演进,Parquet 的一个固有弱点正变得越来越突出:块压缩(Block-compressed)。
简单来说,现有的数据处理引擎在执行过滤、解码等操作前,必须先对完整的数据页进行解压。这个过程就像你想在一个缠满胶带的快递箱里找一把钥匙,必须先把整个箱子拆开一样。
Vortex 正是在这种背景下应运而生。
它是由 SpiralDB 团队开发,并于 2025 年捐赠给 Linux 基金会的开源列式存储格式。如今,DuckDB 官方正式宣布:已全面支持 Vortex 格式!
02 为什么 Vortex 速度如此惊人?核心技术揭秘
Vortex 并非只是另一个 Parquet 的模仿者,它在底层设计上实现了代际升级:
- “不解压,直接计算”:借助 ALP(用于浮点数)和 FSST(用于字符串)等轻量级编码技术,Vortex 能够直接在压缩数据上执行计算操作。这意味着“在存储层直接过滤数据”从理想变为了现实。
- 延迟物化(Late Materialization):数据只有在最后一步需要进入 CPU 或 GPU 进行计算时才会被解压,从而最大化利用硬件带宽。
- 面向多模态数据设计:它不仅为 SQL 查询优化,还专门针对向量、长文本、甚至图像和音频流进行了优化,天生适合 AI 和大模型训练场景。
- 支持 Wasm 嵌入:你甚至可以将 WebAssembly 代码嵌入到数据文件中,直接在存储端运行自定义的计算逻辑。
03 性能实测:数据说明一切
为了验证 Vortex 的真实性能,我们在 Mac M1 (10核/32GB) 环境下,针对 TPC-H Scale Factor 100(约 20GB 数据量)进行了一系列严格测试。
我们将 Vortex 与 Parquet v1/v2 进行了 5 轮“冷启动”对比测试。结果相当令人振奋:
核心数据对比
| 格式指标 |
几何平均耗时 (s) |
总耗时 (s) |
性能提升 (对比Vortex) |
稳定性 (标准差) |
| Parquet v1 |
2.32 |
63.26 |
慢 35% |
波动较大 (0.14) |
| Parquet v2 |
1.83 |
50.33 |
慢 18% |
波动中等 (0.18) |
| Vortex (New) |
1.50 |
43.80 |
基准 |
极稳 (0.07) |
关键结论:
- Vortex 的查询速度比 Parquet v2 快 18%,比 Parquet v1 快 35%。
- 更惊人的是其稳定性:Vortex 多次运行的耗时波动极小,几乎不受缓存机制干扰,表现非常稳定。
存储空间表现
在存储体积方面,Vortex 在未使用通用压缩算法(如 Snappy)的前提下,表现依然具有竞争力:
- Parquet v2 (Snappy 压缩): 25.40 GB
- Vortex (轻量编码): 28.57 GB
- 注:Vortex 用极小的存储空间代价,换取了巨大的计算性能增益。
04 如何在 DuckDB 中启用 Vortex 格式?
得益于 DuckDB Labs 的深度参与,Vortex 已成为 DuckDB 生态中的“一等公民”,使用体验非常流畅:
-- 1. 安装并加载扩展
INSTALL vortex;
LOAD vortex;
-- 2. 像导出 Parquet 一样导出 Vortex 格式
COPY (SELECT * FROM my_table) TO 'data.vortex' (FORMAT vortex);
-- 3. 极速读取 Vortex 文件
SELECT * FROM read_vortex('data.vortex');
05 总结:为 AI 时代优化的数据格式新选择
无论你是在处理传统的 SQL 分析任务,运行 ML 数据预处理流水线,还是进行 AI 模型训练,Vortex 与 DuckDB 的组合都提供了一个更高效、更现代的数据处理选项。
Vortex 自 v0.36.0 以来已保持了超过半年的向后兼容性,目前版本已迭代至 v0.56.0。大数据领域的存储格式之争,或许才刚刚拉开新的序幕。对于开发者而言,在合适的场景下尝试新的数据库技术栈,是保持技术敏锐度的重要方式。如果你想了解更多前沿技术实践与深度讨论,可以关注像云栈社区这样的开发者社区。
|