若是想在數據倉庫中快速查詢結果,可使用greenplum。分佈式
Greenplum數據庫也簡稱GPDB。它擁有豐富的特性:工具
第一,完善的標準支持:GPDB徹底支持ANSI SQL 2008標準和SQL OLAP 2003 擴展;從應用編程接口上講,它支持ODBC和JDBC。完善的標準支持使得系統開發、維護和管理都大爲方便。而如今的 NoSQL,NewSQL和Hadoop 對 SQL 的支持都不完善,不一樣的系統須要單獨開發和管理,且移植性很差。oop
第二,支持分佈式事務,支持ACID。保證數據的強一致性。post
第三,作爲分佈式數據庫,擁有良好的線性擴展能力。在國內外用戶生產環境中,具備上百個物理節點的GPDB集羣都有不少案例。
第四,GPDB是企業級數據庫產品,全球有上千個集羣在不一樣客戶的生產環境運行。這些集羣爲全球不少大的金融、政府、物流、零售等公司的關鍵業務提供服務。
第五,GPDB是Greenplum(如今的Pivotal)公司十多年研發投入的結果。GPDB基於PostgreSQL 8.2,PostgreSQL 8.2有大約80萬行源代碼,而GPDB如今有130萬行源碼。相比PostgreSQL 8.2,增長了約50萬行的源代碼。
第六,Greenplum有不少合做夥伴,GPDB有完善的生態系統,能夠與不少企業級產品集成,譬如SAS,Cognos,Informatic,Tableau等;也能夠不少種開源軟件集成,譬如Pentaho,Talend 等。
3.greenplum起源
Greenplum最先是在10多年前(大約在2002年)出現的,基本上和Hadoop是同一時期(Hadoop 約是2004年先後,早期的Nutch可追溯到2002年)。當時的背景是:
- 互聯網行業通過以前近10年的由慢到快的發展,累積了大量信息和數據,數據在爆發式增加,這些海量數據急需新的計算方式,須要一場計算方式的革命;
- 傳統的主機計算模式在海量數據面前,除了造價昂貴外,在技術上也難於知足數據計算性能指標,傳統主機的Scale-up模式遇到了瓶頸,SMP(對稱多處理)架構難於擴展,而且在CPU計算和IO吞吐上不能知足海量數據的計算需求;
- 分佈式存儲和分佈式計算理論剛剛被提出來,Google的兩篇著名論文發表後引發業界的關注,一篇是關於GFS分佈式文件系統,另一篇是關於MapReduce 並行計算框架的理論,分佈式計算模式在互聯網行業特別是收索引擎和分詞檢索等方面得到了巨大成功。
下圖就是GFS的架構
4.greenplum整體架構
1.greenplum的整體架構以下:
數據庫由Master Severs和Segment Severs經過Interconnect互聯組成。
- Master節點:是整個系統的控制中心和對外的服務接入點,它負責接收用戶SQL請求,將SQL生成查詢計劃並進行並行處理優化,而後將查詢計劃分配(dispatch)到全部的Segment節點進行並行處理,協調組織各個Segment節點按照查詢計劃一步一步地進行並行處理,最後獲取到Segment的計算結果,再返回給客戶端;從用戶的角度看Greenplum集羣,看到的只是Master節點,無需關心集羣內部的機制,全部的並行處理都是在Master控制下自動完成的。Master節點通常只有一個或兩個(互爲備份);
- Segment節點:是Greenplum執行並行任務的並行運算節點,它接收Master的指令進行MPP並行計算,所以全部Segment節點的計算性能總和就是整個集羣的性能,經過增長Segment節點,能夠線性化得增長集羣的處理性能和存儲容量,Segment節點能夠是1~10000個節點;
- Interconnect:是Master節點與Segment節點、Segment節點與Segment節點之間的數據傳輸組件,它基於千兆交換機或萬兆交換機實現數據在節點間的高速傳輸;
- 外部數據加載到Greenplum時,採用並行數據流進行加載,直接加載到Segment節點,這項獨特的技術是Greenplum的專有技術,以此保證外部數據在最短期內加載到數據庫中。
簡單來講
Master主機負責:創建與客戶端的鏈接和管理;SQL的解析並造成執行計劃;執行計劃向Segment的分發收集Segment的執行結果;Master不存儲業務數據,只存儲數據字典。
Segment主機負責:業務數據的存儲和存取;用戶查詢SQL的執行。
2.基本體系架構
master節點,能夠作成高可用的架構
master node高可用,相似於hadoop的namenode和second namenode,實現主備的高可用。
segments節點
3.無共享/MPP核心架構
Greenplum數據庫軟件將數據平均分佈到系統的全部節點服務器上,因此節點存儲每張表或表分區的部分行,全部數據加載和查詢都是自動在各個節點服務器上並行運行,而且該架構支持擴展到上萬個節點。
5.並行管理
對於數據的裝載和性能監控。
並行備份和恢復。
數據訪問流程,數據分佈到不一樣顏色的節點上
查詢流程分爲查詢建立和查詢分發,計算後將結果返回。
對於存儲,將存儲的內容分佈到各個結點上。
對於數據的分佈,分爲hash分佈和隨機分佈兩種。
均勻分佈的狀況:
6.混合的存儲和執行(按列或按行)
Greenplum發明支持混合按列或按行存儲數據,每張表或表分區能夠由管理員根據應用須要,分別指定存儲和壓縮方式。基於這個功能,用戶能夠對任何表或表分區選擇按行或按列存儲數據和處理方式。這些是在建表或表分區的DDL語句中配置的,只需在建表或表分區時指定。這個功能基於Greenplum的多態維數據存儲技術。
Master和Segment都是一個單獨的PostgreSQL數據庫。每個都有本身單獨的一套元數據字典。
Master節點通常也叫主節點,Segment叫作數據節點。
爲了實現高可用,每一個Segment都有對應的備節點 Mirror Segment分別存在與不一樣的機器上。
Client通常只能與Master節點進行交互,Client將SQL發給Master,而後Master對SQL進行分析後再將其分配給全部的Segment進行操做。
Greenplum沒有Windows版本,只能安裝在類UNIX的操做系統上。
Greenplumn極度消耗I/O資源,因此對存儲的要求比較高。