“數據庫以及機器學習技術的發展,對于數據庫的智能化以及自動化運營平臺帶來了非常多的挑戰。”

阿里巴巴集團副總裁、阿里云數據庫事業部總裁李飛飛在2019阿里云峰會上分享時表示,阿里云希望數據庫的內核加上平臺能夠做到自動優化、自動異常修復、自動安全保護、容量自動管理以及運維自動化等。
在智能化的嘗試上,阿里巴巴做了一個智能化平臺SDDP,實時監控數據庫的狀態,采集他的性能指標,用機器學習的方法做一些模型,實時更新數據庫的參數。
同時阿里巴巴利用數據分塊技術,已經可以做到兩地三中心,甚至兩地四中心實時的數據同步,做到跨中心跨城的數據高可用。
李飛飛認為,明顯的技術趨勢是,數據庫本身是一個系統,任何一個系統對有限的資源應進行高效管理、安全使用。要不斷關注硬件的發展,用硬件的技術發展紅利提升系統的性能。?
李飛飛演講實錄如下:
????非常感謝大家對阿里云數據庫的支持和信任,今天跟大家分享一下我們阿里云數據庫這么多年發展歷程,和對下一代云原生數據庫技術發展趨勢做一個總結報告。
????首先看一下這個排名,上面列了大概300多款數據庫,對流行度有一個評比。我們看到一個很大的趨勢,這邊是各種類型主流的數據庫,圓圈代表這個數據庫現在的市場份額以及流行程度,箭頭代表遷移的趨勢。也就是說我們看到越來越多的用戶從傳統的商業形式遷移到開源的數據庫生態里面去,主要是以MySQL和PostgreSQL這兩個數據庫為代表。所有這些都是傳統的關系型數據庫,我們也看到越來越多的用戶、企業以及業務開發,用到了種類豐富的NOSQL數據庫,這是整個的業界大趨勢。
????再仔細看一下根據DB-Engines流行趨勢的排行,紅線代表傳統商業型的數據庫,他的市場份額不斷下降。藍色的以開源生態為代表的趨勢越來越強勁明顯。從份額來看,關系型數據庫占75%,剩下25%是非常細分的部分,有各種各樣的NOSQL數據庫,構成了整個數據庫市場的生態。其中當然包括實時數據倉等等這樣的類型。
????如果看不同的云廠商提供的數據庫類型來看,我們總結出來一個反應,不同的云廠商都有非常豐富不同類型的數據庫產品,其中以AWS和阿里云為代表,一個是市場領先的云廠商,一個在世界目前排名第三,中國大陸排名第一的云廠商。我們看到他提供的數據庫引擎產品基本類同。其中最核心的產品列在這邊,阿里云最核心的兩款產品,一個是POLARDB,一個是ADB。一個是關系型的TP數據庫,一個是實時交互式數據倉庫,對應的亞馬遜上面的產品就是Aurora和Redshift,我后面會展開講這兩個產品的技術特點。
????數據庫是云上很關鍵的一環,我個人認為數據庫是連接Iaas以及云上智能化運用這一層,中間最關鍵的一環,這不僅僅是我個人的觀點。
????數據庫總的來講可以分成幾個類型,最經典的傳統的OLTP數據庫,主要解決了數據計賬轉賬過程中數據正確一致性在高并發海量數據下的挑戰。隨著數據量不斷增加,我們希望對這些數據進行分析,這就引出了Oracle數據庫做海量數據分析、交互式分析這樣一個類型的數據庫。
????除此之外在2008、2009年以谷歌為代表推出了NOSQL的概念,放棄對數據的一些要求,換來水平拓展以及對非結構化數據處理能力的提升。除此之外還有工具類的產品,工具類的組建比如備份、傳輸、數據管理等等,這整個形成了數據庫產業界、技術界、學界的大圖。
????我們看一下數據庫發展的歷程,最早從結構化數據開始發展到今天,因為海量數據的誕生,讀寫沖突,導致我要去做ETL等等技術做數據倉庫,這是數據庫發展三四十年最主要的主線。發展到今天因為我們異構多源的這種數量類型,導致我們需要不同類型的NOSQL數據庫,以及我們對海量數據高并發下處理的需求,又延伸出來了現在最流行的NEWSQL這種概念,這個圖總結了數據庫發展40多年的技術歷程。
看當前數據庫的架構上的挑戰和革新,主要有三種架構,一種是傳統的單節點加工,這里每個DB里面包含了CPU和內存,底下是磁盤。傳統的單節點架構CPU和磁盤是綁在一起的。最新的云原生架構,最核心的用兩個概念可以解釋清楚,一個是存儲計算分離,存儲與計算節點解耦。第二我希望把單節點的存儲能力做到越大越好,我利用像RDMA遠程高速共享網絡這種技術,使分布式存儲節點可以看起來像一塊本地盤,也就是說拿比較標準的技術語言來講,就是分布式共享存儲。
這樣就做到了存儲和計算可以分開地進行彈性伸縮,上面有一個共享狀態,這些節點之間是共享狀態的,避免了我對分布式事務處理的挑戰。這個架構受RDMA網絡的限制,所以我們還需要另外一種架構,就是傳統的分布式架構,這種架構下要把單節點的架構掛在這個下面,這邊我們也推出了基于POLARDB的分布式版本。
????除此之外還有一些比較新出現的技術趨勢,大概總結一下。一個是我們認為多模,分為北向南向。南向是你的存儲層,你的數據類型可能存儲層多種多樣,比如說存儲層結構化數據、圖的數據、文檔的數據等等。但我的查詢層希望有一個標準統一的查詢接口,這樣一個組合就給出了我們比較標準的數據服務。還有一種是南向的存儲可能只有一種形式,一般來講我會選一種非結構化的存儲格式,但是北向的查詢接口可以有多種多樣的查詢接口,可以按照圖的方式查、文檔的方式查。
????另外數據庫的發展以及機器學習技術發展,對于數據庫的智能化以及自動化運營平臺帶來了非常多的挑戰。比如說我們希望大量使用機器學習的技術做兩件事,一個對數據庫內核進行優化,比如說我的傳統CPO能不能用機器學習的方法找到更好的查詢計劃。另外一個緯度我的運維管控平臺能不能使用機器學習以及人工智能的技術做智能化的運維和管控。對于我們來講,我們希望數據庫的內核加上平臺能夠做到自動優化、自動異常修復、自動的安全保護、容量的自動管理以及運維自動化等等。
????最后非常明顯的技術趨勢,就是數據庫還是一個系統,任何一個系統對有限的應對資源進行高效管理、安全使用。當然我們要不斷地關注硬件的發展,用硬件的紅利,硬件的技術發展紅利提升系統的性能。具體來講在我們的研發過程中,我們就會看如何利用RDMA的網絡,如何利用NVM這種技術,如何利用GPU進行加速。這種硬件技術的發展,不斷地推動數據庫系統的不斷演進和迭代。
????下面講一下阿里云具體的兩個例子,一個POLARDB,一個ADB,講一下剛才我提到的技術趨勢,在我們的產品內核里面一些具體落地和具體解決方案。
這是去年雙十一的真實曲線,這是我們在雙十一11月11號凌晨12點之前的系統負載,具體數值因為商業秘密我藏掉了。在11月11號12點凌晨第一秒的時候,系統負載有一個122的增長,相當于你站在海灘上,海浪原本這么高,突然下一秒你的海浪有122倍的增長,這個對我們的系統帶來了非常高的挑戰,我們系統需要極致的彈性、極致的性能,才能夠滿足在這樣的海嘯來臨的時候,系統的反應速度沒有太大的變化。
我們怎么做到這一點?怎么支撐阿里的業務,同時服務好阿里云上形形色色各行各業的用戶,這個圖解釋了我們的核心技術。我們以POLARDB為核心,他是下一代云原生數據庫,結合我們的應用遷移評估工具以及數據傳輸工具,支持我們線下傳統的數據庫向云原生數據庫演進,同時我們使用ODB,形成與POLARDB的閉環。這里我們用DTS做一個增量實時同步,利用下一代數據倉庫的技術和理念,去支持客戶對海量數據復雜查詢分析的需求。另外通過阿里云的市場以及合作伙伴,打造豐富的生態,形成這么一個閉環的圖。
????這個圖是POLARDB的架構,看起來很復雜,實際上他就是共享存儲計算分離中間的那個架構圖,實際上完全一樣的。底下是我們的分布式共享存儲,利用RDMA網絡連起來,看起來對上面的內核來講,他看起來就像一塊本地磁盤。我的數據會保證數據的高可用,一份數據會打散成三塊,比如說A會分成三個小的,利用分布式數據一致的協議我們對他進行優化,保證我的數據三份數據完全一致的,這樣使得我數據庫也具備了高可用的能力。
????上面是我的計算節點,那里面有他的CPU、內存。這里我們在現在的POLARDB版本里面,我們要求有一個可寫可讀的節點,剩下的節點是只讀節點。當復雜查詢來的時候,我可以利用彈出來更多的只讀節點,滿足高并發的需求,但是我所有的寫所有的更新都是在這個節點進行的,避免了分布式數據處理帶來的一些非常大的復雜性以及對性能的影響,這是POLARDB核心技術上的特點。做到這些,就能夠達到右邊列到的所有性能。
????同時因為我的內核層完全可以擁抱開源生態,所以我的內核層完全可以基于MySQL來做。所以我們兩個不同的版本,第一個版本百分之百兼容MySQL,第二個版本百分之百兼容PG,基于百分之百兼容PG這個版本上,因為大家知道PG相對Oracle的兼容性比較好,我們又做了很多改進和革新,做出了另外一個版本,高度兼容Oracle。同時他的性能相對于MySQL以及Oracle有大大的提升。
????這個圖是傳統MySQL主備高可用的架構圖,我們做數據庫的人對這個非常熟悉,我不過多展開講。
????在POLARDB我們通過分布式共享存儲,上面是我們一寫多讀的計算節點,所有的節點看到的是一份物理數據,避免了傳統MySQL主備架構里面這種對計算以及存儲資源的浪費,有讀寫分離,同時我的存儲和計算分離以后,我的計算節點我所有的狀態信息都在一份數據里面,我可以按照客戶的需求彈出或者縮進計算資源,按需按量使用分配。
????為了在我的多個節點之間做負載均衡,我們前面做了一個智能的PolarProxy,這個PolarProxy會把客戶的應用發放到Proxy這邊做一個動態的負載均衡,智能化地把請求分發到不同的節點上去,當然所有的寫更新的節點都會發到主節點,所有的查詢讀就會通過我的PolarProxy去下發。下面這一層我的分布式共享存儲這一層,做了PolarStore,上面有一個文件系統無縫對接類似像MySQL或者PG這樣的內核。
????這個展開再講一下在Polarstore這一層發生了什么事情,我們有把數據分塊這樣的概念,每個數據進來會打成很多個小的塊,然后每個小塊我會分三份,這三份之間保證數據一致性。這個在分布式共享存儲這個層面上實現了數據的高可用,永遠不用擔心數據丟失這個問題。
????另外我們在主節點和物理節點之間,通過我們的Redo日志進行持續的數據回放,不僅僅依賴物理數據,也盡可能利用日志的數據,因為我的主節點更新下來以后,只讀節點如何保證他能讀到最新版本,我通過Redo日志的回放,來保證他們的數據一致性。
????這一頁主要再深入解釋一下剛才Proxy所做的事情,主要就是安全防護,最重要的是他有一個統一的訪問節點來做動態的負載均衡,這樣的話我的會話一致性、負載均衡、安全保護等等都通過一個節點完成。
????利用這些架構以后就做到了極致的彈性,可以通過這一層實時監控下面Polarstore用戶所分配的存儲空間以及實際使用的空間。當他實際使用的空間已經逼近我跟他分配的空間的時候,我會自動地幫他進行彈性的擴容。反過來講如果他使用的空間遠遠好于我分配給他的空間,我可以智能化動態幫他進行彈性的縮融。
????在計算這一層可以根據計算需求彈出新的只讀節點,當你完成任務時也可以縮回去。這樣的話帶來下面這個圖,我可以相對于傳統的POLARDB架構完美地滿足客戶對彈性計算、彈性資源的需求,按需按量使用。怎么理解?黑色的部分表示你必須要使用的資源,比如你的存儲,你有10T的數據,不管你怎么做架構,這部分的資源必須付出成本。這一塊的資源,可能是你在高峰期產生的資源消耗,在POLARDB這個架構下我可以按需按量使用,等你在業務峰值的時候彈上來需要的資源,然后快速釋放。就有點像家里使用自來水的感覺,對客戶業務有非常大的幫助和好處。
????第三種架構分布式架構,結合DRDS,我們在上面掛一層DRDS以后,上面可以跑多個POLARDB,這個也是支持我們集團雙十一的核心架構和技術方案。
TP這塊講完,下面講講閉環里面很重要的一環實時數倉,當我有海量數據的時候,一種你使用傳統的解決方案,另一種是使用傳統的數倉,傳統的數倉都需要建一個DataQ,DataQ帶來的問題在于你需要跑非常昂貴的ETL,如果你那個沒有在DataQ里面,你實際上沒有辦法做實時的BI分析。說白了傳統的數倉用DataQ的技術,就是把答案提前算出來,如果那個答案沒有算出來,你沒有辦法做實時交互性的分析。
如果你用大數據的技術,從技術來講他用的是一個BSP的模型,這里面就有很重要的問題,大家可能也聽說過一個很重要的技術,所有人要等最后一個任務完成才能跑下一輪。我們ADB怎么解決問題?用數據庫的技術解決大數據分析問題,我們不需要建DataQ,我們做了一個智能化的資源調度管理器,動態分配計算資源和存儲資源,同時我做了CBO以及全量的代碼生成,這些技術以后我做了將大數據的生態演進到現在我們推出的新概念叫做快數據,從大數據到快數據的演變。
????大數據生態里面這些傳統的大數據明星公司紛紛在走下坡路,我們認為將來的下一代大數據分析,一定是全量數據+實時分析。
????ADB主要利用了這些技術,首先在每一列上都做索引,第二存儲引擎做了一個自研的行列混存引擎。傳統的索引非常昂貴,我們利用了大量新的索引技術,大大降低了索引成本。利用這些功能以后,我們看一個具體的案例。達摩盤在這個案例下我們需要支持將近超過十萬張表,70T的數據等等,我們能夠支持120萬家每條、條每秒的峰值寫入。我們在這個場景下,在不建數據倉庫的前提下可以支持實時交互式的數據分析,做到甚至毫秒級的反應速度,把大數據的數據、數據庫的數決,同步到這個引擎里面。
????另外剛才講到多模的概念,我們核心的數據產品叫DLA,我南向存儲層有多種多樣的數據格式,我希望通過統一的產品界面去訪問異構多源的數據生態。實際上我們的DLA可以支持15種以上不同的數據源,可以一個標準的SKL查詢。
????他集成了一個開源的Presto引擎,以及開源的Spark引擎,同時對他們做了很大的優化。這兩種引擎,都可以對接不同的數據源,同時做交互式的分析提供給我們的BI工具。
????DLA和ADB最大的區別在于DLA沒有四級的存儲引擎,所以他的性能肯定沒有ADB那么好。但是因為他沒有自己的存儲引擎,你不需要提前購買任何規格,不需要存儲任何狀態,所以他的成本相對來講特別低,同時能夠支持多種數據源。
????這里面還有一個很重要的工具,叫DTS。從我的TP到AP,或者上云過程中需要做數據的全量或者實時增量同步,我們都通過DTS完成這個任務。DTS也支持一定功能的ETL,同時有一個功能做數據的實時訂閱和分銷,DTS是非常重要的一環。
????我講到的所有這些,我們生成了整個在數據庫生態里面的完整閉環。
????最后講講我們在智能化上的嘗試,在阿里巴巴現在做了一個智能化平臺叫SDDP,我們實時監控數據庫的狀態,采集他的性能指標,用機器學習的方法做一些模型,實時更新數據庫的參數。比如我們做了一個individualized Buffer Tuning,我去動態調整每個數據庫里面的Buffer的大小,傳統的數據庫Buffer大小都是定死的,但是隨著客戶用戶負載的變化你不需要這么多,這個時候你需要更小。我們通過剛才講的平臺,利用智能化的技術,動態調整每個Buffer的大小,我們現在監控了超過一萬個實例在阿里巴巴平臺內部,平均每天可以節省27個TB內存,而且業務性能沒有任何大的變化。
????最后講講高可用,我前面講到傳統的是主備方式,我們利用剛才講的數據分塊這些技術,我們可以做到兩地三中心,甚至兩地四中心,實時的數據同步,做到跨中心跨城的數據高可用。數據安全也非常重要,我們在阿里云的數據庫體系里面支持標準的TDE等等,在傳輸過程中大量使用TRS,保證我們客戶的數據在上云整個鏈路過程中全程加密的、全程安全可信的。
????最后講一下大圖,這是我們整個阿里巴巴云上數據庫的產品大圖,從工具到我們的引擎產品,黃顏色是自研的,黑色是我們開源及托管第三方產品,到TP、AP,到NOSQL以及到管控平臺。相信大家在上云過程中、業務發展過程中、業務平臺上一定能夠找到適合你業務發展的數據庫技術、數據庫產品,利用云原生的技術,不斷挑戰新的業務高峰,希望我們能夠利用我們的技術、我們的產品,和大家一起共同高速成長。
????另外講一下阿里巴巴非常愿意擁抱開源生態,這也是為什么我們的POLARDB包括ADB都會有不同的兼容版本,有MySQL的兼容版,有別的兼容版等等,甚至我們會把POLARDB核心技術,通過一個開源的分支叫阿里SQL去進行開源回饋社區。所以你在我們阿里巴巴阿里云上面的RDS平臺上使用的MySQL,實際上是我們的阿里SQL,比社區版的MySQL性能成本都要好。
????在此我也邀請在座的各位數據庫技術愛好者,加入到阿里SQL的開源分支里面,一同貢獻提升這個性能。
????最后講一下結果,我們利用所有的技術做到了什么?國際分析最新報告,我們的營收排到全球第三,超過了傳統的谷歌、騰訊、華為等等這些廠商,在云數據庫這個廠商。所以我希望和大家一起推動數據庫技術向更高的高峰發展,推動各位的業務向更遠的方向演進,利用這些技術也支持了像城市大腦這些復雜的應用,大量使用了我們剛才提到的這些技術。
????我今天的分享就到這里,后面我們團隊還有各位技術大咖會帶來更深入的分享,從TP到AP等等,希望大家在這個場子里面得到非常深入的了解和分享,謝謝大家!
您也可以關注我們的官方微信公眾號(ID:ctoutiao),給您更多好看的內容。