從“卡脖子”到“主導”,國產數據庫 40 年的演變!
2020 年,在數據庫領域,阿里云數據庫 PolarDB 入選 Gartner 領導象限;華為 GaussDB 革命性功能全密態的發布;TDEngine 多次霸榜 GitHub;PingCAP 完成 D 輪融資.....
回首過往這一年,我們的國產數據庫發展如何?不妨通過本文來一探究竟。
“六代繁華,春去也,更無消息。空悵望、山川形勝,已非疇昔。王謝堂前雙燕子,烏衣巷口曾相識。” ——元詞作家薩都刺《滿江紅·六代繁華》
說起國產數據庫的開山始祖,非人民大學的薩師煊教授莫屬,而薩師煊正是元代文豪薩都刺的后人,薩師煊與其弟子王珊合著數據庫系統概論,直到現在依舊是目前我國數據庫領域的經典教材。
早在 1978 年,薩師煊教授就開始為中國人民大學的同學們普及數據庫的知識。而彼時剛剛恢復高考不久,數據庫這個概念還屬于非常新潮的名詞,不過正是在薩老師的帶領與指引下,國產數據庫 40 年來由默默無聞到真正的爆發;從單節點到螞蟻分布式數據庫速度之王 OceanBase;從單一功能的 TP、AP 庫到混合式 HTAP 數據庫天云的 Hubble;從數據倉庫、數據湖分立到倉湖一體的 MaxCompute;從 SQL、NoSQL 再到 NewSQL 的 TiDB;從傳統數據庫到專業的物聯網時序數據庫 TDEngine;更遑論剛剛入選 Gartner 領導象限的最新一代阿里云數據庫 PolarDB。
2010 年 7 月 11 日薩師煊教授在北京與世長辭,而彼時像 PolarDB、TiDB、TDEngine 這些國產數據庫的典范,根本都還沒有出生。須臾之間,可謂是國產數據庫的豐收年之 2020 已然進入了倒計時,從螞蟻的 OceanBase 再破 TPC 速度記錄,到阿里云 PorlarDB 首進 Gartner 數據庫領域的領導者象限;再到華為 GaussDB 革命性功能全密態的發布,國產數據庫可謂是精彩紛呈。而今時今日,讀到這闋六代繁華,回首過往,實在令人感慨萬千,在這里,謹以此文向數據庫前輩們致敬,也希望能為正走在數據庫道路上的從業者帶來一些思考!
緣起——國際巨頭的傲慢與偏見
數據庫的起源可以追溯到上世紀 60 年代。當時 CPU 剛進入集成電路時代,計算機算力、內存都較之前的晶體管時代有了大幅提升,不少企業也開始使用計算機進行數據管理。不過當時的計算機系統缺乏有效范式來描述復雜的數據關系,因此當時庫管系統還一直處于非常簡陋的雛形狀態。
直到 1970 年,關系數據庫之父、IBM 研究員 E.F.Codd 在《Communications of ACM》雜志上發表了一篇名為“A Relational Modelof Data for Large Shared Data Banks”的論文,這也成為了數據庫歷史上的奠基之作。后來 A C M 在 1 9 8 3 年把這篇論文列為創刊 25 年中最具里程碑意義的 25 篇論文之一,因為在這篇論文中首次提出了關系模型的概念。
關系本是數學中的一個基本概念,由集合中的任意元素所組成的若干有序偶對表示,用以反映客觀事物間的一定關系。像數字之間的大小關系、人之間的親屬關系、商品流通中的購銷關系等等。用關系的概念來建立數據模型,用以描述、設計與操縱數據庫,E.F.Codd 是第一人。
不過雖然關系型數據庫的理論在 1970 年就問世了,但是市場上卻遲遲不見關系型數據庫的商用產品。這其中最主要的原因是 IBM 雖然率先提出關系數據庫理論,但當時藍色巨人的反應實在太遲鈍了,他們在 1973 年才啟動 System R 項目來研究關系型數據庫的實際可行性,不過也受限于當時 IMS 層次型數據庫火爆的銷售情況,因此 IBM 對于 System R 項目的關系數據庫不怎么感興趣。
1977 年 6 月,Larry Ellison 和他的甲骨文抓住了關系型數據庫這個巨大的商業機會,并通過引入 SQL 語言、原子事務等關鍵特性,在數據庫領域迅速站穩了腳跟,并在 1989 年正式進入中國。
彼時,中國數據庫市場上像 FoxBASE、dBase 之類的產品都遠遠沒有 Oracle 那樣突出的實力,因此,甲骨文入華后不到五年,恰逢我國推進“九七工程”(1997 年,在全國電信企業全面實現市話業務計算機綜合管理),由于電話資費大幅下降,普通家庭都安裝得起電話了,這也使甲骨文的 Oracle 數據庫在中國的銷售情況迎來爆發式增長,不過單向的技術依賴,讓我們處于被動的位置。
一舉打破 Oracle 壟斷的支付寶核心 OceanBase
隨著移動互聯網大潮來臨,我國 IT 巨頭應用方面的創新幾乎做到了天下第一,無論是 O2O、共享單車、移動支付領域是如此類,我們做的確實好,但是各大科技企業的核心數據庫 C 位卻一直被 Oracle 與 MySQL 等國外產品牢牢把持著。
不過國外廠商的最強神話終于在 2019 年的國慶節被成功打破。螞蟻的 Oceanbase 數據庫成功登頂世界上最權威的數據庫評測機構 TPC(國際事務處理性能委員會)排行榜榜首。
在今年 5 月,OceanBase 再次將自己之前創造的記錄提升了近 11 倍,將甲骨文、IBM 等一眾老牌數據庫巨頭甩在身后,正式宣告國產數據庫落后于國際先進水平的時代已成過往云煙,自研數據庫產品自此站起來了。
不過回顧過往,彼時 OceanBase 的誕生純屬意外。OceanBase 的創始人陽振坤絕對是天才中的天才,在 1984 年考入北京大學數學系,3 年修完本科,不到 2 年碩士畢業。師從王選院士并獲得博士學位后,32 歲的陽振坤就成為了北大首批長江學者獎勵計劃的特聘教授之一。如果繼續沿著這條路走下去,相信陽振坤會成為薩教授那樣的學術泰斗,不過象牙塔的生活對于陽老師來說還是太乏味了,受到了導師王選院士的影響,陽老師立志要做出一款能夠名垂青史的作品。
2010 年,45 歲的陽老師加盟阿里,組建了一支自研數據庫的團隊。
2012 年,時任螞蟻金服 CTO 的程立決定將支付寶 1% 的交易庫存數據在 OceanBase 上進行試運行,而這一試不要緊,OceanBase 不負眾望,超額完成任務成功運行了 10% 的數據,這也讓 OceanBase 在阿里內部一戰成名。
有關 OceanBase 的相關技術解讀可以參考筆者在 CSDN 之前的文章《200行代碼解讀國產數據庫阿里OceanBase的速度之源》、《國產數據庫 OceanBase 二次刷榜 TPC-C,7 億 tpmC!》這里不加贅述了。
混合型 HTAP——天元 Hubble 數據庫
在傳統關系型 TP 數據庫的范式中,數據類似于隨時會被加工改造的零件,而數據庫則是零件的加工廠。舉例說明,使用 ATM 取款時,取款人的賬戶余額和 ATM 的鈔箱余額都是在數據庫的加工下隨時會變化的零件,因此 TP 數據庫一般用于聯機交易,關鍵是響應速度要快。而在 AP 數據倉庫,則把數據看做是已經被加工好的成形貨物,沒有實時修改的需求,但是要進行大量的關聯計算以挖掘數據價值,因此 AP 數據倉庫大多被用于客戶畫像、營銷策分析。
而 TP 與 AP 相對獨立發展的趨勢,隨著實際業務的需要而發生改變,例如銀行實時風控體系、電商實時推薦營銷系統等都是需要綜合 TP 與 AP 特性的場景,因此 HTAP 的概念在 2014 年被 Gartner 正式提出。
HTAP(HybridTransactional/Analytical Processing)是在保留原有在線交易功能的同時,強調了數據庫原生計算分析的能力。支持混合負載的數據庫能夠避免在傳統架構中,在線與離線數據庫之間大量的數據交互,同時也能夠針對最新的業務數據進行實時統計分析。
天元數據的 Hubble 就是一款整合了 TP 與 AP 特性的混合式 HTAP 數據庫。值得一提的是,Hubble 作為原創國產數據庫獲得了全國首屆信創產業生態創新大賽中的一等獎。
在同一數據庫實例下,同時支撐高并發低延遲的 OLTP 事務和海量密集計算的 OLAP 分析作業,這不是一個簡單的任務,而 Hubble 的方案是引入損失函數動態評價 SQL 邏輯計劃的執行成本、CBO 代價優化解析、Sharding 切片線程級別物理資源匹配不同計算負載、TP 和 AP 雙引擎調度執行、隨機和序列化 IO 對存儲的訪問、依靠數據副本機制同時支持 KV 鍵值存儲和列存存儲交出了完美的答案。這意味著一張表可以同時支持行存和列存,真正的融合了存儲結構,避免了在交易和分析數據庫間每夜 ETL 數據搬家的繁瑣運維工作和數據冗余。
天元 Hubble 數據庫借助優化便捷 SQL 服務替代 ES+HBase 方案,節省昂貴 Hadoop 開發成本;以高并發實時流升級,完成了 Flink 不能處理更多事實表的金融反欺詐和復雜權益服務; 多表關聯 AP 計算方面,Hubble 的性能是 Impala 的 231%,在開放的大數據生態中,Hubble 完全可以作為計算組件與開源組件協同工作,嵌入并服務主流數據中臺環境。
NewSQL 的典范——TiDB
2005 年,谷歌首次提出了大數據的概念。對于大數據(Big Data),Gartner 給出了這樣的定義:
“大數據”是需要新處理模式才能具有更強的決策力、洞察發現力和流程優化能力來適應海量、高增長率和多樣化的信息資產。
也就是說大數據是指傳統的 SQL 數據庫無法處理的大量數據,這也就是我們目前常說的 NoSQL 型數據庫,這是一種基于 Key-Value 尋址的數據庫,這種數據庫專門為海量數據存儲服務,不過 NoSQL 要求數據之間的關聯計算不能太多,比如字節、快手這樣的視頻社交 APP,數據雖然是天量級的,但是用戶每條動態之間所需要的關聯計算不多,這樣的場景下使用 NoSQL 數據庫就比較合適了。
而我們前文提到的 TP、AP 數據庫,都要進行數據之間的關聯計算,比如電商平臺上客戶的一筆交易既要更新商家的庫存又要更新買家的帳戶余額,或者基于用戶畫像時要將客戶的各項理財變動情況進行整體建模計算,這種關聯計算的場景就是 SQL 數據庫的天下了。
原本 SQL 與 NoSQL 的應用場景兩不重疊,井水不犯河水。不過,從最新的如直播帶貨需求來看,要求數據庫既提供海量數據存儲服務又提供高性能關聯計算服務,這就是 NewSQL 的領域。
而打通 NoSQL 與 SQL 任督二脈,打造 NewSQL 數據庫的明星產品中典范當屬 PingCAP 的 TiDB 了。PingCAP 的聯合創始人黃東旭出身于微軟,不過黃東旭在程序員中絕對堪稱異類,他不止是位編程高手,繪畫和搖滾水平之高甚至還遠在代碼能力之上,是 IT 業內聞名的文藝青年,其創建的 TiDB(https://github.com/pingcap/tidb)數據庫代碼優雅,結構清晰,頗有藝術氣息,用他的話來說 TiDB 的目標是嘗試讓用戶像使用和操作 Oracle、MySQL 傳統數據庫那樣順手,與此同時,還能擁有彈性伸縮的高擴展、高可用性架構。
PingCAP 今年有兩個大動作,一是在數據庫頂會 VLDB 上發表論文《TiDB: A Raftbased HTAP Database》;二是繼續將云原生進行到底,其把 TiDB 與和 Kubernetes 緊密結合,使得 TiDB 用戶可以快速對集群進行擴縮容,滾動升級,這也反應了 PingCAP 在技術方面有非常深入的分析和思考。TiDB 的設計架構定位就是堅定地朝著云原生 NewSQL 的方向發展。這也是 PingCAP 站上風口,在 D 輪融資 2.7 億美元的主要原因。
金融級核心——GoldenDB
筆者作為一名長期從事金融科技的程序員,對于數據庫技術對外依賴感觸是相當深刻的,因為我國銀行業的絕對核心——支付系統(CNAPS),直到 2013 年底,我們才用自研二代支付系統將國外方案取代。
一直以來,一致性問題是金融級數據庫的重要討論話題。分布式數據庫的語境下一致性就是指各個數據庫分片的數據是否一致,何時一致。如果更新過的數據能被后續的訪問都能看到,這是強一致性;如果能容忍后續的部分或者全部訪問不到,則是弱一致性;如果經過一段時間后要求能訪問到更新后的數據,則是最終一致性。金融級的數據庫必須要保證強一致性,也就是只要數據更新,就必須被后續的訪問所看到。
在金融數據庫方面,中信銀行與中興通訊聯合研發的 GoldenDB 在今年 5 月份成功上線。GoldenDB 成功取代了在中信銀行核心系統服役了幾十年的 IBM AS400 據庫。為解決一致性問題,中信銀行的數據庫專家們創造性的提出在 GoldenDB 數據庫引入全局事務協調器 GTM,實現基于中間件的強一致性事務控制,完成分布式事務的全生命周期管理。保證異常場景下的數據一致性,解決分布式數據庫可能的臟讀問題,在數據備份/恢復過程中,保證各全局事務組的操作統一執行或回滾。
分布式事務中最重要的是原子性和隔離性。所謂原子性就是指事務像原子一樣不可分割,比如用戶在支付寶上還信用卡,那么支付寶的余額和信用卡的還款記錄就需要同時成功或者失敗,不能出現一邊成功而另一邊失敗的情況,一般來講原子性可通過已提交事務的回滾來實現。
真正的難點在于隔離性,隔離性主要是處理讀寫沖突和寫寫沖突。分布式事務提交時可能出現部分節點成功,而另外一部分失敗的情況,此時中信銀行的數據庫天團又提出在這種情況發生時,將已經成功提交的節點上進行回滾。根據全局事務 GTID 在 Binlog 中查找已提交事務信息,生成反向 SQL 語句并執行以實現數據回滾。通過以上的機制,就保證分布式數據庫可以用于銀行的動帳類業務,防止錯賬的發生。最終,銀行核心系統完全實現了分布式數據庫的分布式遷移,并隨之完成國產化替代。
傳統數據庫的終結者——PolarDB
2010 年前后,中國的互聯網企業普遍迎來了一波流量爆發。其中,繼 2003 年推出支付寶以后,淘寶在 2005 年到 2012 年的交易迅速增長,交易額從 80 億元、200 億元到 1000 億,直到破萬億。不過這種爆炸式增長,也成為了阿里人甜蜜的負擔,因為阿里電聯用戶的增長速度已經漸漸超出系統處理能力的提升速度,而原有一直沿用的 IOE(IBM 的小型機、Oracle 的數據庫和 EMC 的存儲)中心化系統與這種高用戶并發的場景幾乎格格不入,且暫不論達到如此性能的 IOE 系統成本會有多驚人,問題的關鍵在于即使是當時最強大的科技公司,也沒有經歷過上億用戶同時在線的業務場景,使用國外的產品方案有如南轅北轍,無法真正解決問題。
正因此,王堅院士率先提出去 IOE 的目標,通過打造阿里自己的技術來解決用戶爆發工資長的問題。
在 IOE 架構的系統中提升算力的思路是讓服務器越來越強,云計算的分布式思路是只需要增加服務器節點的數量,就能處理更多的并發服務請求,而分布式系統的業務連續性,并不是靠高可用性來保證,而是靠整個服務體系的容錯能力造就的。在不斷探索的過程中,我們也誕生了新的分布式架構,通過發揮云計算的威力,使得看似普通的虛擬機集群,能夠碾壓一體機,能夠為億萬用戶同時提供優質的服務。
欲戴皇冠,必承其重,很多公司都會要管理遠超自身運維能力的大規模數據庫集群,DBA 團隊維護對于很多企業尤其是初創企業來說成本不低,因此DBaaS(Database as a Service)逐漸興起。用王堅院士的話來說,「未來使用數據庫服務就像使用自來水和電一樣簡單」,業界一般認為將傳統業務上云成本可以降低一半,而將數據庫業務上云成本可以降低三分之二,因此很多研究機構都認為云數據庫才代表著數據庫的未來走向,比如 Gartner 就預計到 2023 年全球 75% 的數據庫都會跑在云上,可以說云數據庫未來很可能會終結掉傳統數據庫的存在,因此誰能在云數據庫方面依靠,誰就可以在云計算與數據庫兩個方面都取得優勢。
根據 Gartner 上周發布的 2020 年度全球數據庫魔力象限評估結果,阿里云憑借 PolarDB 的強大性能首次挺進全球云數據庫供應商的第一陣營,進入領導者(LEADERS)象限,而騰訊和華為也都入選了特定領域者象限,這是有史以來中國數據庫首次有三家廠商同時入選 Garner 的魔力象限。
Gartner 在報告中指出“阿里云擁有豐富的數據庫種類覆蓋度和完善的產品布局,為用戶提供了多種關系型和非關系型數據庫產品,還提供了混合云環境部署,同時集成了備份、數據遷移與同步等能力。”這樣的評價也充分體現了阿里云 PolarDB 的不俗實力,同時也預示著像阿里云、華為這樣的中國云廠商未來不可限量。
PolarDB 的創始人李飛飛與陽振坤一樣同樣是少年天才,在初中畢業后,李飛飛直接進入了國家教委理科實驗班,并被保送進入清華學習。博士畢業后他在猶他大學計算機系任教,從助理教授一路做到正教授, 后來在時任阿里集團 CTO 行癲的支持下,李飛飛加入阿里創立了 PolarDB。
圖片來源:阿里云技術公眾號,已獲作者授權
PorlarDB 除了在索引結構、鎖機制等傳統數據庫組件進行優化以外,還特別針對云服務特有的全球跨域數據同步與容災需求,進行了重點設計,我們知道很多云服務客戶的業務遍及世界各個大洲,因此對于云數據庫的跨域數據同步也會有非常高的要求。PolarDB 全球數據庫(PolarDB Global Database Network,PolarDB-GDN)采用了數據庫物理日志異步復制的方案。PolarDB-GDN 通過高并發流水線技術將同步速度提升 7 倍,將數據跨大洲同步延遲控制在 2 秒內。全局讀寫分離技術結合多級別的一致性能力,讓業務不用做任何的改造的前提下降低整體的訪問延遲,全面滿足了云用戶的需求。
最后
今年是國產數據庫的豐收年,除了上述數據庫外,國產時序數據庫 TDengine 背后的濤思數據在 2020 年 4 月完成 A 輪 2000 萬美元融資,8 月將集群版開源,連續 6 天在 GitHub 全球趨勢排行榜上位居第一;OceanBase 在工行的理財核心系統得到應用與驗證;PolarDB-X 應用于中國郵政核心系統中,幫助郵政成功渡過 1 億件的交易峰值;中國聯通基于 PolarDB-X 等技術重構了其核心 IT 架構,實現對 3.6 億用戶的無縫“廣覆蓋”,成為全球最大的云上 BSS 系統。相信國產數據庫的未來可期,也愿今日國產數據庫之世如眾人所愿!
相關文章
RFID技術推動智能電網建設
隨著科技水平與生活水平的不斷提高,地球也付出了環境污染、氣候變化、能源枯竭等方面的代價,環保與能源問題成為不可回避的重要母題。而電網作為人類社會最大的能源輸送樞紐,對我們的日常生活和活動有著無比的重要性。因此,提高電網的利用率...