PolarDB for PostgreSQL 开源必读手册-云原生HTAP(上)

本文涉及的产品
云原生数据库 PolarDB MySQL 版,Serverless 5000PCU 100GB
云原生数据库 PolarDB PostgreSQL 版,企业版 4核16GB
推荐场景:
HTAP混合负载
云原生数据库 PolarDB MySQL 版,通用型 2核4GB 50GB
简介: PolarDB for PostgreSQL 开源必读手册-

 

image.png

 

PolarDB-PG是云原生数据库,具有存储计算分离的架构。可以根据用户需要弹性扩充存储节点,也可以根据用户的计算需求弹性扩充用户的计算节点。但是如果使用原生的PolarDB-PG处理HTAP场景,在处理AP场景时会遇到两个挑战。

 

第一,单机的PG只支持单机的串行与单机的并行,不支持多机查询和跨机查询,无法发挥多个计算节点的特性,CPU和memory无法横向的scale out,只能单机scale up,即必须增加CPU和memory的实例规格。

 

第二,原生的PG直接套用到PolarDB上,无法充分发挥共享存储池的大吞吐能力,因为只能利用单机计算节点上的RO能力。

 

而根据TP和AP在存储和计算上是否共享与分离的维度,可以分为三种:

 

第一,TP和AP在存储计算上都分离,即分为TP与AP两套独立的系统。TP的数据需要导入到AP系统中,存在延迟、时效性不高的问题。同时两份存储也增加了冗余、存储成本以及运维难度。

 

第二,TP和AP在存储和计算上都共享。该模式对TP和AP查询时或多或少都会造成一些影响。同时,受限于TP查询,AP比重增大时,无法弹性scale out,同样也只能在单机上调整自己的CPU与memory。

 

第三,TP和AP在存储上共享,在计算上分离,即PolarDB云原生HTAP的方案。

 

image.png

 

PolarDB云原生HTAP的整体架构如上图所示。底层为共享存储池,上层为多个计算节点,每个计算节点内包含了一个读写节点和多个RO节点。

 

由于TP和AP共享一套存储,减少了存储成本,可以提高查询的时效性,能提供秒毫秒级的数据新鲜度。

 

其次,TP查询受限于RO节点与RW节点,而AP查询仅受限于部分RO节点,因此可以实现TP与AP的物理隔离,并杜绝了CPU与memory的相互影响。

 

另外,该架构具备Serverless的弹性扩展能力,可以在任何RO级联上发起分布式MPP查询,可以弹性调整MPP执行节点的范围,可以弹性调整单机MPP的单机并行度。

 

最后,该架构消除了数据的存储倾斜和计算倾斜,在执行过程中也可充分考虑到PG Buffer Pool的亲和性。

 

由于PolarDB底层存储在不同节点上是共享的,因此不能像传统MPP一样扫表。我们在原先的单机执行引擎上支持了MPP分布式执行引擎(跨机执行引擎)。同时对Shared-Storage做了优化,基于Shared-Storage的MPP是业界首创。其基本原理为借助Shuffle算子屏蔽数据的分布,借助ParallelScan算子屏蔽共享存储。

 

image.png

 

上图是典型的火山模型,扫描A表,再扫描B表进行HashJoin,最后做聚合输出。

 

而PolarDB的MPP场景下,对A表和B表进行了虚拟分区。两个只读节点上默配置了一个worker。左侧只读节点上的worker会扫描A表的Virtual Partition-1,右侧节点上的worker会扫描A表的Virtual Partition-2。B表同理。

 

通过对Virtual Partition-1和Virtual Partition-2虚拟表的共同扫描,屏蔽了共享存储。通过Shuffle算子的分发之后,分发到上层进行HashJoin的时,已经屏蔽了数据的分布。

 

而上述执行计划必然需要有优化器的支持。我们基于社区的ORCA优化器扩展了能感知共享存储特性的Transformation Rules。使得能够探索共享存储下特有的Plan空间,比如一张表在PolarDB中既可以全量扫描,也可以分区域扫描,这是与传统MPP的本质区别。

 

上图中的A表按照分片扫描,但是如果B是小表,则可以做全表扫描。每个子节点都会扫描B的全量数据,构建一张哈希表。扫描B表的数据不需要下发到各个节点上。

 

image.png

 

上图灰色部分是PolarDB内核PORCA优化器的适配部分。下半部分是ORCA内核,灰色模块是我们在ORCA内核中对共享存储特性所做的扩展。

 


接下篇:https://developer.aliyun.com/article/1223065?groupCode=polardbforpg

 

 

 


 

相关实践学习
使用PolarDB和ECS搭建门户网站
本场景主要介绍基于PolarDB和ECS实现搭建门户网站。
阿里云数据库产品家族及特性
阿里云智能数据库产品团队一直致力于不断健全产品体系,提升产品性能,打磨产品功能,从而帮助客户实现更加极致的弹性能力、具备更强的扩展能力、并利用云设施进一步降低企业成本。以云原生+分布式为核心技术抓手,打造以自研的在线事务型(OLTP)数据库Polar DB和在线分析型(OLAP)数据库Analytic DB为代表的新一代企业级云原生数据库产品体系, 结合NoSQL数据库、数据库生态工具、云原生智能化数据库管控平台,为阿里巴巴经济体以及各个行业的企业客户和开发者提供从公共云到混合云再到私有云的完整解决方案,提供基于云基础设施进行数据从处理、到存储、再到计算与分析的一体化解决方案。本节课带你了解阿里云数据库产品家族及特性。
相关文章
|
7天前
|
Kubernetes Cloud Native 开发者
阿里云网络发布 alibaba-load-balancer-controller v1.2.0:开启云原生网关开源新篇章!敬请探索!
**阿里云发布开源版ALB控制器v1.2.0,对齐商业版ALB Ingress Controller v2.10.0。新版本增强了功能特性,提升了用户体验,并提供了最佳实践。功能更新包括自定义标签、QUIC协议支持、转发规则和安全策略等。此外,还引入了ReadinessGate实现滚动升级时的平滑上线和Prestop钩子确保平滑下线。用户可从GitHub获取开源代码,通过Docker Hub拉取镜像,开始使用alibaba-load-balancer-controller v1.2.0。**
68 3
阿里云网络发布 alibaba-load-balancer-controller v1.2.0:开启云原生网关开源新篇章!敬请探索!
|
5天前
|
Kubernetes Cloud Native 开发者
阿里云网络发布云原生网关 alibaba-load-balancer-controller v1.2.0,持续拥抱开源生态
alibaba-load-balancer-controller开源版本正式推出v1.2.0,能力对齐ALB Ingress Controller商业版v2.10.0。
|
15天前
|
运维 Cloud Native 关系型数据库
云原生数据仓库AnalyticDB产品使用合集之PostgreSQL版是否直接支持实时物化视图
阿里云AnalyticDB提供了全面的数据导入、查询分析、数据管理、运维监控等功能,并通过扩展功能支持与AI平台集成、跨地域复制与联邦查询等高级应用场景,为企业构建实时、高效、可扩展的数据仓库解决方案。以下是对AnalyticDB产品使用合集的概述,包括数据导入、查询分析、数据管理、运维监控、扩展功能等方面。
|
1月前
|
Cloud Native 关系型数据库 分布式数据库
【PolarDB开源】PolarDB与云原生数据库比较:特点、优势与选型建议
【5月更文挑战第26天】PolarDB是阿里云的云原生数据库,以其计算存储分离、一写多读架构和数据一致性保障脱颖而出。与Amazon Aurora和Google Cloud Spanner相比,PolarDB在中国市场更具优势,适合读多写少的场景和需要严格数据一致性的应用。企业在选型时应考虑业务需求、地域、读写比例和兼容性。PolarDB作为优秀解决方案,将在云原生数据库领域持续发挥关键作用。
151 1
|
1月前
|
Cloud Native 关系型数据库 分布式数据库
【PolarDB开源】PolarDB数据迁移实战:平滑过渡至云原生数据库
【5月更文挑战第24天】本文介绍了如何平滑迁移数据至阿里云的云原生数据库PolarDB,包括迁移准备、策略选择、步骤、验证及示例代码。通过需求分析、环境准备和数据评估,选择全量、增量或在线迁移策略。使用数据导出、导入及同步工具(如DTS)完成迁移,并在完成后验证数据一致性、性能和安全。正确执行可确保业务连续性和数据完整性。
127 1
|
17天前
|
SQL 关系型数据库 数据库
Python执行PostgreSQL数据库查询语句,并打印查询结果
本文介绍了如何使用Python连接和查询PostgreSQL数据库。首先,确保安装了`psycopg2`库,然后创建数据库连接函数。接着,展示如何编写SQL查询并执行,例如从`employees`表中选取所有记录。此外,还讨论了处理查询结果、格式化输出和异常处理的方法。最后,提到了参数化查询和事务处理以增强安全性及确保数据一致性。
Python执行PostgreSQL数据库查询语句,并打印查询结果
|
9天前
|
SQL 存储 关系型数据库
关系型数据库中的PostgreSQL
【6月更文挑战第11天】
45 3
|
9天前
|
关系型数据库 MySQL 数据库
上手体验 PolarDB-X 数据库
PolarDB-X,一款高性能云原生分布式数据库。
38 1
|
15天前
|
关系型数据库 数据库 PostgreSQL
PostgreSQL数据库的字符串拼接语法使用说明
【6月更文挑战第11天】PostgreSQL数据库的字符串拼接语法使用说明
31 1
|
16天前
|
SQL 关系型数据库 数据库
Python查询PostgreSQL数据库
木头左教你如何用Python连接PostgreSQL数据库:安装`psycopg2`库,建立连接,执行SQL脚本如创建表、插入数据,同时掌握错误处理和事务管理。别忘了性能优化,利用索引、批量操作提升效率。下期更精彩!💡 csvfile
Python查询PostgreSQL数据库

相关产品

  • 云原生数据库 PolarDB