一,GreenPlum
01,介紹:
Greenplum是一種基於PostgreSQL的分布式數據庫,其采用shared-nothing架構,主機、操作系統、內存、存儲都是自我控制的,不存在共享。
官方文檔:>>>--大概內容如下
- Greenplum Database是一個大規模並行處理(MPP)數據庫服務器,其架構專門用於管理大規模分析數據倉庫和商業智能工作負載。
- MPP(也稱為無共享架構)是指具有兩個或更多處理器的系統,它們協作執行操作,每個處理器具有其自己的存儲器,操作系統和磁盤。Greenplum使用這種高性能系統架構來分配多TB數據倉庫的負載,並且可以並行使用所有系統資源來處理查詢。
- Greenplum數據庫基於PostgreSQL開源技術。它本質上是幾個PostgreSQL面向磁盤的數據庫實例,它們共同作為一個有凝聚力的數據庫管理系統(DBMS)。它基於PostgreSQL 8.3.23,在大多數情況下與PostgreSQL在SQL支持,功能,配置選項和最終用戶功能方面非常相似。數據庫用戶與Greenplum數據庫交互,就像使用常規PostgreSQL DBMS一樣。
-
Greenplum采用Postgresl作為底層引擎,良好的兼容了Postgresql的功能,Postgresql中的功能模塊和接口基本上99%都可以在Greenplum上使用,例如odbc、jdbc、oledb、perldbi、python psycopg2等,所以Greenplum與第三方工具、BI報表集成的時候非常容易;當然它也提供了一些Postgresql不存在的高級功能:
-
外部表並行數據加載
-
可更新數據壓縮表
-
行、列混合存儲
-
數據表多級分區
-
Bitmap索引
-
Hadoop外部表
-
Gptext全文檢索
-
並行查詢計划優化器和Orca優化器
-
Primary/Mirror鏡像保護機制
-
資源隊列管理
-
WEB/Brower監控
Greenplum最大的特點總結就一句話:基於低成本的開放平台基礎上提供強大的並行數據計算性能和海量數據管理能力。這個能力主要指的是並行計算能力,是對大任務、復雜任務的快速高效計算,但如果你指望MPP並行數據庫能夠像OLTP數據庫一樣,在極短的時間處理大量的並發小任務,這個並非MPP數據庫所長。請牢記,並行和並發是兩個完全不同的概念,MPP數據庫是為了解決大問題而設計的並行計算技術,而不是大量的小問題的高並發請求。
再通俗點說,Greenplum主要定位在OLAP領域,利用Greenplum MPP數據庫做大數據計算或分析平台非常適合,例如:數據倉庫系統、ODS系統、ACRM系統、歷史數據管理系統、電信流量分析系統、移動信令分析系統、SANDBOX自助分析沙箱、數據集市等等。
而MPP數據庫都不擅長做OLTP交易系統,所謂交易系統,就是高頻的交易型小規模數據插入、修改、刪除,每次事務處理的數據量不大,但每秒鍾都會發生幾十次甚至幾百次以上交易型事務 ,這類系統的衡量指標是TPS,適用的系統是OLTP數據庫或類似Gemfire的內存數據庫。
Greenplum主要由Master節點、Segment節點、interconnect三大部分組成。Greenplum master是Greenplum數據庫系統的入口,接受客戶端連接及提交的SQL語句,將工作負載分發給其它數據庫實例(segment實例),由它們存儲和處理數據。Greenplum interconnect負責不同PostgreSQL實例之間的通信。Greenplum segment是獨立的PostgreSQL數據庫,每個segment存儲一部分數據。大部分查詢處理都由segment完成。
-
二, 三大節點
01,master 節點
🍖:
master節點是外邊用戶訪問greenplum的入口。用戶並不與segment節點發生任何關系,外部用戶的網絡只需要與master服務器聯通即可。
🍗:
master數據庫也是一個被改造過的PostgreSQL數據庫,它包含了整個分布式數據庫中的所有元數據,如表結構定義、索引、數據分布信息等等。但其並不存儲實際的數據,實際的數據是存儲在segment數據庫的。
🥩:
master節點接受用戶發過來的sql命令,然后解析生成分布式的執行計划,再把執行計划下發到對應的segment節點進行執行。segment節點執行完成后的結果會發送到master上,master接收到segment的結果進行匯總並返回執行結果給用戶。所以在這種master-slave結構中,master不會成為系統的瓶頸。
02,segment節點
🍠.
Greenplum的每個segment節點可以運行多個segment instance,每個instance可以綁定到一個網卡,這樣可以發揮CPU和網絡性能。
🥟.
系統的數據都分布式的存儲在segment上。
🥠.
每個segment同時執行master分發的任務,在執行查詢任務或者數據加載的時候可能會涉及數據的移動。在進行數據移動的時候master不參與進來,只是在segment之間進行。
🥡.
segment可以動態擴展,既可以在原有主機上進行增加segment instance的操作,又可以新增主機來增加segment。當擴展segment后,系統里面的數據會進行重分布操作,這個動作消耗時間會比較多。
03,interconnect:
Greenplum interconnect負責不同PostgreSQL實例之間的通信。
三,術語
Shared Everthting:
一般是針對單個主機,完全透明共享CPU/MEMORY/IO,並行處理能力差,典型的代表SQLServer。 shared-everything架構優點很明顯,但是網絡,硬盤很容易就會成為系統瓶頸。
Shared Disk:
各個處理單元使用自己的私有 CPU和Memory,共享磁盤系統。典型的代表Oracle Rac, 它是數據共享,可通過增加節點來提高並行處理的能力,擴展能力較好。其類似於SMP(對稱多處理)模式,但是當存儲器接口達到飽和的時候,增加節點並不能獲得更高的性能 。
Shared Nothing:
各個處理單元都有自己私有的CPU/內存/硬盤等,不存在共享資源,各處理單元之間通過協議通信,並行處理和擴展能力更好。各節點相互獨立,各自處理自己的數據,處理后的結果可能向上層匯總或在節點間流轉。Share-Nothing架構在擴展性和成本上都具有明顯優勢。
MPP:
大規模並行處理系統是由許多松耦合處理單元組成的,借助MPP這種高性能的系統架構,Greenplum可以將TB級的數據倉庫負載分解,並使用所有的系統資源並行處理單個查詢。
MVCC:
與事務型數據庫系統通過鎖機制來控制並發訪問的機制不同, GPDB使用多版本控制(Multiversion Concurrency Control/MVCC)保證數據一致性。 這意味着在查詢數據庫時,每個事務看到的只是數據的快照,其確保當前的事務不會看到其他事務在相同記錄上的修改。據此為數據庫的每個事務提供事務隔離。 MVCC以避免給數據庫事務顯式鎖定的方式,最大化減少鎖爭用以確保多用戶環境下的性能。在並發控制方面,使用MVCC而不是使用鎖機制的最大優勢是, MVCC對查詢(讀)的鎖與寫的鎖不存在沖突,並且讀與寫之間從不互相阻塞。
四,高可用特性
🍱:
greenplum的高可用性是通過master和segment的鏡像來實現的,鏡像是基於服務器級別的,所以能提供比較好的安全保證。
🍘
master節點不能和segment節點安裝在同一個主機上,standby節點可以和segment節點復用。
🍙
master宕機的話,standby master不會自動切換到master,需要手動切換到主設備。segment如果一個環節壞掉,系統可以自動將mirror切換到primary。
🍪
當segment中某台設備出現故障后,mirror會切換成primary。檢查出故障的主機恢復后可以使用gprecoverseg命令恢復成之前的主備關系
🎂
segment包括以下兩種mirror模式:
☕: grouped mirror模式
在這種模式下,主機的mirror節點全部放在下一個主機上,當一台機器掛掉,那么擁有該機器mirror的主機負載加重一倍
🎭:spread mirror模式
該模式下,mirror節點分散在后面主機上,但要求部署的物理機數量要至少多於運行在每個節點上的instance一個。
五,Greenplum特點
☮ 標准SQL接口,比MapReduce接入更方便 ;
☪ 完整的分布式事務能力,確保強數據一致性 ;
🕉 近乎線性的在線擴展能力 ;
☸ 高並發數據加載技術 ;
✡ 高靈活的行、列以及混合存儲及壓縮技術 ;
⚛ 高可用技術方案 ;
☯ 支持多方式的授權管理及審計,表級別粒度;
☦ 豐富的生態系統,便捷對接hadoop等。
鏈接文章:>>