介绍

PolarDB for PostgreSQL(下文简称为 PolarDB)是一款阿里云自主研发的云原生数据库产品,100% 兼容 PostgreSQL,采用基于 Shared-Storage 的存储计算分离架构,具有极致弹性、毫秒级延迟、HTAP 的能力。

  1. 极致弹性:存储与计算能力均可独立地横向扩展。
    • 当计算能力不够时,可以单独扩展计算集群,数据无需复制。
    • 当存储容量或 I/O 不够时,可以单独扩展存储集群,而不中断业务。
  2. 毫秒级延迟:
    • WAL 日志存储在共享存储上,RW 到所有 RO 之间仅复制 WAL 的元数据。
    • 独创的 LogIndex 技术,实现了 Lazy 回放和 Parallel 回放,理论上最大程度地缩小了 RW 和 RO 节点间的延迟。
  3. HTAP 能力:基于 Shared-Storage 的分布式并行执行框架,加速在 OLTP 场景下的 OLAP 查询。一套 OLTP 型的数据,可支持 2 套计算引擎:
    • 单机执行引擎:处理高并发的 TP 型负载。
    • 分布式执行引擎:处理大查询的 AP 型负载。

PolarDB 还支持时空、GIS、图像、向量、搜索、图谱等多模创新特性,应对企业对数据处理日新月异的需求。

快速部署

推荐使用基于单机存储的部署方式和 CentOS 7 开发镜像 + Docker 快速尝鲜 PolarDB for PostgreSQL。

分支说明

PolarDB 的稳定分支为 POLARDB_11_STABLE 分支,支持存储计算分离的形态。分布式形态由 distribute 分支支持。

产品架构和版本规划

PolarDB 采用了基于 Shared-Storage 的存储计算分离架构。数据库由传统的 Share-Nothing 架构,转变成了 Shared-Storage 架构。由原来的 N 份计算 + N 份存储,转变成了 N 份计算 + 1 份存储。虽然共享存储上数据是一份,但是数据在各节点内存中的状态是不同的,需要通过内存状态的同步来维护数据的一致性;同时主节点在刷脏时也需要做协调,避免只读节点读取到超前的 “未来页面”,也要避免只读节点读取到过时的没有在内存中被正确回放的 “过去页面”。为了解决该问题,PolarDB 创造性地设计了 LogIndex 数据结构来维护页面的回放历史,该结构能够实现主节点与只读节点之间的同步。

在存储计算分离后,I/O 单路延迟变大的同时,I/O 的吞吐也变大了。在处理分析型查询时,仅使用单个只读节点无法发挥出存储侧的大 I/O 带宽优势,也无法利用其他只读节点的 CPU、内存和 I/O 资源。为了解决该问题,PolarDB 研发了基于 Shared-Storage 的并行执行引擎,能够在 SQL 级别上弹性利用任意数目的 CPU 来加速分析查询,支持 HTAP 的混合负载场景。

详情请查阅 产品架构版本规划

在 GitHub 上编辑此页 介绍 - 图1

贡献者: 北侠