Postgresql由于其强大的功能和良好的可扩展性,有很多基于postgresql的分布式架构。.CitusCitus以插件的形式扩展到postgresql,独立于postgresql内核,因此可以快速跟上pg主版本的更新,部署也比较简单。是现在非常流行的分布式解决方案。Citus在苏宁有大规模的应用,微软也为citus提供商业支持。下面是citus的结构:Citus节点主要分为协调节点和工作节点。协调节点不存储真实数据,只存储数据分布的元信息。实际数据被分成几个片段,分散到不同的工作节点中。连接协调节点,协调节点进行sql解析,生成分布式执行计划,发送给worker节点执行,cn汇总结果返回给客户端。Ciitus的主要架构特点如下:①表有两种类型:引用表和分布表。参考表的每个协调节点和工作节点都有一份完整的副本,分发表将被打散分布在不同的工作人员中。②可以进行读写分离。如上图所示,cn1为写节点。您可以通过添加多个cn读取节点来增加集群读取能力。流复制用于同步writecn和readcn之间的元数据。③支持MX模式,元数据也可以存储在部分worker节点中,让worker节点直接提供写的能力,从而增加集群的写能力。④底层工作节点可以通过流复制的方式构建副本,保证数据的高可用。⑤做join时最好的结果是计算可以下推到worker节点,但是只有当引用表和其他表join起来,两表分布相同时,计算才能下推到worker节点节点,否则需要将数据拉取到协调节点进行计算。⑥整体结构类似于mycat的中间件。因为没有全局的事务管理,所以不能保证数据的实时读取一致性,但是性能比这要好。数据写入一致性由2pc保证。pgxc&&pgxlPgxc是一个经典的分布式数据库架构,是一个真正的企业级HTAP。我们看到市面上很多分布式数据库产品都是基于pgxc架构的扩展。pgxc与pg内核紧密耦合,嵌入在pg内核中。起初,pgxc的核心开发者将pgxc商业化,创建了stormdb,优化了一些并行算子。后来TransLattice收购了stormdb,把项目开源了,就是现在的pgxl,所以pgxc和pgxl是一脉相承的,直接移植了大部分代码。下面是pgxc的架构:其实这个架构和citus的优点差不多。它还分为协调节点和数据节点。数据也通过哈希分布到不同的数据节点。集群只增加了全局事务管理组件,保证全局事务的一致性。性别。pgxc的架构特点如下:①gtm保证全局读一致性,两阶段提交保证全局写一致性。②Gtm是整个系统的瓶颈点。在超过150并发的情况下,gtm的瓶颈就会出现。每笔交易都会去gtm获取交易号和快照信息,导致gtm在网络压力和分配交易号速度上的瓶颈。.③需要在多个协调节点之间同步元数据信息。如果协调节点出现故障,不仅会造成ddlhang,还会造成两阶段事务阻塞。④pgxc的出现主要是pg在oltp应用场景的优化。无论是gtm的加入,还是数据一致性的保证,都更加细化了。⑤与citus类似,数据表也可以分为分布表和复制表,复制表在每个数据节点中都有全量数据。GreenplumGreenplum是pivotal公司推出的开源olapmpp数据库。greenplum的用户在某种程度上什至超过了pg。很多人可能是通过greenplum才知道pg的,由此可见greenplum的火爆程度。以下为greenplum架构:Master节点存储全局系统元数据信息,不存储真实数据。数据通过hash分布到不同的Segment,master作为SQL的全局入口,负责在Segment之间分配工作量,整合处理结果返回给客户端。Greenplum架构的特点如下:①主节点可以是主节点,Segment节点也有镜像保证高可用。②支持行列混合存储引擎,同时支持外部表。③join中也涉及到数据跨节点再分配的问题,这也是sharenothing数据库中不可避免的问题。④高速内部互联网络,实现数据在join时的高速移动和汇聚。⑤高效的数据并行加载。
