Velox C++ 矢量化数据库加速库开源项目

我要开发同款
匿名用户2022年09月09日
82阅读
开发技术C/C++
所属分类数据库相关
授权协议Apache-2.0

作品详情

Velox 是一个C++矢量化数据库加速库,旨在优化查询引擎和数据处理系统。提供可重用、可扩展和高性能的数据处理组件。这些组件可以重复使用来构建专注于不同分析工作负载的计算引擎,包括批处理、交互、流处理和AI/ML。Velox由Facebook创建,目前与英特尔、字节跳动和Ahana合作开发。

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

Velox提供以下高级组件:

Type:一个通用类型系统,支持标量、复杂和嵌套类型,例如结构、映射、数组、张量等。Vector:与 Arrow兼容的列式内存布局模块,除了惰性实现模式和对乱序写入的支持外,还提供多种编码,例如Flat、Dictionary、Constant、Sequence/RLE和Bias。ExpressionEval:一个完全向量化的expressionevaluation 引擎 ,允许表达式在向量/箭头编码数据之上有效执行。FunctionPackages:遵循Presto和Spark语义的向量化函数实现集。Operators :常见的数据处理操作符的实现,如扫描、投影、过滤、groupBy、orderBy、shuffle、hashjoin、unnest等。I/O:通用连接器接口,允许使用不同的文件格式(ORC/DWRF和Parquet)和存储适配器(S3、HDFS、本地文件)。NetworkSerializers:可以实现不同有线协议的接口,用于网络通信,支持 PrestoPage 和Spark的UnsafeRow。资源管理:用于处理计算资源的原语集合,例如内存区域和缓冲区管理、任务、驱动程序以及用于CPU和线程执行、溢出和缓存的线程池。Velox是可扩展的,允许开发人员定义自己的引擎特定专业化,包括:

自定义类型简单和矢量化函数聚合函数运营商文件格式存储适配器网络序列化器

 

 

声明:本文仅代表作者观点,不代表本站立场。如果侵犯到您的合法权益,请联系我们删除侵权资源!如果遇到资源链接失效,请您通过评论或工单的方式通知管理员。未经允许,不得转载,本站所有资源文章禁止商业使用运营!
下载安装【程序员客栈】APP
实时对接需求、及时收发消息、丰富的开放项目需求、随时随地查看项目状态

评论