Postgres-XL:基于PostgreSQL的开源分布式实现

标签: 大数据 数据库 | 发表时间:2015-11-08 23:42 | 作者:标点符
出处:http://www.biaodianfu.com

Postgres-XL 全称为 Postgres eXtensible Lattice,是TransLattice公司及其收购数据库技术公司–StormDB的产品。Postgres-XL是一个横向扩展的开源数据库集群,具有足够的灵活性来处理不同的数据库任务。

Postgres-XL 功能特性

  • 开放源代码:(源协议使用宽松的“ Mozilla Public License”许可,允许将开源代码与闭源代码混在一起使用。)
  • 完全的ACID支持
  • 可横向扩展的关系型数据库(RDBMS)
    • 支持OLAP应用,采用MPP(Massively Parallel Processing:大规模并行处理系统)架构模式
    • 支持OLTP应用,读写性能可扩展
    • 集群级别的ACID特性
    • 多租户安全
    • 也可被用作分布式Key-Value存储
  • 事务处理与数据分析处理混合型数据库
  • 支持丰富的SQL语句类型,比如:关联子查询
  • 支持绝大部分PostgreSQL的SQL语句
  • 分布式多版本并发控制(MVCC:Multi-version Concurrency Control)
  • 支持JSON和XML格式

Postgres-XL 缺少的功能

  • 内建的高可用机制
    • 使用外部机制实现高可能,如:Corosync/Pacemaker
    • 有未来功能提升的空间
  • 增加节点/重新分片数据(re-shard)的简便性
    • 数据重分布(redistribution)期间会锁表
    • 可采用预分片(pre-shard)方式解决,在同台物理服务器上建立多个数据节点,每个节点存储一个数据分片。
      数据重分布时,将一些数据节点迁出即可
  • 某些外键、唯一性约束功能

Postgres-XL 架构

postgre-xl

  • 基于开源项目Postgres-XC
    • XL增加了MPP,允许数据节点间直接通讯,交换复杂跨节点关联查询相关数据信息,减少协调器负载。
  • 多个协调器(Coordinator)
    • 应用程序的数据库连入点
    • 分析查询语句,生成执行计划
  • 多个数据节点(DataNode)
    • 实际的数据存储
    • 数据自动打散分布到集群中各数据节点
    • 本地执行查询
    • 一个查询在所有相关节点上并行查询
  • 全局事务管理器(GTM:Global Transaction Manager)
    • 提供事务间一致性视图
    • 部署GTM Proxy实例,以提高性能

协调器(Coordinator)

  • 处理客户端网络连接,是数据库的接入点
  • 分析查询语句,生成执行计划,并将计划传递给数据节点实际执行
  • 对数据节点返回的查询中间结果集执行最后处理
  • 管理事务两阶段提交(2PC)

存储全局目录(Global Catalog)信息

Coordinator

数据节点(DataNode)

  • 存储表和索引数据
  • 只有协调器连接到数据节点
  • 执行协调器下传的查询
  • 两个数据节点间可建立一对一通讯连接,交换分布式表关联查询的相关信息

全局事务管理器(GTM)

  • 处理必须的MVCC任务
    • Transaction IDs 事务ID
    • Snapshots 数据快照,MVCC使用
  • 管理全局性数据值
    • Timestamps 时间戳
    • Sequences 序列对象
  • 全集群只有一个GTM节点,会有单点故障问题。解决方案:配置StranBy热备节点保证高可用
  • 通过部署GTM Proxy,解决可能的GTM性能瓶颈

gtm

GTM Proxy

  • 与协调器(Coordinator)和数据节点(DataNode)在一起运行
  • 后端(协调器、数据节点)用它替代GTM,直接与它交互,它做为后端与GTM间的中间人
  • 将对GTM的请求分组归集,多个请求一次提交给GTM
  • 获取transaction ids(XIDs)范围
  • 获取数据快照
  • 比如: 10个进程分别请求一个transaction id
    • 它们每一个都连接到本地的GTM Proxy
    • GTM Proxy发送请求到GTM,一次申请10个XID
    • GTM锁定procarray数据结构,分配10个XID
    • GTM返回XID范围
    • GTM解除进程互斥锁

gtm-2

Postgres-XL 数据分布

Postgres-XL数据分布有两种模式: 复制表(Replicated Table)、分布表(Distributed Table)。

复制表(Replicated Table)

  • 益用于只读和读多写很少的表
  • 有时益用于数据仓库的维度表
  • 如果协调器与数据节点一对一部署在同一台服务器,就会是本地数据读取,减少网络传送
  • 对写入频繁的表严重不适用
  • 每行记录复制到集群中所有的数据节点,每节点一份

分布表(Distributed Table)

  • 益用于写入频率的表
  • 益用于数据仓库的事实表
  • 每行记录只存于一个数据节点
  • 可用的分片策略方式
    • Hash
    • Round Robin
    • Modulo

Postgres-XL可用性

postgre-xl-2

  • 不存在单点故障
  • 全局事务管理器采用热备方式
  • 多个协调器间负载均衡
  • 数据节点使用流式复制,复制数据到备节点

Postgres-XL性能

事务处理型(OLTP Transaction)性能

postgre-xl-3

  • 测试使用针对电子商务应用的TPC-W(DBT-1)基准测试模型。
  • 协调层增加了30%的开销:在单节点(CPU4核)上,与简单地直接使用PostgreSQL相比,只有PostgreSQL性能的70%。
  • 集群规模扩大到10个节点时,与单节点PostgreSQL相比,理论上应获得7倍性能提升,实际上达到6-6.4倍。
  • 随着集群节点数的增加,打开的事务数、快照空间占用、可见性检查都会随之增长。

PostgreSQL 、Postgres-XC、Postgres-XL之间的区别

postgresql

参考链接:

相关 [postgres xl postgresql] 推荐:

Postgres-XL:基于PostgreSQL的开源分布式实现

- - 标点符
Postgres-XL 全称为 Postgres eXtensible Lattice,是TransLattice公司及其收购数据库技术公司–StormDB的产品. Postgres-XL是一个横向扩展的开源数据库集群,具有足够的灵活性来处理不同的数据库任务. Postgres-XL 功能特性. 开放源代码:(源协议使用宽松的“ Mozilla Public License”许可,允许将开源代码与闭源代码混在一起使用.

postgres创建表分区

- - 数据库 - ITeye博客
       PostgreSQL支持基本的表分区功能.      分区的意思是把逻辑上的一个大表分割成物理上的几块. 某些类型的查询性能可以得到极大提升. 特别是表中访问率较高的行位于一个单独分区或少数几个分区上的情况下. 分区可以减少索引体积从而可以将高使用率部分的索引存放在内存中. 如果索引不能全部放在内存中,那么在索引上的读和写都会产生更多的磁盘访问.

bucardo5.3 postgres主从同步

- - x-marker的博客
在报表应用、olap等领域,bucardo可以把数据实时异步的传输到备库,然后在备库中可以进行数据转换、建临时表、报表等操作,而pg原生的stream replication只能是只读操作,所以bucardo的应用领域还是很广的. 今天分两篇分别记录下pg到pg的主从同步和pg到mysql的主从同步.

监控Postgres数据库

- - 数据库 - ITeye博客
官方文档中有关监控的章节:. 这个可以实时监控数据库,但是没有系统cpu和内存图表. 大多数带有系统监控的,都是通过插件实现的,要多安装和配置一些东西. 下面是安装powa的步骤,Centos系统. 在官网下载代码,现在是2.0版,这个版本需要postgresql是9.4以上版本. 我的pg是9.3版,所以下载的1.2.1版本.

PostgreSQL 9.1发布

- Kai Chen - Solidot
开源数据库项目PostgreSQL发布了v9.1版. 新版本主要的特性包括:同步复制,序列化快照隔离,支持基于列的排序,近邻邻近索引,外来数据封装,支持SELinux许可控制,等等.

PostgreSQL 9.2发布

- - Solidot
时隔一年之后,开源数据库PostgreSQL发布了v9.2版. 主要新特性包括:原生JSON支持,覆盖索引(covering indexes),改进复制和性能等. PostgreSQL显著改善了可伸缩性:线性可扩展性支持最高64核,仅扫描索引,减少CPU消耗;改进垂直可伸缩性:有效利用大服务器硬件资源,锁管理,仅访问索引等底层操作允许数据库引擎处理更大的工作负荷——每秒最高35万只读查询,每秒写入1.4万条数据.

Postgres 数据库分析工具

- - CSDN博客数据库推荐文章
Postgres号称是开源免费DBMS最强大的,并且支持二次开发. 本文就该DBMS的分析工具进行讨论. pg_class表记载表和几乎所有有 字段或者是那些类似表的东西. pg_index),序列,视图,复合类型和一些特殊关系类型. 也有pg_index这张表,包含关于索引的一部分信息.    relname(表,索引,视图等的名字); .

spring boot与spring batch、postgres及elasticsearch整合

- - 互联网 - ITeye博客
当系统有大量数据需要从数据库导入elasticsearch时,使用sping batch可以提高导入的效率. 这篇文章使用spring batch将数据从postgres导入elasticsearch. 本文使用spring data jest连接ES(也可以使用spring data elasticsearch连接ES),ES版本为5.5.3.

Mysql 和 Postgresql 对比

- - 膘叔
vampire告诉我服务器上安装好了postgreSQL,他也一直在推荐这个玩意,所以了解了一下. Mysql 使用太广泛了,以至于我不得不将一些应用从mysql 迁移到postgresql, 很多开源软件都是以Mysql 作为数据库标准,并且以Mysql 作为抽象基础的,但是具体使用过程中,发现Mysql 有很多问题,所以都迁移到postgresql上了,转一个Mysql 和Postgresql 对比的文章:.

PostgreSQL与MySQL比较

- - 数据库 - ITeye博客
通过执行 MySQL 命令(mysqld)启动实例. 一个实例可以管理一个或多个数据库. 一台服务器可以运行多个 mysqld 实例. 一个实例管理器可以监视 mysqld 的各个实例. 通过执行 Postmaster 进程(pg_ctl)启动实例. 一个实例可以管理一个或多个数据库,这些数据库组成一个集群.