Project Icon

velox

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

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

Velox标志

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许可证授权。许可证副本可以在这里找到。

项目侧边栏1项目侧边栏2
推荐项目
Project Cover

豆包MarsCode

豆包 MarsCode 是一款革命性的编程助手,通过AI技术提供代码补全、单测生成、代码解释和智能问答等功能,支持100+编程语言,与主流编辑器无缝集成,显著提升开发效率和代码质量。

Project Cover

AI写歌

Suno AI是一个革命性的AI音乐创作平台,能在短短30秒内帮助用户创作出一首完整的歌曲。无论是寻找创作灵感还是需要快速制作音乐,Suno AI都是音乐爱好者和专业人士的理想选择。

Project Cover

有言AI

有言平台提供一站式AIGC视频创作解决方案,通过智能技术简化视频制作流程。无论是企业宣传还是个人分享,有言都能帮助用户快速、轻松地制作出专业级别的视频内容。

Project Cover

Kimi

Kimi AI助手提供多语言对话支持,能够阅读和理解用户上传的文件内容,解析网页信息,并结合搜索结果为用户提供详尽的答案。无论是日常咨询还是专业问题,Kimi都能以友好、专业的方式提供帮助。

Project Cover

阿里绘蛙

绘蛙是阿里巴巴集团推出的革命性AI电商营销平台。利用尖端人工智能技术,为商家提供一键生成商品图和营销文案的服务,显著提升内容创作效率和营销效果。适用于淘宝、天猫等电商平台,让商品第一时间被种草。

Project Cover

吐司

探索Tensor.Art平台的独特AI模型,免费访问各种图像生成与AI训练工具,从Stable Diffusion等基础模型开始,轻松实现创新图像生成。体验前沿的AI技术,推动个人和企业的创新发展。

Project Cover

SubCat字幕猫

SubCat字幕猫APP是一款创新的视频播放器,它将改变您观看视频的方式!SubCat结合了先进的人工智能技术,为您提供即时视频字幕翻译,无论是本地视频还是网络流媒体,让您轻松享受各种语言的内容。

Project Cover

美间AI

美间AI创意设计平台,利用前沿AI技术,为设计师和营销人员提供一站式设计解决方案。从智能海报到3D效果图,再到文案生成,美间让创意设计更简单、更高效。

Project Cover

AIWritePaper论文写作

AIWritePaper论文写作是一站式AI论文写作辅助工具,简化了选题、文献检索至论文撰写的整个过程。通过简单设定,平台可快速生成高质量论文大纲和全文,配合图表、参考文献等一应俱全,同时提供开题报告和答辩PPT等增值服务,保障数据安全,有效提升写作效率和论文质量。

投诉举报邮箱: service@vectorlightyear.com
@2024 懂AI·鲁ICP备2024100362号-6·鲁公网安备37021002001498号