calcite 基本概念性的东西就不说了,本片不说技术相关的东西,仅仅闲谈
最近越来越明白了一件事:框架之所以叫框架,必然用到了模板方法,我们只需要实现哪些我们自己需要实现的东西即可。
框架的魔力不在于可以用来做什么东西,对于我而言,它的吸引力在于是如何实现的。为什么都是简简单单的 java 语言,可以发展出来无穷无尽的各式各样的框架。特别有意思,如果能开发出一些有意思的东西就更有意思了
calcite 是一个特别有意思的东东,介于查询与存储之间的解析层,类似于之前提到的 ANTL4 , 但远远比 antl4 强大。它设计的初衷 one size fits all
,可见其志向很大。
Calcite 的架构有三个特点:flexible, embeddable, and extensible,就是灵活性、组件可插拔、可扩展,它的 SQL Parser 层、Optimizer 层等都可以单独使用,这也是 Calcite 受总多开源框架欢迎的原因之一。
像 SQL Parser 层、Optimizer 层等都没有了解过,但有了它就可以建立一个统一的 SQL 平台。对于数据平台来说,一切皆 SQL,无论是对外提供服务还是对内各种查询转化,可以大大的节省人力提高效率。对外提供服务的接口完全可以模板化,一次开发 n 次使用,one develop ,use everywhere
。想想就觉得很有意思很溜。
但 calcite 入门很简单,进阶很难,里面有很多一系列的概念细节,最重要的是官网文档不是特别的健全。
不管如何,都是特别值得学习的一种框架基础,学会了这个对 flink、hive 等 sql 解析解可以一通百通了