开发者学堂课程【数据仓库 ACP 认证课程:[视频]云原生数据仓库 AnalyticDB PostgreSQL 版解析与实践(上) 】学习笔记,与课程紧密联系,让用户快速学习知识。
课程地址:https://developer.aliyun.com/learning/course/928/detail/14626
[视频]云原生数据仓库 AnalyticDB PostgreSQL 版解析与实践(上)
内容介绍:
一、产品概述
二、产品架构及原理
三、产品相关概念
四、核心功能解析与实践
一、产品概述
1.产品简介
云原生数据仓库AnalyticDB PostgreSQL版( ADB PG )是阿里云自研高性能海量扩展数据仓库服务,兼容部分Oracle/Teradata语法生态,应用于阿里巴巴集团内部电商,物流,文娱,广告等业务部门,服务于阿里云的金融、政企、互联网等各行业用户,支持快速构建新一代云化数据仓库服务。
(1)PB级数据实时响应
MPP水平扩展架构,PB级数据查询秒级响应;向量化计算,及列存储智能索引,领先传统数据库引擎性能3x;新- -代SQL优化器,实现复杂分析语句免调优
(2)稳定可靠、简化运维
飞天平台基于阿里多年大规模集群系统构筑经验打造,智能硬件管理,故障监控诊断自恢复,支持MPP数据库实现复杂集群系统高可靠,自运维
(3)SQL兼容性
支持SQL 2003 ,部分兼容Oracle语法,支持PL/SQL存储过程,OLAP窗口函数,视图等.完备功能和生态,实现应用快速适配、或迁移
(4)数据多模分析
通过PostGIS插件支持地理信息数据分析;内置100+机器学习算法库,实现数据智能探索;高性能向量检索算法,支持视频/图像检索以图搜图
2. 发展历程
2017
ADB PG(原HDB)诞生
内核PG 8.2
2018
ORCA优化器
稀疏和聚簇索引
JSON数据类型
OSS外表
2019
内核升级PG9.4
向量执行引擎1.0
多MASTER
RBO优化器增强
高维向量检索
信通院&信创认证
2020
云原生升级
备份恢复
外表联邦分析
多维排序
向量执行引擎
TPCH性价比全球第一
2021
副本多活
分层存储
计算存储分离
HTAP增强
行列混存
3.产品定位
兼容业内主流数仓架构方案,支持ETL离线处理,支持在线交互分析。通过高性能计算引擎及实时同步方案,支持在线数据随机探索,实时同步分析。
主要包括实时数据入库和批量加载,实时数据入库包括 RDS 等做一些实时同步等,批量加载可以通过 kettle 、Dataworks等导入,数据进入后由数仓进行加工,加工后进行报表查询。
功能完备:
基于PostgreSQL内核, SQL高度兼容Teradata/Oracle
生态完备:
与阿里云数仓开发平台Dataworks ,数据中台Dataphin , 数据同步工具DTS等无缝集成;支持业内主流第三方工具
4.产品特点与优势
(1)性能强劲
TPC-H评测全球第一,超过90%的读写性能水平扩展比
(2)弹性
分布式弹性架构,PB级数据存储与分析
(3)遵循PG/GP协议
业界最主流数仓协议,兼容主流ETL/BI/可视化等生态工具
(4)简单易用
经历大规模验证,对标传统商业数仓的企业级特性
5.核心功能
(1)核心功能: PL/pgSQL过程语言
自定义函数&存储过程如下:
CREATE [OR REPLACE] {FUNCTION| STORED PROCEDURE} nane
( [ [argmode] largname] argtype [ { DEFAULT 1 = } default. _expr 1 [, ...]] )
{ RETURNS rettype
| RETURNS TABLE ( column. .name column. .type [, ...] ) ]
{ LANGUAGE langname
| WINDOW
| IMMUTABLE| STABLE | VOLATILE| [NOT] LEAKPROOF
| CALLED ON NULL INPUT| RETURNS NULL ON NULL INPUT| STRICT
| [EXTERNAL] SECURITY INVOKER| [EXTERNAL] SECURITY DEFINER
| EXECUTE ON { ANY 1 MASTER| ALL SEGMENTS }
| COST execution. cost
| SET configuration. parameter { T0 value| = value | FROM CURRENT }
| AS ‘definition'
| AS ‘obj. _file', ‘link_ .symbol' } ...
[ WITH ({ DESCRIBE = describe. _function
}[,...1)].
(2)核心功能: CBO优化器
新一代cascade框架的SQL优化器,面向全并行执行架构,代价优化CBO和规则优化RBO相结合,实现复杂SQL免调优。
Top-Down路径搜索框架,搜索和路径选择更全面精准,避免出现局部查询路径最优解
子查询自动改写为分布式JOIN ,实现并行计算,规避手工改写调优
SQL优化阶段定义动态分区裁剪,即支持确定性过滤条件,也支持参数化的过滤条件,减少I/O
(3)核心功能:资源负载管理
支持自定义执行队列,根据用户角色,其执行任务进入对应资源管控队列。任务队列支持设定:
并行执行任务数
CPU优先级
内存资源上限
示例:用户自定义三个执行队列
ETL队列:赋予资源获取最低优先级
BI报表队列:赋予资源获取最高优先级
数据探索队列:赋予资源获取中间优先级
(4)核心功能:备份恢复方式丰富
PITR备份恢复
RPO< 10min
支持差异化全量备份
支持增量备份
分布式一致性恢复
表级逻辑备份
物理备份是针对实例级别,同时支持单个表的逻辑备份
(5)支持丰富生态
主流工具是支持的
5.产品选型
产品系列 |
特点 |
性价比 |
可用性 |
预留模式 |
兼Greenplum/PostgreSQL。支持2c、4c和8c规格,不同规格之间支持在线升降配、秒级切换,不影响业务运行,适合数据实时写入( DTS),高并发、实时分析场景。 |
百万TPS实时写入,上 百QPS查询 |
支持单副本和双副本模式,数据保存在云盘,可用性 99.9%。
|
弹性模式 |
采用云原生架构,存储和计算完全分离,支持更大存储量,存储成本低,支持秒级扩缩容。适合批量导入、低并发,复杂ETL分析场景。 |
百万TPS批量导入,几+QPS复杂分析查询。
|
所有数据保存在OSS上,计算双副本,可用性99.9% |
二、产品架构及原理
1.产品架构
AnalyticDB PostgreSQL版具有MPP水平扩展,海量数据实时分析,兼容Oracle语法生态,高可用HA架构,支持分布式事务等优势。
多活协调节点:
Cascade架构SQL优化器
全局分布式事务管理
计算节点水平扩展:
计算任务全并行执行
新一代向量化计算引擎
非结构化数据检索
高可靠存储引擎:
本地数据双副本
支持行存储/列存储
高吞吐导入/导出
分布式事务支持:
支持分布式事务,保证强- -致性
支持SI/RC隔离级别
2. 模块组件
(1)模块组件
AnalyticDB PostgreSQL版的架构主要包含Master Node和Compute Node两大组件,中间通过Interconnect
进行互联通信和数据交换传输。
Master Node 协调节点,包括协议解析、健全认证、优化、GTM、全集元数据的存储等等
Computer Node 计算节点,包括查询执行、本地事务管理器、本地元数据、缓存、数据、索引
Master Node |
Computer Node |
Segment |
负责客户端连接协议层接入,认证和鉴权,SQL解析,重写,优化,和执行分发协调。 全局事务管理器(Global TransactionManager ),负责全局事务ID、快照生 成和分布式事务管理。 全局元数据目录(Global Catalog )则记录了用户,库,表,视图,索引,分布分 区等数据库对象的元数据信息。 |
Compute Node包含了一组Segment。 部署形态上可以是物理机,VM或者容器。
|
Segment是负责具体的SQL执行和数据存储节点。 执行引擎通过向量化和及时编译(JIT)等技术,相比传统逐行计算的火山模型获得数倍性能提升。 数据和索引( Data & Index )支持行存表,列存表,和外表以及相应索引。
|
(2)组件交互
第一步,客户端发送,接受客户端连接,Master 用户的认证鉴权
第二步,语法语义解析,生成解析树
第三步,根据解析树优化并生成执行计划
第四步,分配集群 segment 并下发执行计划,协调执行并返回最终结果
第五步,Segment QE 并执行计划中的每个具体算子,在不同 QE 间交换数据
第六步,Scan算子读取数据和索引
第七步, Master QE 负责第二阶段聚集和最终结果收集
3.数据模型
属于对象-关系型数据库,数据库的对象通常包括∶表、视图、函数、序列、索引、分区子表、外部表等,而对象-关系型则进一步支持用户自定义对象和它的属性,包括数据类型、函数、操作符,域和索引,甚至复杂的数据结构也可以被创建,存储和检索。
(1)行存表,列存表,和外表
行存表∶数据按行存放,支持主键,B+树索引,Bitmap索引,GIN索引等,适合数据实时写入更新删除,点查,范围查。
列存表︰数据按列存放,高压缩比,适合追加写(少量更新删除)场景。
外表∶元数据存放在本地系统表,数据存放在OSS,支持的数据格式包括ORC,Parquet, CSV,JSON,支持表分区,其中ORC和Parquet支持列过滤和谓词下推,提升分析性能
除OSS外,同时也支持Hadoop ( HDFS,Hive )外表。(2)表数据分布
将表数据均匀的分布到各个节点中,是发挥集群整体IO性能,提升存储容量,优化计算与网络传输效率的关键
Lineitem table分为三部分,定义分布键,按照 orderkey 分布,会对 orderkey 做哈希处理,会均匀分布到每个节点上,每个节点都存放用户表的一部分数据,根据业务语义定义分区,比如说按日期做分区,做好分区裁剪