广州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    体系结构图

备注:从上图看出,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的区别,总之干货非常多

另外,主持人公司承建的中国联通商城系统和佛山市气象局系统都使用Pgsql作为后端数据库,感觉PG的应用还是听广泛的

上几张图

图1

图2

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

还有EDB数据库(Enterprise DB ),是PostgreSQL的商业增强版本,并且拥有很多企业级功能,比PostgreSQL要强一些

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

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

广州PostgreSQL用户会技术交流会小记 2015-9-19的更多相关文章

  1. 以深圳.NET俱乐部名义 的技术交流会圆满成功

    2017年5月13日的深圳下着暴雨,一场以深圳.NET俱乐部名义的.NET技术交流会在微软Build 2017刚闭幕时在罗湖布吉路与翠山路交界处富基PARK国际6F举办,这次交流以微软Build 20 ...

  2. 福州首届.NET开源社区技术交流会圆满成功

    活动总结 2018年11月10日周六的下午,在福州蒲公英创新工场举办了福州首届.NET开源社区技术交流会,来自福建省各大科技公司的技术小伙伴齐聚一堂,为了就是能在现场学习到微软跨平台技术.NET Co ...

  3. 【福州活动】| "福州首届.NET开源社区线下技术交流会"(2018.11.10)

    活动介绍 微软爱开源,已是尽人皆知的事实.自从收购全球最大的开源社区 GitHub 之后,微软依旧使 GitHub 保持独立运营,并且通过此项举措,微软本身已经成为最大的社区服务者. .NET Cor ...

  4. 【深圳】大湾区第三次.NET技术交流会(网络直播)

    活动简介 云.devops.微服务.容器是现在这个发展阶段的软件形态, 本次活动我们围绕这些话题介绍.NET生态下的发展.SQL Server 2017可根据需要运行本地部署的SQL Server,当 ...

  5. PostgreSQL 用户和权限管理

    PostgreSQL 用户和权限管理 创建 CREATE ROLE rolename;CREATE USER username;CREATE USER和CREATE ROLE的区别在于,CREATE ...

  6. dropuser - 删除一个 PostgreSQL 用户帐户

    SYNOPSIS dropuser [ option...] [ username] DESCRIPTION 描述 dropuser 删除一个现有 PostgreSQL 用户 和 该用户所有的数据库. ...

  7. createuser - 定义一个新的 PostgreSQL 用户帐户

    SYNOPSIS createuser [ option...] [ username] DESCRIPTION 描述 createuser 创建一个新的 PostgreSQL 用户.只有超级用户(在 ...

  8. 关于举办【福州】《K8S社区线下技术交流会》的问卷调查

      近年来,容器.Kubernetes.DevOps.微服务.Serverless等一系列云原生技术受到越来越多的关注,云原生为企业数字化转型提供了创新源动力,基于云原生技术构建企业技术中台在各行业也 ...

  9. PostgreSQL用户和权限问题

    PostgreSQL用户 其实用户和角色都是角色,只是用户是具有登录权限的角色. 创建用户 create user sonar password '123'; 删除用户 drop user sonar ...

随机推荐

  1. android studio使用ndk,jni随记

    1.下载ndk(会下载到sdk目录下) 2.配置 3.配置build.gradle(app) android { defaultConfig { ndk { moduleName "JniD ...

  2. xml之dom4j解析

    * 使用dom4j解析xml 实例在java520里面 TextDom4j * dom4j,是一个组织,针对xml解析,提供解析器dom4j * dom4j不是javase的一部分,想要使用第一步需要 ...

  3. Duilib源码分析(六)整体流程

    在<Duilib源码分析(一)整体框架>.<Duilib源码分析(二)控件构造器—CDialogBuilder>以及<Duilib源码分析(三)XML解析器—CMarku ...

  4. 单调队列 && 斜率优化dp 专题

    首先得讲一下单调队列,顾名思义,单调队列就是队列中的每个元素具有单调性,如果是单调递增队列,那么每个元素都是单调递增的,反正,亦然. 那么如何对单调队列进行操作呢? 是这样的:对于单调队列而言,队首和 ...

  5. Winform窗体用对象数组做一个小项目

    首先我我们看一下需求:我们要做的是显示员工信息,实现项目经理给员工评分的功能! 首先项目经理是评分的人所以没有用,因为我们自己写,评分的就是我们自己.所以我们要做的是先在vs也就是我们的环境里建一个项 ...

  6. html内容超出了div的宽度如何换行让内容自动换行

    在显示评论列表的时候因为有固定宽,但是显示的内容超出的了div的宽,在这种情况下我们需要将其换行,实现的css代码如下   在工作中评论内容测试遇到评论着的评论内容为:"dddddddddd ...

  7. Gym 100646 F Tanks a Lot RMQ

    Problem F: Tanks a Lot Imagine you have a car with a very large gas tank - large enough to hold what ...

  8. [软件推荐]快速文件复制工具(Limit Copy) V4.0 绿色版

    快速文件复制工具(Limit Copy)绿色版是一款智能变频超快复制绿色软件. 快速文件复制工具(Limit Copy)功能比较完善,除了文件复制还可以智能变频,直接把要复制的文件拖入窗口即可,无需手 ...

  9. 基于redis的点赞功能设计

    前言 点赞其实是一个很有意思的功能.基本的设计思路有大致两种, 一种自然是用mysql等 数据库直接落地存储, 另外一种就是利用点赞的业务特征来扔到redis(或memcache)中, 然后离线刷回m ...

  10. window.onload和$(document).ready(function(){})的区别

    前段时间在面试之前查找并整理了一下window.onload和$(document).ready(function(){})区别,今天有时间更到我的博客上,由于本人资历尚浅,如有不对的地方,还请指正. ...