你的位置:首页 > 数据库

[数据库]广州postgresql用户会技术交流会小记 2015


广州postgresql用户会技术交流会小记  2015-9-19

今天去了广州postgresql用户会组织的技术交流会

分别有两个session

第一个讲师介绍了他公司使用postgresql -X2的情况

第二个讲师介绍了postgresql里面的一些执行计划分析

 

我个人比较关注第一个session,因为涉及到真正的应用案例

网上有对postgresql -X2的简短介绍,我先转载过来

转载:http://francs3.blog.163.com/blog/static/4057672720125315352442/

 

浙江移动、华为、腾讯、阿里都在用pgsql去O

搞pgsql的几个大牛都去了BAT,基本上找不到人帮忙了


 

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 提供以下特性

    1 PostgreSQL-XC 可以提供多个主节点同时处理来自应用端发出的 SQL 语句,这些节点称为 master
       节点,但在 PostgreSQL-XC 中称为 "coordinator"。
      
     2 PostgreSQL-XC 可以提供多个  masters 节点。
    
    3  任何一个 master 节点都有全局数据库视图,也就是说当任一台 master 接收 update 语句时,在另外的
        master 节点可以迅速地看到。
       
    4 表可以以 replicated 或者 distributed 方式分布式存储,并且这对应用来说是透明的;
    
    5 PostgreSQL-XC 可以提供统一全局的数据库视图。
    
    
三 Postgres-XC Key Components
    
      这里介绍下 PostgreSQL-XC 的组件,PostgreSQL-XC 包含三个主要组件,分别是 
GTM (Global Transaction Manager), Coordinator and Datanode。


--3.1 GTM (Global Transaction Manager)

     GTM 是 PostgreSQL-XC 的核心组件,用于全局事务控制以及 tuple 的可见性控制。
     
     PostgreSQL 的事务控制是基于 MVCC 机制的, 在 PostgreSQL-XC 体系中将这种技术单独划分出来,
称之为 GTM。


--3.2 Coordinator

     协调呆节点 (Coordinator) 是数据节点 (Datanode)  与应用之间的接口,由于表数据会以分片或者
复制的方式分布式存储,所以 Coordinator 节点并不物理上存储表数据,表数据位于数据节点上,数据节
点接下来会介绍,当应用发起SQL时,会先到达 Coordinator 节点,然后 Coordinator 节点将 sql 分发到
各个数据节点,汇总数据,这一系统过程是通过  GXID 和 Global Snapshot  来控制的。


--3.3 Datanode

    Datanode 即数据节点,物理存储表的数据,表数据存储方式包括分片 ( distributed)  和 完全复制 
(replicated) 的方式,数据节点只存储本地的数据。

 

--3.4  PostgreSQL-XC 体系结构图

  

PostgreSQL-XC: Introduction - francs - PostgreSQL DBA

                                  PostgreSQL-XC    体系结构图

     备注:从上图看出,Coordinator 和 datanode 节点可以配置多个,并且可以分别位于不同主机

上,官方建议 Coordinator 节点和 datanode 节点数相同。另外,只有 Coordinator 节点直接对

应用服务,数据节点对应用透明。


四 Postgres-XC Inherits 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.


第一个讲师主要介绍了:postgresql -X2的升级、分片、社区情况、备份、原理、增删节点、分配路由

还有他自己踩过的一些坑,还有postgresql -XL、postgresql -XC、postgresql -X2的区别,总之干货非常多

 

上几张图

图1

 

图2

 

个人感觉上要比MySQL集群要强悍,特别是分片,DBA不需要干预太多,它自己自动管理,是比较吸引的

还有EDB数据库,是postgresql的商业增强版本,比postgresql要强一些,postgresql有的功能,EDB数据库都有

只不过EDB数据库在中国用的人很少,而且不太出名

 

 

如有不对的地方,欢迎大家拍砖o(∩_∩)o