一、Greenplum 是什麼
是一款開源的分佈式數據庫存儲解決方案,其主要關注在數據倉庫和商業智能方面。可以在虛擬化x86服務器上運行無分享(shared-nothing)的大規模並行處理(MPP)架構。
Greenplum最早是在10多年前(大約在2002年)出現的,基本上和Hadoop是同一時期(Hadoop 約是2004年前後,早期的Nutch可追溯到2002年)。當時的背景是:
互聯網行業經過之前近10年的由慢到快的發展,累積了大量信息和數據,數據在爆發式增長,這些海量數據急需新的計算方式,需要一場計算方式的革命;
傳統的主機計算模式在海量數據面前,除了造價昂貴外,在技術上也難於滿足數據計算性能指標,傳統主機的Scale-up模式遇到了瓶頸,SMP(對稱多處理)架構難於擴展,並且在CPU計算和IO吞吐上不能滿足海量數據的計算需求;
分佈式存儲和分佈式計算理論剛剛被提出來,Google的兩篇著名論文發表後引起業界的關注,一篇是關於GFS分佈式文件系統,另外一篇是關於MapReduce 並行計算框架的理論,分佈式計算模式在互聯網行業特別是收索引擎和分詞檢索等方面獲得了巨大成功。
二、Greenplum 特性
- 支持海量數據存儲和處理
- 高性價比
- 支持Just In Time BI:通過準實時、實時的數據加載方式,實現數據倉庫的實時更新,進而實現動態數據倉庫(ADW),基於動態數據倉庫,業務用戶能對當前業務數據進行BI實時分析(Just In Time BI)
- 系統易用性
- 支持主流的sql語法,使用起來十分方便,學習成本低
- 擴展性好,支持多語言的自定義函數和自定義類型等
- 提供了大量的維護工具,使用維護起來很方便
- 在internet上有這豐富的postgreSQL資源供用戶參考
- 支持線性擴展:採用MPP並行處理架構。在MPP結構中增加節點就可以線性提供系統的存儲容量和處理能力
- 較好的併發支持及高可用性支持除了提供硬件級的Raid技術外,還提供數據庫層Mirror機制保護,也劇場將每個節點的數據在另外的節點中同步鏡像,單個節點的錯誤不影響整個系統的使用。對於主節點,還提供Master/Stand by機制進行主節點容錯,當主節點發生錯誤時,可以切換到Stand by節點繼續服務
- 支持MapReduce:一種大規模數據分析技術
- 數據庫內部壓縮
三、Greenplum 架構
1、總體架構
數據庫由Master Severs和Segment Severs通過Interconnect互聯組成。
Master主機負責:建立與客戶端的連接和管理;SQL的解析並形成執行計劃;執行計劃向Segment的分發收集Segment的執行結果;Master不存儲業務數據,只存儲數據字典。
Segment主機負責:業務數據的存儲和存取;用戶查詢SQL的執行。
2、greenplum使用mpp架構
基本體系架構
master節點,可以做成高可用的架構
master node高可用,類似於hadoop的namenode和second namenode,實現主備的高可用。
segments節點
三、Greenplum 並行管理
對於數據的裝載和性能監控。
並行備份和恢復。
數據訪問流程,數據分佈到不同顏色的節點上
查詢流程分爲查詢創建和查詢分發,計算後將結果返回。
對於存儲,將存儲的內容分佈到各個結點上。
對於數據的分佈,分爲hash分佈和隨機分佈兩種。
均勻分佈的情況:
五、Greenplum 衍生知識點梳理
5.1 OLTP與OLAP
數據庫系統一般分爲兩種類型:OLTP、OLAP:
OLTP(On-Line Transaction Processing,聯機事務處理)系統:也稱爲生產系統,它是事件驅動的、面向應用的,比如電子商務網站的交易系統就是一個典型的OLTP系統。
OLTP的基本特點:
- 數據在系統中產生
- 基於交易的處理系統(Transaction-Based)
- 每次交易牽涉的數據量很小
- 對響應時間要求非常高
- 用戶數量非常龐大,主要是操作人員
- 數據庫的各種操作主要基於索引進行
OLAP(On-Line Analytical Processing,聯機分析處理)系統:是基於數據倉庫的信息分析處理過程,是數據倉庫的用戶接口部分。是跨部門的、面向主題的。
OLAP的基本特點是:
- 本身不產生數據,其基礎數據來源於生產系統中的操作數據(OperationalData)
- 基於查詢的分析系統
- 複雜查詢經常使用奪標聯結、全表掃描等,牽涉的數據量往往十分龐大
- 響應時間與具體查詢有很大關係
- 用戶數量相對較小,其用戶主要是業務人員與管理人員
- 優於業務問題不固定,數據庫的各種操作不能完全基於索引進行
greenplum屬於OLAP
5.2 PostgreSQL與Greenplum的關係
5.2.1 PostgreSQL
PostgreSQL:是一種非常先進的對象-關係型數據庫管理系統(ORDBMS),是目前功能最強大,特性最豐富和技術最先進的自由軟件數據庫系統之一
特性:
- 函數/存儲過程
- 內置的plpgsql,一種類似oracle的plsql的語言
- 支持的腳本語言有:PL/Lua、PL/LOLCODE、PL/Perl、PL/HP、PL/Python、PL/Ruby、PL/sh、PL/Tcl和PL/Scheme
- 編譯語言有C、C++、JAVA
- 統計語言PL/R
- 索引:支持用戶歹意的索引訪問方法,並且內置B-tree、哈希和GiST索引。特點如下:
- 可以從後向前掃描
- 可以創建表達式索引
- 部分索引
- 觸發器
- 併發管理(MVCC,多版本併發機制)
- 規則(RULE):規則允許我們隊由一個查詢生成的查詢數進行改寫
- 數據類型
- 任意精度的數值類型
- 無線長度的文本類型
- 幾何原語
- IPv4和IPv6類型
- CIDR塊和MAC地址
- 數組
- 自定義類型
- 用戶定義對象:索引、操作符(內部操作符可以被覆蓋)、聚集函數、域、類型轉換、編碼轉換
- 繼承:表可以相互繼承。一個表可以有父表,父表的結構變化會導致子表的結構變化,而對子表的插入和數據更新等也會反映到父表中
- 其他特性與擴展
- 二進制和文本大對象存儲
- 在線備份
- TOAAT(The Oversized-Attribute Storage Technique)用於透明地在獨立的地方保存大的數據庫屬性。當數據超過一定大小的時候,會自動進行壓縮以節省空間
- 正則表達式
- Slony-I
- pgcluster
- Mammoth replicator
- Bucardo
5.2.2 Greenplum
本質上講,greenplum 是一個關係型數據庫集羣,是由數個獨立的數據庫服務組合成的邏輯數據庫。
與oracle RAC的shared-Everything架構不同,greenplum採用Shared-Nothing架構,整個集羣由很多個數據節點(Segment Host)和控制節點(master Host)組成,其中每個數據節點上可以運行多個數據庫。簡單來說,Shared-Nothing是 一個分部式的架構,每個節點相對獨立。在典型的Shared-Nothing中,每一個節點上所有的資源(CPU,內存,磁盤)都是獨立的,每個節點都只有全部數據的一部分,也只能使用本節點的資源
在greenplum中,需要存儲的數據在進入數據庫時,將先進行數據分佈的處理工作,將一個表中的數據平均分佈到每個節點上,併爲每個表指定一個分佈列(distribute Column),之後便根據Hash來分佈數據。基於Shared-Nothing的原則,Greenplum這樣處理可以充分發揮每個節點處I/O的處理能力
5.2.3 並行與併發
併發是兩個任務可以在重疊的時間段內啓動,運行和完成。並行是任務在同一時間運行,例如,在多核處理器上。
併發是獨立執行過程的組合,而並行是同時執行(可能相關的)計算。
併發是一次處理很多事情,並行是同時做很多事情。
應用程序可以是併發的,但不是並行的,這意味着它可以同時處理多個任務,但是沒有兩個任務在同一時刻執行。
應用程序可以是並行的,但不是併發的,這意味着它同時處理多核CPU中的任務的多個子任務。
一個應用程序可以即不是並行的,也不是併發的,這意味着它一次一個地處理所有任務。
應用程序可以即是並行的也是併發的,這意味着它同時在多核CPU中同時處理多個任務。
greenplum是基於低成本的開放平臺基礎上提供強大的並行數據計算性能和海量數據管理能力。這個能力主要指的是並行計算能力,是對大任務、複雜任務的快速高效計算。
六、Greenplum 適用場景
greenplum的主要特點是詢速度快、數據裝載速度快、批量DML處理快、性能可以隨着硬件的添加呈線性增加、擁有非常良好的可擴展性。主要適用於面向分析的應用,如構建企業級ODS/EDW、數據集市等。
greenplum不適用像OLTP數據庫一樣,在極短的時間處理大量的併發小任務,這個並非MPP數據庫所長。再通俗點說,Greenplum主要定位在OLAP領域,利用Greenplum MPP數據庫做大數據計算或分析平臺非常適合,例如:數據倉庫系統、ODS系統、ACRM系統、歷史數據管理系統、電信流量分析系統、移動信令分析系統、SANDBOX自助分析沙箱、數據集市等等。
而MPP數據庫都不擅長做OLTP交易系統,所謂交易系統,就是高頻的交易型小規模數據插入、修改、刪除,每次事務處理的數據量不大,但每秒鐘都會發生幾十次甚至幾百次以上交易型事務 ,這類系統的衡量指標是TPS,適用的系統是OLTP數據庫或類似Gemfire的內存數據庫。
七、Greenplum 部署及測試
請參考博文:https://www.jianshu.com/p/b5c85cadb362。
由於greenplum服務部署平臺爲linux,我沒有在linux平臺上工作過,因此需要他人部署驗證,或等待我大致掌握了linux後再做繼續做系列博文。
未完待續。。。。。
文章摘自:https://www.jianshu.com/p/b5c85cadb362