一、什么是Postgres-XL

XL的意思是:eXtensible Lattice,可以扩展的格子,即将PostgreSQL应用在多机器上的分布式数据库的形象化表达。

Postgres-XL 是一个完全满足ACID的、开源的、可方便进行水平扩展的、多租户安全的、基于PostgreSQL的数据库解决方案。

Postgres-XL 可非常灵活的应付各种负载,比如:

  • OLAP(通过MPP并行化)
  • OLTP
  • OLAP & OLTP
  • 操作数据存储
  • Key-value存储,包括JSON格式

不同的应用场景:

  • 支持商业智能应用(数据仓库&数据集市),因为PGXL支持MPP(Massively Parallel Processing)
  • Web2.0,数据库扩容的解决方案
  • 遗留系统的数据库扩容的解决方案
  • 新应用,可以先使用PostgreSQL,之后随着数据库变大使用PGXL扩容

PGXL底层为PostgreSQL,这意味着它支持所有支持PostgresSQL类型的驱动,包括: JDBC, ODBC, OLE DB, Python, Ruby, perl DBI, Tcl, and Erlang.

二、PostgreSQL与Postgres-XL

1994年,Postgre95发布,开源。 
1996年,PostgreSQL继承了Postgre95,发布。 
2010年,Postgres-XC发布。 
2012年,前PGXC核心开发者创建StormDB公司,进行了一些改进,包括对MPP并行化的性能改进和多租户安全。 
2013年,TransLattice收购了StormDB。 
2014年,将项目开源,命名为Postgres-XL。

三、Postgres-XC与Postgres-XL

PGXL的架构师和开发者 很多都是以前做PGXC的,PGXL的部分代码是从PGXC移植过来的。

比起功能性,PGXL更强调稳定性, 正确性和性能.

PGXL增加了一些重要的性能提升,比如MPP和replan avoidance on the data nodes,这些都是PGXC没有的。

PGXC目前集中在OLTP的业务上面,PGXL则更加灵活,可以应用于很多不同种类的业务上,比如可以用在大数据处理领域,除此,在多租户的环境中,PGXL也更加安全。

PGXL的社区非常开放。

四、PGXL架构基本知识

PGXL是一系列PostgreSQL数据库的集群,在上层看来就像使用一个数据库一样。根据设计方案的不同,每张表可以是replicated或是distributed的形式。

PGXL有三个主要组件,分别是GTM,Coordinator和Datanode。

    • GTM(Gloable Transaction Manager)负责提供事务的ACID属性;
    • Datanode负责存储表的数据和本地执行由Coordinator派发的SQL任务;
    • Coordinator负责处理每个来自Application的SQL任务,并且决定由哪个Datanode执行,然后将任务计划派发给相应的Datanode,根据需要收集结果返还给Application;

GTM通常由一台独立的服务器承担,因为GTM需要处理来自所有Coordinator和Datanode的事务请求。为了将 Coordinator和Datanode上进程的请求和响应聚集到一台机器上,可以配置GTM-Proxy。GTM-Proxy会减少GTM的负载,同 时会帮助处理GTM失效的情况。即便如此,GTM还是可能会发生单点失效问题,这时可以配置一个GTM-Standby节点作为GTM的备用节点。

每台机器最好同时配置一个Coordinator和一个Datanode,这样既不用担心二者的负载均衡,而且可以降低网络流量。

五、如何实现High Availability

可以对每个节点增加slave,就类似PostgreSQL的streaming replication一样。

GTM可以有一个GTM Standby。

针对自动的failover,目前可以使用Corosync/Pacemaker,虽然它们现在还不是核心项目。

六、PGXL的license

PGXL和PostgreSQL使用相同的LICENSE,截止到2015年,使用的还是Mozilla Public License.

Postgres-XL介绍的更多相关文章

  1. postgres入门介绍

    mysql被oricle公司收购以后,PG就成了比较流行的开源数据库的首选,而且heroku上面不支持mysql,但是却大力支持PG,所以说,不得不学学PG,并非迫不得已的样子,至少以后PG会比较流行 ...

  2. pg 资料大全1

    https://github.com/ty4z2008/Qix/blob/master/pg.md?from=timeline&isappinstalled=0 PostgreSQL(数据库) ...

  3. Android Weekly Notes Issue #281

    October 29th, 2017 Android Weekly Issue #281 本期内容不多,包含了小众DI库牙签帮助测试的文章,Kotlin中Delegate的强大之介绍,以及基于Goog ...

  4. Postgres数据库基本介绍

    最近一直在做一个和PostgreSQL数据库相关的项目,把自己在这个过程中学习的知识记录下来.关于PostgreSQL数据库网上已经有太多的相关介绍了,为了博文的系统性还是先看一下维基百科对Postg ...

  5. postgres数据库参数配置说明介绍

    访问 1. listen_addresses 监听访问地址 2. port 监听端口 3. max_connections 最大连接数 4. 性能 1. shared_buffers PostgreS ...

  6. Linux基础介绍【第一篇】

    Linux简介 什么是操作系统? 操作系统,英文名称Operating System,简称OS,是计算机系统中必不可少的基础系统软件,它是应用程序运行以及用户操作必备的基础环境支撑,是计算机系统的核心 ...

  7. PostgreSQL介绍以及如何开发框架中使用PostgreSQL数据库

    最近准备下PostgreSQL数据库开发的相关知识,本文把总结的PPT内容通过博客记录分享,本随笔的主要内容是介绍PostgreSQL数据库的基础信息,以及如何在我们的开发框架中使用PostgreSQ ...

  8. iOS-多线程介绍

    一.前言部分 最近在面试,重新温习了一遍多线程,希望加深一遍对于多线程的理解. 1.什么是进程? 1).要了解线程我们必须先了解进程,通俗来讲进程就是在系统中运行的一个应用程序. 2).每个线程之间是 ...

  9. java web学习总结(二十七) -------------------JSP标签介绍

    一.JSP标签介绍 JSP标签也称之为Jsp Action(JSP动作)元素,它用于在Jsp页面中提供业务逻辑功能,避免在JSP页面中直接编写java代码,造成jsp页面难以维护. 二.JSP常用标签 ...

  10. Linux AVG ANTIVIRUS FREE使用介绍

    杀毒软件AVG,没有用过估计也有所耳闻.AVG ANTIVIRUS FREE - FOR LINUX 是AVG在Linux下的一款免费杀毒软件.它的官方下载地址供了rpm.deb.源码安装包等多种安装 ...

随机推荐

  1. jsp上传excel文件并导入数据库

    1,excel文件的上传 需要借助jar包:commons-fileupload-1.2.1.jar以及commons-io-1.3.2.jar 前端的html文件 <form id=" ...

  2. "provider: 命名管道提供程序, error: 40 - 无法打开到 SQL Server 的连接"错误的解决方法

    这个错误主要有以下几个原因造成: 1. 错误的连接字符串:例如数据源的实例名称“\"错误写成"/"了 2.Named Pipes(NP)没有启动 其他原因,详见:http ...

  3. Visual Studio Online

    删除Visual Studio Online的项目http://taslimi.me/how-to-delete-a-team-project-from-tfs-online-tfs.visualst ...

  4. expect实现交互式脚本

    #!/usr/bin/expect -f ##告诉解释器用expect来解释 set timeout 6 ##设置超时时间 ] ## 这个是传递给脚本的第一个参数,并把参数赋值给user ] ## 这 ...

  5. DataGridView的单元格控制只能输入数字

    主要是应用DataGridView的EditingControlShowing事件.当单元格进入编辑模式时,可以处理执行该编辑控件的自定义初始化的此事件. public DataGridViewTex ...

  6. typedef NS_OPTIONS 位移的枚举

    typedef NS_OPTIONS里面的枚举可以并存使用  用 | 来并存

  7. SQL 数据库 连接查询 变量、if else、while

    一.连接查询:通过连接运算符可以实现多个表查询. 连接是关系数据库模型的主要特点,也是它区别于其它类型数据库管理系统的一个标志. 常用的两个链接运算符: 1.join   on(左右连接) 2.uni ...

  8. [原创]java WEB学习笔记78:Hibernate学习之路---session概述,session缓存(hibernate 一级缓存),数据库的隔离级别,在 MySql 中设置隔离级别,在 Hibernate 中设置隔离级别

    本博客的目的:①总结自己的学习过程,相当于学习笔记 ②将自己的经验分享给大家,相互学习,互相交流,不可商用 内容难免出现问题,欢迎指正,交流,探讨,可以留言,也可以通过以下方式联系. 本人互联网技术爱 ...

  9. [转]JqueryEasyUI教程入门篇

    什么是jQueryEasyUI? JqueryUI是一组基于jQuery的UI插件集合 学习jQueryEasyUI的条件? 必须掌握Jquery的基本语法知识 jQueryEasyUI的特点? 1. ...

  10. App架构设计学习(一)---- 接口的设计

    一.哎,最近换了家工作,结果工作很出的我意外,没有干熟悉的根据需求写代码,反而让我一个小菜鸟去重构一下App的架构(他们公司的app,已经上线了1.0版本了),没办法,只有硬着头皮去先学习学习,再总结 ...