GaussDB(for MySQL)雲原生資料庫技術演進和挑戰

NineData發表於2023-05-18

演講內容

摘要:GaussDB(for MySQL)是華為自研雲原生資料庫,具有高效能,高擴充套件,高可靠的特點,完全相容MySQL協議,自研架構和友好的生態相容性,可以同時滿足資料庫管理員、應用開發者、CTO的運維、使用和業務發展需求, 本次主要介紹GaussDB(for MySQL)在雲原生技術方向上遇到的挑戰和未來的發展演進路徑。

在2023雲資料庫技術沙龍 “MySQL x ClickHouse” 專場上,華為雲資料庫高 級產品經理周家恩,為大家分享一下《GaussDB(for MySQL)雲原生資料庫技術演進和挑戰》的一些技術內容。


分享嘉賓

周家恩,華為雲資料庫高 級產品經理,10年以上資料庫技術運維,產品管理經驗,先後在多家TOP雲廠商任職產品經理,熟悉MySQL,SQL Server等多款資料庫管理,維護以及商業運營工作,現任華為雲資料庫高 級產品經理,負責原生資料庫GaussDB(for MySQL)產品管理和設計,運營工作。

本文內容根據演講錄音以及PPT整理而成。

GaussDB(for MySQL)雲原生技術的演進和挑戰

大家好,先讓我自我介紹一下。目前我在華雲資料庫團隊擔任資料庫產品經理,主要負責MySQL領域的產品規劃。今天我帶來的主題是《GaussDB(for MySQL)雲原生技術的演進和挑戰》。


華為資料庫的發展歷程

讓我們先來看一下華為資料庫的發展歷程。可能在許多人的眼中,華為是以硬體起家的公司。但實際上,華為資料庫的發展已經開始了十幾年,起步非常早。在雲這塊的話有幾個階段,我們主要分成兩條線:開源和雲原生資料庫。

開源方面,我們涉及到的是RDS和MySQL。而對於雲託管,我們早在2014年15年左右就開始了內部業務的使用。此外,我們還推出了雲原生資料庫,其中包括雲原生MySQL。亞馬遜在2014年推出後,很多雲廠商都不斷地在借鑑和學習。在2018年和2019年,我們釋出了第一個商用版本。

在我們看來,雲原生資料庫與儲存的可用性、可靠性和效能密切相關。華為的企業級儲存在中國市場擁有非常不錯的市場佔有率,因此我們將雲原生資料庫與華為的企業級儲存緊密融合。隨著架構和技術的不斷演進,我們在2019年推出的商用版本,這就是我們華為資料庫發展的歷程。



GaussDB(for MySQL)的系統架構

讓我們來了解一下GaussDB(for MySQL)的系統架構。GaussDB(for MySQL)是一款基於存算分離架構的雲原生資料庫,完全相容MySQL協議,並由華為自主研發的分散式儲存系統作為底層支撐。它採用active架構,相比傳統開源架構,不需要備庫進行資料同步,從而節省了使用者的成本。最關鍵的一點是,GaussDB(for MySQL)採用日誌即資料架構,這一架構最早由亞馬遜的Aurora推出。該架構的優勢在於最佳化了MySQL事務提交路徑,從而顯著提升了整個事務提交的效能。


高效能

讓我們先來了解一下我們在效能方面做了哪些工作。通常來說,雲原生資料庫在效能方面領先於傳統架構。我們經過實測發現,在寫入效能方面,我們的效能是開源架構的七倍。這主要歸功於我們的架構設計。

我們採用了存算分離架構,不同廠商的設計會有所不同,但我們的設計與亞馬遜的Aurora比較相似,可以說華為的架構與亞馬遜最接近。我們採用了日誌即資料架構,即在整個事務寫入時,我們會直接進行REDO落盤即事務提交,不需要再從計算節點刷髒頁到磁碟,從而大幅減少了整個事務提交的網路負載和開銷。因此,我們的寫入效能比開源架構和沒有采用這種架構的廠商都要高。

本次活動中我們主要討論MySQL x ClickHouse,在TPCH領域,我們也做了很多最佳化工作,並開發了並行查詢技術,從而在效能方面取得了很大的提升。下面看一下我們在效能這塊做了一些最佳化。



並行查詢

就並行查詢而言,目前我們在TPCH的22個SQL中的整體效能提升可以達到26倍。華為在並行查詢方面所做的一些工作與其他廠商也稍有不同。


近資料處理NDP

就目前在雲原生資料庫領域比較大的幾家友商來說,例如Aurora,在並行查詢這個方面,它是透過將運算元下推到儲存引擎上來實現的。而亞馬遜並不是在SQL引擎這一層面進行並行操作,它主要是充分利用了其分散式儲存來提升效能。而像國內其他友商,則主要是在SQL引擎層面進行並行操作。

其實我們做了兩個方面的工作。一方面,在SQL引擎層面,我們實現了並行操作,就像上一頁所講的那樣。另一方面,我們還實現了NDP運算元下推,充分利用了分散式儲存的效能,將底層儲存資源充分利用起來。我們對複雜的運算元、Filter、Projection、謂詞包括比較運算等進行了下推最佳化,同時也對快速列和虛擬列進行了下推。因此,在複雜查詢方面,我們稱之為“雙輪驅動”,這也是我們與其他廠商不同的地方。接下來,看下實際的效能表現。


NDP在TPCH場景最高節省率超過90倍

這個就是開啟NDP在TPCH場景下的一個效能表現。開啟以後,最高場景是可以就是計算到網路之間的開銷。開源的MySQL在進行大的複雜查詢時,我們需要將資料從磁碟傳輸到計算層進行計算,會有大量網路開銷,而透過運算元下推技術,TPCH處理多個SQL時,我們看到網路開銷的最高節省率超過90倍。在效能方面,我們測試了NDP+PQ場景,該技術品牌被稱為NDPQ。效能表現最高提升高達30倍以上。



跨AZ部署高可用,資料安全可靠

在可用性方面,我們的DFV支援跨AZ能力。目前,華為雲國內的主力region包括上海、北京、廣州、貴陽、烏蘭察布等都支援3AZ部署。未來,3AZ部署也將成為華為雲GaussDB(for MySQL)的預設架構。今年我們正在開通的節點中,包括香港、曼谷以及拉美、中東等地區。在歐洲,我們與德國電信和法國電信合作,推動GaussDB(for MySQL)全球化程式。我們的跨AZ能力可以實現RPO=0,保證資料的高可靠性。


自動彈性擴充套件

關於擴充套件性,我們知道在雲上使用MySQL資料庫,它更適合網際網路業務,尤其是網際網路、遊戲和電商等使用者。當然,現在政企客戶也越來越多地上雲,我們也為此做了節點的自動擴充套件,以滿足更多不同型別客戶的需求。目前,我個人覺得現在雲有一個非常重要的的趨勢發展,其中一個關鍵的趨勢是HTAP。另外,Serverless也是一個重要的趨勢。我們可以看到,像亞馬遜去年的invent大會上最核心的釋出之一,就是所有資料庫開始向是Serverless化發展。

在雲上除非技術實力特別強之外,使用者最關注的問題就是成本。因此,我們提供了一種類似於Serverless的服務,支援按需自動彈性擴充套件。這是我們早期推出的一個雛形,其中包括自動彈性擴充套件週期和按需模式。由於採用了存算分離架構,加節點的彈性過程非常快速,一般只需要五到十分鐘即可完成。因此,它的速度比傳統的MySQL快得多。傳統的MySQL在資料量不斷增加時,進行規格變更和加節點所需的時間非常長。


秒級快照備份

在備份方面,我們的儲存採用基於AppendOnly模式的DFV儲存。我們實現了秒級快照,這是我們自己開發的快照系統。我們進行了測算,發現大約1TB的資料備份恢復只需要三四十分鐘即可完成。

我們還將在今年年底推出backtrack功能,該功能基於儲存的多版本特性,使用者可以在選擇的時間點範圍內進行回溯操作,往前或往後。我們可以將1TB資料這個級別的回溯時間控制在五分鐘以內。


資料庫代理實現自動讀寫分離

再看資料庫代理服務,我們目前支援使用者按需購買服務。預設情況下,我們不提供代理服務。如果使用者有需求,可以按需購買讀寫分離服務,無需對其業務進行任何改動即可自動實現讀寫分離。

我們今年對讀寫分離進行了大量的最佳化,其中包括基於負載均衡模式的支援,我們還根據業務特徵,支援使用者選擇最終一致性、會話一致性和全域性一致性三種一致性級別。

我們的代理服務支援只讀模式和讀寫模式。如果使用者需要在分析型業務和交易型業務之間進行物理隔離,可以選擇只讀模式。在只讀模式下,代理服務會為使用者建立不同的只讀節點,從而實現對分析業務和交易業務的物理隔離。


HTAP只讀分析節點

接下來介紹我們的HTAP只讀分析節點。這是我們在HTAP領域中不斷推進的一步。正如我之前所述,我們在複雜查詢方面採用了並行查詢和運算元下推等技術。然而這些還不足以滿足所有使用者的需求,因為這2個技術本質上仍在同一份資料上進行操作,也就是說還是在整個一套系統裡面。

因為大家都知道,在做TPCH這樣的場景時,對整個資源的消耗是不可控的。一個分析業務可能會影響到交易型業務。為了解決這個問題,我們開發了只讀分析節點,它基於ClickHouse實現。透過CDC模式,我們可以將使用者交易資料從GaussDB(for MySQL)同步到ClickHouse。正如之前的嘉賓所介紹的,我們也是採用了基於binlog的方案。

我們目前還處於公測階段,主要服務於華為內部的終端消費者,例如華為手機、手環和運動健康等業務。這些業務的一部分分析業務已經遷移至我們的只讀分析節點上。


並行建立索引,提升效能六到七倍

關於並行建立索引,我們都知道社群版的MySQL在建立索引時是單執行緒操作,無法實現多執行緒。因此,如果要建立一個較大的索引,耗時會非常高。為了解決這個問題,我們開發了多執行緒的索引建立功能,多執行緒被設計用於從儲存讀取資料、排序以及建立索引等操作。經過測試,該功能相比於開源版本的MySQL,可以提升效能六到七倍。


Serverless領域技術實踐

在我們後續產品的演進中,Serverless將是一個非常關鍵的方向。我們計劃在今年上半年(五六月份)進行Serverless的公測,下半年則會正式商用。在Serverless領域,我們已經做了很多探索。目前業內最為出色的Serverless產品是亞馬遜的Serverless V2。雖然亞馬遜在最初推出的Serverless V1已經引起了不少關注,但它仍存在某些侷限性,例如擴縮的粒度和速度可能不夠理想。但是隨著Serverless V2的推出,它的擴縮粒度可以達到0.5 ACU,而且端到端的感知速度只需十秒鐘。因此,當時的亞馬遜Serverless V2可以說是引領了整個雲原生資料庫Serverless的發展趨勢。

我們還在技術方面進行了很多創新。其中,我們實現了快速彈性的緩衝池(buffer pool),並在核心層面對其進行了加速。透過這一技術,我們可以實現毫秒級的擴充套件,從而在端到端的執行過程中,經過內部環境測試後,可在大約十秒鐘內(甚至可能更快,大約八秒左右)完成。

我們還探索了一些技術,例如ALT應用透明遷移。在Serverless領域,跨機操作是一個關鍵點。在單機內,我們可以相對簡單地實現彈性伸縮,但是在雲上,我們需要考慮如何跨多臺物理機運營,如何擴大資源池規模。這帶來的問題是資源池水位可能會比較高,在擴充套件過程中可能會出現資源不足的情況,這時我們需要跨機操作,因此保證遷移的平穩性和不中斷就顯得尤為重要。我們實現了ALT應用透明遷移技術,透過事務狀態保持等方式,實現了平穩遷移。

在Serverless領域,我們已經實現了按需付費的儲存,計算層計劃在今年五六月份推出,而Serverless代理層預計會在今年年底推出。


保險公司客戶案例

最後再看一下我們的幾個案例,其中第一個種子使用者是國內比較大的保險公司。他之前使用的是Oracle,但由於國產化的需求和去O的需求,他們選擇了我們的服務。由於我們的服務可以部署在公有云上,我們透過一些專家服務和相關工具對該公司業務進行評估,並將其遷移到GaussDB(for MySQL)。遷移完成後,該公司的TCO降低了50%。


華為終端案例

我們的另一個案例是華為終端。整個業務規模非常大,涵蓋了華為整個手機業務、汽車業務以及應用商店等例項,例項數量可以達到非常大的規模。以前,由於線下的自建資料庫存在許多痛點,他們有一個龐大的DBA團隊來維護。經常面臨可用性和運維相關的問題,以及如果發生切換,可能會面臨資料丟失的情況。

遷移到GaussDB(for MySQL)後,他們面臨的問題像資料丟失就已經不存在了。此外,我們不斷演進,擴充套件了自動彈性伸縮等特性。讓使用者的成本降低了40%左右。同時,他們以前使用了商業的分析型資料庫軟體,也開始逐步使用我們的HTAP分析只讀節點,這進一步降低了整體的成本。


本次大會圍繞“技術進化,讓資料更智慧”為主題,匯聚位元組跳動、阿里雲、玖章算術、華為雲、騰訊雲、百度的6位資料庫領域專家,深入 MySQL x ClickHouse 的實踐經驗和技術趨勢,結合企業級的真實場景落地案例,與廣大技術愛好者一起交流分享。


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

相關文章