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