本文作者
:
楊傳輝(花名:日照)螞蟻集團資深總監、OceanBase 研發總經理,全面負責 OceanBase 研發工作。作為 OceanBase 創始成員和首席架構師,主導了技術架構設計,實現分散式資料庫在核心金融場景零的突破,完成螞蟻集團核心資料庫100%上 OceanBase,主導 OceanBase TPC-C 測試並打破世界紀錄。曾在百度負責雲端儲存與雲端計算系統研究工作,著有專著《大規模分散式儲存系統:原理與實踐》。
本文主要介紹資料庫的發展,帶大家共同回顧這一歷史程式,也將首次揭秘 OceanBase 誕生的故事。
首先,什麼是資料庫。顧名思義,資料庫是按照資料結構來組織、儲存和管理資料的倉庫。歷史上曾經出現過層次資料庫、網狀資料庫以及關聯式資料庫。
如今,關聯式資料庫成為業界的主流。關聯式資料庫的全稱是 Relational Database Management System,簡稱叫 RDBMS。一般來講,關聯式資料庫主要應用在核心行業的核心業務場景,也就是我們經常說的 Mission-critical 場景,涉及到人、財、物等需要精確管理等應用。
關聯式資料庫有一個第一定律,那就是永遠不要丟失任何一條資料。
-
關係模型,也就是我們經常聽到的表格、索引、外來鍵、正規化等;
-
事務處理,也就是事務的 ACID,
原子性(Atomicity)、一致性(Consistency)、隔離性(Isolation)、永續性(Durability);
-
查詢最佳化,也就是 SQL 的解析、改寫、最佳化、執行等等。
(圖片來自網際網路)
資料庫技術的繁榮發展,也得益於很多優秀的科學家。資料庫領域有四點陣圖靈獎得主,第一點陣圖靈獎得主是 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 年獲得了圖靈獎。
根據下圖的時間線,我們一起回顧下關聯式資料庫的發展史。
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 發表了這三篇論文以後,基本上奠定了業界大規模分散式儲存系統的理論基礎,所有對分散式系統工程實踐感興趣的同學,我建議都去仔細精讀這三篇論文。
2005 年,Hadoop 成立,Hadoop 專案的初衷就是做出 Google 三駕馬車的開源實現。
2007 年,Amazon 發表了 Dynamo 的論文,Dynamo 的設計思想也比較有意思,他採用了 P2P 的思想來實現分散式的儲存,裡面用到了包括一致性 Hash、NWR 等一系列非常有意思的技術。當然了,最終 P2P 的技術因為沒有辦法保證強一致性,並沒有成為業界的主流。
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 是一個透明可擴充套件的企業級資料庫,底層是一個原生的分散式架構,這樣的設計,可以讓使用者充分享受到分散式技術的技術紅利,包括:
-
高可用: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 的突破。
接下來的 3 年時間, 支付寶包括交易、支付、賬務會員在內的所有的核心業務都是使用 OceanBase。
2017 年,OceanBase 第一次走出阿里巴巴,走出螞蟻集團,開始對外商業化,南京銀行是第一家執行在 OceanBase 上的外部客戶。
2019 年,OceanBase 第一次參加 TPC-C 測試,取得 6088萬 tpmc 的成績,打破了原先的世界記錄。
2020 年,OceanBase 再次參加 TPC-C 測試,取得了 7.07 億 tpmc 的成績。同年,OceanBase 正式進行獨立公司化運作,成立北京奧星貝斯科技有限公司,致力於分散式關聯式資料庫 OceanBase 的設計、研發、銷售、服務等,助力客戶實現分散式架構轉型。
以上就是資料庫歷史的簡單介紹以及 OceanBase 誕生的歷史。
作為全球唯一經過大規模金融場景長時間考驗的分散式關聯式資料庫,OceanBase 在技術領域不斷深耕的同時,也十分注重推動開發者生態的發展。OceanBase CEO 楊冰表示,“我們始終堅定地相信分散式資料庫就是未來的主流。OceanBase 有著十餘年的專業技術積累,正在不斷透過自身實踐來加速新的資料庫生態的建立,以幫助開發者更好地成長,也幫助 DBA 實現轉型,培養更多的分散式資料庫人才。”
2020 年 8 月上線開發者線上社群,OceanBase 技術團隊首次集中展示分散式資料庫技術乾貨。同時積極推動線下的技術佈道,延續去年的全國巡迴技術論壇,今年 9 月 20 日在上海舉辦以“深入分散式資料庫:事務·高可用·雲原生”為主題的 Meetup,吸引了上百位開發者現場參與,超過四千人觀看直播,並引發熱烈探討。
10 月,OceanBase 團隊發起 OceanBaseDev 社群,旨在建立並維繫一個面向分散式資料庫技術的社群,為關注分散式資料庫技術的愛好者們提供技術交流、分享、探討的空間。OceanBaseDev 將繼續大力推動線上線下的技術分享、邀請業界大牛來一同切磋,當然,創造更多的玩法也是我們想做的。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/69909943/viewspace-2730385/,如需轉載,請註明出處,否則將追究法律責任。