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是可扩展的,允许开发人员定义自己的引擎特定专业化,包括:自定义类型简单和矢量化函数聚合函数运营商文件格式存储适配器网络序列化器
评论