资讯专栏INFORMATION COLUMN

初识Postgres-XL

JasinYip / 3459人阅读

摘要:所有节点中分为三种角色全局事务管理器协调器和数据节点。一旦故障,整个集群立刻无法访问,此时可以切换到节点上。

第一节 简介
Postgres-XL是一款开源的PG集群软件,XL代表eXtensible Lattice,即可扩展的PG“格子”之意,以下简称PGXL。官方称其既适合写操作压力较大的OLTP应用,又适合读操作为主的大数据应用。它的前身是Postgres-XC(简称PGXC),PGXC是在PG的基础上加入了集群功能,主要适用于OLTP应用;PGXL是在PGXC的基础上的升级产品,加入了一些适用于OLAP应用的特性,如 Massively Parallel Processing (MPP) 特性。通俗的说PGXL的代码是包含PG代码的,使用PGXL安装PG集群并不需要多带带安装PG。这样带来的一个问题是无法随意选择任意版本的PG,好在PGXL跟进PG较及时,目前最新版本Postgres-XL 9.5 R1.3,基于PG 9.5。
三者的关系大致如下图(来源网络,出处不详)

总体感觉PGXL这款工具还是相当成熟的,有官方网站http://www.postgres-xl.org/,文档也比较完善,也有商业公司2ndQuadrant在支持。下图是PGXL和PG在OLAP方面的性能对比,来自2ndQuadrant官网:

第二节 集群架构

上面这张图就是PGXL集群的架构图,来自官方网站。所有节点中分为三种角色:GTM(全局事务管理器)、Coordinator(协调器)和Datanode(数据节点)。需要注意一点是图中的Load Balance组件并不属于PGXL集群本身,需要其他负载均衡工具实现。
GTM:
全局事务控制节点,保证集群数据的一致性,与Coordinator节点和Datanode节点不断通信,是整个集群的核心节点,只存在一个,可以存在一个GTM Standby节点,对GTM实时备份。GTM一旦故障,整个集群立刻无法访问,此时可以切换到GTM Standby节点上。如果部署了GTM Standby节点,就应该同时部署GTM Proxy,一般和Coordinator、Datanode部署在同一台服务器上。GTM Proxy的作用代理Coordinator和Datanode对GTM的访问,起到减轻GTM负载的作用,另外一个重要的作用是帮助完成GTM的故障切换,当GTM节点发生故障后,GTM Standby成为新的GTM,此时Coordinator和Datanode节点并不需要重新指定GTM地址,只需要GTM Proxy重新连接到新的GTM地址即可。
Coordinator:
接收数据访问请求的节点,本质上是由PG后台进程组成。接收的一条查询后,Coordinator节点执行查询计划,然后会根据查询数据涉及的数据节点将查询分发给相关的数据节点。写入数据时,也会根据不同的数据分布策略将数据写入相关的节点。可以说Coordinator节点上保存着集群的全局数据位置。Coordinator节点可以任意扩展,各个节点之间除了访问地址不同以外是完全对等的,通过一个节点更新的数据可以在另一个节点上立刻看到。每个Coordinator节点可以配置一个对应的standby节点,避免单点故障。
Datanode:
实际存取数据的节点,接收Coordinator的请求并执行SQL语句存取数据,节点之间也会互相通信。一般的,一个节点上的数据并不是全局的,数据节点不直接对外提供数据访问。一个表的数据在数据节点上的分布存在两种模式:复制模式和分片模式,复制模式下,一个表的数据在指定的节点上存在多个副本;分片模式下,一个表的数据按照一定的规则分布在多个数据节点上,这些节点共同保存一份完整的数据。这两种模式的选择是在创建表的时候执行CREATE TABLE语句指定的,具体语法如下:

CREATE TABLE table_name(...)
DISTRIBUTE BY 
HASH(col)|MODULO(col)|ROUNDROBIN|REPLICATION
TO NODE(nodename1,nodename2...)

可以看到,如果DISTRIBUTE BY 后面是REPLICATION,则是复制模式,其余则是分片模式,HASH指的是按照指定列的哈希值分布数据,MODULO指的是按照指定列的取摩运算分布数据,ROUNDROBIN指的是按照轮询的方式分布数据。TO NODE指定了数据分布的节点范围,如果没有指定则默认所有数据节点参与数据分布。如果没有指定分布模式,即使用普通的CREATE TABLE语句,PGXL会默认采用分片模式将数据分布到所有数据节点。

这篇就先写到这里,下一篇写一下安装与配置。

参考资料:
http://www.postgres-xl.org/
https://2ndquadrant.com/en/re...
http://www.slideshare.net/mas...

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/38957.html

相关文章

  • Postgres-XL安装与配置

    摘要:接上篇初识写一下简称的部署与测试。如果执行报错则根据提示安装相应的库即可,如等。默认的安装目录是,和原生相同,很顺手。 接上篇《初识Postgres-XL》https://segmentfault.com/a/11...写一下Postgres-XL(简称PGXL)的部署与测试。 第一节 安装安装很简单,源码安装,和PG的安装基本相同,可能比PG多一个依赖库。在所有节点上执行相同操作。 ...

    ysl_unh 评论0 收藏0
  • PG的两种集群技术:Pgpool-II与Postgres-XL

    摘要:最近研究了的两种集群方案,分别是和,在这里总结一下二者的机制结构优劣测试结果等。其中的前身的,的前身是。为了避免单点故障,可以为所有节点配置对应的节点。测试测试结果测试结果显示,两种集群与单机的性能指标几乎一致,无法分辨高下。 最近研究了PG的两种集群方案,分别是Pgpool-II和Postgres-XL,在这里总结一下二者的机制、结构、优劣、测试结果等。 1、 Pgpool-I...

    gitmilk 评论0 收藏0
  • 通过rhel7的kvm虚拟机实现3节点Postgres-XL(包括gtm standby)

    摘要:这里只演示修改下运行停掉的服务下运行,编辑配置文件,修改连接地址以下为修改后的显示结果,是的服务,从可以看到下运行     关于postgres-xl的实验是在我自己笔记本rhel7.2_x64的环境下,用kvm实现的,总共有6台虚拟机:    一台openfiler2.99发布共享存储,一台gtm master,一台gtm slave,三台gtm_proxy/coordinator/...

    huhud 评论0 收藏0
  • 构建可扩展的PostgreSQL解决方案

    摘要:这可以通过负载平衡来实现数据分片当问题不是并发查询的数量,而是数据库的大小和单个查询的速度时,可以实现不同的方法。 showImg(https://segmentfault.com/img/remote/1460000018875091); 来源 | 愿码(ChainDesk.CN)内容编辑 愿码Slogan | 连接每个程序员的故事 网站 | http://chaindesk.cn...

    jonh_felix 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<