Postgres-XL 全称为 Postgres eXtensible Lattice,是TransLattice公司及其收购数据库技术公司–StormDB的产品。Postgres-XL是一个横向扩展的开源数据库集群,具有足够的灵活性来处理不同的数据库任务。
Postgres-XL 功能特性
- 开放源代码:(源协议使用宽松的“ Mozilla Public License”许可,允许将开源代码与闭源代码混在一起使用。)
- 完全的ACID支持
- 可横向扩展的关系型数据库(RDBMS)
- 支持OLAP应用,采用MPP(Massively Parallel Processing:大规模并行处理系统)架构模式
- 支持OLTP应用,读写性能可扩展
- 集群级别的ACID特性
- 多租户安全
- 也可被用作分布式Key-Value存储
- 事务处理与数据分析处理混合型数据库
- 支持丰富的SQL语句类型,比如:关联子查询
- 支持绝大部分PostgreSQL的SQL语句
- 分布式多版本并发控制(MVCC:Multi-version Concurrency Control)
- 支持JSON和XML格式
Postgres-XL 缺少的功能
- 内建的高可用机制
- 使用外部机制实现高可能,如:Corosync/Pacemaker
- 有未来功能提升的空间
- 增加节点/重新分片数据(re-shard)的简便性
- 数据重分布(redistribution)期间会锁表
- 可采用预分片(pre-shard)方式解决,在同台物理服务器上建立多个数据节点,每个节点存储一个数据分片。
数据重分布时,将一些数据节点迁出即可
- 某些外键、唯一性约束功能
Postgres-XL 架构
- 基于开源项目Postgres-XC
- XL增加了MPP,允许数据节点间直接通讯,交换复杂跨节点关联查询相关数据信息,减少协调器负载。
- 多个协调器(Coordinator)
- 应用程序的数据库连入点
- 分析查询语句,生成执行计划
- 多个数据节点(DataNode)
- 实际的数据存储
- 数据自动打散分布到集群中各数据节点
- 本地执行查询
- 一个查询在所有相关节点上并行查询
- 全局事务管理器(GTM:Global Transaction Manager)
- 提供事务间一致性视图
- 部署GTM Proxy实例,以提高性能
协调器(Coordinator)
- 处理客户端网络连接,是数据库的接入点
- 分析查询语句,生成执行计划,并将计划传递给数据节点实际执行
- 对数据节点返回的查询中间结果集执行最后处理
- 管理事务两阶段提交(2PC)
存储全局目录(Global Catalog)信息
数据节点(DataNode)
- 存储表和索引数据
- 只有协调器连接到数据节点
- 执行协调器下传的查询
- 两个数据节点间可建立一对一通讯连接,交换分布式表关联查询的相关信息
全局事务管理器(GTM)
- 处理必须的MVCC任务
- Transaction IDs 事务ID
- Snapshots 数据快照,MVCC使用
- 管理全局性数据值
- Timestamps 时间戳
- Sequences 序列对象
- 全集群只有一个GTM节点,会有单点故障问题。解决方案:配置StranBy热备节点保证高可用
- 通过部署GTM Proxy,解决可能的GTM性能瓶颈
GTM Proxy
- 与协调器(Coordinator)和数据节点(DataNode)在一起运行
- 后端(协调器、数据节点)用它替代GTM,直接与它交互,它做为后端与GTM间的中间人
- 将对GTM的请求分组归集,多个请求一次提交给GTM
- 获取transaction ids(XIDs)范围
- 获取数据快照
- 比如: 10个进程分别请求一个transaction id
- 它们每一个都连接到本地的GTM Proxy
- GTM Proxy发送请求到GTM,一次申请10个XID
- GTM锁定procarray数据结构,分配10个XID
- GTM返回XID范围
- GTM解除进程互斥锁
Postgres-XL 数据分布
Postgres-XL数据分布有两种模式: 复制表(Replicated Table)、分布表(Distributed Table)。
复制表(Replicated Table)
- 益用于只读和读多写很少的表
- 有时益用于数据仓库的维度表
- 如果协调器与数据节点一对一部署在同一台服务器,就会是本地数据读取,减少网络传送
- 对写入频繁的表严重不适用
- 每行记录复制到集群中所有的数据节点,每节点一份
分布表(Distributed Table)
- 益用于写入频率的表
- 益用于数据仓库的事实表
- 每行记录只存于一个数据节点
- 可用的分片策略方式
Postgres-XL可用性
- 不存在单点故障
- 全局事务管理器采用热备方式
- 多个协调器间负载均衡
- 数据节点使用流式复制,复制数据到备节点
Postgres-XL性能
事务处理型(OLTP Transaction)性能
- 测试使用针对电子商务应用的TPC-W(DBT-1)基准测试模型。
- 协调层增加了30%的开销:在单节点(CPU4核)上,与简单地直接使用PostgreSQL相比,只有PostgreSQL性能的70%。
- 集群规模扩大到10个节点时,与单节点PostgreSQL相比,理论上应获得7倍性能提升,实际上达到6-6.4倍。
- 随着集群节点数的增加,打开的事务数、快照空间占用、可见性检查都会随之增长。
PostgreSQL 、Postgres-XC、Postgres-XL之间的区别
参考链接: