前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Calcite系列(三):核心概念-Convention

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

原创
作者头像
Yiwenwu
修改2024-04-16 09:55:48
1810
修改2024-04-16 09:55:48
举报
文章被收录于专栏: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 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 概念定义
  • 转换流程
  • Converter跨源
相关产品与服务
大数据处理套件 TBDS
腾讯大数据处理套件(Tencent Big Data Suite,TBDS)依托腾讯多年海量数据处理经验,基于云原生技术和泛 Hadoop 生态开源技术对外提供的可靠、安全、易用的大数据处理平台。 TBDS可在公有云、私有云、非云化环境,根据不同数据处理需求组合合适的存算分析组件,包括 Hive、Spark、HBase、Flink、presto、Iceberg、Alluxio 等,以快速构建企业级数据湖、数据仓库。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档