PolarDB for PostgreSQL 架构解析:计算存储分离与HTAP技术详解

PolarDB for PostgreSQL 架构解析:计算存储分离与HTAP技术详解

PolarDB-for-PostgreSQL PolarDB-for-PostgreSQL 项目地址: https://gitcode.com/gh_mirrors/pol/PolarDB-for-PostgreSQL

引言

PolarDB for PostgreSQL(以下简称PolarDB)是阿里云自主研发的一款企业级云原生数据库系统。作为PostgreSQL的兼容分支,PolarDB通过创新的计算存储分离架构,解决了传统数据库在扩展性、成本效益和可用性等方面的诸多挑战。本文将深入解析PolarDB的核心架构设计,重点介绍其计算存储分离机制和混合事务分析处理(HTAP)能力。

传统数据库的局限性

在业务数据量持续增长的背景下,传统数据库系统面临以下主要挑战:

  1. 存储容量受限:单机存储容量存在上限,难以应对数据爆炸式增长
  2. 扩展成本高昂:增加只读实例需要分配独立存储,造成资源浪费
  3. 实例创建缓慢:数据量越大,创建只读实例所需时间越长
  4. 主从同步延迟:主备节点间的数据复制存在显著延迟

PolarDB的核心优势

PolarDB架构图

PolarDB通过计算存储分离架构带来以下显著优势:

  1. 弹性扩展:计算节点和存储节点可独立扩展,按需伸缩
  2. 成本优化:多个计算节点共享同一份存储,大幅降低存储成本
  3. 读写分离:集群包含一个主节点和多个只读节点,天然支持读写分离
  4. 高可靠性:数据三副本存储,秒级备份能力确保数据安全

架构设计概览

PolarDB的架构创新主要体现在两大方面:

计算存储分离架构

计算存储分离架构

计算存储分离是PolarDB的架构基础,它解决了传统共享无架构(Shared-Nothing)的扩展性问题:

  1. 计算资源不足时,可单独扩展计算集群
  2. 存储容量不足时,可单独扩展存储集群

在这种架构下,主节点和只读节点共享同一物理存储,这带来了新的技术挑战:

  1. 过时页面问题:只读节点从共享存储读取的页面版本早于内存版本
  2. 未来页面问题:只读节点读取的页面版本晚于内存版本
  3. 故障切换问题:主备切换时,新主节点需要恢复脏页

HTAP混合负载处理

HTAP架构

PolarDB通过共享存储MPP架构实现HTAP能力:

  1. 单机执行引擎:处理高并发的OLTP查询
  2. 分布式执行引擎:处理大型OLAP查询

这种架构具有以下特点:

  1. 性能可达传统MPP数据库的90%
  2. 支持SQL语句级别的弹性扩展
  3. 无需数据重分布即可增加OLAP计算资源

计算存储分离技术详解

共享存储的挑战

计算存储分离架构面临以下核心技术挑战:

  1. 数据一致性:如何保证计算集群N份数据与存储集群1份数据的一致性
  2. 读写分离:如何实现低延迟的数据复制
  3. 高可用性:如何进行故障恢复和切换
  4. I/O模型:如何从缓冲I/O优化为直接I/O

共享存储基本原理

共享存储原理

PolarDB的共享存储遵循以下原则:

  1. 主节点可读写,只读节点仅可读
  2. 只有主节点可写入共享存储,确保数据一致性
  3. 只读节点通过应用WAL日志保持内存页面同步
  4. 主节点将WAL日志写入共享存储,仅复制元数据到只读节点
  5. 只读节点从共享存储读取并应用WAL日志

数据一致性保障

共享无架构的内存页面同步

在传统数据库中,主实例将WAL日志复制到只读实例,只读实例读取并应用这些日志,这是复制状态机的基本原理。

共享存储架构的内存页面同步

在PolarDB中,主节点将WAL日志写入共享存储,只读节点从共享存储读取最新WAL日志并应用,确保内存页面同步。

内存页面同步

  1. 主节点刷出页面200版本的WAL日志到共享存储
  2. 只读节点读取并应用WAL日志,将页面从100版本更新到200版本
过时页面问题

过时页面

当只读节点从内存移除已更新的页面后,再次查询时会从共享存储读取旧版本页面,导致过时页面问题。

解决方案是引入LogIndex机制:

LogIndex解决方案

  1. 只读节点维护页面到WAL日志的映射索引(LogIndex)
  2. 查询时根据LogIndex读取并应用相关WAL日志
  3. 日志应用采用惰性模式,仅对脏页应用WAL元数据
未来页面问题

未来页面

当主节点刷出WAL日志速度快于只读节点应用速度时,只读节点可能读取到"未来"页面。

解决方案是控制主节点刷出速度:

未来页面解决方案

  1. 主节点按LSN顺序刷出WAL日志
  2. 只刷出到已达成一致性的LSN位置

低延迟复制优化

传统流复制问题

传统流复制问题

传统方式复制完整WAL日志,路径长、延迟高。

优化方案:仅复制WAL元数据

只读节点可从共享存储读取WAL内容,主节点只需发送WAL元数据,大幅减少网络传输量。

HTAP技术实现

PolarDB的HTAP能力通过以下关键技术实现:

  1. 共享存储MPP架构:表或索引树整体存储,不分片
  2. 双引擎设计:OLTP引擎和OLAP引擎协同工作
  3. 资源隔离:OLTP和OLAP查询互不干扰
  4. 弹性扩展:按需分配OLAP计算资源

这种架构既保留了OLTP场景的工作流程,又无需修改应用数据模型,即可获得强大的分析能力。

总结

PolarDB for PostgreSQL通过创新的计算存储分离架构和HTAP能力,为企业级应用提供了高性能、高可用、高扩展的数据库解决方案。其核心技术包括:

  1. 基于共享存储的计算存储分离架构
  2. LogIndex机制解决数据一致性问题
  3. 元数据复制优化降低同步延迟
  4. 共享存储MPP实现HTAP混合负载

这些技术创新使PolarDB能够同时满足OLTP和OLAP场景的需求,为云时代的企业应用提供了理想的数据库基础设施。

PolarDB-for-PostgreSQL PolarDB-for-PostgreSQL 项目地址: https://gitcode.com/gh_mirrors/pol/PolarDB-for-PostgreSQL

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

林浪其Geneva

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值