您当前的位置:首页 > 电脑百科 > 程序开发 > 架构

PostgreSQL的几种分布式架构对比

时间:2020-01-01 11:34:59  来源:  作者:

来源:数据库架构之美

 

PostgreSQL由于强大的功能和良好的扩展性,基于PostgreSQL来做的分布式架构也比较多,大部分用于分析类场景,下面比较几种常见的架构特点。

 

Citus

 

Citus以插件的方式扩展到PostgreSQL中,独立于PostgreSQL内核,所以能很快的跟上PostgreSQL主版本的更新,部署也比较简单,是现在非常流行的分布式方案。Citus在苏宁有大规模应用,微软也提供citus的商业支持。下面是citus的架构:

 

PostgreSQL的几种分布式架构对比

 

 

Citus节点主要分为协调节点和工作节点,协调节点不存储真实数据,只存储数据分布的元信息,实际的数据被分成若干分片,打散到不同worker节点中,应用连接协调节点,协调节点进行sql解析,生成分布式执行计划,下发到worker节点执行,cn将结果汇总返回客户端。

 

Citus的主要架构特点如下:

①有两种表类型:参考表和分布表,参考表每个协调节点和worker节点都有一份完整的副本,分布表则会打散分布到不同worker中。

②可以进行读写分离,如上图cn1为写节点,可以通过再增加多个cn读节点增加集群读的能力,写cn和读cn之间使用流复制进行元数据同步。

③支持MX模式,可以将元数据也存在某些worker节点中,这样使得该worker节点能够直接提供写的能力,以此增加集群写的能力。

④底层worker节点可以通过流复制搭建副本,保证数据高可用。

⑤做join时最好的结果是能够将计算下推到worker节点,但是只有在参考表和其他表做join以及两个表的分布方式相同的情况下才能下推到worker计算,否则需要将数据拉到协调节点进行计算。

⑥整体架构类似mycat的中间件,因为没有全局事务管理,故不能保证数据的实时读一致性,但是性能上相比要好。数据写一致性使用2pc来保证。

 

pgxc && pgxl

 

Pgxc是经典的分布式数据库架构,是真正的企业级HTAP,我们看到市面上很多分布式数据库产品都是基于pgxc架构扩展而来。pgxc是和pg内核紧耦合的,是嵌入到pg内核中,最初pgxc的核心开发者将pgxc商业化,创建了stormdb,进行了一些并行算子优化,后来TransLattice公司将stormdb收购,并且将项目开源,就是现在的pgxl,所以pgxc和pgxl是一脉相承的,大部分代码是直接移植过来的。下面是pgxc的架构:

 

PostgreSQL的几种分布式架构对比

 

其实这个架构和citus优点类似,也是分为协调节点和数据节点,数据也是通过hash分布到不同数据节点上,只是在集群中增添了全局事务管理组件,保证全局事务的一致性。

 

pgxc的架构特点如下:

①gtm保证全局读一致性,两阶段提交保证全局写一致性。

②gtm是整个系统的瓶颈点,在超过150并发的情况下,gtm的瓶颈就会显现,每一个事务开启都会去gtm取事务号和快照信息,造成gtm在网络压力和分配事务号速度上存在瓶颈。

③多个协调节点间需要同步元数据信息,如果协调节点失败,不仅会造成ddl hang住,也可能造成两阶段事务的阻塞。

④pgxc的出现主要是在pg在oltp应用场景上的优化,不管是新增gtm,还是数据一致性的保证上面都做得更加精细化。

⑤和citus类似,数据表也可以分为分布表和复制表,复制表在每一个数据节点都有一份全量数据。

 

Greenplum

 

Greenplum是pivotal公司推出的一款开源olap的mpp数据库,greenplum的用户在某种程度上甚至超越了pg,很多人可能是通过greenplum才认识的pg,可见greenplum的风靡。下面是greenplum架构:

 

PostgreSQL的几种分布式架构对比

 

 

Master节点存储全局系统元数据信息,不存储真实数据。数据通过hash分布到不同的segment中,master作为sql的全局入口,负责在segment中分配工作负载,整合处理结果,返回客户端。

 

Greenplum架构特点如下:

①master节点可以做主备,segment节点也有镜像保证高可用,segment主备尽量混布到不同服务器上。

②支持行列混合存储引擎,同时支持外部表。

③在join时也涉及到数据跨节点重分布的问题,这也是share nothing数据库不可避免的问题。

④高速内部interconnect网络,实现数据join时的高速移动和汇总。

⑤高效的数据并行加载。



Tags:PostgreSQL   点击:()  评论:()
声明:本站部分内容及图片来自互联网,转载是出于传递更多信息之目的,内容观点仅代表作者本人,如有任何标注错误或版权侵犯请与我们联系(Email:2595517585@qq.com),我们将及时更正、删除,谢谢。
▌相关推荐
前言JDBC访问Postgresql的jsonb类型字段当然可以使用Postgresql jdbc驱动中提供的PGobject,但是这样在需要兼容多种数据库的系统开发中显得不那么通用,需要特殊处理。本文介绍...【详细内容】
2021-12-23  Tags: PostgreSQL  点击:(13)  评论:(0)  加入收藏
如果您的系统依赖PostgreSQL数据库并且您正在寻找HA的集群解决方案,我们希望提前告知您这是一项复杂的任务,但并非不可能实现。我们将讨论一些解决方案,您可以从中选择对您的容...【详细内容】
2021-03-10  Tags: PostgreSQL  点击:(286)  评论:(0)  加入收藏
生命不止,继续 Go go go !!!之前关于golang操作数据库的博客:Go实战–go语言操作MySQL数据库(go-sql-driver/mysql)Go实战–go语言操作sqlite数据库(The way to go)...【详细内容】
2021-01-05  Tags: PostgreSQL  点击:(196)  评论:(0)  加入收藏
无论你需要的东西简单(如一个购物清单)亦或复杂(如色卡生成器) ,PostgreSQL 命令都能使它变得容易起来。-- Greg Pittman(作者) 在 PostgreSQL 入门 一文中, 我解释了如何安装、设...【详细内容】
2020-12-18  Tags: PostgreSQL  点击:(156)  评论:(0)  加入收藏
2020 年 5 月,我们与 OnGres 合作,对 GitLab 上的 Postgres 集群进行版本大更新,从 9.6 版本升级到 11 版本。升级全部在维护窗口内运行,没有丝毫差错;更新中所有涉及的内容、计...【详细内容】
2020-10-16  Tags: PostgreSQL  点击:(114)  评论:(0)  加入收藏
Linux是一款免费开源的操作系统,由于其自由、开放、安全、稳定等诸多特点,已被各大IT公司广泛地应用于服务器和嵌入式设备中。由于数据存储的需要,Linux操作系统需要搭配一套性...【详细内容】
2020-09-03  Tags: PostgreSQL  点击:(86)  评论:(0)  加入收藏
对于POSTGRESQL 到底使用了多少内存,大部分的使用方法都是进入到POSTGRESQL 中进行查看,今天我们来分享从PostgreSQL 外部来查看内存的方式方法。本次主要使用的命令是ps 命令...【详细内容】
2020-07-29  Tags: PostgreSQL  点击:(142)  评论:(0)  加入收藏
概述postgresql自带提供了一款轻量级的压力测试工具:pgbench ,可自行编写脚本,按自己的需求对数据库进行性能压力测试。这个工具是作者Greg Smith在使用原生pgbench过程中,发现...【详细内容】
2020-06-24  Tags: PostgreSQL  点击:(159)  评论:(0)  加入收藏
安装、设置、创建和开始使用 PostgreSQL 数据库。-- Greg Pittman(作者)每个人或许都有需要在数据库中保存的东西。即使你执着于使用纸质文件或电子文件,它们也会变得很麻烦。...【详细内容】
2020-01-07  Tags: PostgreSQL  点击:(83)  评论:(0)  加入收藏
官方文档二进制安装和启动:https: //www.postgresql.org /download/linux/redhat/源码安装和启动:https:/ /www.postgresql.org/docs/11/install-procedure.htmlhttps:/ /www....【详细内容】
2020-01-07  Tags: PostgreSQL  点击:(132)  评论:(0)  加入收藏
▌简易百科推荐
为了构建高并发、高可用的系统架构,压测、容量预估必不可少,在发现系统瓶颈后,需要有针对性地扩容、优化。结合楼主的经验和知识,本文做一个简单的总结,欢迎探讨。1、QPS保障目标...【详细内容】
2021-12-27  大数据架构师    Tags:架构   点击:(5)  评论:(0)  加入收藏
前言 单片机开发中,我们往往首先接触裸机系统,然后到RTOS,那么它们的软件架构是什么?这是我们开发人员必须认真考虑的问题。在实际项目中,首先选择软件架构是非常重要的,接下来我...【详细内容】
2021-12-23  正点原子原子哥    Tags:架构   点击:(7)  评论:(0)  加入收藏
现有数据架构难以支撑现代化应用的实现。 随着云计算产业的快速崛起,带动着各行各业开始自己的基于云的业务创新和信息架构现代化,云计算的可靠性、灵活性、按需计费的高性价...【详细内容】
2021-12-22    CSDN  Tags:数据架构   点击:(10)  评论:(0)  加入收藏
▶ 企业级项目结构封装释义 如果你刚毕业,作为Java新手程序员进入一家企业,拿到代码之后,你有什么感觉呢?如果你没有听过多模块、分布式这类的概念,那么多半会傻眼。为什么一个项...【详细内容】
2021-12-20  蜗牛学苑    Tags:微服务   点击:(9)  评论:(0)  加入收藏
我是一名程序员关注我们吧,我们会多多分享技术和资源。进来的朋友,可以多了解下青锋的产品,已开源多个产品的架构版本。Thymeleaf版(开源)1、采用技术: springboot、layui、Thymel...【详细内容】
2021-12-14  青锋爱编程    Tags:后台架构   点击:(21)  评论:(0)  加入收藏
在了解连接池之前,我们需要对长、短链接建立初步认识。我们都知道,网络通信大部分都是基于TCP/IP协议,数据传输之前,双方通过“三次握手”建立连接,当数据传输完成之后,又通过“四次挥手”释放连接,以下是“三次握手”与“四...【详细内容】
2021-12-14  架构即人生    Tags:连接池   点击:(17)  评论:(0)  加入收藏
随着移动互联网技术的快速发展,在新业务、新领域、新场景的驱动下,基于传统大型机的服务部署方式,不仅难以适应快速增长的业务需求,而且持续耗费高昂的成本,从而使得各大生产厂商...【详细内容】
2021-12-08  架构驿站    Tags:分布式系统   点击:(23)  评论:(0)  加入收藏
本系列为 Netty 学习笔记,本篇介绍总结Java NIO 网络编程。Netty 作为一个异步的、事件驱动的网络应用程序框架,也是基于NIO的客户、服务器端的编程框架。其对 Java NIO 底层...【详细内容】
2021-12-07  大数据架构师    Tags:Netty   点击:(17)  评论:(0)  加入收藏
前面谈过很多关于数字化转型,云原生,微服务方面的文章。虽然自己一直做大集团的SOA集成平台咨询规划和建设项目,但是当前传统企业数字化转型,国产化和自主可控,云原生,微服务是不...【详细内容】
2021-12-06  人月聊IT    Tags:架构   点击:(23)  评论:(0)  加入收藏
微服务看似是完美的解决方案。从理论上来说,微服务提高了开发速度,而且还可以单独扩展应用的某个部分。但实际上,微服务带有一定的隐形成本。我认为,没有亲自动手构建微服务的经历,就无法真正了解其复杂性。...【详细内容】
2021-11-26  GreekDataGuy  CSDN  Tags:单体应用   点击:(35)  评论:(0)  加入收藏
最新更新
栏目热门
栏目头条