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

来源:https://www.cnblogs.com/ninedata/archive/2023/05/18/17411243.html
-Advertisement-
Play Games

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


演講內容

摘要: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 的實踐經驗和技術趨勢,結合企業級的真實場景落地案例,與廣大技術愛好者一起交流分享。


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 當你的linux系統的密碼忘記了該怎麼辦? 首先不要慌,重啟電腦,開機的時候 出現這個頁面的時候點擊e然後出現這個頁面 把裡面的ro修改為 rw 修改為rw之後在這一行語句的最後面輸入enforcing=0 init=/bin/bash,然後ctrl加x進入單機模式, 進入單機模式之後,輸入修改密碼 ...
  • 目錄 一、DHCP概念 二、DHCP工作過程 三、DHCP實驗 一、DHCP概念 概念:動態主機配置協議,自動為電腦分配tcp/ip參數 DHCP的優點:1.減少管理員的工作難度 2.避免錯誤的可能 3.避免IP地址重合 4.更改IP地址時,不需要再重新配置 5.提高ip地址利用率 6.方便用戶使 ...
  • 一、環境介紹 Windows Server 2019 64位 標準版 二、IIS安裝 2.1、打開伺服器管理器,單擊添加角色和功能 在Windows Server 2019 伺服器管理中,點擊角色和功能。 2.2、打開添加角色和功能嚮導】對話框,開始安裝 預設選擇,直接下一步。 2.3、打開安裝類型 ...
  • 1.JDK1.8下載並安裝 1.1直接點擊下一步 1.2更改安裝地址 1.3安裝成功 1.4環境配置 1.5查看是否安裝並配置成功,cmd-》java -version 2.IDEA下載並安裝 https://www.exception.site/essay/how-to-free-use-inte ...
  • 本文首發於公眾號:Hunter後端 原文鏈接:es筆記一之es安裝與介紹 首先介紹一下 es,全名為 Elasticsearch,它定義上不是一種資料庫,是一種搜索引擎。 我們可以把海量數據都放到 es 里然後提供搜索操作,但是 MySQL 也同樣可以提供搜索,為什麼要用 es 呢? 一個是因為它搜 ...
  • 最近接手了一個WPF項目,資料庫使用的MySQL,為了簡化生產環境部署流程,果斷選擇遷移到SQLite,由於原項目未使用ORM框架,導致很多SQL語法也得改。 SQLite基礎語法請參考該頁面 1.依賴包的更改 有兩個Nuget包可選: Microsoft.Data.Sqlite.Core / Sy ...
  • [MySql 如何分析性能] Sql性能分析 sql語句: "show global status like "Comlxx____";" 結果: + + + | Variable_name | Value | + + + | Com_binlog | 0 | | Com_commit | 7 | ...
  • 1、數據準備 1.1、springboot導包 springboot版本:2.7.10 點擊查看代碼 <!--mongodb的包--> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-s ...
一周排行
    -Advertisement-
    Play Games
  • Dapr Outbox 是1.12中的功能。 本文只介紹Dapr Outbox 執行流程,Dapr Outbox基本用法請閱讀官方文檔 。本文中appID=order-processor,topic=orders 本文前提知識:熟悉Dapr狀態管理、Dapr發佈訂閱和Outbox 模式。 Outbo ...
  • 引言 在前幾章我們深度講解了單元測試和集成測試的基礎知識,這一章我們來講解一下代碼覆蓋率,代碼覆蓋率是單元測試運行的度量值,覆蓋率通常以百分比表示,用於衡量代碼被測試覆蓋的程度,幫助開發人員評估測試用例的質量和代碼的健壯性。常見的覆蓋率包括語句覆蓋率(Line Coverage)、分支覆蓋率(Bra ...
  • 前言 本文介紹瞭如何使用S7.NET庫實現對西門子PLC DB塊數據的讀寫,記錄了使用電腦模擬,模擬PLC,自至完成測試的詳細流程,並重點介紹了在這個過程中的易錯點,供參考。 用到的軟體: 1.Windows環境下鏈路層網路訪問的行業標準工具(WinPcap_4_1_3.exe)下載鏈接:http ...
  • 從依賴倒置原則(Dependency Inversion Principle, DIP)到控制反轉(Inversion of Control, IoC)再到依賴註入(Dependency Injection, DI)的演進過程,我們可以理解為一種逐步抽象和解耦的設計思想。這種思想在C#等面向對象的編 ...
  • 關於Python中的私有屬性和私有方法 Python對於類的成員沒有嚴格的訪問控制限制,這與其他面相對對象語言有區別。關於私有屬性和私有方法,有如下要點: 1、通常我們約定,兩個下劃線開頭的屬性是私有的(private)。其他為公共的(public); 2、類內部可以訪問私有屬性(方法); 3、類外 ...
  • C++ 訪問說明符 訪問說明符是 C++ 中控制類成員(屬性和方法)可訪問性的關鍵字。它們用於封裝類數據並保護其免受意外修改或濫用。 三種訪問說明符: public:允許從類外部的任何地方訪問成員。 private:僅允許在類內部訪問成員。 protected:允許在類內部及其派生類中訪問成員。 示 ...
  • 寫這個隨筆說一下C++的static_cast和dynamic_cast用在子類與父類的指針轉換時的一些事宜。首先,【static_cast,dynamic_cast】【父類指針,子類指針】,兩兩一組,共有4種組合:用 static_cast 父類轉子類、用 static_cast 子類轉父類、使用 ...
  • /******************************************************************************************************** * * * 設計雙向鏈表的介面 * * * * Copyright (c) 2023-2 ...
  • 相信接觸過spring做開發的小伙伴們一定使用過@ComponentScan註解 @ComponentScan("com.wangm.lifecycle") public class AppConfig { } @ComponentScan指定basePackage,將包下的類按照一定規則註冊成Be ...
  • 操作系統 :CentOS 7.6_x64 opensips版本: 2.4.9 python版本:2.7.5 python作為腳本語言,使用起來很方便,查了下opensips的文檔,支持使用python腳本寫邏輯代碼。今天整理下CentOS7環境下opensips2.4.9的python模塊筆記及使用 ...