Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >Calcite系列(三):核心概念-Convention

Calcite系列(三):核心概念-Convention

原创
作者头像
Yiwenwu
修改于 2024-04-16 01:55:48
修改于 2024-04-16 01:55:48
5400
举报
文章被收录于专栏:Calcite剖析Calcite剖析

概念定义

Convention:Calcite设计的核心概念,代表一类特定的数据源或执行引擎,基于Convention可生成与具体数据源或者引擎相关的执行计划。Calcite初始逻辑计划的所有树节点Convention=NONE,此时CBO代价无穷大,基于Calcite内置执行器无法直接执行。只有将所有计划树节点都转为可执行Convention才可基于Calcite执行,该转换过程可等价理解为从逻辑计划转为物理计划

在Calcite中,内置可执行Convention如下所示,其中,EnumerableConvention 基于Linq4j生成Java代码并以Iterator迭代器执行;JdbcConvention 基于JDBC连接获取计算结果。

在SQL优化过程中,由于表存储相对固定,无法轻易的变更和移动,因此表节点TableScan只对应一种Convention类型,例如,JDBC来源的表会固定对应为 JdbcConvention;而其他代数运算符(例如,Join、Filter)可以对应多种Convention类型。在Calcite优化过程中,优化器将选择出该节点最优的Convention类型

转换流程

Convention为跨源混合查询提供统一处理方式,也可等价理解为:不同Convention的组合在一起,即表示为跨源查询

根据下面流程图,可以直观地展示出多个跨源Convention的转换过程:

  1. 首先从一棵原始逻辑算子的计划树开始,当前所有树节点的Convention=NONE,即没有设置Convention物理属性;
  2. 根据不同的表来源,对TableScan节点设置与数据源相关的Convention。例如,黄色代表MySQL数据源的表, 绿色代表PostgreSQL数据源的表,不同的颜色即对应不同的Convention。
  3. 在优化器优化阶段,会基于优化规则触发Convention在节点间传递,相同颜色的节点代表Convention相同。例如,黄色节点有相同的Convention,代表可在MySQL数据源中运算;绿色节点有相同的Convention,代表可在PostgreSQL数据源运算。
  4. 由于两个与数据源相关的Convention无法直接进行计算,因此需要引入一个与执行引擎相关且与特定数据源无关的Convention(即橙色节点),来表示跨源执行。Calcite在implement实现阶段,会将数据源相关Convention生成对应的SQL查询子句,黄色SQL子句可以在MySQL数据源执行,绿色SQL子句可以在PostgreSQL数据源执行,各个数据源执行的结果可以汇总到Calcite,Calcite基于橙色Convention执行与数据源无关的跨源计算。

Converter跨源

Calling Convention:指触发不同Convention的转换,不同的Convention之间基于Converter节点过渡,即基于Converter节点可标识跨源处理。

如下左图所示,三种颜色代表三种Convention,从蓝色Convention到橙色Convention 中间对应一个BlueToOrange的Converter节点;从绿色Convention到橙色Convention 中间对应一个GreenToOrange的Converter节点。

如下右图所示,分别表示单源查询和跨源查询的计划树。单源查询Converter在Root根节点上,下面所有节点的Convention相同,对应特定数据源的JdbcConvention;而跨源查询,不同的数据源都关联各自的Converter节点,跨源Join关联操作由与数据源无关的EnumerableConvention表示。

我正在参与2024腾讯技术创作特训营最新征文,快来和我瓜分大奖!

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
腾讯大数据|天穹SuperSQL执行核心剖析
1. 数据孤岛:由于历史原因以及不同数据中心的业务差异性,众多异构数据源形成了数据孤岛,导致大量且繁重的人工数据搬迁。与此同时,由于不同国家的数据安全法限制,很多数据无法搬迁,数据安全和查询效率都难以保证
腾讯大数据
2024/04/28
1.8K0
腾讯大数据|天穹SuperSQL执行核心剖析
Calcite系列(四):核心概念-Adapter
Calcite作为SQL中间件,为提供扩展性并适配不同数据源,设计了Adapter适配器方式对接异构数据源,允许Calcite连接到不同类型的数据源。Adapter会根据数据源特性进行查询优化,并负责将Calcite的逻辑查询转换为可以在特定数据源上执行。
Yiwenwu
2024/04/17
6040
Calcite技术研究
Apache Calcite是一个基础的软件框架,它提供了查询处理、查询优化以及查询语言支持的能力。很多流行的开源数据处理系统例如Apache Hive,Apache Storm,ApacheFlink,Druid等都采用了它。
Fayson
2020/02/24
2.4K0
Calcite技术研究
Calcite系列(二):核心概念-关系代数
关系模型是一种用于数据库管理的理论框架,其基础建立在数学的集合论之上。该模型由Edgar F. Codd 于1970年提出,旨在以一种严格且理论化的方式来描述数据之间的关系,使得数据操作能够通过一系列关系代数来表达。关系模型主要由以下三部分组成:
Yiwenwu
2024/04/15
7770
Apache Calcite 框架 50 倍性能优化实践
某天临时被当成壮丁拉去参加一个非常牛逼的应用监控平台(后续会开源),然后大佬就给我派了一个任务,要将项目中的查询性能优化 50 倍以上,大佬对我如此地寄予厚望,我怎么能让大佬失望呢(虽然我内心瑟瑟发抖)?于是我就开始了这段性能优化之旅。
张乘辉
2021/01/28
5.7K1
如何使用calcite rule做SQL重写(上)
各位读者朋友,我想死你们了,今天我带着 calcite这个专题的第三篇文章来了,今天我们来说说sql重写,这可能也是大家都有需求的方面,我计划这个专题分为三篇来写:
麒思妙想
2023/08/28
1.8K0
如何使用calcite rule做SQL重写(上)
Calcite系列(九):执行流程-优化器优化
优化器优化是SQL处理的第四步,也是最核心的一步,优化器优化本质是基于优化规则实现关系代数等价转换。
Yiwenwu
2024/04/22
1.2K0
Calcite系列(九):执行流程-优化器优化
Calcite系列(一):背景介绍
Apache Calcite是一款开源的动态数据管理框架,提供了标准的 SQL 语言、查询优化和连接各种数据源的能力,但不包括数据存储、处理数据的算法和存储元数据的存储库。
Yiwenwu
2024/04/14
1K1
如何使用calcite rule做SQL重写(下)
上一篇文章我们介绍了如何使用默认规则做条件下推,今天我们来尝试自定义规则,来实现对SQL的重写。我们本期将会深入浅出的以修改查询表为例,进行Sql rewrite,这应该在我们湖仓一体的架构中,处于核心地位的需求。我们今天就深入浅出的来做一个案例 Select * from consumers 实际查询则为 Select * from consumers_1,这个需求在分库分表里应该也很常见。
麒思妙想
2023/09/12
1.3K1
如何使用calcite rule做SQL重写(下)
Calcite基础入门(一)
这是一个循序渐进的教程,展示了如何构建和连接Calcite。它使用一个简单的适配器,使CSV文件的目录看起来是一个包含表的模式。Calcite完成了其余的工作,并提供了完整的SQL接口。
从大数据到人工智能
2022/01/18
2.4K0
Calcite系列(十二):可插拔性&JDBC驱动
为了实现动态数据源管理框架的目标,Calcite提供了丰富的可插拔能力和扩展性。用户可以根据使用场景进行自定义扩展。相关可插拔扩展的组件包括:
Yiwenwu
2024/04/25
8950
Calcite系列(七):执行流程-合法性校验
合法性校验是SQL处理的第二步,在计算执行前,提前验证SQL正确性。该验证操作是非线性的,需要基于语法树处理各种嵌套的复杂情况。Calcite合法性校验基于SqlValidator 接口和对应实现类SqlValidatorImpl 完成。
Yiwenwu
2024/04/20
6760
Calcite 背景介绍
它包含了组成典型数据库管理系统的许多部分,但省略了一些关键功能:数据存储、处理数据的算法和存储元数据的存储库。
从大数据到人工智能
2022/01/18
1K0
【Flink SQL】Apache Calcite 架构剖析
Apache Calcite 是一个动态的数据管理框架, 可以实现 SQL 的解析、验证、优化和执行。Calcite 是模块化和插件式的, 解析、验证、优化和执行的步骤都对应着一个相对独立的模块。用户可以选择使用其中的一个或多个模块,也可以对任意模型进行定制化扩展。
王知无-import_bigdata
2023/04/07
1.1K0
【Flink SQL】Apache Calcite 架构剖析
Calcite系列(十):执行流程-计划树执行
计划树执行是SQL处理的第五步,也称为Implementor执行实现。Calcite主要提供两种Implementor实现方式:RelImplementor 和 SqlImplementor。
Yiwenwu
2024/04/23
6380
calcite简单入门
Apache Calcite是一款开源的动态数据管理框架,它提供了标准的 SQL 语言、多种查询优化和连接各种数据源的能力,但不包括数据存储、处理数据的算法和存储元数据的存储库。
zhangheng
2020/04/29
8.2K0
Apache Calcite 论文学习笔记
特别声明:本文来源于掘金,“预留”发表的[Apache Calcite 论文学习笔记](https://juejin.im/post/5d2ed6a96fb9a07eea32a6ff)
叁金
2019/07/22
1.5K0
Apache Calcite 功能简析及在 Flink 的应用
• Apache Calcite 是一个动态数据的管理框架,可以用来构建数据库系统的语法解析模块
KyleMeow
2018/09/02
7.9K0
Apache Calcite 功能简析及在 Flink 的应用
SuperSQL:跨数据源、跨DC、跨执行引擎的高性能大数据SQL中间件
导语:SuperSQL是腾讯数据平台部自研的跨数据源、跨数据中心、跨执行引擎的统一大数据SQL分析平台/中间件,支持对接适配多类外部开源SQL执行引擎,如Spark、Hive等。 背景 SuperSQL是一款自研的跨数据源、跨数据中心、跨执行引擎的高性能大数据SQL中间件,满足对位于不同数据中心的不同类型数据源的数据联合分析/即时查询的需求。SuperSQL的目标是成为公司内部统一的SQL分析中间件,实现以下三点的价值: 解决业务数据孤岛,最大化数据的使用价值 执行引擎最优选择,提升业务使用数据效率
腾讯技术工程官方号
2019/09/24
8.9K1
SuperSQL:跨数据源、跨DC、跨执行引擎的高性能大数据SQL中间件
【连载】如何掌握openGauss数据库核心技术?秘诀二:拿捏执行器技术(1)
执行器在数据库整个体系结构中起到承上(优化器)启下(存储)的作用,本章首先介绍执行器的基本框架,然后引申介绍执行引擎中一些关键技术。通过本章的学习,读者应该对于执行器有基本的认识。
数据和云
2021/12/06
9560
【连载】如何掌握openGauss数据库核心技术?秘诀二:拿捏执行器技术(1)
相关推荐
腾讯大数据|天穹SuperSQL执行核心剖析
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档