vortex-data/vortex

GitHub: vortex-data/vortex

Vortex 是一种高性能、可扩展的列式文件格式和压缩框架,旨在替代 Apache Parquet,提供数量级的读取和扫描性能提升。

Stars: 3024 | Forks: 172

# 🌪️ Vortex [![构建状态](https://static.pigsec.cn/wp-content/uploads/repos/2026/06/6144b21e7b103855.svg)](https://github.com/vortex-data/vortex/actions) [![OpenSSF 最佳实践](https://www.bestpractices.dev/projects/10567/badge)](https://www.bestpractices.dev/projects/10567) [![文档](https://docs.rs/vortex/badge.svg)](https://docs.vortex.dev) [![CodSpeed 徽章](https://img.shields.io/endpoint?url=https://codspeed.io/badge.json)](https://codspeed.io/vortex-data/vortex) [![Crates.io](https://img.shields.io/crates/v/vortex.svg)](https://crates.io/crates/vortex) [![PyPI - 版本](https://img.shields.io/pypi/v/vortex-data)](https://pypi.org/project/vortex-data/) [![Maven - 版本](https://img.shields.io/maven-central/v/dev.vortex/vortex-spark)](https://central.sonatype.com/artifact/dev.vortex/vortex-spark) [![codecov](https://codecov.io/github/vortex-data/vortex/graph/badge.svg)](https://codecov.io/github/vortex-data/vortex) [![引用](https://img.shields.io/badge/cite-CITATION.cff-blue)](CITATION.cff) [在 Slack 上加入社区!](https://vortex.dev/slack) | [文档](https://docs.vortex.dev/) | [性能基准测试](https://bench.vortex.dev) 如果您有兴趣进行更紧密的合作,请发送电子邮件至 info@vortex.dev ## 概述 Vortex 是一种下一代列式文件格式和工具包,专为高性能数据处理而设计。 它是构建基于对象存储的数据系统的最快、最具扩展性的格式。它提供: - **极致的性能** - 100 倍的随机读取速度(对比现代 Apache Parquet) - 10-20 倍的扫描速度 - 5 倍的写入速度 - 相似的压缩率 - 通过零拷贝/零解析的元数据,高效支持宽表 - **可扩展架构** - 效仿 Apache DataFusion 的可扩展方法 - 可插拔的编码系统、类型系统、压缩策略和布局策略 - 与 Apache Arrow 的零拷贝兼容性 - **开源,中立治理** - Linux 基金会 (LF AI & Data) 项目 - 基于 Apache-2.0 许可证 - **生态集成** - Arrow, DataFusion, DuckDB, Spark, Pandas, Polars 等等 - Apache Iceberg(即将推出) ## 核心特性 ### 核心能力 - **逻辑类型** - 逻辑 schema 与物理布局之间的清晰分离 - **零拷贝 Arrow 集成** - 与 Apache Arrow 数组之间的无缝转换 - **可扩展的编码** - 具有内置优化的可插拔物理布局 - **级联压缩** - 支持嵌套的编码方案 - **高性能计算** - 针对编码数据优化的计算内核 - **丰富的统计数据** - 用于优化的延迟加载统计摘要 ### 技术架构 #### 逻辑与物理设计 Vortex 严格区分了逻辑和物理层面的问题: - **逻辑层**:定义数据类型和 schema - **物理层**:处理编码和存储的实现 - **内置编码**:兼容 Apache Arrow 的内存格式 - **扩展编码**:优化的压缩方案(RLE、字典等) ## 快速开始 ### 安装说明 #### Rust Crate 所有功能均通过主要的 `vortex` crate 导出。 ``` cargo add vortex ``` #### Python 包 ``` uv add vortex-data ``` #### 命令行工具 (vx) 要浏览 Vortex 文件的结构,你可以使用 `vx` 命令行工具。 ``` # 安装预编译二进制文件(快速,推荐) cargo binstall vortex-tui # 或者从源码编译 cargo install vortex-tui --locked # 或者通过 Python 运行而无需安装 uvx --from vortex-data vx --help # 用法 vx browse ``` ### 开发环境设置 #### 前置条件 (macOS) ``` # 可选但推荐的依赖项 brew install flatbuffers protobuf # For .fbs and .proto files brew install duckdb # For benchmarks # 安装 Rust toolchain curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh # 或 brew install rustup # 初始化 submodules git submodule update --init --recursive # 使用 uv 设置依赖项 uv sync --all-packages ``` ### 基准测试 使用 `vx-bench` 运行基准测试,比较各引擎(DataFusion, DuckDB)和格式(Parquet, Vortex): ``` # 安装 benchmark orchestrator uv tool install "bench_orchestrator @ ./bench-orchestrator/" # 运行 TPC-H benchmarks vx-bench run tpch --engine datafusion,duckdb --format parquet,vortex # 比较结果 vx-bench compare --run latest ``` 完整文档请参阅 [bench-orchestrator/README.md](bench-orchestrator/README.md)。 ### 性能优化 为了获得最佳性能,我们建议使用 [MiMalloc](https://github.com/microsoft/mimalloc): ``` #[global_allocator] static GLOBAL_ALLOC: MiMalloc = MiMalloc; ``` ## 项目信息 ### 许可证 基于 Apache License, Version 2.0 授权。 ### 治理 Vortex 是一个独立的开源项目,不受任何单一公司控制。Vortex 项目是 Linux 基金会项目的一个子项目。其治理模式记录在 [CONTRIBUTING.md](CONTRIBUTING.md) 中,并受 [技术章程](https://vortex.dev/charter.pdf) 条款的约束。 ### 报告漏洞 如果您发现安全漏洞,请发送电子邮件至 。 ### 商标 版权所有 © Vortex a Series of LF Projects, LLC. 有关使用条款、商标政策和其他项目政策,请参阅 ### Vortex 中的研究 - [BtrBlocks](https://www.cs.cit.tum.de/fileadmin/w00cfj/dis/papers/btrblocks.pdf) - 高效的列式压缩 - [FastLanes](https://www.vldb.org/pvldb/vol16/p2132-afroozeh.pdf) & [GPU 上的 FastLanes](https://dbdbd2023.ugent.be/abstracts/felius_fastlanes.pdf) - 高性能整数压缩 - [FSST](https://www.vldb.org/pvldb/vol13/p2649-boncz.pdf) - 快速随机访问字符串压缩 - [ALP](https://ir.cwi.nl/pub/33334/33334.pdf) & [G-ALP](https://dl.acm.org/doi/pdf/10.1145/3736227.3736242) - 自适应无损浮点压缩 - [Procella](https://dl.acm.org/citation.cfm?id=3360438) - YouTube 的统一数据系统 - [Anyblob](https://www.durner.dev/app/media/papers/anyblob-vldb23.pdf) - 对对象存储的高性能访问 - [ClickHouse](https://www.vldb.org/pvldb/vol17/p3731-schulze.pdf) - 面向所有人的快速分析 - [MonetDB/X100](https://www.cidrdb.org/cidr2005/papers/P19.pdf) - 超流水线查询执行 - [Morsel 驱动的并行性](https://db.in.tum.de/~leis/papers/morsels.pdf):面向多核时代的 NUMA 感知查询评估格式 - [The FastLanes File Format](https://github.com/cwida/FastLanes/blob/dev/docs/specification.pdf) - 表达式运算符 ### 学术研究中的 Vortex - [Anyblox](https://gienieczko.com/anyblox-paper) - 一个用于自解码数据集的框架 - [F3](https://dl.acm.org/doi/pdf/10.1145/3749163) - 面向未来的开源数据文件格式 ### 开源灵感来源 - [Apache Arrow](https://arrow.apache.org) - [Apache DataFusion](https://github.com/apache/datafusion) - Jorge Leitao 开发的 [parquet2](https://github.com/jorgecarleitao/parquet2) - [DuckDB](https://github.com/duckdb/duckdb) - [Velox](https://github.com/facebookincubator/velox) & [Nimble](https://github.com/facebookincubator/nimble) #### 感谢所有与社区分享其知识和代码的贡献者!🚀
标签:Apache Arrow, Rust, 列式存储, 可视化界面, 大数据, 数据压缩, 文件格式, 目录扫描, 网络流量审计, 逆向工具, 通知系统