Oracle大佬離職,怒噴MySQL是“糟糕的資料庫”……

語言: CN / TW / HK

在這位工程師看來,PostgreSQL 才是開源 RDBMS 的更好選擇。

資料庫工程師在離職的時候會幹些什麼?拿張賀卡、收起紀念禮品,沒準還有一瓶踐行酒——但今天故事的主角還發了個帖子,對自己研究了五年的技術好好發洩了一番。

Oracle 前首席軟體工程師兼 MySQL 優化器團隊成員 Steinar Gunderson 在帖子中表示自己離職的原因比較複雜,但想在這裡聊幾句“憋了五年的真心話”——“MySQL 是款超爛的資料庫,強烈建議大家認真考慮轉用 PostgreSQL。”

看看 MySQL 之外的廣闊世界

這位如今已經身在谷歌 Chrome 團隊的工程師表示:“使用 MySQL 就像走進了一個平行宇宙,這裡有很多人都由內而外篤信著 MySQL 就是最先進的資料庫產品。但我不行,我的工作經常需要向觀眾們講解優化器的內部工作原理,所以我特別能感受到 MySQL 的種種設計是多麼原始。”

Gunderson 直言 MySQL 的程式碼仍有“很大的改進空間”,“公司管理層也一直支援大規模重構”。他進一步吐槽到:“真正讓我不爽的是那些堅持認為 MySQL 一切良好的傢伙(好像大多數 MySQL 使用者和開發者根本沒怎麼用過其他資料庫)。甚至連 executor 這種令人爆炸的東西——整個一大坨、各種元件功能彼此纏雜在一起——都能被稱為‘高效’(事實正好相反)。”

儘管如此,Gunderson 依然對自己在 MySQL 專案中的貢獻感到自豪,他表示自己參與的 MySQL 8.0 版本確實“比 5.7 版本好得多”,而且仍在持續改進,但“我們能做的也只有這些了”。

“我和同事們一直努力讓 MySQL 優化器能夠達到 2000 年初的標準設計水平,還做出了不少很好的調整,但也就是這樣了。”

“最終,我們發現無論是強大的人才儲備還是 Oracle 決勝雲端的雄心,都不足以為 MySQL 爭取到充足的重構資源、自然無法讓它成為真正具有市場競爭力的產品。”但 Gunderson 也表示不想把 MySQL 貶得一無是處,如果有人正在用 MySQL 而且感覺不錯的話可以繼續。他只是希望大家“能在閒暇的時候偶爾出圈走走,看看 MySQL 之外的廣闊世界”。

MariaDB 也好不到哪裡去?

MySQL 的創造者是 David Axmark 與 Michael Widenius,最初版本可以追溯到 1995 年。而其母公司、瑞典初創企業 MySQL AB 於 2008 年被 Sun Microsystems 收購,Sun 本身又在一年之後被甲骨文招至麾下。

在收購完成之後,Michael Widenius 從 Sun 離職,對 MySQL 進行了分叉,於是有了 MariaDB,同時他另外組建了一支 MySQL 開發團隊。在此之後,MariaDB 就以託管服務 DBaaS 的形式持續釋出著自己的 MySQL 迭代版本。

不過 Gunderson 對 MariaDB 也沒什麼好話。“別覺得 MariaDB 就比 MySQL 好多少。Widenius 和他的團隊是因為不滿於新的治理模式才離開的,而不是因為他們突然醒悟過來、發現自己在程式碼裡埋下了多少混亂和隱患。”

例如,因為沒有模組化設計,分類器需要識別輸入內容來自表掃描還是範圍掃描。而任何不屬於這兩種類別的輸入(包括 joins)都需要經過重大調整。所以如果不重寫查詢,根本無法在現有設計中執行 full outer joins(直到現在 MySQL 也仍然不支援 outer joins,但至少團隊已經意識到並承認這個問題的存在)。還有,“我甚至沒法使用‘切片’系統,這簡直是我在真實世界中見過的最離譜的狀況。”

針對 Gunderson 的吐槽,MariaDB 聯合創始人兼產品管理副總裁 Max Mether 向 TheRegister 迴應稱:“沒有任何一款資料庫是完美的。不同模型、儲存引擎、方言、協議的激增都證明了這一點。”

Max Mether 還說道:“無論你怎麼看,在 Oracle 下的 MySQL 一直沒有‘掌舵人’,在內部幾乎快被拋棄,之前還受到過超大規模的攻擊,而這位工程師的帖子再次強化了我對 MySQL 發生這些事件的看法。”他指出,MariaDB 在 2016 年就完全放棄了之前的 MySQL 程式碼,並引入了新的儲存引擎、方言、監視器,甚至是基於機器學習的工作負載分析。

無硝煙之爭

MySQL 和 PostgreSQL 都是當前全球最受歡迎的資料庫。Gunderson 並沒有具體解釋為什麼同為開源關係資料庫的 PostgreSQL 要比 MySQL 好得多,但他的觀點確實得到了不少從業者的認同。

在不久前舉辦的 Postgres Build 2021 大會上,SIB Visions 公司 CEO Roland Hörmann 就專門探討了如何從 Oralce 專有資料庫遷移至 PostgreSQL 的議題。

Hörmann 的公司專門開發從 Oracle 到 Postgres 的遷移工具,他在採訪中表示“每當有客戶問他該為專案選擇哪種資料庫時,我的回答總是 Postgres;即使是在接觸了 Oracle 二十年之後,我的答案也仍是如此。它開源、易於實現而且越來越好,沒有理由不選擇 Postgres。”

“大家總能在需要時獲得支援;而且在建立資料庫時,只需要配置一次 PostgreSQL conf 檔案,它就能永遠執行。就這麼簡單,雖然期間還是得設定備份之類的功能,但至少不用白白佔用有經驗的資料庫管理員們太多寶貴的時間。”

但換個角度看,這其實不是什麼“二選一”抉擇題。Uber 曾從 MySQL 轉到 PostgreSQL ,最後又從 PostgreSQL 轉到 MySQL,網上也是總是有不少關於 MySQL 對比 PostgreSQL 的爭論。作為兩大主流開源資料庫,MySQL 和 PostgreSQL 的 “戰爭” 從未停止。

前 Airbnb 技術經理、計算機博士朱贇曾對此發表看法,類似 Uber 兩次高調轉型的事情,在她曾經工作過的 Square 公司也發生過。Square 最早使用的是 MySQL,到了 2012 年,由於 PostgreSQL 的各種優勢越來越突出——比如對地理空間(Geospatial)資料和搜尋的支援,當時幾位資深工程師也開始大力倡導,很多新的服務就嘗試性地使用 PostgreSQL。

在她來看,兩者各有特點,有些技術實現在 MySQL 裡更方便一點,另一些則反之。無論哪種資料儲存方式,總有方案可以解決問題,並沒有覺得非要哪一種才行。因此,她認為兩者各有各的優勢和使用場景,並不存在一種資料庫對另一種壓倒性優勢的說法。“對於大部分程式設計師來說,公司用哪個資料庫,基本無需你去決定。加入一個公司的時候,除非是創業公司,或者你是 CTO、VP、總監級別的,否則大部分的技術選型早已應該塵埃落定。尤其是資料庫,一旦選擇,再遷移的代價非常大。因此,除非有顛覆性的優勢或者難以克服的問題,很少有公司會去費時費力做這種大的遷移。”

朱贇還表示,不論是技術選型還是技術轉型,其中不可忽略的因素是:你的工程師更容易駕馭哪一種技術,或者有話語權的決策者們傾向於哪一種技術。這一點其實和程式語言的選型有異曲同工之處。“一個公司如果資料庫從來不出問題,那一定是因為沒有業務量或者流量。所有技術的選型和設計,都有它的應用場景,除去那些讓人開心的案例,剩下的毫無疑問就是坑。如何儘可能地避開這些坑,如何在出現問題的時候可以用最快的速度去修復,這些都是至關重要的因素。”

> > > >

參考資料

  • Steinar Gunderson's blog

    https://blog.sesse.net/blog/tech/2021-12-05-16-41_leaving_mysql.html

  • MySQL a 'pretty poor database' says departing Oracle engineer

    https://www.theregister.com/2021/12/06/mysql_a_pretty_poor_database/

整理丨燕珊、核子可樂

來源丨公眾號:InfoQ(ID:infoqchina)

dbaplus社群歡迎廣大技術人員投稿,投稿郵箱: [email protected]