PostgreSQL-XC: Introduction

这几天在学习 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:

  1. complex queries
  2. foreign keys [3]
  3. triggers [4]
  4. views
  5. transactional integrity
  6. multiversion concurrency control

Also, similar to PostgreSQL, Postgres-XC can be extended by the user in many ways, for example by adding new:

  1. data types
  2. functions
  3. operators
  4. aggregate functions
  5. index methods
  6. 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.

参考

最后推荐和张文升共同编写的《PostgreSQL实战》,本书基于PostgreSQL 10 编写,共18章,重点介绍SQL高级特性、并行查询、分区表、物理复制、逻辑复制、备份恢复、高可用、性能优化、PostGIS等,涵盖大量实战用例!

购买链接:https://item.jd.com/12405774.html

PostgreSQL实战
感谢支持!
0%