目录
1 SQL引擎基础认知
功能:将用户输入的SQL语句序列转换为一个可执行的操作序列,并返回查询的结果集。
SQL的解析引擎包括查询编译与查询优化和查询的运行,主要包括3个步骤:
查询分析 ---> 制定逻辑查询计划(优化相关)---> 制定物理查询计划(优化相关)
-
查询分析: 将SQL语句表示成某种有用的语法树.
-
制定逻辑查询计划: 把语法树转换成一个关系代数表达式或者类似的结构,这个结构通常称作逻辑计划。
-
制定物理查询计划:把逻辑计划转换成物理查询计划,要求指定操作执行的顺序,每一步使用的算法,操作之间的传递方式等。
查询分析各模块主要函数间的调用关系:
2 SQL工具引擎对比分析
引擎名称 | 产品 | 是否基于Antlr | 资料 | 出品方 | 备注 |
---|---|---|---|---|---|
sqlparser | greenplum |
|
| 收费的 | |
Queryparser | 未知 | 未知 | 滴滴 | 资料很少 | |
Apache Calcite | Kylin/Drill/Flink | 否,基于parser.cc |
| apache |
|
阿里druid内嵌的一个解析器 | Druid连接池 | 否,Druid没有抽出这个解析模块单独命名,号称比基于Antrl的解析器快十倍 |
| 阿里 |
|
hive sql解析 | hive | 是,基于Antrl写的一个解析工具。 后来也是用了Calcite。 |
|
| 有人说这个模块也比较好抽出来,说可以单独抽出来使用 |
spark sql解析 | Spark | 是,属于Catalyst的parse模块,直接基于Antlr,而没有使用calcite |
|
|
|
|
|
|
|
|
|