天天看點

淺談資料庫發展史和 OceanBase 的誕生

淺談資料庫發展史和 OceanBase 的誕生

本文作者:楊傳輝(花名:日照)螞蟻集團資深總監、OceanBase 研發總經理,全面負責 OceanBase 研發工作。作為 OceanBase 創始成員和首席架構師,主導了技術架構設計,實作分布式資料庫在核心金融場景零的突破,完成螞蟻集團核心資料庫100%上 OceanBase,主導 OceanBase TPC-C 測試并打破世界紀錄。曾在百度負責雲存儲與雲計算系統研究工作,著有專著《大規模分布式存儲系統:原理與實踐》。

本文主要介紹資料庫的發展,帶大家共同回顧這一曆史程序,也将首次揭秘 OceanBase 誕生的故事。

什麼是資料庫

首先,什麼是資料庫。顧名思義,資料庫是按照資料結構來組織、存儲和管理資料的倉庫。曆史上曾經出現過層次資料庫、網狀資料庫以及關系資料庫。

如今,關系資料庫成為業界的主流。關系資料庫的全稱是 Relational Database Management System,簡稱叫 RDBMS。一般來講,關系資料庫主要應用在核心行業的核心業務場景,也就是我們經常說的 Mission-critical 場景,涉及到人、财、物等需要精确管理等應用。關系資料庫有一個第一定律,那就是永遠不要丢失任何一條資料。

關系資料庫可以被分成三個基本的子產品,包括:

關系模型,也就是我們經常聽到的表格、索引、外鍵、範式等;

事務處理,也就是事務的 ACID,原子性(Atomicity)、一緻性(Consistency)、隔離性(Isolation)、持久性(Durability);

查詢優化,也就是 SQL 的解析、改寫、優化、執行等等。

淺談資料庫發展史和 OceanBase 的誕生

(圖檔來自網際網路)

資料庫技術的繁榮發展,也得益于很多優秀的科學家。資料庫領域有四位圖靈獎得主,第一位圖靈獎得主是 1973 年的網狀資料庫的創始人 Charles W.Bachman。第二位是 1981 年關系理論的提出者 Edgar F.Codd。第三位圖靈獎得主是事務處理的發明人 Jim Gray,于 1998 年獲得了圖靈獎,Jim Gray 也是科學研究四類範式的提出人,他是一個天才科學家。有個有趣的事可以和大家分享:當年微軟想把 Jim Gray 招到西雅圖的總部,但是,Jim Gray 不喜歡西雅圖的天氣,于是,微軟專門在舊金山給 Jim Gray 建了一個單獨的研究院。

第四位資料庫領域的圖靈獎得主是 Michael Stonebraker。Michael Stonebraker 不僅是位教授,而且還是不同資料庫公司的創始人,他創立了很多不同類型的資料庫産品,除了 Oracle 和 DB2 以外,絕大部分的資料庫産品,都或多或少與 Michael Stonebraker 有點關系。Michael Stonebraker 最著名的一個資料庫産品就是 Ingres,Ingres 是 Informix、Sybase、SQL Server、PostgresSQL 等一系列産品的前身,Michael Stonebraker 也是在 2014 年獲得了圖靈獎。

關系資料庫發展史

根據下圖的時間線,我們一起回顧下關系資料庫的發展史。

淺談資料庫發展史和 OceanBase 的誕生

1970 年,Edgar F.Codd 首先提出了關系模型。接下來就有兩個關系模型的原型系統。第一個是 IBM 做出來的 System R,第二個是 Michael Stonebraker 上司的 Ingres。IBM 是關系模型的提出者,也是第一個原型系統的實作者,但是 IBM 并沒有抓住關系資料庫商業化的曆史新機遇,反而把機會讓給了一個叫 Larry Ellison 的人,1979 年 Oracle 模仿 IBM 的 System R 做出了第一個商業資料庫版本 Oracle Release 1。直到 1983 年,IBM 的第一個商業資料庫版本 DB2 才姗姗來遲,但是已經錯過了最好的資料庫發展時期。

1987 年,Sybase 和微軟一起做出了 Sybase SqlServer。1989 年,微軟買下了 Sybase SqlServer 的代碼版權,并且形成了一個獨立的 MS SqlServer 的分支。我們今天聽到的 SqlServer 一般指的是微軟的 MS SqlServer。

同一年,著名的開源資料庫 PostgreSQL 也誕生了。

1995 年,MySQL 誕生,MySQL 的創始人叫 Monty。一個非常神奇的事情是,MySQL 早期的主要代碼都是 Monty 一個人貢獻的,而且到今天為止,Monty 仍然保持着寫代碼的習慣。

2004 年,更多的列式資料庫産品,包括 MonetDB、C-Store 也加入到關系資料庫的産品行列。

分布式系統發展

接下來,我們再來看下分布式系統的發展。

分布式系統也是一個相對比較古老的領域。但是直到最近的十幾二十年,分布式系統才由理論變成大規模的工程實踐。對分布式系統工程實踐貢獻最大的公司是 Google,Google 的基礎設施有三駕馬車,分别叫做《Google File System》、《Google MapReduce》以及《Google BigTable》。Google 發表了這三篇論文以後,基本上奠定了業界大規模分布式存儲系統的理論基礎,所有對分布式系統工程實踐感興趣的同學,我建議都去仔細精讀這三篇論文。

淺談資料庫發展史和 OceanBase 的誕生

2005 年,Hadoop 成立,Hadoop 項目的初衷就是做出 Google 三駕馬車的開源實作。

2007 年,Amazon 發表了 Dynamo 的論文,Dynamo 的設計思想也比較有意思,他采用了 P2P 的思想來實作分布式的存儲,裡面用到了包括一緻性 Hash、NWR 等一系列非常有意思的技術。當然了,最終 P2P 的技術因為沒有辦法保證強一緻性,并沒有成為業界的主流。

2009 年,Spark 項目成立。

2010 年,我所在的 OceanBase 項目成立。OceanBase 團隊是分布式資料庫的信仰者、實踐者,OceanBase的定位是原生分布式資料庫,以追求成為分布式資料庫的上司者為目标。

2011 年,另外一個雲計算的巨頭微軟,釋出了 Windows Azure Storage。

2012 年,Google Spanner 發表了論文,Spanner 是全球第一個 Global Database,采用了 TrueTime、Paxos和兩階段送出等一系列分布式的技術來實作了一個全球級别、可無限擴充的、強一緻的分布式資料庫。

2016 年,Amazon 釋出了 Aurora,Aurora 是一個存儲計算分離的系統,運作在公有雲之上,它的設計思想很巧妙,它把存儲與計算分離使得可以非常簡單得實作存儲能力的可擴充。Aurora 有個核心的設計理念:The log is the Database。

關系資料庫的經驗教訓

關系資料庫發展了這麼多年,有很多的經驗教訓。

關于經驗,今天我選兩點經驗分享:

第一點:應用驅動創新,應用創新與技術創新相輔相成,互為促進。關系資料庫的很多技術都是應用驅動産生的,這也形成了非常強大的技術生态。

第二點:抽象與标準化,關系資料模型、事務處理模型本身就是最本質的抽象,能夠獲得圖靈獎的一個抽象。關系資料庫裡面也産生了很多的标準,其中最著名的标準是 :SQL 标準和 TPC 測試标準。

早期的商業資料庫也比較混亂,每一家商業資料庫都說自己是最好的。最終 TPC 組織站了出來,制定了 TPC-C、TPC-H 等一系列測試标準,并且采用第三方的專業的審計機構,進行嚴格的審計。TPC 組織使得不同的商業資料庫公司能夠獲得一個公平的、競技的舞台,大家良性競争共同促進。

分布式資料庫-關系資料庫的未來

我堅定認為關系資料庫的未來一定是分布式資料庫。為什麼這麼堅信?因為分布式資料庫能夠完全相容集中式資料庫的使用方法,包括關系模型、事務處理模型和 SQL 标準,并且融合分布式雲原生的先進技術,進而充分享受到分布式的技術紅利,包括高可用、可擴充、低成本、智能等等。

分布式資料庫和集中式資料庫的關系,有點像當年的汽車與馬車,汽車剛出現的時候它并沒有馬車那麼好用,但是我們都知道,随着時代的發展,汽車是一定會逐漸替代馬車的。分布式資料庫也是一樣,因為分布式資料庫能夠完全相容集中式資料庫,包含集中式資料庫的能力,并且具備更好的擴充能力。是以,分布式資料庫未來也一定能夠替代集中式資料庫。

企業級分布式資料庫 OceanBase

剛剛提到我們堅信分布式資料庫的時代正在到來,接下來為大家介紹我們打造的這款企業級分布式資料庫——OceanBase。

OceanBase 是一個透明可擴充的企業級資料庫,底層是一個原生的分布式架構,這樣的設計,可以讓使用者充分享受到分布式技術的技術紅利,包括:

高可用:RPO = 0,RTO < 30秒,最高支援三地五中心部署,這也就意味着,當一台伺服器、一個機房甚至一個城市發生故障的時候,OceanBase 都能夠在 30s 内恢複,完全不丢資料;

透明擴充:完備的分布式事務、分布式查詢、全局二級索引和全局一緻性支援;

全球唯一通過 TPC-C 測試審計的分布式資料庫,事務處理性能達到 7.07 億 tpmC,比競品高一個數量級;

從使用者的角度來看,OceanBase 相容傳統的企業級資料庫,相容 MySQL/Oracle的文法、企業級功能,具備與 Oracle 對标的高效處理混合負載的能力。OceanBase 已經支撐螞蟻集團&網商銀行所有核心業務的100%流量,支撐銀行、保險、證券、營運商、公共事業等多個關系到國計民生的行業的重要客戶的核心系統。

剛剛提到,OceanBase 誕生于2010 年,立項之初,我們的目标是做出一個原生的分布式資料庫,業界并沒有參考方案,這樣的背景成就了 OceanBase 從0到1,100%自主研發。2010 年到 2014 年,OceanBase 在阿裡巴巴的電商平台應用推廣,服務了幾十個電商平台的業務系統。2014 年,OceanBase 支撐了當年雙 11 的峰值,這也實作了 OceanBase 核心交易類場景的 0 的突破。

淺談資料庫發展史和 OceanBase 的誕生

接下來的 3 年時間, 支付寶包括交易、支付、賬務會員在内的所有的核心業務都是使用 OceanBase。

2017 年,OceanBase 第一次走出阿裡巴巴,走出螞蟻集團,開始對外商業化,南京銀行是第一家運作在 OceanBase 上的外部客戶。

2019 年,OceanBase 第一次參加 TPC-C 測試,取得 6088萬 tpmc 的成績,打破了原先的世界記錄。

2020 年,OceanBase 再次參加 TPC-C 測試,取得了 7.07 億 tpmc 的成績。同年,OceanBase 正式進行獨立公司化運作,成立北京奧星貝斯科技有限公司,緻力于分布式關系資料庫 OceanBase 的設計、研發、銷售、服務等,助力客戶實作分布式架構轉型。

以上就是資料庫曆史的簡單介紹以及 OceanBase 誕生的曆史。

OceanBase 大力布道分布式資料庫技術

作為全球唯一經過大規模金融場景長時間考驗的分布式關系資料庫,OceanBase 在技術領域不斷深耕的同時,也十分注重推動開發者生态的發展。OceanBase CEO 楊冰表示,“我們始終堅定地相信分布式資料庫就是未來的主流。OceanBase 有着十餘年的專業技術積累,正在不斷通過自身實踐來加速新的資料庫生态的建立,以幫助開發者更好地成長,也幫助 DBA 實作轉型,培養更多的分布式資料庫人才。”

2020 年 8 月上線開發者線上社群,OceanBase 技術團隊首次集中展示分布式資料庫技術幹貨。同時積極推動線下的技術布道,延續去年的全國巡回技術論壇,今年 9 月 20 日在上海舉辦以“深入分布式資料庫:事務·高可用·雲原生”為主題的 Meetup,吸引了上百位開發者現場參與,超過四千人觀看直播,并引發熱烈探讨。

10 月,OceanBase 團隊發起 OceanBaseDev 社群,旨在建立并維系一個面向分布式資料庫技術的社群,為關注分布式資料庫技術的愛好者們提供技術交流、分享、探讨的空間。OceanBaseDev 将繼續大力推動線上線下的技術分享、邀請業界大牛來一同切磋,當然,創造更多的玩法也是我們想做的。