MySQL弊端凸顯,PostgreSQL將取而代之?

来源:https://www.cnblogs.com/88223100/archive/2022/12/02/MySQL-has-obvious-disadvantages-and-PostgreSQL-will-take-its-place.html
-Advertisement-
Play Games

近年來大家可能都有這樣一種感受:與編程語言市場不同,資料庫市場的競爭激烈異常——一線的在停滯甚至下墜,二線的正在反超。有種種跡象表明:MySQL 這個流行榜上的榜一大哥,正在逐漸淡出專業開發者的視野。再見 MySQL,可能不再只是一個嘩眾取寵的梗了! ...


 

 

近年來大家可能都有這樣一種感受:與編程語言市場不同,資料庫市場的競爭激烈異常——一線的在停滯甚至下墜,二線的正在反超。有種種跡象表明: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 只是時間的問題。

 

一、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 的成功是與時代背景分不開的。當時互聯網已經得到廣泛認可,每個人都需要這樣的資料庫,用它創建互聯網所需要的數據。彼時的技術巨頭對於互聯網持觀望態度,所以這是個有待開發的藍海市場。

 

二、停滯的背後

 

當藍海變紅,為互聯網而生的 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 都是最有利的選擇。

 

三、走學院派路線的 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 不依賴任何單一供應商。單一商業供應商將永遠無法跟上開源項目在文檔更新等層次上所能提供的變化速度。

 

四、簡單、容易壓倒一切

 

回顧 MySQL 的發展,因互聯網而生,也成就了互聯網。那個年代,“簡單”、“容易”壓倒一切。技術日新月異,但這種背後的邏輯,放到現在依舊適用。

 

PostgreSQL 可能不是最佳的選擇,但對於企業決策者而言,它是最便捷容易的那個。企業內部的種種已經習慣了關係資料庫,如果想要放棄昂貴的商業資料庫的管理者而言,PostgreSQL 是一個“簡單的按鈕”。

 

正如 EDB 首席執行官 Ed Boyajian 提到的,大多數公司都不想提升和改變,但他們正在使用 PostgreSQL 作為他們的綠地,因為他們已經擁有內部的 SQL/關係型技能,這些技能是在使用 Oracle、SQL Server 和 DB2 的幾十年中積累起來的。

 

五、再見,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

  • https://baijiahao.baidu.com/s?id=1738296451765471179

 

作者丨雲昭、千山

本文來自博客園,作者:古道輕風,轉載請註明原文鏈接:https://www.cnblogs.com/88223100/p/MySQL-has-obvious-disadvantages-and-PostgreSQL-will-take-its-place.html


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 一、序言 在日常一線開發過程中,多表連接查詢不可或缺,基於MybatisPlus多表連接查詢究竟該如何實現,本文將帶你找到答案。 在多表連接查詢中,既有查詢單條記錄的情況,又有列表查詢,還有分頁查詢,這些需求與多表連接是什麼關係,又該如何實現,這是本文討論的中心內容。 二、實戰編碼 1、兩個關聯DO ...
  • 本文講解二維碼的生成與解碼:使用Python工具庫qrcode『構建二維碼』,使用cv2和pyzbar兩類工具庫『解碼二維碼』。二維碼是目前最常使用的快捷信息存儲方式之一,讀完本篇即可掌握這一必備技能! ...
  • 有一個煤礦項目,使用iNeuOS系統時有一個需要是:要統計設備的運行時長,進一步統計設備運行效率。主要是有效分析設備運行狀態,合理的進行節能。iNeuOS本身具備強大的腳本能力,需要現場實施人員有一定腳本編寫能力,如果不具備腳本編寫能力,那麼下麵的模板修改相應的參數即可。 ...
  • 前言:本系列是我自己學習.net相關知識,以便跟上.net跨平臺的步伐,目前工作原因基本在.net Framework4.7以下,所以才有了這一系列的學習總結,但是並不是從基本的C#語法和基礎知識開始的,而是圍繞.net core以後平臺的重要設計和差異進行溫故知新。目的在於通過要點的梳理最後串聯起 ...
  • Linux 基礎-新手必備命令 概述 常見執行 Linux 命令的格式是這樣的: 命令名稱 [命令參數] [命令對象] 註意,命令名稱、命令參數、命令對象之間請用空格鍵分隔。 命令對象一般是指要處理的文件、目錄、用戶等資源,而命令參數可以用長格式(完整的選項名稱),也可以用短格式(單個字母的縮寫), ...
  • 1 hadoop-最全最完整的保姆級的java大數據學習資料 大數據技術解決的是什麼問題? 大數據技術解決的主要是海量數據的存儲和計算。 Hadoop的廣義和狹義之分 狹義的Hadoop:指的是一個框架,Hadoop是由三部分組成:HDFS:分散式文件系統--> 存儲; MapReduce:分散式離 ...
  • 學習中的思考 在 mysql 學習和使用中,我遇到了不少的難題,我覺得我應該形成一套邏輯思考體系,可以讓我在初識 mysql 的過程中加入理性思考,從一開始就探求原理,瞭解所學內容的核心和關鍵點,做到一葉知秋而不是只見樹木不見森林。 mysql 幾種數據類型的底層是如何存儲的,不同的 sql 語句對 ...
  • 緣起 StoneDB 在列式存儲引擎 Tianmu 的加持下,在大多數場景下相對 MySQL 都會有大幅性能提升。當然,這是需要工程師不斷優化代碼才能做到的,而且,性能好也需要通過基準測試才有說服力,所以我們也會針對 TPC-H 的測試語句進行測試排查,爭取不斷提升 StoneDB 的性能。本文主要 ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...