GreenPlum 淺談
一、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