介绍
介绍
HybridSE(Hybrid SQL Engine)是基于C++和LLVM实现的高性能混合SQL执行引擎,为AI应用、OLAD数据库、HTAP系统、SparkSQL、Flink Streaming SQL等提供一致性的SQL加速优化。

HybridSE是一个模块化的SQL编译器和执行器,提供了SQL语法校验、逻辑计划生成和优化、表达式优化、离线或在线物理计划生成、Native代码生成以及单机或分布式Runner实现等功能。开发者使用HybridSE可以快速实现一个支持SQL的高性能数据库,也可以用HybridSE来优化离线SQL执行引擎的性能。相比与MySQL、SparkSQL等内置实现的SQL执行引擎,HybridSE不仅性能更优,而且针对AI场景进行了语法拓展和优化,更加适应现代SQL引擎的需求,HybridSE的特性如下。
高性能
基于LLVM JIT即时编译技术,针对不同硬件环境动态生成二进制码,内置数十种SQL编译优化过程,还有更灵活的内存管理,保证性能在所有SQL引擎中处于前列。
拓展性强
HybridSE模块化的设计,对外可生成不同阶段的逻辑计划和物理计划,加上丰富完善的多编程语言SDK,无论是实时的OLAD数据库,还是离线的分布式OLAP系统、流式SQL系统都可以使用HybridSE进行SQL优化和加速。
针对机器学习优化
提供机器学习场景常用的特殊拼表操作以及定制化UDF/UDAF支持,基本满足生产环境下机器学习特征抽取和上线的应用需求。
离线在线一致性
同一套SQL语法解析和CodeGen代码生成逻辑,保证使用HybridSE的离线和在线系统落地时计算语意一致,SQL中内置UDF/UDAF语法也避免跨语言系统的函数一致性问题。
快速开始
依赖
准备开发环境
git clone https://github.com/4paradigm/HybridSE.git
cd HybridSE
docker run -v `pwd`:/HybridSE -it ghcr.io/4paradigm/centos6_gcc7_hybridsql:latest
cd /HybridSE
# init enviroment before build
source tools/init_env.profile.sh
建议开发者使用我们提供的镜像编译和安装库。若需要使用自己的开发环境,请确保相关依赖库正确安装。编译环境和依赖库可参考 HybridSQL-docker
编译
cd /HybridSE
mkdir -p build && cd build
cmake ..
# just compile the core library
make -j$(nproc) hybridse_core
安装
cd /HybridSE
mkdir -p build && cd build
cmake .. -DCMAKE_INSTALL_PREFIX="CONFIG_YOUR_HYRBIDSE_INSTALL_DIR"
make -j$(nproc) install
更详细的编译和安装配置可参见文档:快速开始HybridSE
测试
cd /HybridSE
mkdir -p build & cd buid
cmake .. -DTESTING_ENABLE=ON
export SQL_CASE_BASE_DIR=/HybridSE
make -j$(nproc) && make -j$(nproc) test
运行 simple engine demo
cd /HybridSE
mkdir build
cd build
cmake ..
make -j$(nproc) hybridse_proto && make -j$(nproc) hybridse_parser && make -j$(nproc) simple_engine_demo
./src/simple_engine_demo
simple_engine_demo
是基于HyrbidSE实现的内存表SQL引擎。更多细节可参见文档:如何实现一个简单引擎
运行 ToyDB
编译 ToyDB
cd /HybridSE mkdir build cmake .. -DEXAMPLES_ENABLE=ON make -j$(nproc) hybridse_proto && make -j$(nproc) hybride_parser && make -j$(nproc) toydb
启动 ToyDB
cd /HybridSE/examples/toydb/onebox bash start_all.sh bash start_cli.sh
ToyDB是基于HybridSE开发的简易单机内存数据库. 它支持基本的数据库操作和SQL查询语句。详细使用可参见:ToyDB快速开始
生态项目
未来规划
ANSI SQL兼容
HybridSE已经兼容主流的DDL、DML语法,并将逐步增强对ANSI SQL语法的兼容性,从而简化用户从其他SQL引擎迁移的成本。
[2021H1&H2]完善Window的标准语法,支持Where, Group By, Join等操作
[2021H1&H2]针对AI场景扩展特有的语法特性和UDAF函数
性能优化
HybridSE内置数十种SQL表达式和逻辑计划优化,提供标准的优化Pass实现接口,未来将会接入更多的SQL优化从而提升系统性能。
[2021H1]面向批式数据处理和请求式数据处理场景支持逻辑和物理计划优化
[2021H1]支持高性能分布式执行计划生成和代码生成
[2021H2]基于LLVM的表达式编译和生成代码优化
[2021H2]更多经典SQL表达式优化过程支持
生态集成
HybridSE可拓展适配NoSQL、OLAP、OLTP等系统,已支持SparkSQL和FEDB底层替换,未来将兼容接入更多开源生态系统。
[2021H2]适配流式等主流开源SQL计算框架等,如优化FlinkSQL性能等
[2021H2]适配多种行编码格式和列编码格式,兼容Apache Arrow格式和生态
[2021H2]支持主流编程语言接口,包括C++, Java, Python, Go, Rust SDK等
反馈与参与
Bug、疑惑、修改欢迎提在Github Issue
想了解更多或者有想法可以参与到Discussions和slack交流
许可证
Last updated