velox

velox

可重用数据处理组件库 助力数据库引擎优化

Velox是Meta开发的C++数据库加速库,提供可重用和可扩展的高性能数据处理组件。它支持多种分析工作负载,包括批处理、交互式查询、流处理和AI/ML。Velox的核心组件包括类型系统、向量化内存布局、表达式评估引擎等,同时允许开发者进行自定义扩展。目前,Velox正与IBM/Ahana、Intel等公司合作,致力于为数据库引擎开发提供高效的基础设施。

Velox数据库加速库C++数据处理开源项目Github
<img src="https://yellow-cdn.veclightyear.com/835a84d5/18c64514-9e9a-49c5-846e-8b1f2cfdca1c.svg" alt="Velox标志" width="50%" align="center" />

Velox是一个C++数据库加速库,提供可重用、可扩展和高性能的数据处理组件。这些组件可以被重复使用来构建专注于不同分析工作负载的计算引擎,包括批处理、交互式处理、流处理和人工智能/机器学习。Velox由Meta创建,目前与IBM/Ahana、Intel、Voltron Data、Microsoft、ByteDance等多家公司合作开发。

在常见的使用场景中,Velox接收一个完全优化的查询计划作为输入,并执行描述的计算。考虑到Velox不提供SQL解析器、数据框架层或查询优化器,它通常不适合最终用户直接使用;相反,它主要被开发人员用于集成和优化他们的计算引擎。

Velox提供以下高级组件:

  • 类型:支持标量、复杂和嵌套类型(如结构体、映射、数组、张量等)的通用类型系统。
  • 向量:一个与Arrow兼容的列式内存布局模块,提供多种编码方式,如Flat、Dictionary、Constant、Sequence/RLE和Bias,此外还支持延迟实例化模式和乱序写入。
  • 表达式求值:一个完全向量化的表达式求值引擎,允许在Vector/Arrow编码数据之上高效执行表达式。
  • 函数包:遵循Presto和Spark语义的向量化函数实现集。
  • 操作符:常见数据处理操作符的实现,如扫描、投影、过滤、分组、排序、随机洗牌、哈希连接、展开等。
  • I/O:通用连接器接口,允许使用不同的文件格式(ORC/DWRF和Parquet)和存储适配器(S3、HDFS、本地文件)。
  • 网络序列化器:可实现不同线路协议的接口,用于网络通信,支持PrestoPage和Spark的UnsafeRow。
  • 资源管理:用于处理计算资源的原语集合,如内存竞技场和缓冲区管理、任务、驱动程序以及用于CPU和线程执行的线程池、溢出和缓存。

Velox是可扩展的,允许开发人员定义自己的引擎特定专门化,包括:

  1. 自定义类型
  2. 简单和向量化函数
  3. 聚合函数
  4. 操作符
  5. 文件格式
  6. 存储适配器
  7. 网络序列化器

示例

可扩展性和与不同组件API集成的示例可以在这里找到。

文档

详细介绍库多个方面的开发者指南,以及可用函数列表可以在这里找到。

博客文章可以在这里找到。

入门

获取Velox源代码

git clone https://github.com/facebookincubator/velox.git
cd velox

一旦检出Velox,第一步是安装依赖项。有关依赖项以及Velox如何为您管理一些依赖项的详细信息可以在这里找到。

Velox还提供以下脚本,帮助开发人员为特定平台设置和安装Velox依赖项。

设置依赖项

以下设置脚本使用DEPENDENCY_DIR环境变量设置构建包的位置。如果您未设置此变量,它将默认为当前工作目录。

$ export DEPENDENCY_DIR=/path/to/your/dependencies

在macOS上设置

在Mac机器上(无论是Intel还是Apple芯片),您可以按如下方式设置然后构建:

$ export INSTALL_PREFIX=/Users/$USERNAME/velox/velox_dependency_install $ ./scripts/setup-macos.sh $ make

对于macOS 14.4和XCode 15.3,如果缺少m4,您可以:

  1. 通过brew安装m4
$ brew install m4 $ export PATH=/opt/homebrew/opt/m4/bin:$PATH
  1. 或者使用gm4代替:
$ M4=/usr/bin/gm4 make

在Ubuntu上设置(20.04或更高版本)

支持的架构是x86_64(avx, sse)和AArch64(apple-m1+crc, neoverse-n1)。您可以按如下方式构建:

$ ./scripts/setup-ubuntu.sh $ make

在Centos 9 Stream上设置(带适配器)

Velox适配器包括AWS S3、Google Cloud Storage和Azure Blob文件系统等文件系统。这些适配器需要安装额外的库。一旦检出Velox,您可以按如下方式设置和构建:

$ ./scripts/setup-centos9.sh $ ./scripts/setup-adapters.sh $ make

请注意,setup-adapters.sh支持MacOS和Ubuntu 20.04或更高版本。

在Linux上使用Clang

通过在运行平台特定设置脚本之前设置USE_CLANG环境变量,可以在Ubuntu 22.04/24.04和CentOS 9的设置步骤中额外安装Clang 15。

$ export USE_CLANG=true

这将安装并使用Clang 15来构建依赖项,而不是使用默认的GCC编译器。

完成后,在运行任何make命令之前,设置要使用的编译器:

$ export CC=/usr/bin/clang-15 $ export CXX=/usr/bin/clang++-15 $ make

构建Velox

在根目录下运行make来编译源代码。对于开发,使用make debug构建非优化的调试版本,或使用make release构建优化版本。使用make unittest构建并运行测试。

注意:

  • Velox要求编译器至少为GCC 11.0或Clang 15.0。
  • Velox要求CPU支持以下指令集:
    • bmi
    • bmi2
    • f16c
  • Velox尝试在可用时使用以下(或等效的)指令集:
    • 在Intel CPU上
      • avx
      • avx2
      • sse
    • 在ARM上
      • Neon
      • Neon64

Velox的构建指标发布在https://facebookincubator.github.io/velox/bm-report/

使用docker-compose构建Velox

如果您不想安装构建Velox所需的系统依赖项,您也可以使用docker-compose在Docker容器上构建并运行Velox的测试。使用以下命令:

$ docker-compose build ubuntu-cpp $ docker-compose run --rm ubuntu-cpp

如果您想增加或减少构建Velox时使用的线程数,可以通过以下方式覆盖NUM_THREADS环境变量:

$ docker-compose run -e NUM_THREADS=<要使用的线程数> --rm ubuntu-cpp

贡献

查看我们的贡献指南,了解如何为项目做出贡献。

社区

Velox的技术治理机制在这份文档中有描述。组件和维护者列表在这里

与Velox开源社区的主要沟通渠道是通过Velox-OSS Slack工作区。请联系velox@meta.com以获取Velox Slack频道的访问权限。

许可证

Velox根据Apache 2.0许可证授权。许可证副本可以在这里找到。

编辑推荐精选

问小白

问小白

全能AI智能助手,随时解答生活与工作的多样问题

问小白,由元石科技研发的AI智能助手,快速准确地解答各种生活和工作问题,包括但不限于搜索、规划和社交互动,帮助用户在日常生活中提高效率,轻松管理个人事务。

聊天机器人AI助手热门AI工具AI对话
Transly

Transly

实时语音翻译/同声传译工具

Transly是一个多场景的AI大语言模型驱动的同声传译、专业翻译助手,它拥有超精准的音频识别翻译能力,几乎零延迟的使用体验和支持多国语言可以让你带它走遍全球,无论你是留学生、商务人士、韩剧美剧爱好者,还是出国游玩、多国会议、跨国追星等等,都可以满足你所有需要同传的场景需求,线上线下通用,扫除语言障碍,让全世界的语言交流不再有国界。

讯飞智文

讯飞智文

一键生成PPT和Word,让学习生活更轻松

讯飞智文是一个利用 AI 技术的项目,能够帮助用户生成 PPT 以及各类文档。无论是商业领域的市场分析报告、年度目标制定,还是学生群体的职业生涯规划、实习避坑指南,亦或是活动策划、旅游攻略等内容,它都能提供支持,帮助用户精准表达,轻松呈现各种信息。

热门AI工具AI办公办公工具讯飞智文AI在线生成PPTAI撰写助手多语种文档生成AI自动配图
讯飞星火

讯飞星火

深度推理能力全新升级,全面对标OpenAI o1

科大讯飞的星火大模型,支持语言理解、知识问答和文本创作等多功能,适用于多种文件和业务场景,提升办公和日常生活的效率。讯飞星火是一个提供丰富智能服务的平台,涵盖科技资讯、图像创作、写作辅助、编程解答、科研文献解读等功能,能为不同需求的用户提供便捷高效的帮助,助力用户轻松获取信息、解决问题,满足多样化使用场景。

模型训练热门AI工具内容创作智能问答AI开发讯飞星火大模型多语种支持智慧生活
Spark-TTS

Spark-TTS

一种基于大语言模型的高效单流解耦语音令牌文本到语音合成模型

Spark-TTS 是一个基于 PyTorch 的开源文本到语音合成项目,由多个知名机构联合参与。该项目提供了高效的 LLM(大语言模型)驱动的语音合成方案,支持语音克隆和语音创建功能,可通过命令行界面(CLI)和 Web UI 两种方式使用。用户可以根据需求调整语音的性别、音高、速度等参数,生成高质量的语音。该项目适用于多种场景,如有声读物制作、智能语音助手开发等。

Trae

Trae

字节跳动发布的AI编程神器IDE

Trae是一种自适应的集成开发环境(IDE),通过自动化和多元协作改变开发流程。利用Trae,团队能够更快速、精确地编写和部署代码,从而提高编程效率和项目交付速度。Trae具备上下文感知和代码自动完成功能,是提升开发效率的理想工具。

热门AI工具生产力协作转型TraeAI IDE
咔片PPT

咔片PPT

AI助力,做PPT更简单!

咔片是一款轻量化在线演示设计工具,借助 AI 技术,实现从内容生成到智能设计的一站式 PPT 制作服务。支持多种文档格式导入生成 PPT,提供海量模板、智能美化、素材替换等功能,适用于销售、教师、学生等各类人群,能高效制作出高品质 PPT,满足不同场景演示需求。

讯飞绘文

讯飞绘文

选题、配图、成文,一站式创作,让内容运营更高效

讯飞绘文,一个AI集成平台,支持写作、选题、配图、排版和发布。高效生成适用于各类媒体的定制内容,加速品牌传播,提升内容营销效果。

AI助手热门AI工具AI创作AI辅助写作讯飞绘文内容运营个性化文章多平台分发
材料星

材料星

专业的AI公文写作平台,公文写作神器

AI 材料星,专业的 AI 公文写作辅助平台,为体制内工作人员提供高效的公文写作解决方案。拥有海量公文文库、9 大核心 AI 功能,支持 30 + 文稿类型生成,助力快速完成领导讲话、工作总结、述职报告等材料,提升办公效率,是体制打工人的得力写作神器。

openai-agents-python

openai-agents-python

OpenAI Agents SDK,助力开发者便捷使用 OpenAI 相关功能。

openai-agents-python 是 OpenAI 推出的一款强大 Python SDK,它为开发者提供了与 OpenAI 模型交互的高效工具,支持工具调用、结果处理、追踪等功能,涵盖多种应用场景,如研究助手、财务研究等,能显著提升开发效率,让开发者更轻松地利用 OpenAI 的技术优势。

下拉加载更多