首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Postgres集群与GPDB差异

一般的通用数据库都会提供集群的方法,毕竟单机方式始终存在无法满足性能和存储空间扩展的需求场合。

不同的集群扩展架构,可能大致的设计目标都会相同,架构需要满足可扩展且高可用,也就是能够通过增加节点机器方式提升数据库系统的对外服务能力,同时在数据可靠性方面有一定的措施。Postgres集群和GPDB架构对此两点均有涉及,但是在实现原理上和特性表现存在不同。接下来我们先从架构上进行探讨。

Postgres架构原理

Pgpool-II和Postgres-XL是PG集群开源实现中比较成功的两个项目,尚不确定二者在企业生产环境中是否被广泛使用。其中Pgpool-II的前身是Pgpool-I,Postgres-XL的前身是Postgres-XC。

1. Pgpool-II

Pgpool-II相当于中间件,它位于应用程序和PG服务端之间。Pgpool-II可以搭建在已经存在的任意版本的PG主从结构上,主从结构的实现与Pgpool-II无关,可以通过slony等工具或者PG自身的流复制机制实现。

除了主从结构的集群,Pgpool-II也支持多主结构,称为复制模式,该模式下PG节点之间是对等的,没有主从关系,写操作同时在所有节点上执行,这种模式下写操作的代价很大,性能上不及主从模式。PG9.3之后支持的流复制机制可以方便的搭建主从结构的集群(包括同步复制与异步复制),因此Pgpool-II中比较常用的模式是流复制主从模式。

既然PG可以通过自身的流复制机制方便的搭建主从结构集群,为什么还要在它上面搭建Pgpool-II呢?因为简单的主从结构集群并不能提供连接池、负载均衡、自动故障切换等功能,Pgpool-II正好可以做到这些,当然负载均衡只针对读操作,写操作只发生在主节点上。为了避免单点故障,Pgpool-II自身也可以配置为主从结构,对外提供虚拟IP地址,当主节点故障后,从节点提升为新的主节点并接管虚拟IP。

2. Postgres-XL

Postgres-XL将PG的SQL解析层的工作和数据存取层的工作分离到不同的两种节点上,分别称为Coordinator节点和Datanode节点,而且每种节点可以配置多个,共同协调完成原本单个PG实例完成的工作。此外,为了保证分布模式下事务能够正确执行,增加了一个GTM节点。为了避免单点故障,可以为所有节点配置对应的slave节点。Postgres-XL的Coordiator节点是整个集群的数据访问入口,可以配置多个,然后在它们之上通过Nginx等工具实现负载均衡。Coordinator节点维护着数据的存储信息,但不存储数据本身。接收到一条SQL语句后,Coordinator解析SQL,制定执行计划,然后分发任务到相关的Datanode上,Datanode返回执行结果到Coordinator,Coordinator整合各个Datanode返回的结果,最后返回给客户端。

Postgres-XL的Datanode节点负责实际存取数据,数据在多个Datanode上的分布有两种方式:复制模式和分片模式,复制模式下,一个表的数据在指定的节点上存在多个副本;分片模式下,一个表的数据按照指定的规则分布在多个数据节点上,这些节点共同保存一份完整的数据。这两种模式的选择是在创建表的时候执行CREATE TABLE语句指定的,也可以通过ALTER TABLE语句改变数据的分布方式。

GPDB集群

采用无共享存储架构,由master、segment和interconnect三个基本组件组成。其中master负责sql语句解析及优化,事务执行,以及数据均衡,异常节点诊断等。Segment内核就是独立的PG数据库内核,负责数据的存储和监所执行。Interconnect模块为虚拟的模块,分散在各个Segment和Master协议机制中,实现任意点对点之间互联,配置并行执行语句的协同交互,数据的实时备份,数据快速导入导出等。

两种不同技术集群的差异对比如下表所示:

发个小广告!!!走过路过,不要错过!新书来啦!!!

注:本公众号与当当店铺并无从属关系,仅为大家提供一个便捷购物地址。若有所冲突,纯属巧合,立删。

麦克叔叔每晚十点说

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20180516B1SU0900?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券