DeepSeek辅助总结在 DuckDB 中支持 Vortex
DuckDB宣布支持Vortex列式文件格式 DuckDB与SpiralDB团队合作推出Vortex扩展,为这一新兴列式格式提供原生支持。Vortex采用创新设计,支持对压缩数据直接执行计算操作,无需完全解压,显著提升查询性能。基准测试显示,相比Parquet V2格式,Vortex在TPC-H查询中平均快18%,且性能更稳定。Vortex特别适合SQL分析、机器学习预处理和AI模型训练等场景,支
原文地址:https://duckdb.org/2026/01/23/duckdb-vortex-extension
标题: “在 DuckDB 中宣布支持 Vortex”
作者: “Guillermo Sanchez, SpiralDB 团队”
摘要: “Vortex 是一种新的列式文件格式,设计前景非常广阔。SpiralDB 和 DuckDB Labs 已携手合作,为您在读取和写入 Vortex 文件时提供极快的体验!”
我认为值得在开头先简单谈谈已确立的列式数据格式。Parquet 为分析领域做出了许多惊人的贡献。如果您回顾 CSV 曾是更好选择的年代,就会知道 Parquet 有多么重要。然而,即使规范随着时间的推移不断演进,Parquet 也存在一些设计上的限制。一个特别的限制是,它采用块压缩,引擎需要解压页面才能进行后续操作,如过滤、解码值等。一段时间以来,研究人员和私营公司一直在研究 Parquet 的替代方案,以期改进 Parquet 的一些缺点。来自 SpiralDB 团队的 Vortex 就是其中之一。
什么是 Vortex?
Vortex 是一种可扩展、开源的列式数据格式。它旨在处理异构计算模式和不同的数据模态。但是,这具体意味着什么呢?
该项目于 2025 年 8 月由 SpiralDB 团队捐赠给 Linux 基金会。
Vortex 为不同的数据类型提供了不同的布局和编码。其中一些最引人注目的包括用于浮点数编码的 ALP 和用于字符串编码的 FSST。这种轻量级压缩策略在保持数据体积小的同时,实现了 Vortex 最重要的特性之一:计算函数。通过了解数据的编码布局,Vortex 能够对压缩数据运行任意表达式。这使得 Vortex 阅读器能够在不解压数据的情况下,在存储段内执行过滤表达式等操作。
我们提到异构计算是为了强调 Vortex 的设计理念是为不同数据类型(包括向量、大段文本,甚至图像或音频)提供优化的布局,同时最大化 CPU 或 GPU 的利用率。其理念是将解压缩延迟到 GPU 或 CPU,从而实现 Vortex 所称的“延迟物化”。FastLanes 编码(一个起源于 CWI 的项目,与 DuckDB 同源)是实现此功能的主要驱动力之一。
Vortex 还支持动态加载库(类似于 DuckDB 扩展),以提供针对特定类型的新编码以及特定的计算函数,例如用于地理空间数据。另一个非常有趣的功能是将 WebAssembly 编码到文件中,这使得阅读器能够受益于应用于文件的特定计算内核。
除了 DuckDB 之外,DataFusion、Spark 和 Arrow 等其他引擎也已提供与 Vortex 的集成。
更多信息,请查看 Vortex 文档。
DuckDB Vortex 扩展
正如其名,DuckDB 是一个数据库,是的,但它也被广泛用作查询多种不同数据源的引擎。通过核心或社区扩展,DuckDB 可以与以下系统集成:
- 数据库,如 Snowflake、BigQuery 或 PostgreSQL。
- 湖仓格式,如 Delta、Iceberg 或 DuckLake。
- 文件格式,最著名的是 JSON、CSV、Parquet,以及最近的 Vortex。
社区已经变得非常有创造力,所以现在您甚至可以使用 社区扩展 通过 DuckDB 读取 YAML 和 Markdown。
这一切都归功于 DuckDB 的扩展系统,它使得实现与不同文件格式或外部系统交互的逻辑相对容易。
SpiralDB 团队构建了一个 DuckDB 扩展。与 DuckDB Labs 团队一起,我们已将该扩展作为 DuckDB 核心扩展 提供,让社区可以在 DuckDB 中享受 Vortex 作为一等公民的待遇。
使用示例
安装和使用 Vortex 扩展非常简单:
INSTALL vortex;
LOAD vortex;
然后,您可以轻松地使用它来读写,类似于 Parquet 等其他扩展。
SELECT * FROM read_vortex('my.vortex');
COPY (SELECT * FROM generate_series(0, 3) t(i))
TO 'my.vortex' (FORMAT vortex);
为什么选择 Vortex 和 DuckDB?
Vortex 声称主要在三个用例中表现出色:
- 传统的 SQL 分析:通过延迟解压缩和对压缩数据执行计算表达式,Vortex 可以在存储段内过滤数据,减少 I/O 和内存消耗。
- 机器学习预处理管道:通过支持多种不同数据类型的编码,Vortex 声称能够高效地读写数据,无论是音频、文本、图像还是向量。
- AI 模型训练:FastLanes 等编码允许非常高效地将数据复制到 GPU。Vortex 旨在能够将数据直接从 S3 对象存储复制到 GPU。
通过延迟解压缩实现更高效的 I/O 和内存使用的承诺,是尝试将 DuckDB 与 Vortex 结合用于 SQL 分析的一个充分理由。另一方面,如果您希望在用于多个用例(包括预处理管道和 AI 训练)的统一数据集上运行分析,那么 Vortex 可能是一个不错的选择,因为它旨在很好地适应所有这些用例。
性能实验
对于那些渴望看到数据的人,我们决定使用 DuckDB 运行 TPC-H 基准测试,比例因子为 100,以了解 Vortex 作为存储格式与 Parquet 相比的表现。我们尽力使基准测试尽可能公平。以下是参数:
- 在 Mac M1(10 核,32 GB 内存)上运行。
- 基准测试对每个查询运行 5 次,并使用平均值进行最终报告。
- 每个查询运行后关闭 DuckDB 连接,试图使运行“更冷”,避免 DuckDB 的缓存(特别是 Parquet)影响结果。操作系统的页面缓存确实对后续运行有影响,但我们决定承认这个因素,并且仍然保留第一次运行。
- 每个 TPC-H 表是单个文件,这意味着 Parquet 和 Vortex 的 lineitem 文件都相当大(都约 20 GB)。这使我们能够忽略通配符和许多小文件的影响。
- 用于基准测试的数据文件使用 tpchgen-rs 生成,并使用 DuckDB 的 Parquet 和 Vortex 扩展复制出来。
- 我们将 Vortex 与 Parquet v1 和 v2 进行比较。v2 规范允许比 v1 规范快得多的读取速度,但许多写入器不支持 v2,因此我们认为同时包含两者是值得的。
结果非常好。 与 Parquet V2 相比,TPC-H 基准测试运行速度快了 18%;与 Parquet V1 相比,快 35%(使用推荐的几何平均值计算)。
另一个有趣的结果是各次运行之间的标准偏差。Parquet 的每次查询的第一次(也是最冷的)运行与后续运行之间存在相当大的差异,而 Vortex 在所有运行中都表现良好,标准偏差小得多。

| 格式 | 几何平均值 (秒) | 算术平均值 (秒) | 平均标准偏差 (秒) | 总时间 (秒) |
|---|---|---|---|---|
| parquet_v1 | 2.324712 | 2.875722 | 0.145914 | 63.265881 |
| parquet_v2 | 1.839171 | 2.288013 | 0.182962 | 50.336281 |
| vortex | 1.507675 | 1.991289 | 0.078893 | 43.808349 |
点击此处查看基准测试结果的更详细分解。不同基准测试运行的时间确实存在差异,后续运行也产生了类似结果,但略有变化。Parquet v2 和 Vortex 之间的差异始终在几何平均值上约为 12-18%,在总时间上约为 8-14%。基准测试非常困难!
此图显示了每个查询的结果,包括标准偏差误差线。
以下是数据集大小的总结。请注意,Parquet v1 和 v2 都使用了 DuckDB Parquet 写入器使用的默认压缩方式,即 Snappy。在这种情况下,Vortex 没有使用任何通用压缩,但数据大小仍然具有竞争力。
| 表 | parquet_v1 | parquet_v2 | vortex |
|---|---|---|---|
| customer | 1.15 | 0.99 | 1.06 |
| lineitem | 21.15 | 16.02 | 18.14 |
| nation | 0.00 | 0.00 | 0.00 |
| orders | 6.02 | 4.54 | 5.03 |
| part | 0.59 | 0.47 | 0.54 |
| partsupp | 4.07 | 3.33 | 3.72 |
| region | 0.00 | 0.00 | 0.00 |
| supplier | 0.07 | 0.06 | 0.07 |
| 总计 | 33.06 | 25.40 | 28.57 |
结论
Vortex 是 Parquet 等成熟列式格式的一个非常有趣的替代方案。它专注于轻量级压缩编码、延迟解压缩以及能够在压缩数据上运行计算表达式,这使其适用于广泛的用例。就 DuckDB 而言,我们看到 Vortex 对于分析查询已经非常高效,在 TPC-H 基准测试查询中与 Parquet v2 相当或更好。
Vortex 自 6 个多月前发布的 0.36.0 版本以来一直保持向后兼容。Vortex 目前版本为 0.56.0。
更多推荐


所有评论(0)