Postgres-XL:基于PostgreSQL的开源可扩展数据库集群
2019独角兽企业重金招聘Python工程师标准>>>
With powerful performance and security enhancements for PostgreSQL, sophisticated management tools for global deployments and database compatibility, EnterpriseDB software supports both mission and non-mission critical enterprise applications. More than 2,500 enterprises, governments and other organizations worldwide use EnterpriseDB software, support, training and professional services to integrate open source software into their existing data infrastructures.
Based in Bedford, MA, EnterpriseDB is backed by strategic private investors.“
- 开放源代码:www.postgres-xl.org
Postgres-XL 全称为 Postgres eXtensible Lattice,是TransLattice公司及其收购数据库技术公司–StormDB的产品,是StormDB核心部分重塑后开源。
开源协议使用宽松的“Mozilla Public License”许可,允许将开源代码与闭源代码混在一起使用。 - 完全的ACID支持
- 可横向扩展的关系型数据库(RDBMS)
- 支持OLAP应用,采用MPP(Massively Parallel Processing:大规模并行处理系统)架构模式
- 支持OLTP应用,读写性能可扩展 (注意,排在第一位的是OLAP!!!)
- 集群级别的ACID特性
- 多租户安全
- 也可被用作分布式Key-Value存储
- 事务处理与数据分析处理混合型数据库
- 支持丰富的SQL语句类型,比如:关联子查询
- 支持绝大部分PostgreSQL的SQL语句
- 分布式多版本并发控制(MVCC:Multi-version Concurrency Control)
- 支持JSON和XML格式
- 内建的高可用机制
- 使用外部机制实现高可能,如:Corosync/Pacemaker
- 有未来功能提升的空间
- 增加节点/重新分片数据(re-shard)的简便性
- 数据重分布(redistribution)期间会锁表
- 可采用预分片(pre-shard)方式解决,在同台物理服务器上建立多个数据节点,每个节点存储一个数据分片。
数据重分布时,将一些数据节点迁出即可
- 某些外键、唯一性约束功能
- 基于开源项目Postgres-XC
- XL增加了MPP,允许数据节点间直接通讯,交换复杂跨节点关联查询相关数据信息,减少协调器负载。
- 多个协调器(Coordinator)
- 应用程序的数据库连入点
- 分析查询语句,生成执行计划
- 多个数据节点(DataNode)
- 实际的数据存储
- 数据自动打散分布到集群中各数据节点
- 本地执行查询
- 一个查询在所有相关节点上并行查询
- 全局事务管理器(GTM:Global Transaction Manager)
- 提供事务间一致性视图
- 部署GTM Proxy实例,以提高性能
- 处理客户端网络连接,是数据库的接入点
- 分析查询语句,生成执行计划,并将计划传递给数据节点实际执行
- 对数据节点返回的查询中间结果集执行最后处理
- 管理事务两阶段提交(2PC)
- 存储全局目录(Global Catalog)信息
- 存储表和索引数据
- 只有协调器连接到数据节点
- 执行协调器下传的查询
- 两个数据节点间可建立一对一通讯连接,交换分布式表关联查询的相关信息
- 处理必须的MVCC任务
- Transaction IDs 事务ID
- Snapshots 数据快照,MVCC使用
- 管理全局性数据值
- Timestamps 时间戳
- Sequences 序列对象
- 全集群只有一个GTM节点,会有单点故障问题。解决方案:配置StranBy热备节点保证高可用
- 通过部署GTM Proxy,解决可能的GTM性能瓶颈
- 与协调器(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解除进程互斥锁
CREATE TABLE my_table (…)DISTRIBUTE BYHASH(col) | MODULO(col) | ROUNDROBIN | REPLICATION[ TO NODE (nodename[,nodename…])]
- 益用于只读和读多写很少的表
- 有时益用于数据仓库的维度表
- 如果协调器与数据节点一对一部署在同一台服务器,就会是本地数据读取,减少网络传送
- 对写入频繁的表严重不适用
- 每行记录复制到集群中所有的数据节点,每节点一份
- 益用于写入频率的表
- 益用于数据仓库的事实表
- 每行记录只存于一个数据节点
- 可用的分片策略方式
- Hash
- Round Robin
- Modulo
- 不存在单点故障
- 全局事务管理器采用热备方式(有热备就不叫单点故障了吗?)
- 多个协调器间负载均衡
- 数据节点使用流式复制,复制数据到备节点
- 但,但是,这一切目前都是手工的........... (主要是讲流式复制?手工的,讲个毛啊~)
- 测试使用针对电子商务应用的TPC-W(DBT-1)基准测试模型。
- 协调层增加了30%的开销:在单节点(CPU4核)上,与简单地直接使用PostgreSQL相比,只有PostgreSQL性能的70%。
- 集群规模扩大到10个节点时,与单节点PostgreSQL相比,理论上应获得7倍性能提升,实际上达到6-6.4倍。
- 随着集群节点数的增加,打开的事务数、快照空间占用、可见性检查都会随之增长。
转载于:https://my.oschina.net/Suregogo/blog/464203
Postgres-XL:基于PostgreSQL的开源可扩展数据库集群相关推荐
- 基于Docker搭建Percona XtraDB Cluster数据库集群
本文实验的环境参数 阿里云ECS Centos7.5 Docker version 18.06.0-ce percona/percona-xtradb-cluster:5.7 Percona Xtra ...
- 基于nginx的tomcat负载均衡和集群(超简单)
今天看到"基于apache的tomcat负载均衡和集群配置 "这篇文章成为javaEye热点. 略看了一下,感觉太复杂,要配置的东西太多,因此在这里写出一种更简洁的方法. 要集群t ...
- PostgreSQL流复制之二:pgpool-II实现PostgreSQL数据库集群(转发+整理)
转发来源: PostgreSQL的集群技术比较:https://iwin.iteye.com/blog/2108807 参考:https://blog.csdn.net/yaoqiancuo3276/ ...
- Sequoia(基于JDBC的数据库集群中间件)用户手册
http://haha8.runsky.com/forum/showthread.php?t=22668 Sequoia(基于JDBC的数据库集群中间件)用户手册 1, 入门 1.1, 什么是Sequ ...
- 基于LVS高可用架构实现Nginx集群分流
Nginx实用插件_踩踩踩从踩的博客-CSDN博客 前言 前面文章介绍Nginx的核心及扩展插件必要的性能优化,以及在nginx中如何实用用https:本篇文章会继续讲解重要的概念 lvs高可用框架, ...
- 轻松实现基于Heartbeat的高可用web服务集群
高可用集群就是为了保证某项服务能够时时在线,我们可以通过几个9来衡量一个高可用集群提供服务的稳定性,例如5个9的高可用集群必须保证服务一年在线的时间占99.999%,也就是说一年的时间中仅允许服务电线 ...
- 搭建基于Docker社区版的Kubernetes本地集群
搭建基于Docker社区版的Kubernetes本地集群 原文:搭建基于Docker社区版的Kubernetes本地集群 Kubernetes的本地集群搭建是一件颇费苦心的活,网上有各种参考资源,由于 ...
- 部署基于tomcat 8 的solrCloud 5.5集群
部署基于tomcat 8 的solrCloud 5.5集群 @(OTHERS)[solr] 部署基于tomcat 8 的solrCloud 55集群 一版本及准备工作 二准备solr相关webapp内 ...
- Thanos 开源的大规模Prometheus集群解决方案
Thanos 开源的大规模Prometheus集群解决方案 参考文章: (1)Thanos 开源的大规模Prometheus集群解决方案 (2)https://www.cnblogs.com/yx88 ...
最新文章
- BBSSDK插件技术方案
- WEB前后端分离开发中的验证与安全问题
- mysql表损坏监控_监控mysql启动情况并检测表错误修复
- macbook 移动硬盘无法写入_如何升级MacBook笔记本的SSD硬盘-菜鸟折腾系列一
- 留言板asp mysql_ASP简单入门(制作一个简单的留言板 )
- mysql gender_Mysql第一弹
- 推荐我们在B站免费的转录组课程
- 电脑摄像头一维条形码matlab识别
- DOS下常用命令大集合
- Android两个控件叠在一起,如何让被挡住的控件显示出来
- Centos 7安装Docker可视化管理面板安装中文Portainer
- 智能优化算法:果蝇优化算法-附代码
- 替换PanDown神器 更新Pdown 3.4.6 清爽版
- 提高计算机性能的主流方法,提高cpu性能的方法有哪些?怎么把电脑cpu性能调到最大?...
- mysql 二次分组_MySQL分组
- Airbnb产品运营数据分析
- 云闪付,每天签到,转账领红包,新用户领取8-2018元红包
- 炫舞服务器显示方框怎么回事,win10界面全是显示方块如何解决_win10系统界面出现白色方框该怎么去除-win7之家...
- 统信UOS提示系统磁盘空间不足,磁盘扩容
- win10打开蓝牙_用了N年也未必知!Win10竟藏有这么多实用功能
热门文章
- Activity采用栈式管理的理解
- FCKEditor最新上传漏洞(ASP),允许上传“.asp;jpg”类型文件解决方案
- 为DataGridView添加行号
- AJPFX关于Set接口学习笔记及总结
- Oracle RMAN备份深入解析--联机备份
- TensorFlow基础笔记(7) 图像风格化效果与性能优化进展
- jsp自定自定义标签
- [转]解读ASP.NET 5 MVC6系列(7):依赖注入
- NSTimer用法,暂停,继续,初始化
- C#对话框-使用打开和保存对话框