POSTGRESQL Postgres-XL 了解一下
上次分析的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 在二次开发后的厉害之处,已经被证明了.
相关文章