近年來大家可能都有這樣一種感受:與程式語言市場不同,資料庫市場的競爭激烈異常——一線的在停滯甚至下墜,二線的正在反超。有種種跡象顯示: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 的好處:
#支援多種可用於商業解決方案的效能最佳化,包括地理空間資料支援、無讀鎖並發等,被廣泛應用於大型系統;
對於需要執行複雜查詢的系統最為有利;
例如,專注軟體開發者的行業分析公司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!