DuuCloud.com-IT工程师的文库之家PolarDB - PG :数据库 “ 0 ” 改造,提升企
业级应用能力
冯遵宝
DuuCloud.com-IT工程师的文库之家1 、 PolarDB for PostgreSQL 开源社区
2 、 PolarDB for PostgreSQL 架构
3 、 PolarDB for PostgreSQL - HTAP 架构
4 、 PolarDB for PostgreSQL 企业级特性
目录
DuuCloud.com-IT工程师的文库之家1 、 PolarDB for PostgreSQL 开源社区
DuuCloud.com-IT工程师的文库之家PolarDB - PG 开源
• github 搜索: PolarDB PostgreSQL
• 兼容: 100% 兼容社区 PostgreSQL
• 全开源:所有组件
• 稳定: 100% 生产环境代码
DuuCloud.com-IT工程师的文库之家PolarDB - PG 文档和视频资料
• 架构文档
• 核心功能文档
• 快速入门文档
• 定期直播讲解 PolarDB - PG 内核原理
https://apsaradb.github.io/PolarDB - for - PostgreSQL/zh/
DuuCloud.com-IT工程师的文库之家丰富的部署方式
• docker :本地部署
• 编译安装:提供 dev 镜像
• 云原生部署
共享存储
( ESSD 云盘 /Ceph/CurveBS/NBD )
PolarDB - PG
计算节点
PolarDB - PG
计算节点
PolarDB - PG
计算节点
https://apsaradb.github.io/PolarDB - for - PostgreSQL/zh/
DuuCloud.com-IT工程师的文库之家2 、 PolarDB for PostgreSQL 架构
DuuCloud.com-IT工程师的文库之家• 扩展性差:加节点小时级
• 可靠性差: RPO != 0
• 可用性差: RTO 30s - 5min
• 成本高:
• 存储成本随节点数线性增加
• 预占资源
Master
PG Server
本地盘 /云盘
Host1
Standby
Host2
PG Server
Standby
Host3
PG Server
redo 日志
异步 :>1s
同步 :=0, 性能
降 20%+
扩节点拉数据
15min~8h
+
OSS
管控
备份
本地盘
15min~8h
HA & Recovery
30s~5min
本地盘 /云盘 本地盘 /云盘
传统数据库的问题
DuuCloud.com-IT工程师的文库之家Primary
(读写节点)
Primary
(读写节点)
ReadOnly
(只读节点)
ReadOnly
(只读节点)
计算 - 存储分离
Shared Storage
Memory
CPU
• 扩展性:存储计算分离,按需扩
缩容
• 成本:多个计算节点共享一份数
据,降低存储成本
• 易用性:一写多读 /透明读写分
离,单机体验、
• 可靠性:三副本、秒级备份
• 可用性:毫秒级主备延迟,秒级
恢复
Memory
CPU
Memory
CPU
传统的方案
Local Storage
Memory
CPU
计算层
存储层
PolarDB - PG 存算分离架构:
DuuCloud.com-IT工程师的文库之家libpfs polarvfs
数据预读 数据预扩展
Persisted BufferPool Full Page Snapshot
WAL Buffer WAL Sender
LogIndex
PageID LSN
WAL Meta Queue
CSN
RW 节点
存储层
缓存层
日志层
PageID LSN
事务层
libpfs polarvfs
数据预读 数据预扩展
Persisted BufferPool Full Page Snapshot
WAL Buffer WAL Receive
LogIndex
PageID LSN
WAL Meta Queue
CSN
RO 节点
PageID LSN
WAL File Shared -Storage 多版本页 Data File LogIndex File WAL File WAL File
多版本页多版本页 Data FileData File LogIndex File LogIndex File
• 事务层: CSN 快照
• 日志层:复制 WAL Meta 、 Lazy
回放,并行回放, LogIndex
• 缓存层:常驻 BufferPool 、多版
本页面
• 存储层: DirectIO 、数据预读、
预扩展、 PolarVFS
PolarDB - PG 模块栈:
DuuCloud.com-IT工程师的文库之家Shared -Storage
ChunkSvr
Follower2
Leader1
Primary
(读写节点)
ReadOnly
(只读节点)
ReadOnly
(只读节点)
Memory
CPU
Memory
CPU
Memory
CPU
Follower3
ChunkSvr
Leader2
Follower1
Follower3
ChunkSvr
Follower1
Follower2
Leader3
Parallel -Raft
RDMA RDMA RDMA
• PolarFS
• RDMA
• Parallel - Raft
• 更大的原子写
部署形态 1 :为数据库定制的高性
能分布式存储(云上主售形态)
DuuCloud.com-IT工程师的文库之家ESSD 存储( PL1/PL2/PL3... )
Primary
(读写节点)
ReadOnly
(只读节点)
ReadOnly
(只读节点)
Memory
CPU
Memory
CPU
Memory
CPU
RDMA RDMA RDMA
• 支持 X86 和倚天 ARM
• 大量 ARM 指令级的优化
倚天 ARM ECS
X86 ECS
• 不同规格的 ESSD 云
盘(根据业务需要自
由组合)
部署形态 2 :高性价比
计算节点:
存储节点:
DuuCloud.com-IT工程师的文库之家Ceph/Curve/ 云盘
Primary
(读写节点)
ReadOnly
(只读节点)
ReadOnly
(只读节点)
Memory
CPU
Memory
CPU
Memory
CPU
• Ceph
• CurveBS
• 云厂商的 ESSD 云盘
部署形态 3 :开源形态
只需要一个共享存储:
DuuCloud.com-IT工程师的文库之家3 、 PolarDB for PostgreSQL
HTAP 架构
DuuCloud.com-IT工程师的文库之家传统解决方案
Sharding1
Master
传统 ETL 方案:表结构 + 全量 + 增量
Primary
(读写节点)
ReadOnly
(只读节点)
ReadOnly
(只读节点)
PolarD
PolarDB-PG:数据库“0”改造,提升企业级应用能力.pdf