动手学大数据-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、动态规划、剪枝 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/pingmian/67635.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

多平台下Informatica在医疗数据抽取中的应用

一、引言 1.医疗数据抽取与 Informatica 概述 1.1 医疗数据的特点与来源 1.1.1 数据特点 医疗数据具有显著的多样性特点。从数据类型来看,涵盖了结构化数据,如患者的基本信息、检验检查结果等,这些数据通常以表格形式存储,便于…

HTTP / 2

序言 在之前的文章中我们介绍过了 HTTP/1.1 协议,现在再来认识一下迭代版本 2。了解比起 1.1 版本,后面的版本改进在哪里,特点在哪里?话不多说,开始吧⭐️! 一、 HTTP / 1.1 存在的问题 很多时候新的版本的…

BUUCTF_Web(October 2019 Twice SQL injection)

October 2019 Twice SQL injection 知识点: 二次注入: 当用户提交的恶意数据被存入数据库后,应用程序再把它读取出来用于生成新的SQL语句时,如果没有相应的安全措施,是有可能发生SQL注入的,这种注入就叫…

Jenkins-pipeline语法说明

一. 简述: Jenkins Pipeline 是一种持续集成和持续交付(CI/CD)工具,它允许用户通过代码定义构建、测试和部署流程。 二. 关于jenkinsfile: 1. Sections部分: Pipeline里的Sections通常包含一个或多个Direc…

电商项目高级篇08-springCache

电商项目高级篇08-springCache 1、整合springCache2、Cacheable细节设置 1、整合springCache 1、引入依赖 <!--引入springCache--><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-cache</artifa…

【tailscale 和 ssh】当服务器建立好节点,但通过客户端无法通过 ssh 连接

背景 当服务器建立好节点&#xff0c;一切显示正常但通过客户端无法通过 vs code 中的 ssh 连接到服务器 问题解决 因为服务器是重装过的&#xff0c;所以忘记在服务器上下载 ssh 了。。。安装完成并启动 SSH 服务后便可正常连接&#xff01; sudo apt update sudo apt in…

python编程-OpenCV(图像读写-图像处理-图像滤波-角点检测-边缘检测)边缘检测

OpenCV中边缘检测四种常用算子&#xff1a; &#xff08;1&#xff09;Sobel算子 Sobel算子是一种基于梯度的边缘检测算法。它通过对图像进行卷积操作来计算图像的梯度&#xff0c;并将梯度的大小作为边缘的强度。它使用两个3x3的卷积核&#xff0c;分别用于计…

[实现Rpc] 环境搭建 | JsonCpp | Mudou库 | callBack()

目录 1. 项目介绍 2. 技术选型 3. 开发环境和环境搭建 Ubuntu-22.04环境搭建 1. 安装 wget&#xff08;一般情况下默认会自带&#xff09; 2. 更换国内软件源 ① 备份原始 /etc/apt/sources.list 文件 ② 编辑软件源文件 ③ 更新软件包列表 3. 安装常用工具 3.1 安装…

Golang Gin系列-1:Gin 框架总体概述

本文介绍了Gin框架&#xff0c;探索了它的关键特性&#xff0c;并建立了简单入门的应用程序。在这系列教程里&#xff0c;我们会探索Gin的主要特性&#xff0c;如路由、中间件、数据库集成等&#xff0c;最终能使用Gin框架构建健壮的web应用程序。 总体概述 Gin是Go编程语言的…

Node.js 与 JavaScript 是什么关系

JavaScript 是一种编程语言&#xff0c;而 Node.js 是 JavaScript 的一个运行环境&#xff0c;它们在不同的环境中使用&#xff0c;具有一些共同的语言基础&#xff0c;但也有各自独特的 API 和模块&#xff0c;共同推动着 JavaScript 在前后端开发中的广泛应用。 一、基础语言…

游戏引擎学习第81天

仓库:https://gitee.com/mrxiao_com/2d_game_2 或许我们应该尝试在地面上添加一些绘图 在这段时间的工作中&#xff0c;讨论了如何改进地面渲染的问题。虽然之前并没有专注于渲染部分&#xff0c;因为当时主要的工作重心不在这里&#xff0c;但在实现过程中&#xff0c;发现地…

IO多路复用详解-selectpollepoll

目录 1.IO多路复用概念 2.系统调用函数 2.1select 2.1.1select函数细节 2.2基于select实现并发处理 2.2.1处理流程 2.2.2服务端通信代码 2.2.3客户端通信代码 2.3基于poll函数实现并发处理 2.3.1select与poll函数区别 2.3.2poll函数 2.3.3服务器端代码实现 2.3.4客…

IDEA下载安装

目录 IDEAWin下载安装 Mac下载安装 IDEA中基本配置&注释修改背景主题为白色修改字体大小鼠标滚轮控制字体大小控制字母大小写提示&#xff08;取消勾选&#xff09;设置自动编译&#xff08;打勾&#xff09;自动保存&#xff08;参数为1&#xff09;设定参数提示&#xff…

A Dual-Module Denoising Approach 解读

系列博客目录 文章目录 系列博客目录1.这个GCN有什么用2.GCN是如何增强方面相关的情感表达 1.这个GCN有什么用 在本文中&#xff0c;图卷积网络&#xff08;GCN&#xff09;的作用可以总结为以下几点&#xff1a; 建模多模态依赖关系 GCN 利用 加权关联矩阵 (A)&#xff0c;将…

复用类(1):组合、继承

复用代码是java众多引人注目的功能之一。但要想成为极具革命性的语言&#xff0c;仅仅能够复制代码并对之加以改变是不够的&#xff0c;它还必须能够做更多的事情。 上述方法常为C这类过程型语言所使用&#xff0c;但收效不是很好。正如java中所有事物一样&#xff0c;问题解决…

.Net Core微服务入门全纪录(五)——Ocelot-API网关(下)

系列文章目录 1、.Net Core微服务入门系列&#xff08;一&#xff09;——项目搭建 2、.Net Core微服务入门全纪录&#xff08;二&#xff09;——Consul-服务注册与发现&#xff08;上&#xff09; 3、.Net Core微服务入门全纪录&#xff08;三&#xff09;——Consul-服务注…

RV1126+FFMPEG推流项目(9)AI和AENC模块绑定,并且开启线程采集

前面两篇已经交代AI和AENC模块的配置&#xff0c;这篇就让这两个模块绑定起来&#xff0c;绑定的原因是&#xff0c;Aenc从Ai模块拿到采集的原始数据进行编码。 使用 RK_MPI_SYS_Bind 把 AI 节点和 AENC 进行绑定&#xff0c;其中 enModId 是模块 ID 号选择的是 RK_ID_AI、s32C…

2.5G PoE交换机 TL-SE2109P 简单开箱评测,8个2.5G电口+1个10G光口(SFP+)

TPLINK&#xff08;普联&#xff09;的万兆上联的2.5G网管交换机TL-SE2109P简单开箱测评。8个PoE 2.5G电口&#xff0c;1个万兆SFP上联口。 2.5G交换机 TL-SE2420 简单开箱评测&#xff0c;16个2.5G电口4个10G光口(SFP)&#xff1a;https://blog.zeruns.com/archives/837.html…

若依框架搭建学习

按这位大神的教程一步一步来。我只写注意事项。 https://mp.weixin.qq.com/mp/appmsgalbum?__bizMzg5OTgxOTg0Ng&actiongetalbum&album_id2441331662295973890&scene173&from_msgid2247483925&from_itemidx1&count3&nolastread1#wechat_redirect…

学成在线_内容管理模块_创建模块工程

学成在线模块工程 1.各个微服务依赖基础工程2.每个微服务都是一个前后端分离的项目3.xuecheng-plus-content&#xff1a;内容管理模块工程xuecheng-plus-content-modelxuecheng-plus-content-servicexuecheng-plus-content-api 1.各个微服务依赖基础工程 2.每个微服务都是一个前…