首页 > 数据库 >分布式两大流派 POSTGRESQL -XC 了解一下

分布式两大流派 POSTGRESQL -XC 了解一下

时间:2023-06-19 17:03:53浏览次数:40  
标签:事务 POSTGRESQL XC 数据库 GTM 分布式


分布式两大流派  POSTGRESQL -XC 了解一下_分布式

分布式数据库有两大流派,NEW SQL VS  POSTGRESQL -XC ,NEW SQL 的分布式主流的理论来源自 GOOGLE 的分布式数据库spanner,以及相关理论的白皮书,而令一派的分布式数据库来自于POSTGRESQL -XC, 今天我们看看到底POSTGRESQL-XC 这个流派的方式是什么,有什么特点,当下那些分布式数据库采用了POSTGRESQL -XC。

POSTGRESQL-XC 的研究自2002年开始,主要是日本的NTT公司进行相关的研究,踏实基于水平可伸缩的数据库系统share nothing无架构的方式.  最早POSTGRESQL-XC 最早的名字叫RiTaDB, 后来改名为POSTGRESQL-XC, 支持全局事务,表分区,复制以及查询计划在各个节点并行执行的shared nothing 架构.

在数据库架构中有一种独特的结构被称为星型结构,在很多的数据库仓库和OLTP的数据库结构中都可以发现其中的身影,星型的结构一般存在较少的大表和一些普通的表,或者数据量较少的表. 例如,产品目录表可能是普通表,而销售的订单表是BIG TABLE. 

POSTGRES -XC 的结构主要解决的是大表的问题,将大表通过关键主键的方式来将一张大表分布在不同的数据存储节点, 主要对于写压力的释放还是通过将数据分散在不同的sharding 分片中来进行的.

分布式两大流派  POSTGRESQL -XC 了解一下_数据库_02

而通过上面的星型结构将大数据分割,并且将小表复制到每一个节点中,通过这样的方式来进行相关的数据计算.

分布式两大流派  POSTGRESQL -XC 了解一下_数据库_03

这就有点类似于我们将一张大表分成多个逻辑表,然后将与其产生JOIN 的小表与每一个表进行JOIN的操作,最后将结果进行UNIION的方式.

实际上POSTGRES-XC 的结构主要有3个部分组成

分布式两大流派  POSTGRESQL -XC 了解一下_数据库_04

1  GTM, GLOBAL Transaction Manager

我们都知道POSTGRESQL的原理中每个表中会存在记录每行数据状态的文件,在POSTGRES-XC 中GTM 主要提供分布式数据库的事务一致性与行的可见性的问题, XC中GTM作为整体数据库中数据的事务管理的中心,提供整体事务状态.

2  Coordinator

Coordinator 主要是基于对应用的接口,如果要比喻的话,他可以作为POSTGRESQL backend pocess的存在, 他作为接受SQL语句, 获得全局事务ID并且获得全局SNAPSHOT,选择那些数据节点参与数据得计算,并且这些工作都是并行的,可以接受多个应用请求来并行进行数据的运算.

3  datanode 

数据节点实际上存储了你的数据,将大表分割而至的归宿,就是 datanode, 在datanode中并不会有全局的数据,输入的语句通过coordinator的分解后,会产生针对不同 datanode的执行计划.通过GTM给出的GXID 全局事务ID,来使用全局snapshot 进行数据的处理.

POSTGRES-XC的核心个人认为主要在 GTM, 这里GTM主要工作的范围和关键点在于如果我们操作一个事务的操作,如果他需要操作超过一个DATANODE的情况下,那么这个操作就必须有一个全局的事务ID来对整体的操作进行把控.

通过GXID 来对事务中的SNAPSHOT的行进行把控.防止不同的事务读到本不应他读到的老的行版本的数据.

其中更深层次的原因在于2PC 两阶段协议,2PC协议强制更新每个分布式事务。但并不强制维护分布式事务更新对其事务的一致可见性. 那么急于2PC的这方面的特性, GXID 会在所有事务执行的行中打上标记,保证数据在全局事务中的可见性或隐蔽性. 那么基于这样的设计GTM 给每一个全局事务做一个全局的GLOBAL SNAPSHOT,通过这样的设计可以在分布式事务进行并行的执行.

分布式两大流派  POSTGRESQL -XC 了解一下_python_05

POSTGRESQL 数据库本身有完善的分布式相关的理论和实际的产品,目前POSTGRESQL 已经有了 XC   XL  X2 等逐步演进的分布式方案.

分布式两大流派  POSTGRESQL -XC 了解一下_mysql_06

分布式两大流派  POSTGRESQL -XC 了解一下_数据库_07

标签:事务,POSTGRESQL,XC,数据库,GTM,分布式
From: https://blog.51cto.com/u_14150796/6516007

相关文章

  • POSTGRESQL Postgres-XL 了解一下
    上次分析的POSTGRES-XC的结构, 实际上POSTGRES-X系列一直在发展, POSTGRES除了XC还有XL的高可用的结构.Postgres-XL是一款Postgres-XC升级的产品,如果说PGXC是在PG添加了集群的功能主打OLTP的功能为卖点,PGXL是一款基于PGXC添加了OLAP功能的支持MPP架构的,但不是简单的PO......
  • POSTGRESQL 创建一个表到底有什么说的? 可说的挺多的
    创建一张表,到底有什么说的, 下面是POSTGRESQL创建数据表的官方文档的内容截图. 那我们就往下看,到底我们可以说点什么建表的开头是关于临时表的问题,其中临时表的global和local,在目前的V12的版本中并没有具体的含义,问题1,POSTGRESQL怎么创建一个看似global的temparytab......
  • POSTGRESQL 主节点失败后, 在多变的情况下重新让他融入复制中
    POSTGRESQL 在主从流复制中,在主库失败切换后,从库变为主库后,如果主库不是因为硬件的原因,想继续拉起来,并且加入到新的复制关系中,一般都会通过pg_rewind的程序来进行拉起来.但不少问题反馈对pg_rewind在重新拉起旧主库出现问题,到底有什么情况下pg_rewind对你的数据库重新建立......
  • POSTGRESQL 设置hugepage 可以让系统使用内存更有效率,防止OOM
    https://www.percona.com/blog/why-linux-hugepages-are-super-important-for-database-servers-a-case-with-postgresql/https://bbs.huaweicloud.com/blogs/detail/156799Hugepage是什么,基于LINUX系统,大页面对虚拟内存管理是有必要的。除标准的4KB页面之外,还进行内存中的大页面......
  • POSTGRESQL 怎么通过explain 来分析SQL查询性能
    Explain命令是大多数数据库常用的一种展示SQL执行计划和cost的一种方式。在POSTGRESQL中EXPLAIN命令展示的信息比较详细,并且附带explain有不少的附加的命令来进行更多的展示。从命令来命令和功能来划分explainselecta.first_name,a.last_name,a.last_update,fa.film_idfrom......
  • POSTGRESQL 高可用 Patroni VS Repmgr 到底哪家强(1)
    在众多postgresql高可用模式中,主要的参与者有两位,PatroniVSrepmgr基于这二者的功能优点以及缺点相信大部分人都不是太明确,下面将根据两篇翻译的文字合并,来对两个高可用的程序来做一个比较,consandpros。 1 Repmgr是一款开源的基于postgres复制基础上的高可用软件,他基于2......
  • POSTGRESQL 14 功能有啥吸引人的
    好多人还在用postgresql10 ,12这些版本的时候,POSTGRESQL已经开启了POSTGRESQL14的旅程。那么到底Postgresql14有什么吸引人的,那就需要了解一下。 https://sql-info.de/postgresql/postgresql-14/articles-about-new-features-in-postgresql-14.html想详细了解了可以到这个......
  • POSTGRESQL openGaussDB 体系架构
    Today听了一下墨天轮举办的OpenGaussDB的专题的训练营,下面是此次线上的OpenGaussDB的体系结构的介绍。这里根据介绍快速总结出此次介绍中OpenGaussDB的特点:1 OpenGaussDB针对国产的硬件系统,如鲲鹏等硬件系统有特殊的支持和性能调试,真多国产的硬件系统有优势。2OpenGaussDB主......
  • POSTGRESQL 事务控制(二) 事务开启 (写着费力,看着费劲系列)
    今天接着上回书,事务如果在处理中没有子事务,则实现和控制是十分容易的,但如果有子事务的情况下,子事务通过transactionState结构体来实现,(上次已经提到了),每一个transactionState都指向父事务的结构体的指针.在继续往下说之前,我们的提到clog, 这是理解后面要提到的一些事情的......
  • POSTGRESQL SERVERLESS 是POSTGRESQL 数据库的未来 (译)
    以下为翻译内容多年来,PostgreSQL一直备受瞩目,对于企业来说,POSTGRESQL流行是面临众多竞争后的选择。随着企业试图摆脱昂贵的传统关系型数据库管理系统(RDBMS),但仍希望坚持使用RDBMS,开源PostgreSQL是一种具有吸引力的、更经济实惠的替代方案。曾经有两个托管PostgreSQL服务(Aurora和RDS)......