Postgres-X2介绍
李元佳
自我介绍
Postgres-X2的架构及技术
测试及性能结果
背景介绍
其他
目录
Postgres的简介
• 开源的RDBMS
• 功能丰富
–完整SQL、事务、存储过程、同步复制
• 企业应用领域比较多
• 国内案例
–去哪儿、平安科技、国家电网等
流复制
• synchronous_commit
– on, remote_write, local,
and off
Master Slave(Sync)
Slave
(Async)
streaming
stream
ing
同步
数据零丢失+高性能
高可用问题已经解决
Sharding: postgres_fdw
高扩展呢?
分布式数据库
–面向大数据量、高并发的OLTP场景
–多主多读、横向扩展
–全功能关系型数据库(ACID、SQL几乎无限制)
全功能 + 高扩展
Postgres-XC/XL
Postgres-XC/XL简介
• 开源
– Postgres-XC采用Postgres协议(类似BSD协
议)
– Postgres-XL以前是Mozzila协议,目前已经
改为PostgreSQL协议
• 面向OLTP及OLAP场景
• 采用Share-Nothing架构、弹性扩展
• 基于Postgres改造、功能几乎完全继承
社区发展历史
• 2004~2008 NTT Data构建了模型Rita-
DB
• 2009年 NTT Data与EnterpriseDB合作进
行社区化开发
• 2012, Postgres-XC 正式发布
• 2012, StormDB在XC基础上增加MPP功能.
• 2013, XC 发布; TransLattice 收购
StormDB
• 2014, XC 发布; StormDB 开源为
Postgres-XL.
• 2015, 两个社区合并为Postgres-X2
• 2016年2月,Postgres-XL R1 发布
Postgres-X2的架构及技术
测试及性能结果
背景介绍
其他
目录
设计理念
高扩展 全功能 强一致性
• Share nothing 架构
• 功能解耦、分层扩展
• 数据分散在多个节点
• 继承Postgres功能
• 继承Postgres生态
• SQL能力不受限制
• 支持存储过程
• MVCC
• 全局事务支持强一致
Postgres的架构
parser
planner
executor
storage
system
catalog
transact
ion
disk
interface
应
用
Postgres
架构的解耦及分布式化
应
用
parser
planner
executor
system
catalog
transact
ion
interface
global
catalog
parser
planner
executor
storage
system
catalog
transact
ion
interface
disk
global
transactio
n
分布式执行层 数据存储层
SQ
L/执
行
计
划
分布式化
Postgres-XC的整体架构
Load balancer
AP
P
AP
P
AP
P
C-
Node
C-
Node
C-
Node
GTM
D-
Node
D-
Node
D-
Node
D-
Node
协调节点层
数据节点层
全局事务节点
可以横
向扩展
Postgres-XC主要的模块
• Coordinator node:协调节点
–负责接收用户请求、生成并执行分布式查询、
把SQL语句发给相应的数据节点
• Data node:数据节点
–实际数据存储节点
• GTM:全局事务节点
–生成全局唯一的事务ID
–全局的事务的状态
–序列等全局信息
关键模块之间的关系
数据如何分布
C-node
D-
node
C-node
1,5,9,13
Global
catalog
locat
or
D-
node
D-
node
D-
node
2,6,10,14 3,7,11,15 4,8,12,16
Insert into t values(30)
30
数据分布方式
• replicated table 复制表
–表在多个节点复制
• distributed table 分布式表
– Hash
– Round robin
– Range(未实现)
– User define (未实现)
分布式查询优化
• Parallel query
• Where pushdown
• Join pushdown
• Expression pushdown
• Order by
• Two phase Aggregate
• Fast query shipping
单一节点处理
单一节点处理
多节点处理
MPP方面的优化
• 数据节点间的数据传输
–原来的Postgres-XC的D-Node间不能传数据
–数据需要汇聚到C节点进行处理
– Postgres-XL允许D-Node间进行数据传输
• 执行计划.VS. SQL语句
– C-node D-node XC发送SQL语句,XL
发送执行计划
Postgres-XL
事务处理:2PC就可以了吗?
GTM全局事务状态的处理
高可用的设计-D-Node
D-Node D-Node D-Node
D-Node D-Node D-Node
Master
Slave
Streaming replication HA
HA HA
高可用的设计-GTM
为什么可以处理混合负载
• OLTP
–强事务一致性
–多主节点可以应付高并发
–全功能
• OLAP
–多节点并行处理、Share nothing
– MPP
Postgres-X2的架构及技术
测试及性能结果
背景介绍
其他
目录
基准测试模型
• DBT-1是TPC-W的开源版
–模拟网店的在线交易
–主要行为为用户浏览网站、网上购物:
primarily shopping (WIPS), browsing
(WIPSb) 以及 web-based ordering
(WIPSo).
• DBT-3是TPC-H的开源版
–数据仓库
DBT-1的表结构
硬件拓扑结构
OLTP的测试性能
性能基本可以线性扩展
TPC-H的性能
应用场景
• 大规模OLTP应用,尤其是企业领域
• 云环境下的弹性伸缩
• OLTP及OLAP混合负载
• 详单查询
• ODS
• …
Postgres-X2的架构及技术
测试及性能结果
背景介绍
其他
目录