作者 | 云昭
審校 | 千山
近年來大家可能都有這樣一種感受:與編程語言市場不同,數據庫市場的競爭激烈異常——一線的在停滯甚至下墜,二線的正在反超。有種種跡象表明:MySQL 這個流行榜上的榜一大哥,正在逐漸淡出專業開發者的視野。再見 MySQL,可能不再只是一個嘩眾取寵的梗了!
8 月,StackOverflow 發布的 2022 開發者調查報告中,有這么一組數字:
在專業開發者群體受歡迎排行榜中,PostgreSQL(46.48%)首次超越 MySQL(45.68%)拔得頭籌。專業開發者與初學者的不同之處在于,他們更傾向于選擇 Redis、PostgreSQL、Microsoft SQL Server 和 Elasticsearch。
初學者群體當中,MySQL 也并不樂觀,緊隨其后的 MongoDB 位居第二,占比近1/3。“這很合理,因為它支持大量的語言和應用開發平臺。”
值得一提的是,正在使用 MySQL 的開發者同樣也在考慮、希望或想要使用別的數據庫工作,下圖展示了調查結果。
圖源:StackOverflow
有 11185 名 MySQL 開發者想使用 PostgreSQL 工作,以及 9520 名 MySQL 開發者想使用 MongoDB 工作。
不止 StackOverflow 的報告,根據最新的 10 月 DB-Engines 流行趨勢上看,也可以看見 MySQL 的受歡迎程度已經連續幾年呈現下滑趨勢。
圖源:DB-Engines
可以判斷,如果不出意外,同樣在開源關系型數據庫之列的 PostgreSQL ,超越 MySQL 只是時間的問題。
1.MySQL 在停滯
作為“王者”,MySQL 的榮耀之冠是在互聯網爆發的年代加冕的。在過去的 20 年間,規模和效率成為了互聯網擴張的不宣的“要義”。
經過發展與迭代,將數據庫單純作為存儲,把計算任務交給業務服務器,這種邏輯部署實施起來更為便捷。企業和工程師們紛紛認可了“Linux+Apache+MySQL+PHP”,“LAMP”順理成章地成為了互聯網開發的標桿模式。
彼時剛剛誕生不久的 MySQL,面向“簡單派”互聯網而生的簡約風格,正逢其時。雖然從功能上看,MySQL 并不如其他數據庫占優勢,但反而因為沒有提供很多高級功能,使得簡單易用、開源免費的 MySQL,一舉博得了國內包括騰訊、阿里巴巴這些后來成為巨頭的互聯網公司的好感,成為了早期互聯網 OLTP 領域事實上的標準。而相較之下,一直走“學術派”路線的 PostgreSQL 一直不溫不火。
2009 年,是 MySQL 迎來命運轉折點的一年,甲骨文對剛剛買下 MySQL 的 SUN 出手了。甲骨文面對 MySQL 的興起,不得不說此舉意在采取收購的策略來守好 Oracle 這個大型商業數據庫的護城河。隨后,甲骨文就開始了漲價的套路:大幅抬高了 MySQL 的商業版價格。
同使用 MySQL 免費版本的開發者們一樣,MySQL 創始人 Monty 對其前途感到憂心忡忡,他義憤填膺,卻又無可奈何。
即便時隔十數年,Monty 仍對此事掛懷,MariaDB 就是最好的證明。
回過頭來看,我們看 MySQL 的興起與流行,永遠離不開時代語境。正如 Monty 所言:
MySQL 的成功是與時代背景分不開的。當時互聯網已經得到廣泛認可,每個人都需要這樣的數據庫,用它創建互聯網所需要的數據。彼時的技術巨頭對于互聯網持觀望態度,所以這是個有待開發的藍海市場。
2.停滯的背后
當藍海變紅,為互聯網而生的 MySQL 似乎也迎來了停滯時刻。雖說熱度不減,但與同時代關系型數據庫的競爭者 PostgreSQL 逆勢而上的受歡迎程度相比,難免不會讓人擔憂。
細究之下,大概有這么幾點原因:
首先,被收購之后,MySQL 的開源精神內核被大打折扣。淪為被收購的“后兒子”,不可避免成為邊緣的角色。
據 Monty 回憶,“在甲骨文宣布要收購 Sun 和 MySQL 的時候,我就不相信他們會真正發掘 MySQL 這份寶貴遺產,所以不少優秀的程序員與我們決定一起離開,延續 MySQL 的精神。”
同時,因為 MySQL 而加入到甲骨文的優秀員工,同樣得不到足夠的資源和重視。
去年 12 月,Oracle 公司前首席軟件工程師、MySQL 優化器團隊成員 Steinar Gunderson 離職,他對自己付諸 5 年心血的 MySQL 來了一通回踩:“你能做的也只有這么多。我和團隊其他人所做的改變使得 MySQL 優化器朝著21世紀初期設計的方向發展,并進行了一些不錯的調整,但這也是它的終點了。”無論公司內部如何吹噓,Gunderson 都無法相信 MySQL 會變成一個有競爭力的產品。
可能于甲骨文 MySQL 優化團隊成員而言,缺少了前進的想象空間,是難以言表的痛處。甲骨文當然也有對 MySQL 花費了精力,但諸如微軟 Oracle 云,進行在線分析處理能力之類的縫縫補補的“操作”,離真正的開源數據庫貢獻者的理想有很大差距。
總之,甲骨文收購 MySQL 也許不會停止對于它的研發,但卻已經大大消磨了開發社區的熱情。
其次,數據庫發展的上下文已經發生了改變,MySQL 的高光窗口期可能真的迎來了終章。如前文所說,MySQL 為當時新的網絡而生,各大網站、移動端的發展也到了難以逾越的節點。如今,我們看到行業的發展開始向金融、電信、物聯網、零售、制造等傳統行業傾斜,這些行業與二十年前的互聯網相比,更加注重數據可靠性、安全性、規范性。這些都不是 MySQL 所擅長的。
還有一點,疫情以來,企業基礎設施的現代化要求加速提上議程,旨在讓企業更加靈活,并對快速變化的客戶需求做出反應。而承擔這些項目的全球系統集成商們,往往選擇應用最容易部署的技術,從而為其服務帶來最佳利潤,而這顯然 MySQL 并不在列,原因很簡單,MySQL 是需要付費的,且 MySQL 對于多語言的支持明顯存在自身的瓶頸。
最后,競品環伺,單就關系型數據庫而言,其市場也在發生明顯變化。2014 年起,PostgreSQL 迎來復興時刻,技術分析師將原因可以歸結為四點:豐富的功能集、極易擴展、開源、更好的開源許可證。筆者看來最后一點至關重要。更好的開源許可,背后的意義重大。開源合作的規模越大,每個人獲益就越多。這也是開源精神的核心所在。
PostgreSQL 采用類似 MIT 的許可協議,允許開發人員做任何事情,包括在開源或閉源產品中商用,而 MySQL 的客戶端遵循 GPL 許可協議,所以開發人員必須向 Oracle 付費或者將自己的應用程序開源。從這個層面講,不管出于商用還是其他,PostgreSQL 都是最有利的選擇。
3.走學院派路線的 PostgreSQL
在下一個突破口來臨之前,MySQL 不會更加流行。然而在這之前,PostgreSQL 的二度崛起也只是時間問題。
就在 MySQL 發布不到 14 個月后,PostgreSQL 誕生了。它是由 PostgreSQL Global Development Group 開發的高級開源 RDBMS,它最初于 1996 年 7 月 8 日發布,于 1986 年作為 POSTGRES 項目的一部分在美國加州大學伯克利分校啟動。
PostgreSQL 誕生之初,就被開發者視為“設計理念嚴謹”的“學院派”。用現在流行的說法:MySQL 是為了解決某個業務問題的互聯網野路子,而 PostgreSQL 做的是“以一打十”的“全棧數據庫”。
天生就是一個超融合的系統、成熟、設計精良、專業而包容的社區,PostgreSQL 非常有底氣地標榜自己是“世界上最先進的開源關系型數據庫”,數據分析,時序插件,全文搜索,架構和功能等等方面樣樣在行。
前面我們從開源熱情、行業發展、商用的角度分析了 MySQL 停滯的原因。這里我們以開發者的視角,具體列舉一些 PostgreSQL 的好處:
- 支持多種可用于商業解決方案的性能優化,包括地理空間數據支持、無讀鎖并發等,被廣泛應用于大型系統;
- 對于需要執行復雜查詢的系統最為有利;
- 在商業智能應用程序中表現良好,更適合需要快速讀/寫速度的數據分析和數據倉庫應用程序,因此,它也適用于 OLTP/OLAP 系統;
- 可以在單個產品中存儲結構化和非結構化數據類型,它支持大多數數據類型,比如對 JSON 的支持。多年來 PostgreSQL 的最大創新之一是在其 PostgreSQL 9.2 中引入了生成 JSON 數據功能。
功能強大也許并不是流行的理由。但開發者的喜好發生了變化卻是真是的。
比如,專注軟件開發者的行業分析公司 Redmonk 分析師 James Governor 提到,“目前開發者們有一些 NoSQL 和大數據的疲勞”,因此,開發人員開始使用久經考驗的 PostgreSQL 作為 MongoDB 和 Apache Cassandra 的可行替代方案,用于一些關鍵工作負載。
另外,云計算公司 Joyent 的解決方案工程總監 Elijah Zupancic 也提到了文檔的重要性,“PostgreSQL 也得到了開發者的認可,從他們的角度來看,使用它是一種樂趣,其文檔很精彩,數據類型反映了開發人員的工作類型。”
PostgreSQL 不依賴任何單一供應商。單一商業供應商將永遠無法跟上開源項目在文檔更新等層次上所能提供的變化速度。
4.簡單、容易壓倒一切
回顧 MySQL 的發展,因互聯網而生,也成就了互聯網。那個年代,“簡單”、“容易”壓倒一切。技術日新月異,但這種背后的邏輯,放到現在依舊適用。
PostgreSQL 可能不是最佳的選擇,但對于企業決策者而言,它是最便捷容易的那個。企業內部的種種已經習慣了關系數據庫,如果想要放棄昂貴的商業數據庫的管理者而言,PostgreSQL 是一個“簡單的按鈕”。
正如 EDB 首席執行官 Ed Boyajian 提到的,大多數公司都不想提升和改變,但他們正在使用 PostgreSQL 作為他們的綠地,因為他們已經擁有內部的 SQL/關系型技能,這些技能是在使用 Oracle、SQL Server 和 DB2 的幾十年中積累起來的。
5.再見,MySQL!
說到底,MySQL 已經完成了構建互聯網的使命,因為它的簡單上手;而隨著新的企業發展命題的提出:將傳統行業進行數字化轉型,這就包含“升級基礎設施”、“上云”、“上物聯網”等若干子命題,MySQL 的弊端凸顯,這就不是 MySQL 能輕松搞定的范疇了。不管是集成商還是開發者,選擇更為成熟嚴謹、設計精良、更容易成功的 PostgreSQL 也就不難理解了。
圖源:StackOverflow
過去的近 20 年,MySQL 成為構建互聯網的基石之一,有無數的開發者為之夜以繼日,我們為之賦予應有的榮光。如今,開發者不得不正視 MySQL 的問題:它早已過了體驗巔峰的時刻,而是面臨停滯甚至下墜感的來襲。
數據庫的未來是什么?更穩定,也更動態。Monty 如是說。
向前看,企業和開發者們面臨著新的穩定且動態的需求,就不得不擁抱未來,就不得不在某個時刻,喊出那句曾經有些打趣,現在有些“讖語”味道的嘆息——再見,MySQL!
參考鏈接:
??https://www.infoworld.com/article/3677629/postgres-is-eating-relational.html??
??https://www.zhihu.com/question/20010554/answer/2280773945??
??https://www.36kr.com/p/1957205193170048??
??https://www.zhihu.com/question/31955622/answer/1625152059??