一,GreenPlum
01,介绍:
Greenplum是一种基于PostgreSQL的分布式数据库,其采用shared-nothing架构,主机、操作系统、内存、存储都是自我控制的,不存在共享。
官方文档:>>>--大概内容如下
- Greenplum Database是一个大规模并行处理(MPP)数据库服务器,其架构专门用于管理大规模分析数据仓库和商业智能工作负载。
- MPP(也称为无共享架构)是指具有两个或更多处理器的系统,它们协作执行操作,每个处理器具有其自己的存储器,操作系统和磁盘。Greenplum使用这种高性能系统架构来分配多TB数据仓库的负载,并且可以并行使用所有系统资源来处理查询。
- Greenplum数据库基于PostgreSQL开源技术。它本质上是几个PostgreSQL面向磁盘的数据库实例,它们共同作为一个有凝聚力的数据库管理系统(DBMS)。它基于PostgreSQL 8.3.23,在大多数情况下与PostgreSQL在SQL支持,功能,配置选项和终用户功能方面非常相似。数据库用户与Greenplum数据库交互,就像使用常规PostgreSQL DBMS一样。
-
Greenplum采用Postgresl作为底层引擎,良好的兼容了Postgresql的功能,Postgresql中的功能模块和接口基本上99%都可以在Greenplum上使用,例如odbc、jdbc、oledb、perldbi、python psycopg2等,所以Greenplum与第三方工具、BI报表集成的时候非常容易;当然它也提供了一些Postgresql不存在的高-级功能:
-
外部表并行数据加载
-
可更新数据压缩表
-
行、列混合存储
-
数据表多级分区
-
Bitmap索引
-
Hadoop外部表
-
Gptext全文检索
-
并行查询计划优化器和Orca优化器
-
Primary/Mirror镜像保护机制
-
资源队列管理
-
WEB/Brower监控
Greenplum大的特点总结就一句话:基于低成本的开放平台基础上提供强大的并行数据计算性能和海量数据管理能力。这个能力主要指的是并行计算能力,是对大任务、复杂任务的快速高效计算,但如果你指望MPP并行数据库能够像OLTP数据库一样,在极短的时间处理大量的并发小任务,这个并非MPP数据库所长。请牢记,并行和并发是两个完全不同的概念,MPP数据库是为了解决大问题而设计的并行计算技术,而不是大量的小问题的高并发请求。
再通俗点说,Greenplum主要定位在OLAP领域,利用Greenplum MPP数据库做大数据计算或分析平台非常适合,例如:数据仓库系统、ODS系统、ACRM系统、历史数据管理系统、电信流量分析系统、移动信令分析系统、SANDBOX自助分析沙箱、数据集市等等。
而MPP数据库都不擅长做OLTP交易系统,所谓交易系统,就是高频的交易型小规模数据插入、修改、删除,每次事务处理的数据量不大,但每秒钟都会发生几十次甚至几百次以上交易型事务 ,这类系统的衡量指标是TPS,适用的系统是OLTP数据库或类似Gemfire的内存数据库。
Greenplum主要由Master节点、Segment节点、interconnect三大部分组成。Greenplum master是Greenplum数据库系统的入口,接受客户端连接及提交的SQL语句,将工作负载分发给其它数据库实例(segment实例),由它们存储和处理数据。Greenplum interconnect负责不同PostgreSQL实例之间的通信。Greenplum segment是独立的PostgreSQL数据库,每个segment存储一部分数据。大部分查询处理都由segment完成。
-
二, 三大节点
01,master 节点
?:
master节点是外边用户访问greenplum的入口。用户并不与segment节点发生任何关系,外部用户的网络只需要与master服务器联通即可。
?:
master数据库也是一个被改造过的PostgreSQL数据库,它包含了整个分布式数据库中的所有元数据,如表结构定义、索引、数据分布信息等等。但其并不存储实际的数据,实际的数据是存储在segment数据库的。
?:
master节点接受用户发过来的sql命令,然后解析生成分布式的执行计划,再把执行计划下发到对应的segment节点进行执行。segment节点执行完成后的结果会发送到master上,master接收到segment的结果进行汇总并返回执行结果给用户。所以在这种master-slave结构中,master不会成为系统的瓶颈。
02,segment节点
?.
Greenplum的每个segment节点可以运行多个segment instance,每个instance可以绑定到一个网卡,这样可以发挥CPU和网络性能。
?.
系统的数据都分布式的存储在segment上。
?.
每个segment同时执行master分发的任务,在执行查询任务或者数据加载的时候可能会涉及数据的移动。在进行数据移动的时候master不参与进来,只是在segment之间进行。
?.
segment可以动态扩展,既可以在原有主机上进行增加segment instance的操作,又可以新增主机来增加segment。当扩展segment后,系统里面的数据会进行重分布操作,这个动作消耗时间会比较多。
03,interconnect:
Greenplum interconnect负责不同PostgreSQL实例之间的通信。
三,术语
Shared Everthting:
一般是针对单个主机,完全透明共享CPU/MEMORY/IO,并行处理能力差,典型的代表SQLServer。 shared-everything架构优点很明显,但是网络,硬盘很容易就会成为系统瓶颈。
Shared Disk:
各个处理单元使用自己的私有 CPU和Memory,共享磁盘系统。典型的代表Oracle Rac, 它是数据共享,可通过增加节点来提高并行处理的能力,扩展能力较好。其类似于SMP(对称多处理)模式,但是当存储器接口达到饱和的时候,增加节点并不能获得更高的性能 。
Shared Nothing:
各个处理单元都有自己私有的CPU/内存/硬盘等,不存在共享资源,各处理单元之间通过协议通信,并行处理和扩展能力更好。各节点相互独立,各自处理自己的数据,处理后的结果可能向上层汇总或在节点间流转。Share-Nothing架构在扩展性和成本上都具有明显优势。
MPP:
大规模并行处理系统是由许多松耦合处理单元组成的,借助MPP这种高性能的系统架构,Greenplum可以将TB级的数据仓库负载分解,并使用所有的系统资源并行处理单个查询。
MVCC:
与事务型数据库系统通过锁机制来控制并发访问的机制不同, GPDB使用多版本控制(Multiversion Concurrency Control/MVCC)保证数据一致性。 这意味着在查询数据库时,每个事务看到的只是数据的快照,其确保当前的事务不会看到其他事务在相同记录上的修改。据此为数据库的每个事务提供事务隔离。 MVCC以避免给数据库事务显式锁定的方式,大化减少锁争用以确保多用户环境下的性能。在并发控制方面,使用MVCC而不是使用锁机制的大优势是, MVCC对查询(读)的锁与写的锁不存在冲突,并且读与写之间从不互相阻塞。
四,高可用特性
?:
greenplum的高可用性是通过master和segment的镜像来实现的,镜像是基于服务器级别的,所以能提供比较好的安全保证。
?
master节点不能和segment节点安装在同一个主机上,standby节点可以和segment节点复用。
?
master宕机的话,standby master不会自动切换到master,需要手动切换到主设备。segment如果一个环节坏掉,系统可以自动将mirror切换到primary。
?
当segment中某台设备出现故障后,mirror会切换成primary。检查出故障的主机恢复后可以使用gprecoverseg命令恢复成之前的主备关系
?
segment包括以下两种mirror模式:
☕: grouped mirror模式
在这种模式下,主机的mirror节点全部放在下一个主机上,当一台机器挂掉,那么拥有该机器mirror的主机负载加重一倍
?:spread mirror模式
该模式下,mirror节点分散在后面主机上,但要求部署的物理机数量要至少多于运行在每个节点上的instance一个。
五,Greenplum特点
☮ 标准SQL接口,比MapReduce接入更方便 ; ☪ 完整的分布式事务能力,确保强数据一致性 ; ? 近乎线性的在线扩展能力 ; ☸ 高并发数据加载技术 ; ✡ 高灵活的行、列以及混合存储及压缩技术 ; ⚛ 高可用技术方案 ; ☯ 支持多方式的授权管理及审计,表级别粒度; ☦ 丰富的生态系统,便捷对接hadoop等。
本文来源:https://www.cnblogs.com/kingle-study/p/10521152.html
相关文章
Golang测试中的数据生成技巧
2023-08-07
数据
生成
技巧
SQL数据库触发器语法详解 (sql数据库触发器语法)
2023-08-06
数据库
语法
触发器
快速简单的删除Oracle数据库字段方法 (删除oracl数据库字段)
2023-08-06
数据库
字段
删除
如何打开社工数据库bak文件 (社工数据库bak怎么打开)
2023-08-06
数据库
打开
社工
实现数据库按拼音排序的方法和技巧 (数据库按拼音排序)
2023-08-06
数据库
排序
按拼音
探究Sybase数据库的性能和功能特点 (sybase数据库怎么样)
2023-08-06
数据库
性能
探究
SQL Server 如何成功建立自己的数据库? (sql server 建立数据库)
2023-08-06
数据库
自己的
建立
如何在Oracle中查看数据库触发器? (oracle查看数据库触发器)
2023-08-06
数据库
查看
触发器
数据库表数据量千万级,对性能影响有多大? (数据库表千万级数据量多吗)
2023-08-06
数据库
级数
有多大
如何使用Oracle按时间导出表数据库? (oracle按时间导出表数据库)
2023-08-06
数据库
导出
如何使用
数据库存储:帖子长期保存,信息永不丢失 (帖子存数据库)
2023-08-06
数据库
丢失
帖子
小米六数据库:全方位数据保障和优化方案 (小米六数据库)
2023-08-05
数据库
优化
小米
简易教程:使用dbe数据库实现数据连接 (dbe数据库 数据连接)
2023-08-05
数据
数据库
连接
Oracle实现多个数据库链接的简便方法 (oracle链接多个数据库)
2023-08-05
数据库
多个
链接
数据库索引:用哪种方法建立? (数据库索引用什么建的)
2023-08-05
索引
数据库
哪种
实现高效缓存同步:Redis数据库技巧大全 (redis 数据库缓存同步)
2023-08-05
数据库
缓存
同步
如何利用数据库实现高效的模糊匹配查询? (数据库实现模糊查询)
2023-08-05
查询
数据库
模糊
数据库有哪些安装方式和位置? (数据库是装在什么上)
2023-08-05
数据库
位置
装在
Lactmed数据库:妈妈们必备的喂养指南 (lactmed 数据库)
2023-08-05
数据库
必备
喂养
数据库设计中的主属性定义及作用 (数据库主属性是什么)
2023-08-05
数据库
定义
属性