Greenplum——大数据时代高性能的数据仓库与BI应用平台

一. Greenplum简介html

大数据是个煊赫一时的词,各行各业都在谈。一谈到大数据,好多人认为就是Hadoop。实际上Hadoop只是大数据若干处理方案中的一个。如今的SQL、NoSQL、NewSQL、Hadoop等等,都能在不一样层面或不一样应用上处理大数据的某些问题。而Greenplum数据库做为一个分布式大规模并行处理数据库(MPP),在大多数状况下,更适合作大数据的存储引擎、计算引擎和分析引擎。python

Greenplum做为企业级数据库产品,能够说是世界上最早进的OLAP开源数据库之一。Greenplum是由数个独立的数据库服务组合成的逻辑数据库,简单的说就是一个与ORACLE、 DB2同样面向对象的关系型数据库集群,咱们能够经过标准的SQL能够对GP中的数据进行访问存取。2015年10月,Pivotal宣布Greenplum正式开源。sql

Greenplum为大数据存储、计算、挖掘而设计,拥有丰富的特性:数据库

第一,完善的标准支持:Greenplum彻底支持ANSI SQL 2008标准和SQL OLAP 2003 扩展;从应用编程接口上讲,它支持ODBC和JDBC。完善的标准支持使得系统开发、维护和管理都大为方便。而如今的 NoSQL,NewSQL和Hadoop 对 SQL 的支持都不完善,不一样的系统须要单独开发和管理,且移植性很差。编程

第二,支持分布式事务,支持ACID。保证数据的强一致性。服务器

第三,做为分布式数据库,拥有良好的线性扩展能力。在国内外用户生产环境中,具备上百个物理节点的Greenplum集群都有不少案例。架构

第四,Greenplum有不少合做伙伴,有完善的生态系统,能够与不少企业级产品集成,譬如SAS、Cognos、Informatic、Tableau等;也能够不少种开源软件集成,譬如Pentaho、Talend 等。oracle

二. Greenplum架构分布式

数据库构架设计中主要有Shared Everthting、Shared Nothing、Shared Disk:函数

 

数据库架构类型

Shared Everthting:局限于单一服务器(一般是价格比较昂贵的SMP服务器),彻底透明共享CPU、Memory和I/O,典型的表明SQL Server。并行处理能力是最差的,其扩展性和性能受到相应的限制。

Shared Disk各个处理单元使用本身的私有 CPU和Memory,共享磁盘系统。典型的表明Oracle Rac, 它是数据共享,可经过增长节点来提升并行处理的能力,扩展能力较好,相似于SMP(对称多处理)模式。这种架构须要经过一个狭窄的数据管道将全部I/O信息过滤到昂贵的共享磁盘子系统。可是当存储器接口达到饱和的时候,增长节点并不能得到更高的性能 。

Shared Nothing各个处理单元都有本身私有的CPU/内存/硬盘等,不存在共享资源,相似于MPP(大规模并行处理)模式,它是把某个表从物理存储上被水平分割,并分配给多台服务器(或多个实例),每台服务器能够独立工做,各处理单元之间经过协议通讯。并行处理和扩展能力更好,只需增长服务器数就能够增长处理能力和容量。典型表明DB2 DPF和Hadoop ,各节点相互独立,各自处理本身的数据,处理后的结果可能向上层汇总或在节点间流转。

Greenplum是基于软件的海量数据并行操做的“彻底不共享”的MPP架构,将实际的数据存储设备分红一个个区段服务器上的小存储单元,每一个单元都有一个链接本地磁盘的专用独立的、高带宽通道。区段服务器能够经过彻底并行的方式处理每一个查询,同时使用全部磁盘链接,并按照查询计划的要求在各区段间实现高效数据流动。Greenplum基于这种架构能够帮助客户建立数据仓库(Greenplum从开始设计的时候就被定义成数据仓库),充分利用低成本的商用服务器、存储和联网设备,经过经济的方式升级到千万亿字节的系统,而且在处理OLAP、BI(商务智能)、数据分析和数据挖掘等任务时性能远远超过了通用数据库系统。

 

Greenplum架构

Greenplum的组件分红三个部分:Master Severs、Segment Severs和Master Severs与Segment Severs之间的高效互联技术Interconnect。其中Master和Segment自己就是独立的数据库Sever。

Master负责创建与客户端的链接和管理,进行SQL的解析并造成执行计划生成并拆分执行计划;把执行计划分配给Segment的节点,收集Segment的执行结果并返回给最终应用;Master不存储业务数据,只存储数据字典,不负责运算,所以不会成为系统性能的瓶颈。这也是Greenplum与传统MPP架构数据库的一个重要区别。

Segment负责业务数据的存储和存取,并根据获得执行计划,负责处理业务数据。也就是用户关系表的数据会打散分布到每一个Segment节点。当进行数据访问时,首先全部Segment并行处理与本身有关的数据,若是须要Segment能够经过进行Innterconnect进行彼此的数据交互。Segment节点越多,数据就会打的越散,处理速度就越快。所以与Shared Everthting数据库集群不一样,经过增长Segment节点服务器的数量,Greenplum的性能会成线性增加。

三. Greenplum与BI(大数据应用)

Greenplum的特色主要就是查询速度快,数据装载速度快,批量DML处理快。并且性能能够随着硬件的添加,呈线性增长,拥有很是良好的可扩展性。所以,它主要适用于面向分析的应用。好比构建企业级ODS/EDW,或者数据集市等等。

Greenplum的数据库引擎层是基于著名的开源数据库Postgresql的,良好的兼容了Postgresql的功能 ,这使得Greenplum在支持BI等大数据分析与挖掘方面的应用时具有优秀的兼容性和丰富的拓展能力:

(1)Postgresql有很是强大 SQL 支持能力和很是丰富的统计函数和统计语法支持,除对ANSI SQL彻底支持外,还支持好比分析函数(SQL2003 OLAP window函数),还能够用多种语言来写存储过程,对于Madlib、R的支持也很好。

(2)Postgresql中的功能模块和接口基本上99%均可以在Greenplum上使用,例如odbc、jdbc、oledb、perldbi、python psycopg2等,因此Greenplum与第三方工具(ETL工具好比HaoheDI)、BI报表集成的时候很是容易。

(3)对于postgresql的contrib中的一些经常使用模块Greenplum提供了编译后的模块开箱即用,如oraface、postgis、pgcrypt等,对于其它模块,用户能够自行将contrib下的代码与Greenplum的include头文件编译后,将动态so库文件部署到全部节点就可进行测试使用了。

相关文章
相关标签/搜索