『Postgres.Live 技術沙龍回顧』揭祕 PieCloudDB Database eMPP 架構設計
2月1日,拓數派參與了由開源軟體聯盟PostgreSQL分會組織的 Postgres.Live 線上系列沙龍活動。拓數派產品及推廣總監吳疆發表主題演講《PieCloudDB:基於 PostgreSQL 的 eMPP 雲原生資料庫》。相關視訊回放歡迎訪問拓數派B站連結,PPT歡迎前往官網連結獲取。本文由演講內容整理而成。
隨著計算機技術的發展,”雲端計算”、”雲平臺”、”雲技術”已經成為行業裡的熱詞。無論是業務系統或是基礎架構都在往”上雲”的道路前進。大家如此熱衷於雲的最主要原因,正是由於雲端計算實現了IT系統從購買到租賃的轉變。也就是說使用者不再需要購買 IT 系統,而是可以選擇採用租賃的方式,按使用量或區域來進行付費,更加靈活和節約成本。
為了滿足這一需求,雲平臺技術實現的一個主要功能是儲存和計算的解耦。雲平臺可以提供分散式儲存或物件儲存,來實現了儲存的解耦。藉助於雲上虛擬化技術或由該技術實現的IaaS,可以實現計算的解耦。通過計算與儲存的解耦合,得以實現資源的池化。使用者從而可以通過租用的方式來使用池中的資源,按使用量進行付費。雲平臺讓使用者可以專注於使用,將運維、升級等工作交給 IaaS/SaaS 等雲廠商。
上雲和雲原生的區別是什麼?
雖然”上雲” 作為口號已經被喊了很多年。但直到近年,才出現”雲原生”的概念。那麼,”上雲” 和 “雲原生“ 的區別是什麼?
在最早的單機軟體系統年代,系統被部署在一臺伺服器上,隨著業務的發展,這臺伺服器將無法滿足業務的需求。此時,企業會買一臺更好的伺服器,配上更多的 CPU,更大的記憶體,更快的儲存和更快的網路。
然而,隨著網際網路技術的發展,這種擴容方式無法滿足業務需求。於是, ”Scale-Out” 的概念被提出,即使用多臺伺服器組成一個叢集,來滿足日益增長的業務需求。這種方式下,儲存資源和計算資源是緊密耦合的。當擴充計算資源時,也需要擴充儲存資源。這樣的系統的彈性較弱,只能 Scale Out,卻無法 Scale In。當業務量下降時,無法及時釋放資源。
雲平臺誕生後,實現了計算和儲存的解耦合,可根據需求動態的擴充或縮容計算和儲存資源,做到真正的彈性。因此,彈性計算是雲原生的一個基本特徵。
另一個特徵是多租戶,隨著雲原生平臺讓使用者完成了購買到租賃的轉換,雲平臺也需要實現可以滿足多個租戶同時租用平臺,且按使用量付費的架構。此外,雲平臺也需要提供智慧化運維繫統,讓使用者能夠更加方便的運維業務系統,減少運維負擔。
因此,如果要做到真正的”雲原生”,需要讓應用充分利用雲平臺的特徵。與雲原生相對的一個概念是”上雲”。業務系統雖然被部署到雲平臺上,但本質上,其部署結構和被部署到資料中心的方式是一樣的,使用者無法享受雲平臺提供的這些優勢。因此,系統上雲並不等於雲原生。
作為一款基礎軟體,資料庫的誕生是在雲平臺之前。因此,目前業界的大部分資料庫都是非雲原生的。傳統的分散式MPP架構存在一系列痛點,包括缺乏彈性(業務使用不靈活)、成本高昂(根據系統的最大負載配置叢集,叢集固定,資源利用率低)、木桶效應(資料庫的效能由最短板的伺服器決定,擴容難)、資料孤島(多個叢集承擔著不同的業務,元資料和使用者資料跨叢集訪問困難)和運維成本(DBA需同時管理多個叢集,運維成本高昂)。因此使用者急需一款雲原生架構的資料庫,來解決這些痛點。
PieCloudDB 的設計理念是什麼?
PieCloudDB Database 是一款雲原生eMPP架構的分散式資料庫。在設計這款資料庫時,我們遵循了幾個理念:
- 打造真正的雲原生資料庫:PieCloudDB 要打造成為包括多租戶、彈性計算、雲原生運維平臺基本特點的實時的資料庫;
- eMPP架構的實現:MPP,即大規模平行計算處理。藉助MPP架構,PieCloudDB 可以實現海量資料的並行處理能力。前面的 “e” 是指 ”elastic”,彈性。PieCloudDB 要實現一個彈性的 MPP 架構,即可以橫向和縱向靈活擴、縮容,及時滿足使用者的業務需求;並能夠在不同的叢集之間做到使用者資料和元資料的共享。
- 安全可靠:對於資料庫,特別是一款雲上資料庫而言,資料安全是至關重要的,PieCloudDB需要能夠保證使用者的資料不丟失、不洩露、不被沒有授權的人非法看到。
- 使用簡單:PieCloudDB 要減少使用者使用資料庫的成本,提供智慧的運維平臺,降低使用門檻。
- 功能齊全:PieCloudDB 需要具備完備的資料庫功能,能夠支撐大部分的業務應用場景;提供包括完備的事務支援、完善的SQL標準、友好的使用者介面、生態元件的相容等功能;
- 效能極致:資料庫作為一款基礎軟體,效能是最關鍵的要素之一。PieCloudDB 需要做到能夠為使用者的業務場景提供一個安全可靠、效能優越的底座。
PieCloudDB 的架構有什麼特點?
在上述設計理念的基礎上,PieCloudDB 的系統架構被分為三個層次。其中最底層的是雲平臺。雲平臺可以是私有云、公有云、也可以是混合雲、行業雲、專有云。PieCloudDB 在系統設計過程中,充分考慮了多雲的方案,做到了雲中立。最上層,是搭建在 PieCloudDB 之上的使用者的業務平臺,可以支援多個租戶的使用場景,因此企業的生產部、銷售部、財務部等部門可以作為不同的租戶接入到 PieCloudDB 中。
中間層的 PieCloudDB 本身的架構也被分為了三個層次,最上面是元資料層;中間是計算層,其中每一個虛擬數倉作為最小的計算單元,為使用者提供實時資料分析的服務。底層是共享儲存層, 提供了使用者資料的儲存。
PieCloudDB 核心架構特點主要包括四個部分:元資料服務、eMPP分散式引擎、使用者資料儲存和查詢優化器。
元資料服務
元資料即 catelog 資料。PieCloudDB 實現了多租戶,即多個租戶可以同時使用 PieCloudDB 平臺,同時可以建立多個虛擬數倉來進行資料分析業務。此時,元資料就不能和使用者資料耦合在一起。因此,PieCloudDB 實現了元資料和計算資源以及儲存資源的分離,被稱為元資料服務。
PieCloudDB 在進行元資料服務的設計時考慮到了四個因素:
- 高可用和多叢集的支援。為了提高效能的可用性,需要提供Multi-master,即當出現一個節點失效時,系統仍然可以提供對外的服務。
- 實現多節點共同訪問的資料儲存
- 實現分散式鎖
- 事務上,實現多機併發訪問和分散式環境下的多版本(MVCC)
在元資料服務的實現上,PieCloudDB 將系統中的元資料的元組以 key-value 的形式儲存到蘋果公司開發並開源的 FoundationDB,打造了 mStore(meta data store)。元資料實現了基於 MVCC 的事務隔離級別,並使用FoundataionDB Key的自然排序實現了索引。PieCloudDB 實現了全新的基於Key-value的儲存方式來存放系統表,將元資料儲存在系統表中,因此使用者看到的元資料實際上是一個個系統表。
eMPP 分散式引擎
PieCloudDB 的 eMPP 分散式引擎除了具有高效能平行計算功能,還添加了計算資源的動態擴縮容特性。具體可以被分為三個層面:
- 計算
PieCloudDB 分散式引擎首先是一個 MPP 引擎, 可以將單一的資料分析在叢集中並行處理。與傳統的MPP 引擎不同的是,PieCloudDB 做到了真正的彈性,可以進行叢集大小、叢集型別、叢集數量的彈性伸縮。同時,PieCloudDB 支援多租戶,多使用者、多叢集,系統中同時可能存在多個計算叢集在執行,因此保證不同租戶和叢集實現隔離性是至關重要的,不同租戶和叢集不會互相影響,避免使用者量的上升導致系統性能的下降,保證了高併發和高可用性。在叢集不需要使用的情況下,可以將叢集暫停,幫助使用者節約成本。
- 儲存
PieCloudDB在設計分散式引擎時,還需要考慮到使用者資料的儲存。使用者資料儲存的設計上,PieCloudDB 考慮到了多租戶的隔離,計算引擎在讀取使用者資料時,要根據容量和頻寬對儲存的訪問進行獨立的伸縮。PieCloudDB 的儲存服務也需要保證按使用量付費,做到高可用,支援跨多資料中心複製資料。PieCloudDB 也需要保證資料的一致性,在全域性儲存一份資料,通過共享儲存來實現資料共享,避免拷貝和維護多份資料副本。
- 事務
事務上,PieCloudDB 分散式引擎需要支援包括:
- ACID:支援兩種隔離級別(Read Committed 和 Repeatable Read)
- 擴充套件性:事務管理器無單點效能瓶頸,隨著計算節點的增加,系統處理的效能會有近似於線性的提升
- 隔離性:不同租戶之間的事務管理器是完全隔離的,避免租戶之間的互相影響。當一個租戶在進行某個非常耗效能的查詢時,也不會影響到其他租戶的效能。
- 容錯性:當基礎設施出現例如CPU、記憶體、網路等故障時,系統需要做到自動容錯,不會出現系統不可用的情況。
使用者資料儲存
在設計儲存引擎時,PieCloudDB 充分考慮到了雲平臺的特點。這裡提到的雲平臺,不僅僅是公有云平臺,還包括私有云、混合雲、專有云、容器雲等。PieCloudDB 儲存引擎的設計還充分考慮到對物件儲存的支援,HDFS、本地磁碟等多種儲存環境的相容,以及對不斷髮展的現代的硬體和儲存技術(包括CPU/GPU的快取記憶體的訪問、資料的區域性性優化(SIMD)等)的支援等。
基於這些考慮,PieCloudDB 的儲存引擎的設計包括以下幾點目標:
- 資料分佈的彈性
PieCloudDB 的計算引擎是 eMPP 架構的,儲存引擎也需要能夠滿足計算引擎的動態的擴容與縮容。使用者資料以分散式的方式被儲存在各個不同的儲存單元中,針對不同的雲平臺,儲存單元也略有不同。為了提高查詢的效率,從儲存資源讀取資料時需要避免雲端儲存訪問的延時,PieCloudDB的計算資源需要對雲端儲存的資料進行快取,快取一部分的本地資料來提高系統查詢的速度。
在設計本地資料的快取時,當進行擴縮容時,需要儘量避免資料移動。例如當計算節點從 4 個擴到 8 個,需要對資料進行再平衡,此時需要儘可能減少在節點間進行大量的資料傳輸。
- 資料安全性
為了保證資料的安全性,PieCloudDB 通過透明資料加密技術,利用三級金鑰來對資料進行實時的加解密。PieCloudDB 的儲存引擎實現了行列混存的儲存形式。如此設計主要考慮到兩個方面:
- 使用者的儲存成本
使用者在雲平臺上儲存大量的資料,會造成儲存成本。PieCloudDB 自動選取適用型別的編碼,提高壓縮效率,減少物件儲存的訪問開銷。
- OLAP 效能
為了避免查詢效能的影響,PieCloudDB不僅設計了行列混存的儲存引擎,還設計了多級快取,包括重新定義了資料在記憶體和儲存中的儲存格式,避免資料從記憶體到外存,或從外存到記憶體讀取資料時進行資料的轉換。很多資料庫都實現了 Analyze 命令,用來收集系統中的統計資訊。PieCloudDB 在儲存資料時,在檔案級別,進行了資料的統計分析。PieCloudDB 智慧Analyze可以更好的收集統計資訊,幫助查詢優化器生成更好的查詢計劃。
查詢優化
作為一款基礎軟體,資料庫在實現分散式化後,查詢優化的難度成指數級上升。PieCloudDB 的查詢優化器對於雲原生環境進行了大量的創新,可以為海量資料集上的複雜 OLAP 查詢在有限的時間內提供最優的查詢計劃。PieCloudDB的查詢優化器主要有三個特點:
- 一款分散式優化器
作為一個分散式系統,PieCloudDB 查詢優化器充分考慮到了分散式架構的特點,在計算和收集節點間執行時間的基礎上進行優化,生成的查詢計劃可以在計算節點間並行執行。分散式查詢優化器可以將執行計劃分佈到多個更小的計劃單元中,提高查詢效率。
- 能夠處理複雜OLAP查詢
作為一款分析型資料庫,PieCloudDB 針對複雜OLAP查詢進行了多種查詢優化。實現了包括OLAP查詢中最困難的多表連線的最優順序查詢、針對分析型查詢中常見的聚集函式的多階段聚集優化、利用分割槽規則進行分割槽表的靜態和動態裁剪優化、針對低效的子查詢的提升轉換優化、讓分散式下的CTE語句可以高效執行的CTE和遞迴CTE的優化。
- 一款雲原生優化器
PieCloudDB 針對雲環境的特徵,PieCloudDB 提供了更多高階的優化。包括通過將聚集函式儘量推到查詢計劃最下層減少執行器處理資料量的聚集下推、以及以及可以在查詢時自動跳過一些不需要訪問的block來提高查詢效能的檔案查詢裁剪 (block skipping)等。
PieCloudDB 2.1 新版本有哪些新特性?
PieCloudDB 將釋出2.1全新版本,新版本主要進行了三個方面的增強:
安全性增強
資料庫上雲後,資料的安全性是使用者最關心的話題之一。PieCloudDB 在2.1版本中將進行大量的資料安全性增強。
通過三級金鑰加密技術,加密使用者資料,避免被未經許可的人員讀取。使用者可以通過KMS等金鑰管理系統生成主金鑰。PieCloudDB 會根據主金鑰生成租戶金鑰,再根據租戶金鑰生成表金鑰。表金鑰被用來加密表資料。當資料被寫入資料檔案中時,PieCloudDB 會針對每個資料頁面生成頁金鑰,從而保證資料儲存做到了完全的加密。在進行資料查詢時,PieCloudDB 會使用不同的金鑰對資料進行解密。透明加密做到了使用者無感知,不會影響到使用者業務,加解密對效能影響小。加密技術和流程合規,符合資料安全和業務的審計要求。
此外,在雲原生安全方面,PieCloudDB 在傳輸層和快取資料都進行了加密。在元資料的持久化儲存以及使用者資料的多副本加密儲存上,PieCloudDB 都進行了加強。在計算安全方面,當出現叢集失效時,不會影響使用者資料,避免使用者資料的丟失,無洩漏,同時也保證了事務的完整性。
全鏈路優化
PieCloudDB 通過全新的儲存引擎簡墨(JANM)實現了全鏈路優化。簡墨的名稱起源於”竹簡墨書”,形象的描述了PieCloudDB儲存引擎行列混存的架構。列儲存實現了更好的壓縮比,而行儲存保證了每一列的資料不會太大,從而可以將很多資料載入至記憶體中,從而提高Cache命中率,降低CPU使用率。新的版本中,JAMN 實現了智慧 Analyze,可生成更為精確的查詢規劃統計資訊,查詢時可以生成更優的查詢計劃,完成了分散式處理的增強以及動態分配讀取檔案增強 Dispatch 功能
除了儲存引擎簡墨(JANM)的重新設計,PieCloudDB 的分散式引擎和查詢優化器也做了大量的優化,實現和提升了前文提到的聚集下推、檔案查詢裁剪(Block Skipping) 的優化效能。
生態建設
PieCloudDB 的 2.1 版本加大了生態建設,增加了對更多雲平臺的支援,實現了 FDW(Foreign Data Wrapper),使使用者可以訪問包括但不限於HDFS、MySQL等資料來源,同時支援使用者自行開發模組來訪問新的儲存資料來源。支援了Kafka 流式資料的匯入。併兼容了眾多生態元件,包括開源Apache Madlib,PostGIS等。
關於2.1版本的更多特性,很快將在PieCloudDB官網上進行揭祕,歡迎大家的關注。也歡迎大家前往 www.openpie.com/product 申請試用。
- 資料科學在文字分析中的應用 :中英文 NLP(上)
- 『堅如磐石的 PieCloudDB』:透明加密模組的設計與實現
- 後疫情時代,資料科學賦能旅遊行業服務質量提升
- OpenPie 和 ChatGPT 聊聊雲上資料計算的那些事兒
- 正式上市丨拓數派發布eMPP存算分離軟硬體一體機
- 『Postgres.Live 技術沙龍回顧』揭祕 PieCloudDB Database eMPP 架構設計
- PieCloudDB Database 雲上商業智慧的最佳實踐
- 資料科學在量化金融中的應用:指數預測(下)
- 資料科學在量化金融中的應用:指數預測(上)
- 【DTCC 2022】雲原生資料庫PieCloudDB全新eMPP架構是如何煉成的
- 資料科學,為企業創造更大的資料價值
- 擁抱開放|OpenPie引領PostgreSQL中國程式碼貢獻力