80歲Postgres創始人、資料庫領域“祖師爺”想顛覆資料庫設計

pgccc發表於2023-12-28

80歲Postgres創始人、資料庫領域“祖師爺”想顛覆資料庫設計

原文連結:https://mp.weixin.qq.com/s/NCqcDvcmXarp3UT1vG80-Q

編譯 | 核子可樂、Tina

剛剛過完 80 歲生日的 Michael Stonebraker 沒打算退休,近年來他又開始了新的嘗試,希望再一次改變世界。

相較於目前在作業系統之上執行資料庫的通行作法,如果我們反其道而行之,在資料庫之上構建作業系統,結果又會如何?這聽起來似乎是初學者在喝多了之後的胡言亂語,但實際上卻是經過審慎考量的結論。這一嚴肅思路來自這點陣圖靈獎獲得者、這位已經顛覆了計算行業的先驅。

Michael Stonebraker 在資料庫領域具有相當重要的地位。有人戲稱 Stonebraker 是資料庫領域的“祖師爺”:“賞了無數人飯吃的那種”。透過一系列學術原型和商業初創公司,Stonebraker 的研究和產品成為當今市場上許多關聯式資料庫系統的核心。

70 年代的 Ingres 和 80 年代的 Postgres 影響了幾乎所有普通從業者所聽過的資料庫系統,列儲存的 C-Store 論文演變成了 Vertica 。記憶體的 H-Store 論文演變成了 VoltDB 。Vertica 和 VoltDB 在商業市場上也極為成功。2014 年,Stonebraker 因其對 Ingres 和 Postgres 的巨大貢獻而獲得圖靈獎。

現在,Stonebraker 創立的公司在五年之內取得了突破性進展,後續還將有更多顛覆性思路逐一落地。

從 Ingres 到 Postgres

雖然年過 80 歲,Stonebraker 仍在繼續自己的資料庫研究工作,他給技術行業留下的最大財富就是 PostgreSQL。PostgreSQL 是一套開源關聯式資料庫系統,並在 2023 年的 Stack Overflow 調查中成為開發者們最喜愛的資料庫選項。除了作為高人氣開源 DBMS 之外,各家雲超大規模運營商、CockroachDB 以及 YugabyteDB 等廠商也都在提供與 PostgreSQL 前端相相容的資料庫服務。

Stonebraker 的擁有廣泛影響力的成果,是早期關聯式資料庫系統 Ingres,即他 1971 年擔任加州大學伯克利分校助理教授時的研究課題。

在採訪當中,他表示“我的博士論文字打算從特定角度討論馬爾可夫鏈,但我很快意識到這沒有任何實際價值。後來我前往伯克利,那邊要求新人在五年之內鑽研新課題以爭取終身教職。我知道馬爾可夫鏈實在沒什麼意思,於是伯克利大學另一位教員 Eugene Wong 提議,「我們們為什麼不研究研究資料庫呢?」”

二人閱讀了 IBM 研究員 Edgar Codd 當時提出的一項關於關聯式資料庫的提案,名為《一種大型共享資料庫的資料關係模型》。

Stonebraker 和 Wong 為這位英國人優雅而簡潔的思路而折服。“接下來的工作就很明確了,嘗試根據這樣的資料關係建立一套關聯式資料庫系統。雖然 Eugene 和我都沒有構建系統軟體的經驗,但作為學者,我們都覺得不妨一試、看看能做到什麼程度。於是我們兩個說幹就幹,開始構建 Ingres,我也最終藉此在高校中獲得了終身教職。”

Ingres 並非沒有競爭對手。IBM 的 System R 才是第一套嘗試採用關係方法實現可用事務效能的系統,還最早實現瞭如今大名鼎鼎的 SQL 方法。與此同時,甲骨文也在上世紀 70 年代後期嘗試開發關係系統。再有,Ingres 還必須克服平臺方面的問題。

他回憶道,“當時有很多人造訪伯克利,並問我們 Ingres 的最大使用者是誰。後來亞利桑那州立大學希望用 Ingres 來管理包含 3.5 萬名學生的記錄資料庫,但卻發現 Ingres 沒辦法在貝爾實驗室提供的作業系統之上正常執行——這套系統就是 Unix。”

Ingres 的目標市場定位於中端,而 Unix 在這一領域中剛剛出現,因此並不支援當時商業計算領域的主導語言 COBOL。

Stonebraker 表示,“的解決辦法,就是創辦一家公司。”

於是他繼續為關聯式資料庫技術、特別是 Ingres 的商業化發展而努力。這家後來被更名為 Ingres Corporation 的公司於 1990 年被 ASK Corporation 收購,ASK 又於 1994 年被 Computer Associates 收購。伯克利 Ingres 團隊的另一位成員 Robert Epstein 隨後創立了 Sybase,這家企業曾有十年在全球關聯式資料庫市場排名中僅次於甲骨文。1992 年,其產品線被授權給微軟,相關技術被引入早期版本的 SQL Server。

但 Stonebraker 不得不承認 Ingres 的商業程式碼庫要遠遠領先於開源研究專案,畢竟其他研究人員只需要支付象徵性的費用(其中還包括儲存軟體所使用的磁帶和寄送費用)就能獲取開原始碼。因此,他的團隊決定推倒重來,在 Ingres 之後重新打造一款真正強大的開源關聯式資料庫——這就是 Postgres。

新的時代

時間來到 1986 年,Stonebraker 與 Larry Rowe 共同撰寫了一篇 28 頁的論文,正式公佈了 Postgres 資料庫的設計,同時提出六項指導性目標。其中有兩條直接決定了這套資料庫系統的長久存續——其一是為複雜物件提供更好的支援,其二是為資料型別、運算子和訪問方法提供使用者可擴充套件空間。

Stonebraker 在採訪中指出,透過與 Ingres 客戶的交流,他意識到可擴充套件性對於未來資料庫的成功非常重要。“有一次,這位客戶打電話過來,告訴我「你的時間系統全都是錯的」。”

這可把這位伯克利教授搞懵了,畢竟他帶領的團隊可是竭盡全力保證在資料庫內正確實現了儒略曆、閏年等設計。然而,某些金融債券的償付週期是把一年視為 360 天、每個月則是均等的 30 天。對此 Ingres 根本無法實現,但在 PostgreSQL 中可以。

此外,增強資料庫可擴充套件性還是為了支援新的資料型別。Ingres 中的一個早期專案就試圖存放地理資訊資料,而這明顯背離了其管理業務資料的既定思路。Stonebraker 坦言,Ingres 在這類用例中“速度非常緩慢且無法修復”。

經過十年的努力,這個正確但卻無比艱難的選擇終於帶來回報。十年之前,PostgreSQL 新增了對 JSON 文件的支援,即 NoSQL 資料庫 MongoDB 和 Couchbase 所採用的檔案格式。

Stonebraker 此前曾公開批評過 NoSQL 運動。他在採訪中強調,NoSQL 正在與關聯式資料庫融合,因為二者均採用 SQL 或者類 SQL 語言,而且能夠滿足一致性方面的需求。

“NoSQL 最大的亮點就在於開箱即用的體驗。畢竟在使用 SQL 資料庫時,大家首先需要完成資料庫構建、之後再定義 cursor 遊標,整個過程非常困難。這也是當時 SQL 資料庫最受詬病的一點,開箱即用體驗特別差勁。我們應該可以直接開啟,馬上使用裡面的資料。”

而面向 PostgreSQL 及其他相容資料庫的各類服務,在一定程度上解決了這個問題。不過這款開源 DBMS 系統的真正流行完全是個意外,Stonebraker 認為自己並沒在推廣上做過多少努力。

Stonebraker 在 1992 年創立 Illustra 時就意識到,雖然儘管這套資料庫的研究程式碼曾經、現在也仍然開源,但以此為基礎建立一家資料庫公司並不現實。“當時我們為 Ingres 和 Postgres 申請風險投資時,投資方都沒有將開源視為注資的理由。開源的投資吸引力到後來才逐漸體現出來。”

2005 年,Stonebraker 創立了 Vertica,這是一家專為資料倉儲提供非共享、面向列的 DBMS 的公司。他現在認為“如果選擇開源,那麼 Vertica 的發展會更加順利。但開源專案在風險投資領域的爆紅是近年來才有的現象,當時根本無法預見。”

“閉源資料庫不符合時代發展趨勢”

Illustra 公司也曾擁有自己的輝煌歲月。據《福布斯》雜誌 1997 年的報導,該公司於 1996 年以約 4 億美元價格被 Informix 所收購,其中 Stonebraker 持有的股份價值 650 萬美元。Stonebraker 隨後還在 Informix 母公司擔任了四年 CTO。

雖然 650 萬美元已經相當可觀,但與 Larry Ellison 高達 1450 億美元的淨資產估值相比,只能算是小菜一碟。不用說,Stonebraker 對於關係模型的另一位早期採用者甲骨文也是評價不高。“Ingres 一直在技術層面上佔優,而 Postgres 則更進一步。它不僅更靈活,而且是開源專案。從當下來看,PostgreSQL 與 Oracle 資料庫的效能大致相當。我認為閉源資料庫不符合時代發展的趨勢,畢竟 Oracle 資料庫價格很高而且不太靈活。”

儘管如此,甲骨文的技術選型仍然推動了開源 PostgreSQL 的發展。甲骨文買下了開源 MySQL,但社群中的不少成員拒絕接受這樣一款軟體被掌握在專有軟體巨頭手中。於是在 Illustra 等廠商將 Postgres 商業化的同時,伯克利在 MIT 許可之下發布了 POSTGRES 程式碼,允許其他開發者以此為基礎進行後續開發。

1994 年,伯克利大學畢業生 Andrew Yu 和 Jolly Chen 用 SQL 取代了查詢語言 POSTQUEL。由此誕生的 Postgres95 在更寬鬆的許可下免費開放並接受修改,後續被正式更名為 PostgreSQL。Stonebraker 評論道,“最終,Illustra 獲得了高度關注。而更令人興奮的是,這群我根本不認識的社群成員接過了開源 Postgres 程式碼,並開始進行我毫不知情的修改和設計。這真是一場奇妙的意外。”

“當 MySQL 被甲骨文收購時,開發者們普遍產生了懷疑情緒,並紛紛轉向 PostgresSQL。這又是另外一個預料之外的走向。PostgreSQL 的商業成功固然令人振奮,但整個過程實屬偶然。”與此同時,資料庫服務也開始圍繞 PostgreSQL 不斷髮展,使其成為谷歌(AlloyDB 和 CloudSQL)、微軟(Azure PostgreSQL)、亞馬遜雲科技(Aurora 和 RDS)CockcroachDB、YugabyteDB、EDB 和 Avien 等系統最主要的相容前端。

“隨著整個世界開始向雲端遷移,谷歌、亞馬遜和微軟也紛紛開始向 PostgreSQL 相容性靠攏。我覺得這是個好主意。CockroachDB 就與 PostgreSQL 實現了 wire-compatible 相容。大家可以挑選一款 PostgreSQL 應用程式,再把它直接放進 CockroachDB。PostgreSQL 沒有任何分散式資料庫功能,但 YugabyteDB 和 CockroachDB 都有。”

Stonebraker 的影響力甚至在競爭對手甲骨文的產品組合中有所體現。他打造的聯合資料庫 Mariposa 成為 Cohera 的基礎,後者是甲骨文於 2001 年收購的 PeopleSoft 開發的資料庫,並於 2004 年成為 Oracle 資料庫中的一部分。2014 年,Stonebraker 因其對 Ingres 和 Postgres 的巨大貢獻而獲得圖靈獎,從谷歌手中接過 100 萬美元獎金。

儘管 Stonebraker 的很多理念在資料庫行業得到了廣泛認可(Gartner 稱該行業在 2022 年的總值達到 910 億美元),但他從來沒想過要把這些思路看作只屬於自己的成果。

“我的財務狀況一直不錯。我認識 Ted Codd,並從那裡學到了管理技術構思的方法。畢竟我們的目標是改變世界,而每個人都只是其中非常有限的參與者。我一直堅持與其他參與者共享開原始碼,過程當中也獲得了不錯的財務回報。所以我一點也不覺得後悔。”

DBOS 怎麼顛覆資料庫設計

更重要提,Stonebraker 壓根沒考慮過退休。憑藉最新專案,他正準備再一次改變世界。DBOS(面向資料庫的作業系統)的理念來自 Stonebraker 與 Apache Spark 作者 Matei Zaharia 的對話。Zaharia 同樣是伯克利大學副教授,也是分析和機器學習廠商 Databricks 的聯合創始人。

Stonebraker 解釋道,“Spark 和 Databricks 的主營業務,就是管理雲端 Spark 例項。Zaharia 提到,Databricks 隨時隨地都在為不同使用者管理數百萬個 Spark 例項,而傳統作業系統的排程能力根本不足以支撐這樣的需求。因此,他們需要可擴充套件性更強的方案。而最顯而易見的答案,當然就是把所有排程資訊都放進資料庫。Databricks 的開發團隊就是這麼做的:他們把所有內容都放進 PostgreSQL 資料庫中,並發現 Postgres 的效能有點跟不上。”

於是向來樂於接受挑戰的 Stonebraker 決定,“那我們們就把問題解決好。”

新專案嘗試利用新的作業系統棧替代 Linux 和 Kubernetes,其底層為資料庫系統,原型則是 Stonebraker 發起的多節點、多核心、事務性、高可用 VoltDB。

“簡單來講,這裡的作業系統成為資料庫的具體應用,而不像傳統上資料庫作為作業系統的具體應用。”


80歲Postgres創始人、資料庫領域“祖師爺”想顛覆資料庫設計


Stonebraker 與 Zaharia 等人共同撰寫的論文對此做出具體解釋,“所有作業系統狀態都應統一表示為資料庫表,並應透過來自其他無狀態任務的查詢對該狀態進行操作。這樣的設計能夠讓作業系統擁有更靈活的擴充套件和開發空間。無需對整個作業系統進行重構、無需檢查和排程系統狀態、也無需停機即可升級元件;同時配合機器學習來管理決策,並實現複雜的安全功能。”

無論成功與否,作業系統即資料庫應用的思路可能只是 Stonebraker 人生新階段中的又一次嘗試。哪怕是今年 10 月年滿 80 歲,他也一刻沒有放慢過探索的腳步。

“我無法想象每週拿出大段的時間去打高爾夫或者以其他的形式浪費掉。我喜歡我做的一切,只要腦力還跟得上,我就絕不會退出。”



#PG資料庫工程師的搖籃#PostgreSQL考試#PostgreSQL#PGCCC

80歲Postgres創始人、資料庫領域“祖師爺”想顛覆資料庫設計


來自 “ ITPUB部落格 ” ,連結:https://blog.itpub.net/69998444/viewspace-3001911/,如需轉載,請註明出處,否則將追究法律責任。

相關文章