POSTGRESQL Postgres-XL 了解一下

2021-08-05 00:00:00 功能 数据 事务 分布式 全局

上次分析的POSTGRES -XC 的结构, 实际上POSTGRES-X 系列一直在发展, POSTGRES除了 XC 还有XL 的高可用的结构.



Postgres-XL 是一款Postgres-XC升级的产品, 如果说PGXC是在PG添加了集群的功能主打OLTP的功能为卖点, PGXL 是一款基于PGXC添加了OLAP功能的支持MPP架构的, 但不是简单的POSTGRESQL 单机的功能的堆叠,本身基于的是PG早期的9.5 ,目前新的版本是Postgres-XL 10R1.1 的版本。


目前有些国产数据库是基于POSTGRES-XL 来进行二次研发并推广上市的,实际上POSTGRES-XC 是日本NTT电信在2010年的网格化数据库的计划,在2012年一个叫stormDB的公司在POSTGRES-XC 基础上增加了POSTGRES-XC的性能,包含MPP架构, 在2013年stormDB被TransLattice 获得并在2014年将这个项目开源,变为POSTGRES-XL

POSTGREX-XC 和 XL 不同在于XC是将数据查询下推到datanode, 而xl使用的MPP架构。另一点的不同在于XC 主攻的方向是 OLTP, XL主攻的方向是OLAP




今天就继续了解一下 POSTGRES-XL 的分布式结构

XL 的主要完成的工作是从应用端接受语句或事务将这些执行的语句,通过coordinator 来对外提供一致性的视图来访问数据库,并且大化的提供与POSTGRESQL 单机类似的事务处理的方式和数据的展示的方式。数据表被分割成多个片,存储在不同的data nodes,并且对于应用程序来说这些都是透明的。


在分布式成型中,主要的三种模式, 集中式,民主式,令牌式,POSTGRESQL-XL 主要还是使用集中式的方式来完成核心的问题的解决,这点与TIDB 使用PD 的方式类似。这样的方式高效,简单。这也符合简洁就是美的一种想法的理论。


POSTGRES-XL 核心的组件,GTM , Coordinator , datanoade 与TIDB 的 TIDB SERVER , PD , TIKV 也是类似的,当然在以前写过,目前的两大分布式流派, POSTGRES-XC XL , 以及 TIDB 的 NEW SQL 流派。


POSTGRES-XL 的核心 GTM , Global Transaction Manager 与PD 功能一致,提供了事务的管理,以及事务的状态和数据的路由的功能。Coordinator相当于postgresql 单机中每个客户连接到数据库的backend process, 但Coordinator 不会存储数据仅仅是一个客户端,这与TIDB SERVER 的功能也是类似的。通过coordinator 来获得全局事务ID 和 事务的SNAPSHOT,通过GXID 来看到底哪些datanode 可以获取需要的数据。Datanode 本身存储数据并且不含有任何的全局的数据视图,根据GXID来完成SNAPSHOT 和 数据的存取。


系统中核心的KEY 应该是GTM, 主题 POSTGRES-XL并未在POSTGRESQL源码中修改的太多。


这里着重的说说GTM, GTM 功能就是控制事务,提供了有序性的全局时间戳,以及分配GXID 全局事务ID, 并且手机所有事务的状态提供全局snapshot,而全局的SNAPSHOT 状态也是通过GXID来实现的,防止其他事务来读取某些“大事务”未提交的行。这里通过记录每个事务的开始和结束时间来去提供SNAPSHOT,以及事务的可见性。



从左到右,每个事务都包含左侧的信息通过右侧 gtm_transactionInfo 来进行全局事务的操控和snapshot的功能。gtm_snapshotdata 里面的信息是不是和POSTGRESQL 中每行的事务管理的方式类似。


同时Postgres-XL 是遵循MPP架构的分布式数据库,所以必须对所在数据存储节点进行管理,通过合理的管理来对数据进行有效的访问。



POSTGRES-XL 在数据NODE中存储也分为


1  节点均存在数据

2  数据通过算法进行数据的分布


 在标准的Standard postgresql 和  POSTGRES-XL 结构中

标准的PostgreSQL 包含了


而 XL 系列将这些分别在 Coordinator  和  XL Datanode 完成

Coordinator


datanode 


所以在POSTGRES-XL 中建立表对于POSTGRES-XL 是非常重要的, 如果数据表初始建立错误,或者数据分布有问题,则整体的性能不会太好.

总结特点:

主要的特点:  

1  支持OLTP 高负载的支持

2  支持OLAP 场景通过MPP 并行的结构来满足OLAP 的需求

3  分布式数据存储数据,或根据具体情况进行表复制存储

4  节点的扩展方便快捷,数据具有副本

5  支持多节点分布式数据查询,将数据查询的CPU 与 I/O 使用率分散

6  支持复杂的SQL 查询方式,类似单库的查询语句方式

7  基于POSTGRESQL streaming  replicaition的数据复制方式

8  表的数据存储通过算法进行拆分到不同node,或者表在所有的节点进行复制


9  系统本身不支持datanode 高可用,需要另外采用其他办法进行支持

10  需要的VIP 的特性来支持coordinator 出现故障后的访问,并且在coordinator 中进行均衡负载.


当然POSTGRES-XL  应用的案例就是腾讯的微信的支付功能,想必POSTGRES-XL 在二次开发后的厉害之处,已经被证明了.





相关文章