相关链接

大数据体系和 SQL

大数据体系

image-20220728183845986

其中消息队列用于解耦存储与计算,本次青训营会从分析引擎开始展开,然后是存储、消息队列与资源调度

那么,为什么要把 SQL 优化器放在第一节课讲呢?

image-20220728185137832

  • 首先,SQL 是非常流行的,而且简单,包括数据分析师和挖掘师都在用,他们可能不会使用 Python之类的通用语言,但是他们可以很方便地使用一条 SQL 去处理数据,得到他们想要的结果
  • 并且,SQL 是很多系统都支持的接口,而且 SQL 已经成为了大数据方面的通用接口。很多分析引擎一开始并不支持 SQL ,但现在都渐渐地提供了 SQL 接口

也就是说, One SQL rules big data all (通过 SQL 处理所有的大数据)

所以 SQL 在大数据中是非常重要的,下面将介绍 SQL 的处理流程

SQL 的处理流程

image-20220728185321503

首先,先通过 Parser 变成抽象语法树(Abstract Syntax Tree,AST),之后通过 Analyzer 变成逻辑计划(Logical Plan),再通过 Optimizer 变成物理计划(Physical Plan),最后交给 Executor 来执行

Parser

image-20220728191252407

死去的编译原理突然开始攻击我(bushi

Analyzer

image-20220805093818200

逻辑地:只是说明了要干什么,但是没有确定用什么算法实现(例如排序)

Optimizer

image-20220805094021013

Executor

image-20220805100154293

小结

image-20220805100423140

常规的查询优化器

查询优化器分类

image-20220805100759245

两种分类方法

  • 按遍历树的方向分
  • 按优化方法分

RBO(基于规则的优化)

这些规则只是经验规则,是总结出来的,甚至可能反向优化(

前提知识:关系代数

image-20220805101049699

3 个优化原则

image-20220805101507540

优化规则1:列裁剪

image-20220805101817766

只读取需要的列

优化规则2:谓词下推

image-20220805102110852

尽早过滤掉不必要的行,减少资源占用

优化规则3:传递闭包

image-20220805102310659

表达式的等值关系 + 过滤条件 = 新的过滤条件

优化规则4:Runtime Filter

image-20220805102637580

提早过滤左边的数据,那么就能减少开销(网络、运算等)

JOIN 的时候得到右侧 JOIN 集合的一些特性(例如知道右侧 JOIN KEY 的范围),然后通过这些特性先过滤左侧的数据

  • min-max:知道了右侧的范围是 0~100,那么左侧就只扫描 0~100 的范围(缺点:范围必须是很紧密的,不然意义不大)
  • in-list:如右侧的值很少,就可以使用 in-list ,使用集合包含过滤(缺点:右侧集合不能太大)
  • bloom filter:通过右侧来构建,效果是给我一个数,如果说不在那就是不在,说在是有可能在(具体细节在后面的课程介绍)

RBO 小结

image-20220805104142945

这里只讲了4 条经验规则,但一般实现都有几百条

优点是简单,但是缺点也很多(毕竟都是经验规则,不保证能得到最优的执行计划)

CBO(基于代价的优化)

概念

image-20220805104643426

统计信息

image-20220805105400574

统计信息的收集方式

image-20220805105649207

统计信息推导规则

image-20220805110039676

这个稍微看一下应该不难理解

统计信息的问题

image-20220805110635341

(如果是汉,那么必定是比亚迪的)

执行计划枚举

image-20220805110905123

image-20220805111125417

image-20220805111143993

image-20220805111215594

image-20220805111240327

CBO 效果

image-20220805111341957

image-20220805111349107

image-20220805111451179

image-20220805111515487

CBO 小结

image-20220805111558667

小结

image-20220805111701885

社区开源实践

概览

image-20220805111806216

Apache Calcite

image-20220805112013641

作为一个优化器,下面可以对接各种系统

Calcite RBO

image-20220805112236593

Calcite CBO

image-20220805112532539

image-20220805112830803

image-20220805113037882

image-20220805113212421

image-20220805113319891

小结

image-20220805113339924

前沿趋势

Big Data, Big Money

image-20220805113451272

概览

image-20220805113536393

DATA + AI

image-20220805113945507

小结

image-20220805114238768

课程总结

image-20220805114344817