【DTCC 2022】雲原生資料庫PieCloudDB全新eMPP架構是如何煉成的
12月14-16日,第十三屆中國資料庫技術大會(DTCC 2022)在線上隆重召開。拓數派贊助並參與了資料庫盛會DTCC,在會議中,拓數派CTO 郭罡分享了《雲原生資料庫 PieCloudDB eMPP架構設計與實現》的主題演講。在演講中,郭罡分析了傳統分散式MPP架構的痛點,介紹了雲原生資料庫PieCloudDB的eMPP架構的設計背景與重要功能元件。本文整理自現場演講內容。
相關PPT歡迎訪問拓數派官網連結進行預覽和下載。演講影片歡迎訪問B站連結。
傳統分散式MPP架構痛點
MPP(Massive Parallel Processing,大規模並行處理),一直被譽為當今資料庫的主流架構,被廣泛用於眾多資料庫產品中,包括Greenplum、Teradata、Vertica等。MPP分析型資料庫針對分析工作負載進行了大量優化,以滿足使用者聚合和處理大型資料集的需求。它會將任務並行的分佈到多個伺服器和節點上,並在完成計算後,將結果返回並彙總,從而完成對海量資料的分析處理。
然而,傳統分散式MPP架構存在很多瓶頸,我們將客戶的真實生產場景中遇到的問題進行歸納,總結出5個痛點:
- 缺乏彈性
傳統資料倉庫的計算和儲存是緊密耦合的,計算資源和儲存資源按某一比例強繫結,因此使用者在擴容時,必須同時擴容計算資源和儲存資源,在擴容、運維、遷移上都存在一定的挑戰。當企業遇到負載高峰時刻或需要緊急得到某個報表結果時,傳統資料倉庫無法及時擴資源,導致大資料系統無法彈性、快速的分析業務資料,錯失了充分挖掘資料價值所帶來的商業機會。
- 成本高昂
傳統資料庫價格高昂的軟硬體、開發運維人員的高昂薪資需要企業進行巨大的前期投入。在我們與客戶接觸的過程中,經常發現客戶的生產環境資源利用率,無論是儲存或是計算資源往往不盡人意。隨著儲存和工作負載需求的日益增長,面臨資料庫的擴容和升級時,由於傳統資料庫架構儲存和計算的緊密耦合,往往需要企業花費巨大的運維和時間成本,且操作繁瑣;
- 木桶效應
傳統MPP資料庫架構存在”木桶效應”,資料庫叢集整體執行速度取決於最”短板”節點的效能。因此,一個節點的表現往往會”拖垮”整個叢集的效能,導致查詢速度變慢。 雖然理論上可以針對這一情況進行優化,但往往都是”治標不治本”。隨著時間的推移,業務的增長,企業往往需要在1-2年後對叢集增加計算節點,此時,無論新的計算節點效能如何優異,叢集總體效能都會受制於老的節點。因此真實生產環境中,我們常常見到客戶在需要擴容時,採取重新新建叢集的方式。
- 資料孤島
隨著業務的發展,資料量的增加,和資訊化建設的需求,企業會為不同部門建設相應的業務資訊化系統。我們在很多真實客戶生產環境中,常常看到企業有成百上千個叢集,但這些叢集的元資料往往都是一樣的。這種情況下,很多元資料在不同叢集間會存在不一致的版本資訊。如果企業需要做跨叢集的訪問,往往非常困難,會造成資料孤島的存在。
- 運維成本
對於傳統MPP資料庫,企業往往會需要配備運維人力,且對運維、開發人員要求高,需要相關人員掌握複雜的技術棧,技術的更新迭代迅速,需相關人員保持積極的知識更新。相關人才市場較小,人才匱乏。高昂的學習成本造成使用者使用過程中效能差、故障率高、故障修復時間長等問題;
正是因為傳統分散式MPP架構的這些痛點,我們認為企業急需一款全新的eMPP雲原生資料庫。
雲解決了什麼?
隨著資料量和計算能力的爆發式增長,雲端計算技術的迅猛發展,基礎軟體尤其是資料庫軟體上雲已大勢所趨, 那麼云為資料庫軟體解決了什麼問題呢?
藉助於雲上分散式儲存,資料庫軟體可以實現解耦儲存;通過KVM等虛擬化技術,以及構建之上的IaaS系統,資料庫可以實現計算層的解耦,讓使用者可以做到按需啟動虛擬機器。在儲存和計算解耦後,資源可以完成池化,按需使用。雲端計算讓使用者能夠專注於使用,將運維等工作交給IaaS/SaaS廠商。
上雲≠雲原生
雖然資料庫上雲已經是大勢所趨,但上雲並不等於雲原生。業界經常會對上雲和雲原生兩個概念有所混淆, 我們認為:如果僅僅是將資料庫在雲上進行部署,並不是真正的雲原生。雲原生需要滿足以下幾個條件:
- 計算和儲存彈性:業界經常提到”存算分離”,在實現存算分離後,儲存資源和計算資源都要做到彈性伸縮,按需付費。但這只是實現計算和儲存彈性的第一步,
- 多租戶隔離:雲上儲存資源和計算資源需要做到彼此隔離,保證資料安全。
- 智慧化雲原生平臺:一款雲原生資料庫,除了底層架構,一款雲原生資料庫的使用者操作也需要是”雲原生”的。智慧化視覺化平臺可以簡化使用者的操作,讓使用者得以用雲原生的思維操作資料庫。
為什麼選擇PieCloudDB
基於這樣的設計思路,全新的雲原生資料庫 PieCloudDB Database 誕生了。PieCloudDB是一款全新的eMPP分散式雲原生分析型資料庫,通過重新打造雲上的資料庫核心,突破了PC時代計算平臺的限制,實現雲上存算分離。在雲上,計算資源可按需啟動,對計算模型以更低成本提供儲存和計算資源,幫助企業的業務模型發現新的洞察或提高精準度,從而建立競爭壁壘。
PieCloudDB 重要特點如下:
eMPP
PieCloudDB Database 重新打造了全新的eMPP分散式架構,繼承了傳統MPP架構分散式、海量資料並行處理的優勢,解決了前文提到的MPP傳統架構的痛點。
這裡的”e”是指elastic,彈性。PieCloudDB 做到了計算資源的橫向和縱向的彈性伸縮。這裡的”橫向”是指節點數的增多,而”縱向”是指虛擬機器規格的提升。除了計算資源上的彈性,PieCloudDB 還實現了第三個彈性維度:多叢集。由於使用者資料和元資料都是共享的,使用者資料被儲存在物件儲存上,而元資料被分散式KV儲存管理,PieCloudDB 做到了真正的 ”serverless” 無狀態。
全面的SQL相容度
PieCloudDB 高度相容SQL:2016標準,完全支援SQL:1992標準、大部分的SQL:1999和部分SQL:2003標準(主要支援其中的OLAP 特性),支援包括窗函式、彙總、立方和各種其他表達功能。此外,PieCloudDB 實現了友好的使用者介面,完全支援和認證標準資料庫介面(PostgreSQL、 SQL、ODBC、JDBC 等) 。
雲原生,雲中立
PieCloudDB 實現存算分離,使用者資料被儲存在物件儲存中,支援按需付費。PieCloudDB 實現了雲中立,沒有和任何一款雲平臺繫結,為使用者提供更大的靈活性,可以按使用者需求被部署在行業雲、私有云、公有云、混合雲等雲平臺上。 此外,PieCloudDB 也支援HDFS,NAS等檔案系統。
完備的事務支援
PieCloudDB實現了完備的事務支援,兼具資料倉庫的標準SQL、ACID、和資料湖的大規模異構資料儲存等功能,並具備了RR和RC的隔離級別。
安全可靠
PieCloudDB開發團隊早在設計初期就將資料安全作為重要的設計目標,通過透明加密、視覺化角色與許可權管理、SQL標準和標準資料庫介面的相容等多種安全技術全方位保證資料安全,實現了「Unbreakable」(堅不可破),做到了真正的安全可靠。此外,PieCloudDB 分散式物件儲存多副本多可用區進一步保證資料安全,整個資料庫只有一份資料,有效避免了資料不一致。
PieCloudDB在整個架構設計上充分考慮到了各個節點的高可用,避免單點故障,使用者使用上感覺更可靠。
很快,PieCloudDB 將支援Time Travel(時間溯回)功能,使用者藉助該功能可以查詢”回收站”資料,為使用者的資料安全“添磚加瓦”。
完善的生態
PieCloudDB 原生支援PostgreSQL/Greenplum 生態元件,相容包括 PostGIS、in Database AI 元件 MADlib、JSON、Text 等。PieCloudDB 對各種外表資料來源聯邦查詢元件天然支援,實現了高效能的實時ETL/ELT功能,原生支援Kafka資料匯入和查詢,在PieCloudDB 側匯入實現exactly once 語義。
PieCloudDB也在打造自己的生態體系,通過建立生態工具、建立合作伙伴生態網路、打造活躍的技術和使用者社群等舉措,為使用者帶來更便捷的使用體驗。
PieCloudDB:雲原生資料庫的設計與打造
PieCloudDB的核心架構簡介優雅,從上而下被分為元資料層、彈性計算層和共享儲存層。核心主要元件如下:
元資料管理
PieCloudDB的元資料以key-value的形式被儲存在開源資料庫 FoundationDB 中。FoundationDB是一個開源的 NoSQL 的KV資料庫,PieCloudDB 利用 FoundationDB Key的自然排序實現索引。同時,基於MVCC,PieCloudDB 也實現了RR和RC的事務隔離級別。
PieCloudDB 的多個叢集(虛擬數倉)共享一份元資料,是PieCloudDB 得以實現存算分離的很重要的一個原因。 PieCloudDB 藉助FoundationDB 的KV特性、可序列事務、watcher機制等特性,將除元資料以及將包括鎖、事務等在內的臨時狀態儲存在了 FoundationDB 中。FoundationDB 具有高可用和備份恢復設計,保證了元資料的可靠性和可用性。
為了避免元資料被儲存在遠端會造成 FoundationDB 叢集負擔,避免網路延遲,加速查詢優化, PieCloudDB 以 Postgres 原生的元資料快取概念為基礎,優化重構實現了適用於多叢集架構的元資料層全新的快取階段,有效減少了訪問元資料伺服器帶來的網路通訊開銷和元資料伺服器的負載。有效提高元資料訪問的速度,從而提高了資料庫系統性能。
使用者資料儲存引擎
PieCloudDB 的使用者資料以PAX(行列混存)的資料格式被儲存在物件儲存中。在一個page中,資料按列儲存,從而得以配以高效的壓縮,節省儲存空間。同時,PieCloudDB 以 block 檔案為一個儲存單位。這同時也是一個 MVCC 的單位,即一個 block 對於一個事務的狀態是可見與不可見二選一的,不存在中間狀態。
此外,PieCloudDB database 的儲存中存在大量輔助資訊,可被用於計算優化,在設計之初,我們充分考慮了高效和精準的統計資訊收集、儲存和計算成本、以及包括SIMD,Cache Line,Data Skipping,預聚集等計算優化的實現等多個方面,期望能打造一個優質的使用者資料儲存引擎。
很多使用者可能會對”將資料放在遠端,是否會影響對PieCloudDB的效能”產生疑問。PieCloudDB 在設計之初,充分考慮到了遠端訪問資料效能和成本的平衡。為了解決這一問題,PieCloudDB 做了大量的工作:
- 資料和/或輔助資訊快取,同時一致性Hash減少資料移動。
- 讀取優化:例如並行、非同步等,避免網路延遲對效能造成影響
- 計算優化:PieCloudDB實現了並將持續進行大量計算優化,包括聚集下推、Block Skipping、預計算等
- 複雜的OLAP查詢:如果不是IO瓶頸,並不會受制於資料被儲存在遠端或本地。
計算引擎
PieCloudDB 實現了MPP彈性計算引擎,做到了使用者的按需付費、租戶隔離、高可用、高併發等功能。
此外,PieCloudDB 打造了基於 eMPP 架構的雲原生分散式優化器,為海量資料集上的複雜OLAP查詢提供最優的查詢計劃。在優化器的打造時,PieCloudDB 針對分散式、複雜OLAP、和雲原生場景做了大量的思考和設計,實現了包括多表連線的最優順序、多階段聚集、分割槽表的靜態和動態裁剪、相關子查詢的提升轉換、CTE和遞迴CTE的優化等查詢優化。
此外,PieCloudDB還實現了大量的針對複雜OLAP查詢的高階優化,以聚集下推為例,PieCloudDB通過把聚集操作下推到連線操作之前去執行,從而極大的減少連線操作需要處理的資料量,使得查詢效能顯著提升。在某些場景下,可以得到百倍千倍的效能提升。
以下面兩個表join後聚集運算為例。正常情況下,處理順序是將兩個表做完join後,通過where 條件過濾,在做完 group 分組後再做聚集。但如果這麼處理,兩個表的join做聚集會涉及很大的資料量。通過聚集下推後,聚集被下推至最下面的a表上,此時和b表做join的是已經完成聚集操作的資料,資料量會被大大減少,從而大大提高查詢效能。
SELECT a.i, SUM(a.j) FROM agg_pushdown_t a, agg_pushdown_t b WHERE a.i = b.i GROUP BY 1;
QUERY PLAN
---------------------------------------------------------------------------
Gather Motion 3:1 (slice1; segments: 3)
-> Finalize HashAggregate
Group Key: a.i
-> Redistribute Motion 3:3 (slice2; segments: 3)
Hash Key: a.i
-> Hash Join
Hash Cond: (b.i = a.i)
-> Seq Scan on agg_pushdown_t b
-> Hash
-> Broadcast Motion 3:3 (slice3; segments: 3)
-> Partial HashAggregate
Group Key: a.i
-> Seq Scan on agg_pushdown_t a
PieCloudDB團隊正在不斷迭代產品,更多高階計算功能將很快與使用者見面:
- Block Skipping
PieCloudDB 將在下一版本中實現 Block Skipping 的優化機制,在資料庫執行查詢語句時,通過預計算每個塊(block)中列聚集資訊,在執行期間跳過非必要的資料塊,減少資料讀取量提高查詢效能。
- 預計算
PieCloudDB 將很快支援預計算功能。在查詢的過程中,PieCloudDB 可以根據企業查詢的特點預先計算一些重要的查詢結果,從而避免在查詢過程中的計算,提高查詢效率。
更多計算引擎的工作也正在研發中,包括SIMD,runtime filter,late materization等,相信會給使用者帶來更多驚喜。
智慧化雲原生平臺
作為一款雲原生資料庫,PieCloudDB在設計智慧化雲原生平臺之初,就希望這款資料服務平臺可以提供雲原生的使用體驗,降低使用者、運維和管理的使用門檻。
面向使用者,PieCloudDB 雲原生平臺通過簡介清晰的UI,清晰的功能引導和明確的資訊組織分層,為使用者提供了豐富的資料洞察能力,做到了開箱即用,讓使用者離資料分析更近,離繁瑣的操作更遠。
面向運維,PieCloudDB 雲原生平臺全面擁抱容器化技術,可以適配多種環境。已支援私有信創環境和多雲環境,既實現私有環境離線部署,也可充分利用公有云技術設施。可以降低了部署門檻,做到資料庫維護平臺託管,讓PieCloudDB 在不同的基礎設施都能發揮實力。
面向管理,PieCloudDB 雲原生平臺支援快速啟動叢集,隨時可以關停,隨時可以回收,結合叢集操作記錄,使用者可以用最低的成本完成資料分析。通過視覺化介面讓管理更輕鬆,讓資料分析執行更透明。
PieCloudDB 團隊正在不斷迭代產品,自10月24日推出社群版和企業版後,很快將推出新的版本,希望能讓使用者專注於應用,打造可靠、高效、簡單、完備的SQL資料平臺。
- 資料科學在文字分析中的應用 :中英文 NLP(上)
- 『堅如磐石的 PieCloudDB』:透明加密模組的設計與實現
- 後疫情時代,資料科學賦能旅遊行業服務質量提升
- OpenPie 和 ChatGPT 聊聊雲上資料計算的那些事兒
- 正式上市丨拓數派發布eMPP存算分離軟硬體一體機
- 『Postgres.Live 技術沙龍回顧』揭祕 PieCloudDB Database eMPP 架構設計
- PieCloudDB Database 雲上商業智慧的最佳實踐
- 資料科學在量化金融中的應用:指數預測(下)
- 資料科學在量化金融中的應用:指數預測(上)
- 【DTCC 2022】雲原生資料庫PieCloudDB全新eMPP架構是如何煉成的
- 資料科學,為企業創造更大的資料價值
- 擁抱開放|OpenPie引領PostgreSQL中國程式碼貢獻力