Apache Calcite 是一个动态数据管理框架。
它包含了典型数据库管理系统(DBMS)的许多核心组件,但省略了一些关键功能:不提供数据存储、不实现数据处理算法,也不维护存储元数据的仓库。
Calcite 刻意避开了数据存储与处理的业务范畴。正如我们将看到的,这使其成为连接应用程序与一个或多个数据存储位置及数据处理引擎的绝佳中介。同时,它也是构建数据库的完美基础------只需补充数据即可。
Calcite 提供了:SQL 解析、SQL 校验、SQL 查询优化、SQL 生成以及数据连接查询等典型数据库管理功能。Calcite 的目标是 One Size Fits All,即一种方案适应所有需求场景,希望能为不同计算平台和数据源提供统一的查询引擎,并以类似传统数据库的访问方式(SQL 和高级查询优化)来访问不同计算平台和数据源上的数据。下图展示了 Calcite 的架构以及 Calcite 和数据处理系统的交互关系,从图中我们可以看出 Calcite 具有 4 种类型的组件

-
最外层是
JDBC Client和数据处理系统(Data Processing System),JDBC Client 提供给用户,用于连接 Calcite 的 JDBC Server,数据处理系统则用于对接不同的数据存储引擎; -
内层是 Calcite 核心架构的流程性组件,包括负责接收 JDBC 请求的
JDBC Server,负责解析 SQL 语法的SQL Parser,负责校验 SQL 语义的SQL Validator,以及负责构建算子表达式的Expression Builder(可以通过 SQL 转换为关系代数,也可以通过 Expression Builder 直接构建); -
算子表达式(
Operator Expressions)、元数据提供器(Metadata Providers)、可插拔优化规则(Pluggable Rules) 是用于适配不同逻辑的适配器,这些适配器都可以进行灵活地扩展; -
查询优化器(
Query Optimizer)是整个 Calcite 的核心,负责对逻辑执行计划进行优化,基于 RBO 和 CBO 两种优化模型,得到可执行的最佳执行计划。

参考
https://strongduanmu.com/blog/apache-calcite-quick-start-guide.html
https://github.com/apache/calcite.git,
cd calcite/example/csv 进入 csv 目录