从Steinar Gunderson的离职信谈起
12月5日Steinar Gunderson在博客上發的那封離開Oracle Mysql優化器研發團隊,返回老東家谷歌的離職感言注定是會掀起軒然大波的,因為這又會刺激到很多人脆弱的神經。Steinar H. Gunderson在業界也只能算是個小人物,他加入到Mysql優化器研發團隊之前在谷歌從事離線圖像搜索工作,這回又回到谷歌,加入chrome團隊。不過如果仔細研究過Steiner的簡歷后發現他雖然從事的工作不多,但是都是極為強大的,比如說為國際象棋世錦賽提供實時分析預測的那個超級計算程序也出自他的手。我想他在Mysql優化器研發團隊中的角色應該也是一個重要骨干。
在Oracle這的幾年可能Steinar積壓了太多的怒火,他同時在reddit,sesse.net,the register,Hacker News等多個網站上發布了這個博客,并且引起了一大批Mysql的擁躉和反對者在上面論戰。
我是今天收到了一個朋友發來的一篇中文的文章才了解到這件事的,隨后到各大網站去看了看。發現谷歌搜索搜出來的大多數是中文的文章,英文的文章很少,而且大多數是轉述該博文,并未做任何的評論和分析。下面我首先全文轉發一下這篇不是很長,但是充滿抱怨的博文。如果你沒有興趣讀大段的英文,那么你完全可以跳過,看后面的谷歌翻譯的中文。
貼出原文的目的是我發現看中文的轉述文章會丟失很多細節。從Steiner的博文中,我看到的很多是對MySql項目組的治理感到失望后的激烈反應,并不完全是從理性的技術角度的分析。他加入Mysql優化器項目組是被Oracle官方宣傳的“只有最聰明的人才能加入Oracle的研發團隊”所吸引,但是進入項目組后才發現完全不是這么回事。
為了更加便于大家閱讀,我把谷歌翻譯稱中文的內容也貼出來,雖然翻譯的不完全準確,不過大致可以理解Steiner的意思了。這篇文章已經發布了幾天了,不過Oracle官方并未對此做出任何回應。不過鑒于Steiner只是一個小人物,Oracle官方不予理睬也十分正常。
不過Mariadb的聯合創始人Max Mether在7號回復了Steiner的博文。他的觀點還是很客觀的。翻譯過來的意思是:沒有一個數據庫是完美的。不同的模型,存儲引擎,協議等都證明了這一點。我在數據庫領域工作了十分常長的時間,我已經看到了很多人來了又走了。這是自然規律。這是一場拉鋸戰,有時候你贏,有時候他贏,或者某一方停留在過去。我要說明的是:無論你怎么看,Oracle旗下的Mysql注定是迷失方向的,Mysql在Oracle內部被拋棄并且受到大量的用戶的攻擊。這位工程師的blog正好證明了我以前的對MYSQL的觀點。最后Mether重申:2016年,在MariaDB上,我們幾乎重構了Mysql的代碼,并且編寫了新的存儲引擎,語法,監控,甚至引入了基于機器學習的工作負載分析引擎。這個回復也符合Mether的性格,比較客觀的回應了此事,又不放過在這個時候猛踩Oracle兩腳。
不出所料,在Reddit和Hacker News上,這條博文很快就成為了Mysql和PG擁躉的戰場。出了少量力挺oracle的條目外,其他都是Mysql和PG哪個數據庫更好的辯論。
說實在的,一直在從事和數據庫有關的工作,因此接觸的大多數人都是這個圈子里的。我也曾遇到過很多Mysql的狂熱擁躉:“MYSQL是最好的數據庫,不接受反駁”。Steiner的博文中還特地提到了這類人,認為這類人從來沒有使用過其他數據庫,從而讓他們產生了對Mysql是最好的這樣的執念。
雖然這篇博文充滿了Steiner對團隊的怒火,不過從里面的一些細節我可看到了Mysql的一些隱憂。研發團隊似乎處于一個“平行宇宙”,并且妄自尊大,會讓他們失去向其他先進、創新的技術學習的能力,從而逐漸落后。而團隊中的那種執念也可能會讓整個產品在某條錯誤的道路上越走越遠,并且沒有人會站出來糾正。而Steiner在文中建議的離開Mysql,投入PG的懷抱,他并沒有說出其中的緣由。
作為Mysql團隊曾經的一員,他的上面的這句話是極具殺傷力的,不過他在博文中并沒有談更多的選擇PG替代MYSQL的理由。只是說,如果你的MYSQL用的很好,那么你可以繼續使用,不過如果你有空的時候,也可以抬頭看看柵欄的那一邊,去看看PG數據庫,并且不要帶著對vaccum的執念。
正如Mether所說,沒有任何一個數據庫是完美的,我的觀點也是如此。我們需要根據我們的應用場景和自身的運維能力來選擇合適的數據庫。Mysql也并不像Steiner說的那么不堪,如果你的數據庫規模不大,應用系統開發也相對比較規范,那么使用Mysql可能是一個比較節約投資的選擇。如果你的數據庫很大,不過幾乎所有的SQL都很簡單,都可以通過索引去檢索,那么你也可以十分堅決的使用MYSQL。如果你的SQL十分復雜,很多大表的訪問都無法確保可以通過索引建索少量的行。那么如果你堅持使用MYSQL很可能會遇到巨大的挑戰,這時候PostgreSQL甚至Oracle是更好的選擇。
PG社區創始人之一Bruce MomJian曾經發過一篇博文,講述了不該選擇PG數據庫的6個場景。實際上作為PG社區的大佬,他對PG的感情是相當深的,不過他的博文中十分專業的提出了很多不選擇PG數據庫的原則。這些原則里并無太多技術相關的因素,絕大多數是從企業自身特點和應用場景去考慮問題的。實際上目前普通企業使用的數據庫,超過90%的場景是使用通用數據庫。而不同的通用數據庫的主要差異是在部分語法、并發能力與性能上的,并不是存在技術鴻溝的。企業選擇使用哪種數據庫可以根據自己的應用場景與企業自身的情況去綜合分析,做出決策。正是基于此,在MYSQL/PG兩大陣營中,不乏拋棄某個陣營加入另外一個陣營的例子,比如2016年UBER因為vacuum的問題放棄PG 9.2,轉投Mysql 5.7,不過這種選擇更多的是基于業務特征的選擇,而并不能說明兩種數據庫的技術差異。UBER放棄PG的主要原因是從存儲引擎來考慮的,因為他們的業務大多數都是可以通過索引獲得少量的數據,并且存在大量的UPDATE,因此PG的VACUUM會成為一個無法解決的瓶頸,而MYSQL的BTREE存儲引擎正好契合度很高。而如果你有很多大表掃描的業務需求的時候,MYSQL的BTREE存儲引擎可能就是個噩夢了。曾經有過一個MYSQL的擁躉和我爭論,你完全可以去優化應用的結構,改變用戶的使用習慣,讓應用總是能很好的使用索引。這近乎一種偏執了。和規范性相當好的互聯網業務相比,復雜的企業應用,沒那么容易去把所有的應用都整合為一種簡單的模式。
這次由Steiner引發的論戰其實對我們來說也是一件好事情,在最近這些年里,我們聽到了太多的關于MYSQL的贊譽之詞,甚至我見過的十個企業的IT高管里,至少有8個認為Mysql是他們企業數據庫未來的首選。也許通過這場論戰,會讓這些不太懂數據庫的領導能夠更加客觀的評價數據庫,更加客觀的考慮數據庫選型。在一個企業里只選擇一種數據庫可能不是一個特別好的選擇,根據業務系統的特點去選擇幾種數據庫來支撐企業的IT系統可能是一種更為理智的選擇,雖然運維多種數據庫可能會給企業帶來一些額外的成本。
總結
以上是生活随笔為你收集整理的从Steinar Gunderson的离职信谈起的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: ios 监听一个控制器的属性_iOS 事
- 下一篇: java jceks 密钥_Java中不