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

Calcite系列(二):核心概念-关系代数

原创
作者头像
Yiwenwu
修改2024-05-04 11:50:04
5430
修改2024-05-04 11:50:04
举报
文章被收录于专栏:Calcite剖析

理论基础

关系模型是一种用于数据库管理的理论框架,其基础建立在数学的集合论之上。该模型由Edgar F. Codd 于1970年提出,旨在以一种严格且理论化的方式来描述数据之间的关系,使得数据操作能够通过一系列关系代数来表达。关系模型主要由以下三部分组成:

  1. 关系运算集合:即关系代数,描述关系操作的集合,这些操作应用于关系(表),其运算对象和结果均为关系(表)
  2. 关系数据结构:即表结构,是结构化的Schema定义
  3. 关系完整性约束:描述表之间的约束关系,如唯一键、外键等

关系代数是关系型数据库操作的基础,其运算对象和结果都是关系(表)。Codd 提出的原始关系运算包括:选择(Select)、投影(Project)、笛卡尔积(Cartesian Product)、并集(Union)、差集(Difference)以及重命名(Rename)。随着关系模型的不断发展,更多的关系代数运算被提出,常用的关系代数运算如下表所示:

Calcite实现

Calcite基于RelNode表示关系代数节点,即关系算子,其中,通过AbstractRelNode定义基本的关系代数,主要包括:

  1. SingleRel(一元运算):Filter(过滤)、Project(投影)、Aggregate(聚合)、Sort(排序)、Limit、Window(窗口函数)、Uncollect、Collect 等
  2. BiRel(二元运算):Join、Correlate(嵌套循环连接)
  3. SetOp(集合运算):Union(并集)、Minus(差集)、Intersect(交集)
  4. TableScan(关系):表节点,作为计划树叶子节点

在Calcite中,一种关系代数类别可由一个逻辑算子(Logical)和多个物理算子(Adapter/Physical)组成,它们都可以使用RelNode表示,通过RelTrait来区分算子的物理属性。

Calcite 中不单独区分逻辑算子(Logical operator) 和物理算子(Physical operator)RelNode 基于RelTrait 区分算子的物理属性(Physical properties),RelTraitDef 可定义RelTrait的类别,分别对应:排序、分区、Convention规约。

在Calcite中,为完整描述关系代数体系中,其他相关联的重要对象还包括:

  1. RexNode:行表达式,表示可单行计算并返回结果的表达式,例如:id=100。其实现的子类包括:RexCall(运算符调用)、RexLiteral(常量表达式)、RexVariable(变量表达式)、RexRangeRef(范围表达式)以及RexInputRef(引用表达式)等
  2. RelDataType:数据类型,包括:BasicSqlType(基本类型)、ArraySqlType(数组类型)、MapSqlType(Map类型)等
  3. RelTrait:物理属性,包括:RelCollation(排序)、RelDistribution(分区)、Convention(规约)

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

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

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

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

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

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 理论基础
  • Calcite实现
相关产品与服务
数据湖计算 DLC
数据湖计算DLC(Data Lake Compute,DLC)提供了敏捷高效的数据湖分析与计算服务。服务采用无服务器架构(Serverless),开箱即用。使用标准SQL语法即可完成数据处理、多源数据联合计算等数据工作,有效降低用户数据分析服务搭建成本及使用成本,提高企业数据敏捷度。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档