中國數據庫領域的一顆釘子是怎麼被拔掉的?_風聞
高老庄朱刚烈-“于是我们继续奋力向前,逆水行舟。”2019-10-07 16:56
文章來源丨衝浪普拉斯
54歲的陽振坤坐在辦公室裏,迎着窗外的光線,剛剛打了個哈欠。
衣着樸素的他,在用眼鏡布擦拭完鏡片上的灰塵後,按下了電腦主機的開機鍵。
隨着主機滴的一聲,機箱中的硬盤也開始快速轉動,兢兢業業地開始了自己的固定工作。
坐在桌前的陽振坤就像一頭老黃牛一般,平和、低調、堅韌,日復一日,年復一年地工作着,全然不顧刷新世界紀錄的喜悦,一切就像沒有發生過一樣。
今年10月1日,一個由阿里巴巴自主研發的分佈式數據庫OceanBase,在一項業內認可的、衡量數據庫性能的國際賽事(TPC-C)上奪得了冠軍。
而這個榜單上,至今只有阿里巴巴這唯一一家中國公司,性能是Oracle的兩倍,成本卻只有Oracle的70%,在此之前,該榜單已經被Oracle為首的美國科技公司壟斷了9年。
中國工程院院士、計算機專家李國傑這樣評價OceanBase:「這是中國基礎軟件取得的重大突破」。
但主導OceanBase項目的陽振坤卻依舊保持着謙遜:「數據庫研發需要長期積累,更需要百花齊放,十年來OceanBase終於走出了一條自己的路,今天我們取得了一點小小的成績,未來將繼續為世界下一代數據庫的發展探索和努力。」
十年磨一劍,這對賽道上奔跑的選手們來説只是一個開始,但對我們中國程序員們來説,是一件在數據庫領域揚眉吐氣的大事。
這背後的故事,每個人都應該知道。
01 盛滿金條的美國馬車
提到數據庫,中國人最熟悉的是一家美國公司甲骨文,無論是大大小小的互聯網公司,還是傳統的金融銀行,都離不開它的數據庫系統Oracle,而該系統至今牢牢統治了中國數據庫市場30年。
回顧這段歷史,不難得出一個結論——中國的數據庫技術發展史,基本上是一段西方技術的壟斷史:
1978年,人大老師薩師煊在黑板上寫下「數據庫」三個字,標誌着數據庫理論正式從美國傳入國內,人們第一次在大學課堂裏接觸到數據庫的概念雛形。
也正是他在4年後,起草了國內第一本「數據庫系統概論」的教學大綱,為國家培養了第一代數據庫學生。
這羣第一代接觸到數據庫的學生們,畢業之後很快將該技術應用在國防、軍工等領域,不少人還成為國家科技成果的奠基者。
但技術應用得快,反而從側面説明了我國計算機科學的一片空白。
那時中國還並沒有什麼像樣的計算機技術,自然抵擋不了美國科技公司們來華掘金的熱情,更抵擋不了先進科技帶來的技術碾壓,美國的科技公司們無需什麼堅船利炮,Oracle進軍中國簡直是輕而易舉。
Oracle創始人埃裏森初次到訪中國的時候就展現了這種高傲,這位數據庫帝國的掌門人計劃到長城拍攝推廣自家設備的宣傳片,時任甲骨文中國總裁的馮星君在他的要求下,找了20個小學生一起參與拍攝。
本來約好的8點開拍,但直到9點埃裏森還沒有起牀,當時北京零下二十度的天氣,小學生們在沒有暖氣的大巴上嚎啕大哭,馮星君只好帶着哭腔給埃裏森打電話催促。
而兩個小時後,大老闆才終於現身。
無奈的等待和敢怒不敢言背後,是中國對Oracle數據庫的依賴,但又有什麼辦法呢?核心技術在別人手中,你能不用麼?
Oracle入華後不到五年的時間,直接就趕上了中國電信系統推進的「九七工程」,那時各家各地都在搶着接電話,市話服務剛剛開始普及,資費大幅下降,普通家庭也接得起電話了,郵電局門前動不動就要排起10米長龍,通信是中國老百姓們的剛需。
由於沒有像樣的對手,Oracle不費吹灰之力,一舉拿下了東三省郵電管理局五期工程的大單,從此成為了中國電信行業最大的數據庫供應商,並壟斷至今,動輒每年就是幾千萬上億的高額軟件使用費,不交就無法繼續正常使用,但也沒有安全便宜的替代品,沒有自主的數據庫技術中國企業只能受人擺佈。
同期過來的IBM、EMC也藉着中國這波電信、金融行業第一次信息化基礎建設的東風,在數據庫配套的小型機、存儲設備等領域攻城略地。
中國的信息化基礎建設元年,是屬於IOE(IBM、Oracle、EMC)這三駕馬車的,可惜這三駕馬車都是美國公司,源源不斷地把賺得的金條拉向大洋彼岸。
也是在這一時期,國產數據庫雖然開始萌芽,但由於技術的差距,金融、電信、航空等重要關鍵客户並沒有廣泛、批量採用,導致國產產品無法真正發展壯大。
到了2000年左右,中國互聯網行業開始興起,各大門户網站開始逐漸意識到Oracle數據庫的缺點——貴。
想要臨時增加一些服務器承載更多流量?請提前幾個月下訂單,而且一旦流量下降,這些閒置的機器就成了擺設,各公司還要為此持續支付每年的使用費。
那時的門户網站最期望的是有社會熱點出現,但也害怕服務器支撐不住如此大的流量而掛掉。
淘寶、支付寶幾年後也遭遇了同樣的問題,從04年開始,隨着阿里巴巴商户、個人用户的激增,高額的數據庫使用費已經讓阿里巴巴有些吃不消。
09年首次提出雙十一的淘寶,更是面臨着賣多少貨都不是問題,問題是服務器和數據庫頂不住的尷尬場景。
支付寶當時用的數據庫還是Oracle,為了應對雙11這天的天量數據,只能再花數億千萬人民幣的價格去購買主機,在交易恢復常態時,昂貴的主機旋又陷於長期閒置狀態。
有人曾經這樣形容整個過程:「你開了家洗衣店,有一天來洗衣服的特別多,根本洗不過來,無奈之下你被迫買了幾台新機器來洗更多的衣服,但是幾天後便沒那麼多來洗衣服的顧客了,洗衣機閒置在那裏,但你還不能不買,否則店裏的顧客會把出入口堵得水泄不通,洗衣店就會癱瘓」。
也是在這個階段,阿里巴巴意識到問題的嚴重性,我一箇中國企業,為什麼要被你一個美國企業掣肘呢?我不能自己研發麼?阿里成為了中國第一家喊出去IOE的企業,戰略性地選擇放棄Oracle,使用開源免費的MySQL數據庫嘗試進行自主開發。
但自主開發需要高級人才啊,怎麼辦?
程序員陽振坤被這個時代選中了。
02 天才的天時地利人和
陽振坤 1984 年考入北京大學數學系,屬於那個時代的少年天才。
讀碩士時又師從本系的張恭慶院士,後來覺得計算機更有意思,就轉向計算機領域,博士師從計算機系的王選院士,沒錯,就是發明了激光照排,推動了我國印刷業進步、獲得國家最高科技獎的王選,陽振坤可以説是名門之後了。
需要強調的是,陽振坤修完大學課程只用了 3 年,碩士只用了一年多,成為王選院士博士生的時候他只有 24 歲。
1995 年陽振坤所在團隊研究成果獲國家科技進步一等獎,1997 年也就是他 32 歲那年,被破格晉升為教授,還成為了北大首批「長江學者獎勵計劃」特聘教授之一。
按理説按照陽振坤的能力和機遇,在科研圈成為下一代學術泰斗不是什麼問題,但陽振坤對於把科研運用到工業領域明顯興趣更大。
2002年,這位學術明星選擇離開象牙塔,投身工業界,先後加盟聯想、微軟、繼而是百度,從做激光照排,轉向無線網絡協議,再到分佈式系統。
換了幾個賽道的陽振坤,發現無論是激光照排還是無線協議,都已經沒什麼可研究落地了,科研界提出的方案早已在工業界落地,但分佈式數據庫那時還沒有人實現過。
通俗來説,集中式數據庫是把所有衣服都交給一個幾十台洗衣機的洗衣店來處理,而分佈式數據庫是開了十幾家洗衣店,每家店只有幾台洗衣機,但可以把衣服不停運輸給附近空閒的洗衣店,這樣一來不浪費閒置的機器,二來整個洗衣系統可以同時接收更多的衣服。
分佈式數據庫是一個海量數據庫,可以存放千億條以上的記錄,它就像一名超級會計師,可以在一秒內同時記數萬筆帳,並且不出一點錯。
不過,起源於上世紀6、70年代的分佈式數據庫系統一直存在於理論中,沒人能夠實現,就連陽振坤本人,都會覺得這是一件不可思議的事情。
因為它的優點和缺點同樣明顯,優點是可以大大降低成本,缺點是這些普通PC機單個來看都達不到金融級別的穩定性,如果其中一台機器「罷工」,容易產生多米諾骨牌效應般的連鎖反應——最終機器會集體崩潰。
在技術上實現一台機器出問題,其他機器即時補好備份數據不難,難點在於讓每台機器的工作量始終保持均衡,否則工作量過大的機器容易崩潰,繼而又是一場大崩潰,每個洗衣店接收多少衣服是難點中的難點。
這個短板被視為世界級技術難題,這也是為什麼全球前三大數據庫甲骨文、IBM、微軟都採用集中式系統的重要原因。
一來它們的主機穩定,一台動輒數百萬美元,存儲空間不夠,那就只能再買一台,二來賣硬件+技術服務費的模式可以隨意宰割沒有這項技術的中國企業們,高額的利潤和壟斷的地位讓他們沒有動力「浪費精力」在研發新技術上。
而「情懷型」程序員陽振坤想做的,恰恰是解決分佈式系統的這個難題。
2006年,他從微軟跳到百度,從事分佈式系統研發。
這確實也是百度的剛需,作為中文最大的搜索引擎,每天都要抓取無數的內容,數以萬億計的網頁,而且數據量還在迅速增長,百度的服務器和數據庫如果全部使用IOE,成本高得驚人。
但很不幸,百度並沒有給他持續研究的機會,在百度做了剛滿兩年,他的團隊就遭遇瞭解散,項目被砍掉——做分佈式系統需要很大投入,但公司不願再付出更多的金錢、時間成本,百度最終採用了一套現成的開源系統,儘管陽振坤主導的分佈式系統在性能上已經超過了開源系統。
45歲程序員要被淘汰的行業規律,在陽振坤眼中似乎不是個事兒,此處不留爺,自有留爺處,哪裏需要分佈式我就去哪裏。
2010年,到阿里巴巴面試的陽振坤,找到了發揮自己光和熱的地方。
03 陽振坤磨了十年的劍——OceanBase
剛去淘寶的時候,陽振坤其實根本不知道自己有機會做什麼事情。
加入淘寶之後,擺在他面前的有兩個選擇,一個是加入正在快速發展的淘寶業務團隊,去主管技術,這是一條已經能看到很大的發展機會、相對輕鬆的道路,一個月業務就會翻一倍,想賺錢、升職真的輕輕鬆鬆。
另一條是陽振坤後來自己選的,從頭組建團隊做一個項目,商業公司是要追求盈利的,做這種業務很可能面臨跟百度同樣尷尬的境地,投入太多產出太少,沒人用的結果就是項目全員被裁。
這個項目,就是今天我們看到的 OceanBase,一個像海洋一樣的海量數據庫。
王選曾經教育陽振坤要做「頂天立地」的事情,頂天是指產品的技術要領先,只有站在技術制高點上才不會受外人宰割,立地是指這個產品一定要是一個通用的,整個社會都可以普遍使用的技術。
基於此,陽振坤是鐵了心的要搞中國技術人自己的分佈式數據庫,不再依賴歐美的高價產品,而是做一款中國人自研的通用型項目。
從加入淘寶到選擇做自研數據庫OceanBase,他一共只花了兩個星期的時間。
OceanBase 立項之初,除了陽振坤和他當時的直屬領導,其他人對這個項目要麼不關心,要麼不贊成。
從零開始自研分佈式關係數據庫並全面替換 Oracle,在當時有多少人會相信這真的能做成呢?當時整個淘寶一共只有兩三千人,而 Oracle 有十幾萬人,就算整個淘寶的人全部去做數據庫,跟 Oracle 比起來也只是很小很小的一個比例。
跑在「海洋庫」上的第一位「客户」是淘寶收藏夾,那時是2011年,淘寶用户已達數千萬級,「每人收藏十條,那就是幾億條。」
為了確保收藏夾在雙11當天萬無一失,整個團隊連軸工作了三個星期,迭代、壓測、調試、再壓測、再調試……「當時在討論羣裏,凌晨兩點,凌晨三點、凌晨四點……一直都有人在説話。」雙11當天,OB交的第一份成績單讓陽振坤滿意,「那時,我們都覺得機會來了。」
現在看來,當時的判斷顯然過於樂觀。阿里內部對自主研發數據庫很快產生分歧,反對者認為,不如採用開源系統性價比更高,就像百度那樣。
這樣的意見一度佔據上峯,理由也確實難以反駁:全球三大數據庫製造商已存在幾十年,每家公司都擁有數以萬計的員工,還沒有做成功的,淘寶當時全公司只有幾千人。
12年,OceanBase已經得到了初步驗證,30多個人還在忙着加功能,但年底的時候到了一個非常危險的狀態——願意使用OceanBase的公司很少,陽振坤非常擔心公司認為OceanBase產投比太小,關閉整個項目。
好在公司去IOE化的戰略沒有改變,不但沒有關閉OceanBase,反而是把團隊做了一個調整,從淘寶調到了支付寶團隊,獲得了一個從頭開始的機會,「你們能把銀行的數據庫替換掉,推廣OceanBase絕對不是問題」。
「如果陽老師願意妥協,放棄OceanBase,轉去做開源系統的技術優化,早就撥雲見日了。但這顯然不是他想幹的事情,他的目標,就是想做一箇中國技術人自主研發的數據庫。」一位不願意透露姓名的開發者這樣評價OceanBase。
支付寶母公司螞蟻金服現任首席技術官程立是OceanBase的「貴人」,他同意將支付寶1%的交易庫存數據在這個數據庫上跑跑試試。
當時的支付寶,遭遇的世界級難題是,雙11的交易量呈幾何級增長,未來勢必還將繼續呈幾何級增長,事實也證明了這點——2017年雙十一實際支付峯值達每秒25.6萬筆,是前一年支付峯值的2.13倍,是2009年第一次雙十一支付峯值的1280倍。
這一還未正式上過「真正戰場」的數據庫,被支付寶高層認定是解決雙11支付峯值這一世界級難題的「鑰匙」。OceanBase最終也不負眾望,「原定搬1%的交易庫存數據到OB上來,最後搬了10%。」
2013年,斯諾登的稜鏡門事件曝光,達夢、金倉、神通、南大等一批國產數據庫得到了廣泛關注,中國企業開始不信任Oracle為首的美國企業,這些國產數據庫開始廣泛應用於央企、國家財政、軍事等專用領域,OceanBase也尋覓到了證明自己的機會。
2014年雙11,OceanBase搬了支付寶10%交易數據鏈,扛住了壓力,獲得了支付寶團隊的初步認可。
2015年雙11,支付寶整個交易庫都換成了OceanBase。
2016年雙11,支付寶整個賬務庫都搬過來了,而這一核心數據被稱為「金融系統數據庫皇冠上的明珠」。
螞蟻金服的CEO大獎,當時就是給了OceanBase團隊,也是第一次給技術團隊。
這幾個生產線全用Oceanbase替換了之後,標誌着這款從零開始,中國自主研發的數據庫真正在金融系統裏面,最核心,最關鍵的領域站住了腳。
到了2017年,Oceanbase開始走出支付寶,走出螞蟻金服,在外面的商業銀行開始廣泛被使用,這又是一個新的里程碑。
從沒有,無人問津,到內部試用,再到完全替換,走出阿里,走進銀行業,花了陽振坤團隊整整7年。
04科技圈馬太效應被阿里打破
馬太效應是全球科技圈心照不宣的準則,科技越強的公司和國家,越可以攫取更多的利潤,稱霸市場,達到「技術殖民」的目的,而中國的數據庫市場就是這樣被Oracle「技術殖民」的,牢牢壟斷了30年。
因為只有你的技術可以讓性能達到一個最高標準,那麼你只需降價到和比自己差的產品相同價位即可,同樣的錢,為什麼企業不買性能更好的呢?待國產的競爭對手被這種讓利打法活活擠兑致死,Oracle又可以重新漲回高價,而這時,已經沒有一個能打的對手了。
市場就是這麼無情。
但讓Oracle這家數據庫霸主想不到的是,阿里巴巴的電商業務和中國的人口基數,會催生出了雙11這種每秒要處理17億條數據的銷售活動,而正是這種巨大的流量湧入,以及高額的Oracle授權費用,給了中國人做自己的數據庫的動力和契機,也給了OceanBase真槍實彈練兵的機會。
阿里用10年的時間趕超了美國科技巨頭42年的數據庫技術積累,從使用美國技術,模仿美國技術,掌握美國技術,到反超美國技術,基礎技術研發的突破是背後無數箇中國工程師們日以繼夜的付出,最初懷着「頂天立地」願景的OceanBase,終於拔掉了數據庫領域中西方壟斷的這顆釘子,困擾中國多年的問題得以解決。
而這樣的大背景下,Oracle的CEO埃裏森對中國的評價:「中國是美國最大的競爭對手,不能讓中國產出比美國還多的工程師」。
然後這位CEO今年解僱了900名中國員工。
阿里巴巴打破Oracle的記錄,這不只是一個產品的PK。
這是一個換道超車、面向未來的改變,這也是中國獨特的土壤、獨特的時代給我們的千載難逢機會。