动手学大数据-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.rhkb.cn/news/4070.html

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

相关文章

WPS数据分析000004

目录 一、表格阅读技巧 冻结窗格 拆分窗口 新建窗口 阅读模式 护眼模式 二、表格打印技巧 打印预览 打印缩放 打印区域 打印标题 分页打印 打印位置 页眉页脚 逐份打印 三、表格保护技巧 锁定单元格 隐藏公式 文档权限 文件加密 一、表格阅读技巧 冻结窗…

【Android】蓝牙电话HFP连接源码分析

一、概述 在Android系统中,HF(Hands-Free Profile)客户端与AG(Audio Gateway)端之间的HFP(Hands-Free Profile)连接是蓝牙音频通信的重要组成部分。这一过程涉及多个层次和组件的协同工作&…

Redisson发布订阅学习

介绍 Redisson 的消息订阅功能遵循 Redis 的发布/订阅模式,该模式包括以下几个核心概念: 发布者(Publisher):发送消息到特定频道的客户端。在 Redis 中,这通过 PUBLISH 命令实现。 订阅者(Sub…

【Linux 重装】Ubuntu 启动盘 U盘无法被识别,如何处理?

背景 U盘烧录了 Ubuntu 系统作为启动盘,再次插入电脑后无法被识别 解决方案(Mac 适用) (1)查找 USB,(2)格式化(1)在 terminal 中通过 diskutil list 查看是…

【LLM-RL】DeepSeekMath强化对齐之GRPO算法

note 文章目录 note一、GRPOReference 一、GRPO 论文:DeepSeekMath: Pushing the Limits of Mathematical Reasoning in Open Language Models (https://arxiv.org/pdf/2402.03300)GRPO 在 DeepSeek V2 中采用了,GRPO 在训练过程…

Rust Actix Web 项目实战教程 mysql redis swagger:构建用户管理系统

Rust Actix Web 项目实战教程:构建用户管理系统 项目概述 本教程将指导你使用 Rust 和 Actix Web 构建一个完整的用户管理系统,包括数据库交互、Redis 缓存和 Swagger UI 文档。 技术栈 Rust 编程语言Actix Web 框架SQLx (MySQL 数据库)Redis 缓存Uto…

git系列之revert回滚

1. Git 使用cherry-pick“摘樱桃” step 1: 本地切到远程分支,对齐要对齐的base分支,举例子 localmap git pull git reset --hard localmap 对应的commit idstep 2: 执行cherry-pick命令 git cherry-pick abc123这样就会将远程…

Hadoop•用Web UI查看Hadoop状态词频统计

听说这里是目录哦 通过Web UI查看Hadoop运行状态🐇一、关闭防火墙二、在物理计算机添加集群的IP映射三、启动集群四、进入HDFS的Web UI 词频统计🦩1、准备文本数据2、在HDFS创建目录3、上传文件4、查看文件是否上传成功5、运行MapReduce程序6、查看MapRe…

国产编辑器EverEdit -重复行

1 重复行 1.1 应用场景 在代码或文本编辑过程中, 经常需要快速复制当前行,比如,给对象的多个属性进行赋值。传统的做法是:选中行-> 复制-> 插入新行-> 粘贴,该操作有4个步骤,非常繁琐。 那有没…

LabVIEW桥接传感器数据采集与校准程序

该程序设计用于采集来自桥接传感器的数据,执行必要的设置(如桥接配置、信号采集参数、时间与触发设置),并进行适当的标定和偏移校正,最终通过图表呈现采集到的数据信息。程序包括多个模块,用于配置通道、触…

redis-排查命中率降低问题

1.命中率降低带来的问题 高并发系统,当命中率低于平常的的运行情况,或者低于70%时,会产生2个影响。 有大量的请求需要查DB,加大DB的压力;影响redis自身的性能 不同的业务场景,阈值不一样,一般…

edge浏览器恢复旧版滚动条

1、地址栏输入edge://flags 2、搜索Fluent scrollbars.,选择disabled,重启即可

【算法】算法基础课模板大全——第一篇

由于本文章内容太长,导致文章不能以一篇博客形式发布出来,所以我将分为两篇博客进行发布。 【算法】算法基础课模板大全——第一篇 【算法】算法基础课模板大全——第二篇 此笔记适用于AcWing网站的算法基础课,所有的资源链接、代码模板全部来…

Top期刊算法!RIME-CNN-BiLSTM-Attention系列四模型多变量时序预测

Top期刊算法!RIME-CNN-BiLSTM-Attention系列四模型多变量时序预测 目录 Top期刊算法!RIME-CNN-BiLSTM-Attention系列四模型多变量时序预测预测效果基本介绍程序设计参考资料 预测效果 基本介绍 基于RIME-CNN-BiLSTM-Attention、CNN-BiLSTM-Attention、R…

日志收集Day002

1.ES的常见术语 索引(index): 用户写入ES集群的逻辑单元。 分片(shard): 一个索引最少一个分片。 将索引的数据分布式的存储在ES集群。 副本(replica): 一个分片可以有0个或多个副本。 为同一个分片数据提供数据冗余。 文档(docment): …

微服务入门:从零开始构建你的微服务架构

微服务是一种软件开发架构风格,它把一个大的应用程序拆分成一系列小的服务。这些小的服务各自独立运行在自己的进程中,并通过轻量级的通信机制(比如HTTP API)进行交互。要通俗地理解微服务,可以从以下几个方面入手&…

Ubuntu 22.04 TLS 忘记root密码,重启修改的解决办法

1.想办法进入这个界面,我这里是BIOS引导的是按Esc按一下就行,UEFI的貌似是按Shift不得而知,没操作过。下移到Advanced options for Ubuntu,按enter 2.根据使用的内核版本,选择带「recovery mode」字样的内核版本&#…

电子电气架构 --- ECU故障诊断指南

我是穿拖鞋的汉子,魔都中坚持长期主义的汽车电子工程师。 老规矩,分享一段喜欢的文字,避免自己成为高知识低文化的工程师: 简单,单纯,喜欢独处,独来独往,不易合同频过着接地气的生活,除了生存温饱问题之外,没有什么过多的欲望,表面看起来很高冷,内心热情,如果你身…

Linux(DISK:raid5、LVM逻辑卷)

题目: DISK 添加4块大小均为10G的虚拟磁盘,配置raid-5磁盘。创建LVM命名为/dev/vg01/lv01,大小为20G,格式化为ext4,挂在到本地目录/webdata,在分区内建立测试空文件disk.txt。[root@storagesrv ~]# yum install mdadm -y [root@storagesrv ~]# mdadm -C -n 3 -l 5 -a y…

差异基因富集分析(R语言——GOKEGGGSEA)

接着上次的内容,上篇内容给大家分享了基因表达量怎么做分组差异分析,从而获得差异基因集,想了解的可以去看一下,这篇主要给大家分享一下得到显著差异基因集后怎么做一下通路富集。 1.准备差异基因集 我就直接把上次分享的拿到这…