这是我参与「第四届青训营 」笔记创作活动的的第3天
社区开源实践
概览
数据库 | SQL Optimzer |
|---|---|
| Hive、Flink、Alibaba MaxCompute... | 基于Apache Calcite,属于Volccano/Cascade框架 |
| Greenplum、HAWQ | 自研Orca,属于Volcano/Cascade框架 |
| Alibaba Hologres(定位HSAP) | 基于Orca,属于Volcano/Cascade框架 |
| TiDB | 自研,属于Volcano/Cascade框架 |
| Spark | 自研,RBO + CBO |
| Presto | 自研,RBO + CBO |
| Doris | 自研,RBO + CBO |
| ClickHouse | 自研,RBO |
| Alibaba OceanBace | 自研,RBO + CBO |
Apache Calcite
查询优化器,解析SQL进行优化,得到执行计划(执行计划的执行交给其它系统),可以单独作为一个优化层
- One size fits all :统一的SQL查询引擎
- 模块化,插件化,稳定可靠
-
支持异构数据模型
- 关系型
- 半结构化
- 流式
- 地理空间数据
- 内置RBO和CBO
Calcite RBO
HepPlanner
优化规则( Rule )
- Pattern : 匹配表达式子树
- 等价变换:得到新的表达式
内置有100+优化规则
四种匹配规则
- ARBITRARY/DEPTH_FIRST:深度优先
- TOP_DOWN:拓扑顺序
- BOTTOM_UP:与TOP_DOWN相反
遍历所有的rule,直到没有rule可以被触发
优化速度快,实现简单,但是不保证最优
Calcite CBO
VolcanoPlanner
基于Volcano/Cascade框架
成本最优假设
Memo:存储候选执行计划
- Group:等价计划集合
Group winner:目前最优计划
剪枝(Branch-and-bound pruning ):减少搜索空间
Top-down 动态规划搜索
从上往下
应用 Rule搜索候选计划
通过关系代数等价规则获取新的逻辑计划
Memo
- 本质:AND/OR grapl
- 共享子树减少内存开销
小结
- 主流的查询优化器都包含 RBO和CBO
- Apache Calcite是大数据领域很流行的查询优化器
- Apache Calcite RBO定义了许多优化规则,使用pattern匹配子树,执行等价变换
- Apache Calcite CBO基于Volcano/Cascade框架
- Volcano/Cascade的精髓:Memo、动态规划、剪枝
前沿趋势
历史
2021年初,Starburst Data 公司为其Trino系统(以前的 PresitoSQL)筹集了1亿美元。
2021年6月,Apache Kafka 话商业化公司Confluent 登陆NSDAQ,首日涨25%,市值超110亿美元。
2021年8月,Apache Iceberg的创建者Ryan Blue 正式成立围绕Iceberg的商业公司Tabular。
2021年8月,Spark背后的公司Databricks宣布获得16亿美元融资,最新估值飙升至380亿美元。
2021年9月,ClickHouse的创建者Alexey正式成立公司:ClickHouse, Inc,获得了5000万美元融资。
2021年10月,基于Apache Pulsar 的商业化公司StreamNative宣布获得2300万美元A轮副融资。
概览
1、引擎架构变化:存储计算一体化,没办法单扩容存储或计算
2、一体化:事务形数据和分析形数据一体化
3、在一个系统里支持多种处理
4、云原生:离不开存储、计算和分离,K8S,结点可以适当缩减扩充,减少了成本
5、湖仓一条:把数据编制成关系型数据放在数据仓库中,数据仓库限制了对数据的使用,可能丢失原始数据;数据湖的数据是不规整的,不方便查询
6、人工智能与数据库优化结合
DATA+AI
AI4DB
人工智能是否可以帮助数据库做更好的事情
自配置
- 智能调参(OtterTune,QTune )
- 负载预测/调度
自诊断和自愈合:错误恢复和迁移
自优化:
- 统计信息估计(Learned cardinalities )
- 代价估计
- 学习型优化器(IBM DB2 LEO)
- 索引/视图推荐
DB4AI
通过数据库更好的进行人工智能实现
内嵌人工智能算法(MLSQL,SQLFlow)
内嵌机器学习框架(SparklML , Alink , dl-on-flink )
小结
- 大数据创业如火如荼,SQL查询优化器仍然是必不可少的一个重要组件
- 引擎架构的进化、云原生、湖仓一体等对SQL查询优化器有新的要求和挑战
- AI加持,学习型查询优化器在不断进化