雲計算大潮來襲,傳統數據庫市場正面臨重新洗牌,包括雲數據庫在內的一批新生力量崛起,動搖了傳統數據庫的壟斷地位,而由雲廠商主導的雲原生數據庫則將這種“改變”推向了高潮。

雲時代的數據庫將面臨怎樣的變革?雲原生數據庫有哪些獨特優勢?在日前的DTCC 2019大會上,阿里巴巴集團副總裁、達摩院數據庫首席科學家、阿里雲智能事業群數據庫產品事業部總負責人李飛飛博士就《下一代雲原生數據庫技術與趨勢》進行了精彩分享。他表示,雲原生數據庫因其突出優勢,應用趨勢不斷上升。

阿里雲李飛飛:把握雲時代先機 論道雲原生數據庫

李飛飛(花名:飛刀),阿里巴巴集團副總裁,高級研究員,達摩院首席數據科學家,阿里雲智能事業群數據庫產品事業部負責人,ACM傑出科學家。

大勢所趨 雲數據庫市場份額增速迅猛

如下圖所示的是Gartner關於全球數據庫市場份額的報告,該報告指出目前全球數據庫市場份額大約為400億美金,其中中國數據庫市場份額佔比為3.7%,大約為14億美金。

阿里雲李飛飛:把握雲時代先機 論道雲原生數據庫

具體到數據庫市場分佈,傳統五大數據庫廠商Oracle、Microsoft、IBM、SAP、Teradata佔比達到了80%,雲數據庫的份額佔比接近10%,並且雲數據庫市場份額佔比每年也在快速增長,因此Oracle、MongoDB等也在大力佈局其在雲數據庫市場的競爭態勢。

根據DB-Engines數據庫市場分析顯示,數據庫系統正朝著多樣化、多元化的方向發展,從傳統的TP關係型數據庫發展到今天的多源異構的數據庫形態。目前處於主流位置的還是大家耳熟能詳的數據庫系統,比如商業數據庫Oracle、SQL Server以及開源的MySQL、PostgreSQL等。而一些比較新的數據庫系統,比如MongoDB、Redis則開闢了一個新的賽道。數據庫License的傳統銷售方式在逐漸走下坡路,而開源以及雲上數據庫License的流行程度卻在不斷提升。

數據庫: 雲上應用關鍵一環

正如AWS創始人Jeff Bezos所說:“The real battle will be in databases”。因為雲最早是從IaaS做起來的,從虛擬機、存儲、網絡,到現在如火如荼的語音識別、計算機視覺以及機器人等智能化應用,都是基於IaaS的,而數據庫就是連接IaaS與智能化應用SaaS最為關鍵的一環。從數據產生、存儲到消費的各個環節,數據庫都至關重要。

數據庫主要包括四大板塊,即OLTP、OLAP、NoSQL以及數據庫服務和管理類工具,也是雲數據庫廠商發力的四個方向。對於OLTP而言,技術發展已經歷經了40年,而到如今大家還在做的一件事情就是“加10元和減10元”,也就是所謂的事務處理。當數據量變得越來越大和讀寫衝突的原因,對數據進行在線實時分析的需求衍生出了OLAP。由於需要Scale out,而數據強一致性不能夠得到保證,就有了NoSQL。而最近又出現了一個新名詞——NewSQL,這是因為NoSQL也有所不足,故將傳統OLTP的ACID保證與NoSQL的Scale out能力進行了整合,變成了NewSQL。

數據庫系統架構演進:All depends on what is shared

縱觀數據庫40年來的發展歷史,從最早的關係型數據庫時期,衍生出了SQL、OLTP等技術;到數據量急劇增長,需要避免讀寫衝突,通過ETL、數據倉庫以及Data Cube等技術實現了OLAP;再到今天,面對異構多源的數據結構,從圖到時序、時空到向量等,也就誕生了NoSQL、NewSQL等數據庫,同時也出現了一些新的技術,比如Multi-Model和HTAP等。

數據庫系統最為主流的架構是Shared Memory:共享處理器內核,共享內存並且具有共享的本地磁盤,這樣的單機架構屬於非常主流的架構,傳統的數據庫廠商基本採用的也是這樣的架構。

而隨著互聯網企業的大規模發展,如Google、Amazon以及阿里巴巴,大家發現原來的單機架構有很多限制,其可擴展性以及吞吐量無法滿足業務發展需求,於是就衍生出了Shared Disk/Storage架構,即共享存儲架構。也就是說數據庫底層可能是分佈式存儲,通過利用RDMA這樣的快速網絡讓上層的數據庫內核看起來像是在使用本地的磁盤,但實際上是分佈式存儲。上面可以有多個獨立計算節點,一般是一寫多讀,但是也可以做多寫多讀,這就是共享存儲架構,其中比較典型的代表就是阿里雲的PolarDB數據庫。

另外一種架構是Shared Nothing。共享存儲雖然有諸多優點,其解決了很多問題,但是RDMA網絡也存在很多的限制,比如其跨越Switch甚至是跨AZ和Region的時候性能都會有所損失。分佈式的共享存儲達到一定的節點數量之後,性能會出現一定的損耗,所以不能保證訪問遠程數據和訪問本地數據的性能完全相同,所以共享存儲的架構當擴展到十幾個節點之後就達到了scale out擴展的上限了。此時,如果應用需要繼續擴展怎麼辦呢?那就需要實現分佈式架構了,比較典型的就是Google Spanner,其利用原子鐘技術能夠實現跨數據中心的數據一致性和事務一致性。而在阿里雲,基於PolarDB實現的分佈式版本POLARDB-X採用的也是Shared Nothing架構。

這裡需要注意的一點就是:Shared Nothing和Shared Storage可以結合。可以在上層做Shared Nothing,而對於下層的Shard分片採用Shared Storage架構。這樣混合架構的好處在於能夠減輕分出太多Shard的痛點問題,減少分佈式事務distributed commit的概率,因為distributed commit的代價非常昂貴。

總結三種架構設計,如果在Shared Storage架構上做到多寫多讀而不是一寫多讀,實際上也就實現了Shared Everything。將Shared nothing和Shared storage架構進行結合的hybrid架構應該是後續數據庫系統發展方向的一個重要突破點。

雲原生數據庫核心四要素

上面從架構方面分析了雲時代的主流數據庫架構。從技術上來講,除了架構上的不同,雲原生時代還有一些不同點。

多模(Multi-model)

其一是多模(Multi-model),多模主要有兩種,即北向和南向。南向表示存儲結構是多種多樣的,數據結構可以是結構化的也可以是非結構化的,可以是圖、向量、文檔等,但對於用戶只提供一個SQL的查詢接口或者SQL-Like的接口,這部分業界比較典型的就是各種各樣的數據湖服務。而北向的多模就是存儲只有一種,一般是通過KV存儲數據形態來支持結構化、半結構化以及非結構化數據,但希望能夠提供不同的查詢接口,比如SPARQL、SQL、GQL等。業界典型的代表是微軟Azure的CosmosDB。

數據庫智能化+自動化管控平臺

數據庫的自治化也是非常重要的發展方向,從數據庫的內核以及管控平臺兩個角度都有很多技術點可以做。在數據庫自治化部分,阿里巴巴認為,需要做到自感知、自決策、自恢復以及自優化。自優化比較簡單,就是在內核中利用機器學習的方法來進行優化。而自感知、自決策、自恢復更多的是針對管控平臺的,比如如何保證實例的巡檢,當出現問題後如何能夠自動快速修復或者自動切換等。

新硬件: 軟硬件一體化設計

雲原生數據庫的第三大核心點是軟硬件一體化設計。數據庫首先是一個系統,而系統就需要能夠安全高效的使用有限的硬件資源。所以數據庫系統的設計和發展一定是和硬件性能和發展緊密相關的,我們不能夠面對硬件的變化而堅持舊有數據庫設計不改變,比如NVM出來之後就可能對傳統的數據庫設計有一些衝擊。而新硬件所帶來的變化也是數據庫系統設計需要考慮的。RDMA、NVM以及GPU/FPGA等新硬件或者架構的出現,對於數據庫的設計都會提供新的思路。

高可用

高可用是雲原生最基本的要求之一,上雲的用戶勢必不希望業務出現中斷。高可用最簡單的解決方案就是冗餘,可以做Table級別的冗餘,也可以做Partition級別的冗餘。無論是使用哪一種,基本上都是三副本,甚至更多的時候需要做四副本或者五副本,比如金融級別的高可用可能需要做兩地三中心或者兩地四中心。

對於高可用的多副本而言,如何保證副本之間的數據一致性?在數據庫裡面有一個經典的CAP理論,其理論結果是在Consistency、Availability和Partition Tolerant三者之間只能選擇兩個。現在大家的一般選擇都是C+P,同時對於A而言,通過三副本技術和分佈式一致性協議,使得A達到6個9或者7個9,這樣基本上就做到了100%的CAP。

阿里雲李飛飛:把握雲時代先機 論道雲原生數據庫

雲原生數據庫PolarDB:極致彈性+兼容性 為海量數據和海量併發而生

前面介紹了數據庫市場背景和雲原生數據庫的基本要素,接下來我將結合阿里雲PolarDB以及AnalyticDB兩款數據庫系統,分享以上技術的具體落地情況。PolarDB是阿里雲的雲原生數據庫,目前已有非常深厚的技術積累。我們在VLDB 2018,SIGMOD 2019等國際學術會議上發表了相關論文,主要介紹存儲引擎等方面的技術創新。

PolarDB採用共享存儲架構,一寫多讀。共享存儲架構有多個優勢,首先是計算和存儲分離,計算節點和存儲節點可以分開實現彈性縮擴容;其次,PolarDB突破了MySQL、PG等數據庫對於單節點規格和可擴展性的限定,能夠實現100TB存儲容量以及每個節點100萬QPS的性能; 此外,PolarDB能夠提供極致的彈性能力,備份恢復能力也有很大提升。在存儲層,每個數據塊都採用三副本高可用技術,同時對於Raft協議進行了修改,通過實現並行式的Raft協議保證了三副本數據塊之間的數據一致性,提供了金融級高可用。PolarDB還能做到100%兼容MySQL 以及PG等數據庫生態,可以幫助用戶實現無感知的應用遷移。

阿里雲李飛飛:把握雲時代先機 論道雲原生數據庫

由於底層是共享的分佈式存儲,PolarDB屬於Active-Active的架構,主節點負責寫入數據,從節點負責讀取數據,因此對於進入數據庫的事務而言,主備節點都處於Active狀態,其好處在於通過一份物理存儲避免了在主從之間不停地做數據同步。

具體而言,PolarDB有一個PolarProxy,也就是前面的網關代理,下面有PolarDB的內核以及PolarFS,最下面對接的是PolarStore,利用RDMA網絡管理底層的分佈式共享存儲。PolarProxy會對客戶需求做分發,將寫請求分配到主節點,而對於讀請求而言,則會根據負載均衡以及讀節點的狀態實現對於讀請求的分配,這樣就能夠儘可能地實現資源的最大化利用以及性能的提升。

PolarDB共享存儲採用分佈式+三副本。其中Primary節點負責寫,其他節點負責讀,其下層是PolarStore,每部分都會有三副本的備份,通過分佈式一致性協議保證數據一致性。這樣設計的優勢在於能夠實現存儲與計算分離,同時能夠做到無鎖備份,所以備份可做到秒級。

在一寫多讀的情況下,PolarDB能夠實現快速伸縮。舉例而言,從2核vCPU升級到32核或者從兩個節點擴展到4個節點,都能夠在5分鐘之內生效。存儲和計算分離能夠帶來的另一大好處是降低成本,因為存儲和計算節點可以獨立地進行彈性伸縮,充分體現成本優勢。

下圖展示了PolarDB如何利用物理日誌實現持續恢復。左側是傳統數據庫的架構,而在PolarDB裡面,由於採用了共享存儲,因此可基本保留類似傳統數據庫利用物理日誌進行恢復的過程,通過共享存儲實現持續恢復,做事務的Snapshot恢復。

阿里雲李飛飛:把握雲時代先機 論道雲原生數據庫

對比一下,如果MySQL做主備架構,首先需要在主庫裡面有一個邏輯日誌和物理日誌,在備庫裡面要重放主庫的邏輯日誌,然後再按照主庫的方式做邏輯日誌和物理日誌。而在PolarDB裡面,因為是共享存儲,可直接通過一份日誌實現數據恢復,備庫能夠直接將所需要的數據恢復出來,而不需要去重放主庫的邏輯日誌。

PolarDB一寫多讀集群的另一大優勢是動態DDL的支持。在MySQL架構下,如要對數據的Schema進行修改,需要通過Binlog去Replay到備庫,因此備庫會存在Blocking的階段,需要一定時間Replay動態的DDL。而在PolarDB共享存儲架構下,所有Schema信息以及metadata均以表的形式直接存儲在存儲引擎裡面,只要主庫改完了,那麼備庫的元信息也實時同步更新,因此不會存在Blocking的過程。

PolarDB的Proxy最主要的作用就是做讀寫分離、負載均衡、高可用切換以及安全防護等。PolarDB是一寫多讀架構,當請求進來之後,需要進行讀寫的判斷,將寫請求分發到寫節點,將讀請求分發到讀節點上去,並且對於讀請求做一定的負載均衡。這樣就能保證會話的一致性,並且徹底解決了讀不到最新數據的問題。

無損彈性是PolarDB監控的模塊之一。分佈式存儲需要知道分配多少磁盤量/Chunk,PolarDB會監控未使用的Chunk量。比如當可用量低於30%的時候,就會在後臺自動地對其進行擴容,這使得應用基本不受影響,可連續寫數據。

對於雲數據庫PolarDB而言,以上技術帶來的最大優勢是極致的彈性。這裡我們以一個具體的客戶案例進行說明。如下圖所示,紅線部分指離線資源的消耗情況,這些成本是客戶無論如何都需要付出的,而其上面的部分則是計算資源的需求。

阿里雲李飛飛:把握雲時代先機 論道雲原生數據庫

比如客戶在3、4月有新品上市,5月還有促銷活動,這兩個時期計算需求會非常大。如按照傳統架構方式,可能需要在新品上市之前就將容量彈到更大的規模,並且保持這樣的水位,到了後面的促銷階段又需要彈到更高的規格,成本非常高昂。但如果能夠做到極致彈性,比如PolarDB的存儲與計算分離,實現快速彈性擴容,那麼用戶就只需在藍色方塊出現之前將容量彈上去,之後再彈下來即可,這樣就能大幅降低成本。

除了雲原生數據庫PolarDB,阿里雲數據庫團隊在其他方向還有眾多探索。

分佈式版本POLARDB-X: 高併發+跨域高可用 支持水平拓展

如果企業需要極致的Scale out能力,像阿里巴巴以及傳統行業中的銀行、電力等對高併發、海量數據支撐要求極高的用戶,共享存儲架構只能支持彈至十幾個節點,肯定是不夠的。因此,阿里雲數據庫團隊也採用Shared Nothing做水平拓展,將Shared Nothing與Shared Storage相結合,形成POLARDB-X。POLARDB-X支持金融級跨可用區數據強一致, 對支持海量數據下的高併發事務處理有著極好的性能表現。目前,POLARDB-X在阿里內部已上線應用,利用存儲計算分離、硬件加速、分佈式事務處理和分佈式查詢優化等技術,成功支持了在雙11這樣的場景下阿里巴巴所有業務核心鏈路數據庫洪峰的挑戰,我們後續將推出商業化版本,敬請期待。

阿里雲李飛飛:把握雲時代先機 論道雲原生數據庫

OLAP數據庫標杆——AnalyticDB:海量數據 實時高併發在線分析

此外在OLAP分析型數據庫方向,阿里雲數據庫團隊自主研發了數據庫產品——AnalyticDB,在阿里雲的公有云和專有云上均有售賣。AnalyticDB擁有幾大核心架構特點:

行列混存引擎,能夠支持高吞吐寫入和高併發查詢;

支持海量數據處理,對於海量數據能實現秒級分析,完美支持多表、中文以及複雜分析;

利用向量化技術,支持結構化數據和非結構化數據的融合處理。。

近日,AnalyticDB打榜TPC-DS,在性價比方面達到了全球第一,通過了TPC官方的嚴苛認證。同時,介紹AnalyticDB系統的論文即將在VLDB 2019會議上展現。AnalyticDB的常用應用場景是從OLTP應用我們的數據傳輸與同步工具DTS至AnalyticDB進行實時的數據分析。

阿里雲李飛飛:把握雲時代先機 論道雲原生數據庫

自治數據庫平臺:智能調參上線iBTune (individualized Buffer Tuning)

雲原生數據庫的特點之一是自治化,阿里雲內部有個平臺叫SDDP(Self-Driving Database Platform——自治化數據庫平臺),SDDP會對各個數據庫實例進行實時的性能數據採集,並使用機器學習方法建模進行實時調配。

阿里雲李飛飛:把握雲時代先機 論道雲原生數據庫

iBTune的基本思想是,每個數據庫實例都包含一個Buffer Size,傳統數據庫裡面的Buffer Size是提前分配好的,不能變化。而在大型企業裡,Buffer是一個資源池,需要消耗內存,因此希望做到彈性自動調配每個實例裡的Buffer Size。比如淘寶商品庫的數據庫實例晚上不需要那麼大的Buffer,那麼就可以自動將其Buffer Size彈下來,到早上再自動彈上去,同時要求不影響其RT。為了滿足上述需求並進行自動Buffer優化,阿里雲數據庫團隊構建了iBTune系統,目前監控近7000個數據庫實例,通過長期運營,可平均節省20TB內存。介紹iBTune項目的核心技術論文也發表在了今年的VLDB 2019大會上。

安全上雲是關鍵 多重加密護航數據安全

雲上的數據安全是非常重要的內容,阿里雲數據庫團隊在數據安全方面也做了大量的工作。首先,數據落盤加密,在數據存儲的時候就進行加密。此外,阿里雲數據庫也支持BYOK,用戶可以將自己的密鑰拿到雲上來實現落盤加密以及傳輸級別的加密。未來,阿里雲數據庫還將在內存處理時實現全程加密,對日誌實現可信驗證等。

阿里雲企業級數據庫雲服務:全方位運維 全鏈路佈局

阿里雲數據庫按照工具產品、引擎產品以及運營管控的全程數據庫產品分類提供服務。下圖展現的是阿里雲——雲數據庫常用鏈路,通過DTS工具將線下數據庫遷移到線上,基於數據需求/分類,分發至關係型數據庫、圖數據庫以及AnalyticDB等。

阿里雲李飛飛:把握雲時代先機 論道雲原生數據庫

阿里雲數據庫:客戶第一 一切價值來自於服務用戶

目前PolarDB數據庫的增勢迅猛,已經服務於通用行業、互聯網金融、遊戲、教育、新零售、多媒體等多個領域的龍頭企業。

阿里雲李飛飛:把握雲時代先機 論道雲原生數據庫

而AnalyticDB在分析型數據庫市場也有非常出眾的表現,支持實時分析以及可視化應用。

阿里雲李飛飛:把握雲時代先機 論道雲原生數據庫

基於阿里雲數據庫技術,阿里巴巴支持了城市大腦等一系列關鍵項目及雲上雲下的大量客戶。截止目前為止,阿里雲數據庫已經累計支持了近40萬數據庫實例成功上雲。

雲原生是數據庫的新戰場,它為發展了40多年的數據庫行業帶來了許多令人激動的新挑戰和新機遇,阿里巴巴希望與國內外數據庫行業的各位技術同仁一起,將數據庫技術推向更高的境界。

相關推薦

推薦中...