1. F3 (github.com)
F3 是一种面向未来的开源数据文件格式,以高效性、互操作性和可扩展性为核心设计原则。它旨在修正上一代列式存储格式(如 Parquet)在数据布局上的不足,同时通过嵌入 WebAssembly(Wasm)解码器,使格式具备良好的跨平台互操作能力与面向未来的可扩展性。
⚠️ 注意:本项目属于研究原型,用于验证论文中的相关理念,不建议用于生产环境。
构建与测试
项目目前仅在搭载 Debian 12 的 Intel 机器上完成测试。构建步骤如下:
- 初始化并递归更新子模块:
git submodule update --init --recursive - 运行 Debian 环境配置脚本:
./scripts/setup_debian.sh - 构建概念验证(PoC)包:
cargo build -p fff-poc - 运行单元测试:
cargo test -p fff-poc
代码目录结构
format:文件格式的 FlatBuffer 定义。fff-poc:F3 格式的主要实现代码,依赖fff-core、fff-encoding、fff-format及fff-ude-wasm等子目录。fff-bench:论文中的基准测试与实验代码,其中fff-bench/examples包含大多数微基准与端到端实验。fff-ude*:ude代表 User-Defined-Encoding(用户自定义编码),相关目录包含 Wasm 解码实现。scripts/exp_scripts:用于运行实验的辅助脚本。
实验结果复现
如需复现论文中的实验结果,请参阅 doc/paper_reproduction.md 中的详细步骤。
许可证
本项目采用 MIT 许可证 开源。
论文引用
该项目对应 2025 年发表于 Proceedings of the ACM on Management of Data (PACMMOD) 的论文 "F3: The Open-Source Data File Format for the Future"(作者:Xinyu Zeng, Ruijun Meng, Martin Prammer, Wes McKinney, Jignesh M. Patel, Andrew Pavlo, Huanchen Zhang)。
论文指出,现有主流开源列存格式(如 Parquet、ORC)诞生于十余年前,其设计难以适配当今硬件与工作负载环境;虽有更新,但多数部署无法支持全部特性,且底层缺陷难以在不重写格式的情况下根除。F3 通过自描述的数据组织结构与通用 API,让开发者能够便捷地添加新编码方案,从而避免每次计算范式转变时都需创建新格式。每个 F3 文件内嵌数据、元数据以及用于解码的 Wasm 二进制文件,嵌入开销仅需数千字节,即可在原生解码器不可用时确保任何平台的兼容性。评估表明,F3 的存储布局与 Wasm 驱动解码机制均具备显著优势。