开发者学堂课程【数据仓库 ACP 认证课程:快速学习云原生数据仓库 AnalyticDB MySQL 版 _解析与实践1】学习笔记,与课程紧密联系,让用户快速学习知识。
课程地址:https://developer.aliyun.com/learning/course/928/detail/14623
云原生数据仓库 AnalyticDB MySQL 版_解析与实践1
三、产品架构及原理
1.产品架构
AnalyticDB MySQL 版采用云原生架构,计算存储分离、冷热数据分离,支持高吞吐实时写入和数据强一致,兼顾高并发查询和大吞吐批处理的混合负载。
(1)接入层
协议层接入、SQL解析和优化、数据和查询调度
(2)计算引擎
支持高并发和复杂SQL混合负载
弹性调度,可根据业务需求做到分钟级甚至秒级扩展,实现了资源的有效利用。
(3)存储引擎
分布式实时强一致高可用存储引擎
利用分层存储实现冷热分离降低成本
通过行列存储和智能索引提升性能
2.优化器介绍
从低向上包括四个层次:统计层、代价估算层、优化层、缓存层
统计信息:提供多样的统计信息;提供自动的统计信息收集;提供动态采样;
代价预估和代价模型;
基于规则的 RBO 框架和基于代价的 CBO 框架;
通过缓存来提供优化器的高效性
可介入、可运维。
3. 弹性计算层介绍
(1)弹性计算层:架构
计算引擎采用弹性计算引擎,支持资源组,资源组1支持在线查询,资源组2支持ETL查询,弹性计算层可以支持弹性扩容,可以应对大规模的ETL查询,具有分式弹性的特征
(2)弹性计算层∶查询执行计划
SQL:
select count(*)
from customer left join lineitemon
customer.c nationkey_= lineitem.l_partkey;
逻辑执行计划:
用户下发 SQL
前端节点负责解析 SQL,生成分布式执行计划,下发到计算节点和存储节点执行
执行完成后,将结果返回给前端节点
主要概念:
Stage:
为了让 Query 能够在多台机器上并行执行,会将执行计划拆分成多个阶段(Stage) ,每个 Stag 会产生多个 Task 进行执行
Task:
Task 负责具体计算的执行,是 Stage 在某一个 Worker 或者 Executor 上的实例
Operator:
对应一个相对独立的计算单位,比如过滤、投影、聚合等操作,作用于输入数据,并产生输出。
执行计划:
(3)弹性计算层∶查询执行模式
①Interactive 模式
场景
适合交互式查询,对响应时间有较高要求
查询 Query 不高,资源充足
特点
MPP pipeline 方式执行,即一个查询的所有分布式执行任务会被同时调度执行
完全基于内存进行计算
大查询消耗资源多
②Batch 模式(E系列支持)
场景
适合 ETL 场景,作业执行时间长,对 RT 要求低
计算数据量大,计算逻辑复杂,但资源较为有限
特点
BSP 方式执行,即 StageByStage 方式调度执行分布式任务
内存不足时自适应下盘算子状态数据
Stage 之间的数据传输(Exchage/Shuffle )依赖本地磁盘+对象存储
大查询/ETL 离线任务资源消耗可控
(4)储存层:架构
包括针对实时任务的在线存储和针对离线任务的离线存储
(5)存储层∶高吞吐写入
玄武分析存储引擎为用户提供高可靠、高可用、高性能、低成本的企业级数据存储能力,是 AnalyticDB 实现高吞吐实时写入、高性能实时查询的基础支撑。
存储层的采用 Raft 协议,在多副本之间保证数据临时性,同时协议具有更高的这样一个可靠可用性,当我们某一个 worker Group 失效或者是失败的时候,可以通过多数化来保证系统的一个正常运行,增量数据是通过异步构建的方加载进入全量数据,实行冷热数据分层以及的数据的分析管理
(6)存储层∶行列混合存储
玄武存储引擎支持行列混存和行存的存储格式,其中行列混存是一种以列存为基础兼顾行存的模式,类似于 Hadoop 中的 ORC/Parquet 格式。
不同的是玄武的行列混存不仅兼顾分析类的列裁剪和大吞吐扫描性能,而且结合其行对齐的能力,可以实现很好的随机查找性能,这对于任意多维索引过滤的场景也拥有出色的性能优势。
数据分成 Row Group,在 Row Group 中的列是单独存储的,对于固定场所的数据,分成固定场所块以及变长块,变长块采用 Toast File 进行存储
(7)存储层:自适应索引
对于不同的索引生成的结果通过联合或并列的操作形成 id 的集合,根据 id 的结合获取对应的数据