这几天在学习 PostgreSQL-XC,虽然目前 Postgres-XC 的文档还不完整,但学习一下还是有帮助的,至少PostgreSQL-XC 是一种可以实现 multi-master 方案,这里简单介绍下 PostgreSQL-XC。
What Is Postgres-XC?
PostgreSQL-XC 是一种提供写可靠性,多主节点数据同步,数据传输的开源集群方案,它包括很多组件,稍后会详细介绍这些组件,这些 PostgreSQL-XC组件可以分别安装在多台物理机器或者虚拟机上。
写可靠性 (Write-scalable )是指可以部署多个数据库主节点,并且向这些主节点发出 update 语句,这种特性单个 PostgreSQL 库是无法提供的; 多主节点 (Multi-master ):是指有多个数据库可以提供统一完整的数据库视图;主节点数据同步(Synchronous):是指在一台数据库上更新操作会立刻呈现在另一台数据库中;
数据传输(Transparent)是指;数据位于不同的数据库节点中,当查询数据时,不必关心数据位于具体的节点。你可以将 PostgreSQL-XC 配置一台或者多台主机上, Postgresql-XC 数据以分布式存储,有两种方式,partitioned 或者 replicated ,当向 PostgreSQL-XC 发送查询 SQL时, PostgreSQL-XC 会自动向数据节点发出查询语句并获取数据。
Postgres-XC 的目标
PostgreSQL-XC 最大的特性就是提供多主(multi-master ) 数据同步以及读写( read/write ) 的可靠性。具体地说, PostgreSQL-XC 提供以下特性:
- PostgreSQL-XC 可以提供多个主节点同时处理来自应用端发出的 SQL 语句,这些节点称为 master 节点,但在 PostgreSQL-XC 中称为 “coordinator”。
- PostgreSQL-XC 可以提供多个 masters 节点。
- 任何一个 master 节点都有全局数据库视图,也就是说当任一台 master 接收 update 语句时,在另外的 master 节点可以迅速地看到。
- 表可以以 replicated 或者 distributed 方式分布式存储,并且这对应用来说是透明的;
- PostgreSQL-XC 可以提供统一全局的数据库视图。
Postgres-XC 重要组件
这里介绍下 PostgreSQL-XC 的组件,PostgreSQL-XC 包含三个主要组件,分别是 GTM (Global Transaction Manager), Coordinator and Datanode。
GTM (Global Transaction Manager)
GTM 是 PostgreSQL-XC 的核心组件,用于全局事务控制以及 tuple 的可见性控制。
PostgreSQL 的事务控制是基于 MVCC 机制的, 在 PostgreSQL-XC 体系中将这种技术单独划分出来,称之为 GTM。
Coordinator
协调呆节点 (Coordinator) 是数据节点 (Datanode) 与应用之间的接口,由于表数据会以分片或者复制的方式分布式存储,所以 Coordinator 节点并不物理上存储表数据,表数据位于数据节点上,数据节点接下来会介绍,当应用发起SQL时,会先到达 Coordinator 节点,然后 Coordinator 节点将 sql 分发到各个数据节点,汇总数据,这一系统过程是通过 GXID 和 Global Snapshot 来控制的。
Datanode
Datanode 即数据节点,物理存储表的数据,表数据存储方式包括分片 ( distributed ) 和 完全复制 (replicated) 的方式,数据节点只存储本地的数据。
PostgreSQL-XC 体系结构图
备注:从上图看出,Coordinator 和 datanode 节点可以配置多个,并且可以分别位于不同主上,官方建议 Coordinator 节点和 datanode 节点数相同。另外,只有 Coordinator 节点直接对应用服务,数据节点对应用透明。
Postgres-XC 和 PostgreSQL
Postgres-XC is an extension to PostgreSQL and inherits most of its features.It is an open-source descendant of PostgreSQL and its original Berkeley code. It supports a large part of the SQL standard and offers many modern features:
- complex queries
- foreign keys [3]
- triggers [4]
- views
- transactional integrity
- multiversion concurrency control
Also, similar to PostgreSQL, Postgres-XC can be extended by the user in many ways, for example by adding new:
- data types
- functions
- operators
- aggregate functions
- index methods
- procedural languages
And because of the liberal license same as PostgreSQL, Postgres-XC can be used, modified, and distributed by anyone free of charge for any purpose, be it private, commercial, or academic.
参考
原创文章,作者:bd101bd101,如若转载,请注明出处:https://blog.ytso.com/237863.html