从传统的数据库来说,分为前端和后端,后端主要是引擎的部分,前端主要是sql解析,分析到执行计划上,本文对开源的sql解析项目做个简单的介绍:
1、发现一个sql解析很好的项目,apache顶级项目:calcite,有整体的框架
官方地址: https://calcite.apache.org/
csdn上一博客解析比较好的项目: https://blog.csdn.net/qxc1281/category_8479654.html
2、sql解析知乎上给出的建议:
https://www.zhihu.com/question/51676071
总结:
a)、presto实现的比较清爽,基于antlr
b)、calcite 偏重于忧患,专注查询计划优化变化,如果有数据库后端,很容易构建出一个完整的sql前端,很多项目都采用,比如:hive
c)、tidb自己做了一个sql parser
3、阿里druid
https://github.com/alibaba/druid