多数据库聚合查询Spring Boot + Calcite

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 目录

相关推荐
不脱发的程序猿4 小时前
纳指ETF量化策略
数据库·人工智能·1024程序员节
程序员塔塔喵5 小时前
【MySQL篇|第一篇】索引失效的情况
数据库·mysql·索引失效
北京青蓝智慧马老师5 小时前
比外部黑客更难防的,是那个有权限的自己人(3 个脱敏复盘)
大数据·数据库·人工智能
笃行3506 小时前
拆一台数据集成产品:KFS 的骨架、肌肉和神经
数据库
4SAPI6 小时前
搭建 AI 数据分析工具大模型 API 选型指南
数据库·人工智能·架构·php·1024程序员节
码士集团小青7 小时前
面霸篇:高频 Java 基础问题(核心卷一)
linux·服务器·数据库·redis·缓存·1024程序员节
LMT流氓兔8 小时前
第五单元——第十二课:把脚本整理成项目
java·数据库·python·langchain·1024程序员节
cuijiecheng20188 小时前
WeFlow 无法使用怎么办?一次数据库组件到期问题的排查与修复
数据库·oracle
一条泥憨鱼9 小时前
【Redis | 黑马点评】附近商铺功能源码解读
数据库·redis·缓存
念何架构之路10 小时前
Go reflect 包:结构体反射 —Field、Tag 与 VisibleFields
java·数据库·golang