MPP 資料庫

mcxiaoracle發表於2022-06-14

大規模並行分析(MPP)資料庫(Analytical Massively Parallel Processing (MPP) Databases)是針對分析工作負載進行了最佳化的資料庫:聚合和處理大型 資料集。MPP資料庫往往是列式的,因此MPP資料庫通常將每一列儲存為一個物件,而不是將表中的每一行儲存為一個物件( 事務資料庫的功能)。這種 體系結構使複雜的分析查詢可以更快,更有效地處理。

這些分析資料庫將其資料集分佈在許多機器或節點上,以處理大量資料(因此得名)。這些節點都包含自己的儲存和計算功能,從而使每個節點都可以執行查詢的一部分

典型的分析工作量

MPP資料庫非常擅長最常見的分析工作負載,這些工作負載通常以對子集的查詢為特徵,並在廣泛的行範圍內進行彙總。這是由於它們的列式體系結構允許他們僅訪問完成查詢所需的欄位(與事務性資料庫相反,事務性資料庫必須連續訪問所有欄位)。

列式體系結構還為MPP資料庫提供了對分析工作負載有用的其他功能。這些功能因資料庫而異,但通常包括壓縮類似資料值,有效索引非常大的表以及處理寬的非規範化表的功能

線性可伸縮性

透過向系統新增更多伺服器,分析MPP資料庫可以輕鬆地線性擴充套件其計算和儲存功能。這與垂直擴充套件計算和儲存功能相反,後者涉及升級到更大,功能更強大的單個伺服器,並且通常會在規模上遇到障礙。分析型MPP資料庫能夠如此快速,輕鬆和高效地進行橫向擴充套件,以使 按需資料庫供應商能夠根據查詢的大小自動執行該過程來按比例放大或縮小系統

MPP分析架構

大規模並行處理一詞指的是裝入這些資料庫的表分佈在群集中的每個節點上的事實,以及發出查詢時每個節點同時工作以處理駐留在其上的資料的事實。

分散式架構

分析性MPP資料庫旨在在許多單獨的伺服器或節點上並行執行查詢。這意味著,透過將更多節點新增到群集,可以將相同的工作負載分配給更多伺服器並更快地完成。

儘管分析型MPP資料庫有時可以在某些方面進行擴充套件,但它們的最大優點是透過向系統中新增更多節點,可以相對輕鬆地水平擴充套件資料庫系統。

大規模並行處理(MPP)

儘管不同的系統採用不同的方法來耦合資料儲存和計算查詢,採用不同的策略將資料從一個節點移動到另一個節點,但是所有MPP系統都非常快,因為“領導者”可以制定查詢計劃,然後分配資料的實際工作量。對許多工作人員執行查詢。

批次載入/延遲

通常,由於分析MPP資料庫的構建方式,您想要資料越接近“實時”,資料工程任務就越具有挑戰性。這是因為這些技術通常針對批次載入進行了最佳化。針對整個叢集中的分散式讀取最佳化資料儲存是一項勞動密集型任務。一些分散式MPP資料庫專門提供混合儲存或其他服務來解決此問題。許多組織維護其 事務資料庫的副本只是為了能夠實時訪問資料集的這一部分


OLTP(OnLine Transaction  Processing  ,聯機事務處理)系統
例如mysql。擅長事務處理,在資料操作中保持著很強的一致性和原子性 ,能夠很好的支援頻繁的資料插入和修改 ,但是,一旦資料量過大,OLTP便力不從心了。


OLAP(On-Line Analytical Processing,聯機分析處理)系統
例如Greenplum。不特別關心對資料進行輸入、修改等事務性處理,而是關心對已有 的大量資料進行多維度的、複雜的分析的一類資料系統 



1 海量資料的分析需求

傳統資料庫無法支援大規模叢集與PB級別資料量

單臺機器效能受限、成本高昂,擴充套件性受限

2 支援複雜的結構化查詢(這裡是重點)

複雜查詢經常使用多表聯結、全表掃描等,牽涉的資料量往往十分龐大;支援複雜sql查詢和支援大資料規模;

Hadoop技術的先天不足

Hive等sql-on-hadoop效能太慢,分析場景不一樣,SQL相容性與支援不足

大資料分析:MPP資料庫做大資料計算或分析平臺非常適合,例如: 資料倉儲系統、歷史資料管理系統、資料集市等。

有很強的並行資料計算能力和海量資料儲存能力,但是他不擅長高頻的小規模資料插入、修改、刪除,每次事務處理的資料量不大。這類資料衡量指標是TPS,適用的系統是OLTP資料庫。

所以,報表統計分析、運維統計資料,快速生成報表展示都可以使用mpp資料庫。
符合幾個條件:不需要更新資料,不需要頻繁重複離線計算,不需要併發大。

有上百億以上離線資料,不更新,結構化,需要各種複雜分析的sql語句,那就可以選擇他。幾秒、幾十秒立即返回你想要的分析結果。例如sum,count,group by,order,好幾層查詢巢狀,在幾百億資料裡分分鐘出結果



MPPDB架構


MPP 採用完全並行的MPP + Shared Nothing 的分散式扁平架構,這種架構中的每一個節點(node)都是獨立的、自給的、節點之間對等,而且整個系統中不存在單點瓶頸,具有非常強的擴充套件性。


MPP資料庫有對SQL的完整相容和一些事務的處理能力,對於使用者來說,在實際的使用場景中,如果資料擴充套件需求不是特別大,需要的處理節點不多,資料都是結構化的資料,習慣使用傳統的RDBMS的很多特性的場景,可以考慮MPP,例如Greenplum/Gbase等。



MPPDB與Hadoop都是將運算分佈到節點中獨立運算後進行結果合併(分散式計算),但由於依據的理論和採用的技術路線不同而有各自的優缺點和適用範圍。兩種技術以及傳統資料庫技術的對比如下:


Hadoop在處理非結構化和半結構化資料上具備優勢,尤其適合海量資料批處理等應用要求。
MPP適合替代現有關係資料機構下的大資料處理,具有較高的效率。
MPP適合多維度資料自助分析、資料集市等;Hadoop適合海量資料儲存查詢、批次資料ETL、非機構化資料分析(日誌分析、文字分析)等


資料開發:


小表選擇Replication方式(例如表大小為5MB),會在每一個DataNode上儲存一份全量表資料

大表選擇Hash方式,會根據hash值把資料對映到對應的DataNode上

使用Hash分表策略時,需要選擇合理的分佈列(即欄位),選擇的列要具有隨機性,以保證資料均勻的分佈到各個DataNode上。檢查資料是否分佈均勻的SQL如下



來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/69949806/viewspace-2900590/,如需轉載,請註明出處,否則將追究法律責任。

相關文章