几个月前Calcite举办了一次线上的讨论会,讨论了开源的发展,也分享了Calcite这些年的演变。个人认为Calcite的发展史有助于学习Calcite,于是单独截取出来分享了一下。
- LucidDB
这是一个数据库项目,包括了JDBC构成的前端和C++编写的后端。
- 插件化
C++编写的后端放在LucidDB中比较重,于是将其剥离,抽象为Adapter。不仅减轻了SQL解析优化的压力,还便于不同的引擎实现不同的后端逻辑。
同时,这个阶段也将cataglog、rbo和cbo都改为可插拔的。
3. Calcite项目基本形成
之前使用只支持JDBC客户端,但是有些用户想使用ODBC。于是Calcite直接将JDBC相关的功能拆成了子项目avatica,Calcite直接将SQL解析的接口暴露给用户。
4. 增加方言模块
Calcite项目基本成立之后,市面上的SQL引擎也丰富起来,不同的引擎有不同的SQL标准。
Calcite可以将关系代数表达式翻译成不同引擎的SQL,于是增加了方言的功能支持不同的引擎去实现自己的方言。