前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Calcite系列(一):背景介绍

Calcite系列(一):背景介绍

原创
作者头像
Yiwenwu
修改2024-04-15 07:47:31
2881
修改2024-04-15 07:47:31
举报
文章被收录于专栏:Calcite剖析Calcite剖析

项目起源

Apache Calcite是一款开源的动态数据管理框架,提供了标准的 SQL 语言、查询优化和连接各种数据源的能力,但不包括数据存储、处理数据的算法和存储元数据的存储库。

Calcite 最早的名称叫做optiq,起初在Hive 项目中,为Hive 提供CBO代价优化。2014年5月optiq独立并成为Apache社区的孵化项目,2014年9月更名为Calcite,2015年10月正式毕业成为顶级项目。

Calcite 的目标是"One planner fits all",期望能为不同的计算平台和数据源提供统一的查询优化器。作为一个通用的SQL处理层,Calcite 被众多的开源组件和公司广泛使用。相较于另一款开源的SQL中间件GPORCA(Greenplum扩展优化器),Calcite具备更加丰富且成熟的功能,目前社区仍在活跃更新。

整体架构

Calcite的整体架构如下图所示,其中,最为核心的组件是查询优化器(Query Optimizer),负责实现SQL计划树的转换和优化,优化器的SQL优化能力与执行效率直接相关,是SQL处理层的重点和难点。Calcite的查询优化器主要依赖以下三个组件:

  1. 运算表达式(Operator Expressions):表示关系代数,是SQL关系代数优化的前提
  2. 优化规则(Pluggable Rules):实现关系代数的等价转换
  3. 统计元数据(Metadata Providers):实现CBO代价优化的基础

为实现完整的SQL处理流程,Calcite还包括JDBC Server、SQL解析器和验证器,表达式构建器。Calcite对外主要提供两种调用方式:1. 基于JDBC调用;2. 直接基于Java API调用。

对外接口

Calcite对外提供了丰富的的API和SPI,主要包括以下六个模块:

  1. 关系代数相关:RelNode(计划树),RelDataType(数据类型),RexNode(行表达式),RelTrait(物理属性)
  2. SQL解析器相关:SqlNode(AST抽象语法树),SqlParser(SQL解析器),SqlValidator(SQL校验器)
  3. 元数据相关:Schema,Table,Function(函数)
  4. JDBC Driver相关:Avatica
  5. 优化规则相关:RelOptRule(规则)
  6. COST统计相关:RelOptCost(CBO代价),RelMetadataProvider(统计元数据计算)

IR层扩展

除了作为计算引擎的SQL处理层,Calcite还可以为其他SQL中间表示层(IR层)提供扩展处理能力。基于Calcite扩展的常见SQL IR层组件有 Linkedin Coral 和 Substrait。

LinkedIn Coral:是Linkedin开源的SQL转换、分析、改写组件,提供多类型SQL方言转换功能。Coral IR层有两种定义方式:(1). 基于AST抽象语法树;(2). 基于逻辑计划。

Coral内核基于Calcite扩展了SQL优化和方言转换功能,下图展示了两个组件之间的交互关系,其中蓝色表示Calcite模块:

Substrait:基于Proto Plan定义跨语言关系代数的序列化协议,核心是定义SQL计划树的规范,使得这些计划树可以在不同的执行引擎之间进行转换和优化,解决不同引擎间互操作性差的问题。

Substrait-java是针对Substrait的Java子项目,便于在Java应用中操作Substrait的计划树。Substrait-java 基于Calcite完成SQL到关系代数RelNode的转换,下图展示了两个组件之间的交互关系,其中蓝色表示Calcite模块:

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

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

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

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

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

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