SQL 前端引擎 Calcite

Calcite 介绍

Apache Calcite是一个SQL引擎,主要完成parser和optimizer的功能,提供对DML语句的解析、校验和优化操作。对DDL和数据存储做了选择性的不支持。因为其强大的逻辑计划优化能力,Calcite已被多个热门开源项目使用。

优化器

Calcite提供了两种优化器:启发式(HepPlanner)和火山式(VolcanoPlanner)。启发式优化采用基于规则(rule)的优化方法,简称RBO;火山式优化主要基于代价(cost)的优化,简称CBO。

Calcite的强项在于提供了一个优化框架,可以自由拓展定制自己的优化规则。其自身也定义了上百种的规则,用户可以根据需求选择需要的优化规则,生成期望的执行计划。

流式查询

除了批处理的查询语法,Calcite也已经支持流式查询的解析。并且批式和流式的执行计划可以共用一套优化规则。通过 STREAM 关键字区分两种语法,由逻辑计划树中的 ChiDelta 结点完成流表转换。

注册表和自定义函数

虽然Calcite不支持DDL,但其提供了一套Table和Function的相关接口,供用户实现具体类型并注册到Calcite中,从而完成DML语句的语义校验。这可以非常灵活的拓展不同的表定义,仅仅根据需要定制一个Adapter。

25 June 2016

blog comments powered by Disqus