Greenplum——大數據時代高性能的數據倉庫與BI應用平台


一. Greenplum簡介

大數據是個炙手可熱的詞,各行各業都在談。一談到大數據,好多人認為就是Hadoop。實際上Hadoop只是大數據若干處理方案中的一個。現在的SQL、NoSQL、NewSQL、Hadoop等等,都能在不同層面或不同應用上處理大數據的某些問題。而Greenplum數據庫作為一個分布式大規模並行處理數據庫(MPP),在大多數情況下,更適合做大數據的存儲引擎、計算引擎和分析引擎。

Greenplum作為企業級數據庫產品,可以說是世界上最先進的OLAP開源數據庫之一。Greenplum是由數個獨立的數據庫服務組合成的邏輯數據庫,簡單的說就是一個與ORACLE、 DB2一樣面向對象的關系型數據庫集群,我們可以通過標准的SQL可以對GP中的數據進行訪問存取。2015年10月,Pivotal宣布Greenplum正式開源。

Greenplum為大數據存儲、計算、挖掘而設計,擁有豐富的特性:

第一,完善的標准支持:Greenplum完全支持ANSI SQL 2008標准和SQL OLAP 2003 擴展;從應用編程接口上講,它支持ODBC和JDBC。完善的標准支持使得系統開發、維護和管理都大為方便。而現在的 NoSQL,NewSQL和Hadoop 對 SQL 的支持都不完善,不同的系統需要單獨開發和管理,且移植性不好。

第二,支持分布式事務,支持ACID。保證數據的強一致性。

第三,作為分布式數據庫,擁有良好的線性擴展能力。在國內外用戶生產環境中,具有上百個物理節點的Greenplum集群都有很多案例。

第四,Greenplum有很多合作伙伴,有完善的生態系統,可以與很多企業級產品集成,譬如SAS、Cognos、Informatic、Tableau等;也可以很多種開源軟件集成,譬如Pentaho、Talend 等。

二. 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工具)、BI報表集成的時候非常容易。

(3)對於postgresql的contrib中的一些常用模塊Greenplum提供了編譯后的模塊開箱即用,如oraface、postgis、pgcrypt等,對於其它模塊,用戶可以自行將contrib下的代碼與Greenplum的include頭文件編譯后,將動態so庫文件部署到所有節點就可進行測試使用了。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM