自学内容网 自学内容网

动手学大数据-3社区开源实践

目录

数据库概览:

MaxComput:

HAWQ:

Hologres:

TiDB:

Spark:

ClickHouse:

Apache Calcite 概览

Calcite RBO 

 HepPlanner

优化规则(Rule)

内置有100+优化规则

四种匹配规则

遍历所有的rule,直到没有rule可以被触发

优化速度快,实现简单,但是不保证最优

Calcite CBO 

CBO的工作原理

VolcanoPlanner

应用Rule搜索候选计划

Groupwinner:目前的最优计划 

剪枝(Branch-and-boundpruning):减少搜索空间 

Top-down遍历:选择winner构建最优执行计划 

小结 


数据库概览:

上面的这些数据库 他们都是基于Calcite来做的,下面简单介绍一些:

MaxComput:

它是属于这个volcano跟Cascade框架,volcano框架是一个优化器的一个实现框架,他没有没有具体的代码或者项目,只是描述说你的优化器应该怎么实现

HAWQ:

是使用了一个自研的一个查询优化器,叫Orca,也是属于volcano跟Cascade,然后前面那个是属于JAVA的Orca,后面是属于c++的,大家就看自己喜好的话,可以看这两个不同的不同的项目去学习查询优化器

Hologres:

然后像还有其他像阿里巴巴的Hologress,也就是定位,在他他是直接使用的这个Orca这个开源项目,作为他的优化器

TiDB:

它就是自研的,它也是属于volcano跟Cascade框架

Spark:

像Spark在里面的话,它是自研的,它既有RBO也有CBO,

ClickHouse:

它的优化器比较简单,它只有一些简单的,它没有CBO

…………………………

我们从这里可以看到,主流的大数据优化,大数据系统的查询优化计划,它都包含这个RBO,然后同时我们也可以看到Calcite这个框架是很流行的一个框架,所以后面我就会从这个方面挑上一个项目来给大家简单介绍一下

Apache Calcite 概览

 

Apache Calcite是一个动态数据管理框架。它包含了许多组成典型数据管理系统的经典模块,但省略了一些关键性的功能: 数据存储,数据处理算法和元数据存储库。
  Calcite有意地远离了存储和处理数据的任务。如我们所见,这使得它成为在应用程序和一个或多个数据存储位置和数据处理引擎之间的最佳中间层选择。它同样也是构建数据库的完美基础选择: 只需要在它的基础上添加数据。

提供了:SQL 解析、SQL 校验、SQL 查询优化、SQL 生成以及数据连接查询等典型数据库管理功能。Calcite 的目标是 One size fits all:统一的SQL查询引擎,希望能为不同计算平台和数据源提供统一的查询引擎,并以类似传统数据库的访问方式(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 两种优化模型,得到可执行的最佳执行计划。

 其他特点在于:

模块化,插件化,稳定可靠

支持异构数据模型、关系型、半结构化、流式、地理空间数据

内置RBO和CBO 

 

Calcite RBO 

 HepPlanner

优化规则(Rule)

Pattern:匹配表达式子树

等价变换:得到新的表达式

内置有100+优化规则
四种匹配规则

ARBITRARY/DEPTH_FIRST:深度优先

TOP_DOWN:拓扑顺序

BOTTOM_UP:与TOP_DOWN相反

遍历所有的rule,直到没有rule可以被触发
优化速度快,实现简单,但是不保证最优

 

Calcite CBO 

Calcite CBO成本优化引擎是Apache Calcite中的一个关键组件,它为查询优化提供了一种强大的方式。在关系型数据库管理和查询处理中,查询优化器是核心组件之一,负责确定执行查询的最有效方式。CBO通过评估不同执行计划的成本来选择最优的计划。


CBO的工作原理

Calcite CBO基于成本的优化,通过分析表和索引的统计信息、数据分布以及其他相关信息,对查询执行计划进行评估和选择。它使用启发式算法和统计数据来估算不同执行计划的成本,并根据设定的目标(例如最小化响应时间或资源消耗)来选择最佳计划。 

VolcanoPlanner

基于Volcano/Cascade框架

成本最优假设Memo:存储候选执行计划

Group:等价计划集合

Top-down动态规划搜索 

 

 

应用Rule搜索候选计划

Memo

本质:AND/ORgraph

共享子树减少内存开销 

 

Groupwinner:目前的最优计划 

 

剪枝(Branch-and-boundpruning):减少搜索空间 

可行的Aggregate

•总的cost=500

•自己的cost=150

•孩子节点cost上限=350 

 

Top-down遍历:选择winner构建最优执行计划 

 

小结 

 

1.主流的查询优化器都包含RBO和CBO

2.ApacheCalcite是大数据领域很流行的查询优化器

3.ApacheCalciteRBO定义了许多优化规则,使用pattern匹配子树,执行等价变换4.ApacheCalciteCBO基于Volcano/Cascade框架

5.Volcano/Cascade的精髓:Memo、动态规划、剪枝 


原文地址:https://blog.csdn.net/m0_73302939/article/details/145248955

免责声明:本站文章内容转载自网络资源,如侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!