去年年末中國電子學會正式公佈了2020年中國電子學會科學技術獎名單, 阿里雲自主研發的雲數據庫PolarDB,獲得科技進步一等獎。
(左四為PolarDB項目的負責人李飛飛)
這不是阿里去第一次獲得這樣的榮耀,阿里雲的飛天操作系統在2018年曾經獲得過電子學會科學進步特等獎,也是該獎項設立以來科學進步方面的首個特等獎,這次PolarDB的獲獎也說明了阿里雲自主技術的實力。
在今年5月29日的阿里雲開發者大會上,李飛飛正式宣佈將開源PolarDB for PostgreSql,這個決定的宣佈也是整個開發者大會上,筆者得到的最大的驚喜之一。
PolarDB是阿里雲自研的數據庫產品家族,採用存儲計算分離、軟硬一體化設計,既擁有分佈式設計的低成本優勢,又具有集中式的易用性,可滿足大規模應用場景需求。計算能力最高可擴展至1000核以上,存儲容量最高可達100TB,集群版單庫最多可擴展到16個節點,性能比MySql高6倍。PolarDB系列產品已連續多年穩定支撐天貓雙11,處理峰值高達創紀錄的1.4億次/秒。
PolarDB有三個兼容的產品分支,分別對應MySql、PostgreSql和Oracle。我們注意到此次在阿里雲開源PolarDB for PostgreSql分佈式版本之前,華為OpenGauss計劃實際上也是 GaussDB For PostgreSql的版本,此次阿里雲的開源也頗有與華為GaussDB同場競技,通過代碼顯現自身實力的意味。PolarDB本次開源使用比較開放的Apache Version 2.0協議,代碼可以修改和再發布。
自2018年起,阿里雲連續三年進入Gartner數據庫魔力象限,並在2020年挺進Gartner全球數據庫領導者象限,成為基礎軟件領域首次進入領導者象限的中國企業。目前,阿里雲數據庫市場份額穩居全球前三,亞太第一。因此本次PolarDB的開源實在令人驚喜,因為開源實際是把自身的核心技術完全開放出來,這也會給競爭對手以一定的借鑑參考甚至超車的機會,只有對自身技術迭代能力極為自信的企業,才會選擇將核心技術開源。
據傳,最初對於PolarDB是否開源,阿里雲內部的討論十分激烈,為此張建鋒和李飛飛甚至拍過桌子,但最終的決定還是開源。在聽完了李飛飛在本次開發者大會的分享後,筆者認為PolarDB開源的底氣其實在於阿里雲對於數據生態鏈條完整的把控,而通過開源也必然會讓阿里雲數據庫生態體系更加強大。
大有大的難處,數據庫的Sql之爭
權威諮詢機構IDC對於大數據的定義是現有技術難以處理的數據。從歷史來看,在谷歌提出大數據三駕馬車的論文時,當時的關係型數據庫技術就已處於難以處理大規模數據的狀態。而在當下各行各業不斷上雲的大背景下,數據的量級必然還將不斷創出新高,從筆者瞭解到的情況來看,整個IT行業存儲的數據量級正在以年化80%左右的速度增長,傳統Sql的數據庫很難處理這樣的數據量。
隨著時間的發展現在數據庫方面有兩大流派,一個是非關係型(NoSql)數據庫,這是一種專門用來存儲海量數據的Key-Value型數據庫,主要用於用戶畫像、業務報表等海量數據的挖掘工作;另外一個是關係型(Sql)數據庫,其針對個別記錄增、刪、改、查的速度很快,但很少做全表級別的大型關聯計算,因此一般用於聯機交易場景。簡而言之,Sql處理速度快,NoSql處理數據量級高。
之前Sql與NoSql的應用場景兩不重疊,井水不犯河水,但像直播帶貨這樣的新場景不斷湧現,由於在直播中的交易既要更新商家的庫存和買家的帳戶餘額,又要根據客戶行為進行實時分析、精確營銷,類似這種綜合Sql與NoSql需求的業務場景不斷湧現,而以PolarDB為代表的雲數據庫則是解決這類問題的最佳途徑。
以筆者所在的銀行為例,目前一般在商業銀行都使用Oracle數據庫作為核心系統,但Oracle只能處理流程性的交易數據,不能做數據挖掘,要想把數據價值做二次表達,要每天做ETL、跑批作業、存到數據倉庫中,然後在數據倉庫中建模、挖掘、數據集市、ODS,一層一層地構建起數據倉庫報表。
如果還回答不出非線性問題這樣更細節更隱含的問題,就要把數據複製到SAS中做機器學習,再做統計的指標體系,以便做進一步的挖掘。數據要在這裡搬動三次,複製三份冗餘,還要管理數據一致性,每天數據中心運維的大量工作在做數據搬家。而數據在這種低效的轉運遷移過程當中,很多價值也就白白耗散了,同時帶來了處理時效和災備建設這兩個巨大的問題。
在處理時效問題上,正如我們前文所說,Sql與NoSql兩種產品底層構建模型並不相同,彼此兼容性不佳。這首先就會催生出數據處理的時效性問題,還是以筆者所在的銀行為例,分析數據在交易核心數據庫中跑批處理,再ODS抽取ETL分析到數倉,再進一步訓練流式計算,最後再入湖,整個數據手動的過程至少需要一天。
而且Hadoop和數據湖的開源生態中很多組件並不兼容,日常運維已捉襟見肘,想提速也無從下手,但業務對於轉瞬即逝的營銷機會又如此渴求,T+1分鐘可能都會嫌慢。對於處理時效的要求可能是大數據工程師與產品經理之間永遠無法達成的協議。
PDB與ADB的協同之戰
從上面的介紹想必大家也能看出來,目前各個數據中心都迫切的找到一個一棧式解決方案,屏蔽底層組件的差別,打造“All Data In One”的解決方案,只有如此才能提高效率,低成本運維。而阿里雲的PolarDB為代表的關係型數據庫專注於解決Sql的需求,其 提供 的自動參數優化,自動索引推薦等功能,極大的提升了數據庫管理員的幸福感,AnalyticalDB則是NoSql數據倉庫方面的絕頂高手,這兩個產品形成的數據庫解決方案體系彌合了Sql與NoSql之間的鴻溝。
以PolarDB為代表的雲原生數據庫通過存儲和計算分離、資源解耦,從而具備更高的彈性和高可用性以及分佈式的能力,來滿足業務對按需按量使用和按需按量付費的需求。
PolarDB和AnalyticalDB都是一種服務,用戶完全可以不關注隱藏在PaaS層之後的具體細節,數據庫及數倉之間的數據流動等技術細節被雲服務封裝起來,對於用戶屏蔽了,這也使這一整套解決方案體系綜合了NoSql與Sql的優勢,用戶可以不費吹灰之力的同時擁有一個高效的數據倉庫,可謂一舉用戶在使用數據庫中的最大痛點。