主頁 > 資料庫 > MySQL弊端凸顯,PostgreSQL將取而代之?

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

2022-12-03 07:42:36 資料庫

 

 

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

轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/539084.html

標籤:其他

上一篇:解讀數倉中的資料物件及相關關系

下一篇:子查詢優化之 Semi-join 優化 | StoneDB 研發分享 #2

標籤雲
其他(157675) Python(38076) JavaScript(25376) Java(17977) C(15215) 區塊鏈(8255) C#(7972) AI(7469) 爪哇(7425) MySQL(7132) html(6777) 基礎類(6313) sql(6102) 熊猫(6058) PHP(5869) 数组(5741) R(5409) Linux(5327) 反应(5209) 腳本語言(PerlPython)(5129) 非技術區(4971) Android(4554) 数据框(4311) css(4259) 节点.js(4032) C語言(3288) json(3245) 列表(3129) 扑(3119) C++語言(3117) 安卓(2998) 打字稿(2995) VBA(2789) Java相關(2746) 疑難問題(2699) 细绳(2522) 單片機工控(2479) iOS(2429) ASP.NET(2402) MongoDB(2323) 麻木的(2285) 正则表达式(2254) 字典(2211) 循环(2198) 迅速(2185) 擅长(2169) 镖(2155) 功能(1967) .NET技术(1958) Web開發(1951) python-3.x(1918) HtmlCss(1915) 弹簧靴(1913) C++(1909) xml(1889) PostgreSQL(1872) .NETCore(1853) 谷歌表格(1846) Unity3D(1843) for循环(1842)

熱門瀏覽
  • GPU虛擬機創建時間深度優化

    **?桔妹導讀:**GPU虛擬機實體創建速度慢是公有云面臨的普遍問題,由于通常情況下創建虛擬機屬于低頻操作而未引起業界的重視,實際生產中還是存在對GPU實體創建時間有苛刻要求的業務場景。本文將介紹滴滴云在解決該問題時的思路、方法、并展示最終的優化成果。 從公有云服務商那里購買過虛擬主機的資深用戶,一 ......

    uj5u.com 2020-09-10 06:09:13 more
  • 可編程網卡芯片在滴滴云網路的應用實踐

    **?桔妹導讀:**隨著云規模不斷擴大以及業務層面對延遲、帶寬的要求越來越高,采用DPDK 加速網路報文處理的方式在橫向縱向擴展都出現了局限性。可編程芯片成為業界熱點。本文主要講述了可編程網卡芯片在滴滴云網路中的應用實踐,遇到的問題、帶來的收益以及開源社區貢獻。 #1. 資料中心面臨的問題 隨著滴滴 ......

    uj5u.com 2020-09-10 06:10:21 more
  • 滴滴資料通道服務演進之路

    **?桔妹導讀:**滴滴資料通道引擎承載著全公司的資料同步,為下游實時和離線場景提供了必不可少的源資料。隨著任務量的不斷增加,資料通道的整體架構也隨之發生改變。本文介紹了滴滴資料通道的發展歷程,遇到的問題以及今后的規劃。 #1. 背景 資料,對于任何一家互聯網公司來說都是非常重要的資產,公司的大資料 ......

    uj5u.com 2020-09-10 06:11:05 more
  • 滴滴AI Labs斬獲國際機器翻譯大賽中譯英方向世界第三

    **桔妹導讀:**深耕人工智能領域,致力于探索AI讓出行更美好的滴滴AI Labs再次斬獲國際大獎,這次獲獎的專案是什么呢?一起來看看詳細報道吧! 近日,由國際計算語言學協會ACL(The Association for Computational Linguistics)舉辦的世界最具影響力的機器 ......

    uj5u.com 2020-09-10 06:11:29 more
  • MPP (Massively Parallel Processing)大規模并行處理

    1、什么是mpp? MPP (Massively Parallel Processing),即大規模并行處理,在資料庫非共享集群中,每個節點都有獨立的磁盤存盤系統和記憶體系統,業務資料根據資料庫模型和應用特點劃分到各個節點上,每臺資料節點通過專用網路或者商業通用網路互相連接,彼此協同計算,作為整體提供 ......

    uj5u.com 2020-09-10 06:11:41 more
  • 滴滴資料倉庫指標體系建設實踐

    **桔妹導讀:**指標體系是什么?如何使用OSM模型和AARRR模型搭建指標體系?如何統一流程、規范化、工具化管理指標體系?本文會對建設的方法論結合滴滴資料指標體系建設實踐進行解答分析。 #1. 什么是指標體系 ##1.1 指標體系定義 指標體系是將零散單點的具有相互聯系的指標,系統化的組織起來,通 ......

    uj5u.com 2020-09-10 06:12:52 more
  • 單表千萬行資料庫 LIKE 搜索優化手記

    我們經常在資料庫中使用 LIKE 運算子來完成對資料的模糊搜索,LIKE 運算子用于在 WHERE 子句中搜索列中的指定模式。 如果需要查找客戶表中所有姓氏是“張”的資料,可以使用下面的 SQL 陳述句: SELECT * FROM Customer WHERE Name LIKE '張%' 如果需要 ......

    uj5u.com 2020-09-10 06:13:25 more
  • 滴滴Ceph分布式存盤系統優化之鎖優化

    **桔妹導讀:**Ceph是國際知名的開源分布式存盤系統,在工業界和學術界都有著重要的影響。Ceph的架構和演算法設計發表在國際系統領域頂級會議OSDI、SOSP、SC等上。Ceph社區得到Red Hat、SUSE、Intel等大公司的大力支持。Ceph是國際云計算領域應用最廣泛的開源分布式存盤系統, ......

    uj5u.com 2020-09-10 06:14:51 more
  • es~通過ElasticsearchTemplate進行聚合~嵌套聚合

    之前寫過《es~通過ElasticsearchTemplate進行聚合操作》的文章,這一次主要寫一個嵌套的聚合,例如先對sex集合,再對desc聚合,最后再對age求和,共三層嵌套。 Aggregations的部分特性類似于SQL語言中的group by,avg,sum等函式,Aggregation ......

    uj5u.com 2020-09-10 06:14:59 more
  • 爬蟲日志監控 -- Elastc Stack(ELK)部署

    傻瓜式部署,只需替換IP與用戶 導讀: 現ELK四大組件分別為:Elasticsearch(核心)、logstash(處理)、filebeat(采集)、kibana(可視化) 下載均在https://www.elastic.co/cn/downloads/下tar包,各組件版本最好一致,配合fdm會 ......

    uj5u.com 2020-09-10 06:15:05 more
最新发布
  • day02-2-商鋪查詢快取

    功能02-商鋪查詢快取 3.商鋪詳情快取查詢 3.1什么是快取? 快取就是資料交換的緩沖區(稱作Cache),是存盤資料的臨時地方,一般讀寫性能較高。 快取的作用: 降低后端負載 提高讀寫效率,降低回應時間 快取的成本: 資料一致性成本 代碼維護成本 運維成本 3.2需求說明 如下,當我們點擊商店詳 ......

    uj5u.com 2023-04-20 08:33:24 more
  • MySQL中binlog備份腳本分享

    關于MySQL的二進制日志(binlog),我們都知道二進制日志(binlog)非常重要,尤其當你需要point to point災難恢復的時侯,所以我們要對其進行備份。關于二進制日志(binlog)的備份,可以基于flush logs方式先切換binlog,然后拷貝&壓縮到到遠程服務器或本地服務器 ......

    uj5u.com 2023-04-20 08:28:06 more
  • day02-短信登錄

    功能實作02 2.功能01-短信登錄 2.1基于Session實作登錄 2.1.1思路分析 2.1.2代碼實作 2.1.2.1發送短信驗證碼 發送短信驗證碼: 發送驗證碼的介面為:http://127.0.0.1:8080/api/user/code?phone=xxxxx<手機號> 請求方式:PO ......

    uj5u.com 2023-04-20 08:27:27 more
  • 快取與資料庫雙寫一致性幾種策略分析

    本文將對幾種快取與資料庫保證資料一致性的使用方式進行分析。為保證高并發性能,以下分析場景不考慮執行的原子性及加鎖等強一致性要求的場景,僅追求最終一致性。 ......

    uj5u.com 2023-04-20 08:26:48 more
  • sql陳述句優化

    問題查找及措施 問題查找 需要找到具體的代碼,對其進行一對一優化,而非一直把關注點放在服務器和sql平臺 降低簡化每個事務中處理的問題,盡量不要讓一個事務拖太長的時間 例如檔案上傳時,應將檔案上傳這一步放在事務外面 微軟建議 4.啟動sql定時執行計劃 怎么啟動sqlserver代理服務-百度經驗 ......

    uj5u.com 2023-04-20 08:26:35 more
  • 云時代,MySQL到ClickHouse資料同步產品對比推薦

    ClickHouse 在執行分析查詢時的速度優勢很好的彌補了MySQL的不足,但是對于很多開發者和DBA來說,如何將MySQL穩定、高效、簡單的同步到 ClickHouse 卻很困難。本文對比了 NineData、MaterializeMySQL(ClickHouse自帶)、Bifrost 三款產品... ......

    uj5u.com 2023-04-20 08:26:29 more
  • sql陳述句優化

    問題查找及措施 問題查找 需要找到具體的代碼,對其進行一對一優化,而非一直把關注點放在服務器和sql平臺 降低簡化每個事務中處理的問題,盡量不要讓一個事務拖太長的時間 例如檔案上傳時,應將檔案上傳這一步放在事務外面 微軟建議 4.啟動sql定時執行計劃 怎么啟動sqlserver代理服務-百度經驗 ......

    uj5u.com 2023-04-20 08:25:13 more
  • Redis 報”OutOfDirectMemoryError“(堆外記憶體溢位)

    Redis 報錯“OutOfDirectMemoryError(堆外記憶體溢位) ”問題如下: 一、報錯資訊: 使用 Redis 的業務介面 ,產生 OutOfDirectMemoryError(堆外記憶體溢位),如圖: 格式化后的報錯資訊: { "timestamp": "2023-04-17 22: ......

    uj5u.com 2023-04-20 08:24:54 more
  • day02-2-商鋪查詢快取

    功能02-商鋪查詢快取 3.商鋪詳情快取查詢 3.1什么是快取? 快取就是資料交換的緩沖區(稱作Cache),是存盤資料的臨時地方,一般讀寫性能較高。 快取的作用: 降低后端負載 提高讀寫效率,降低回應時間 快取的成本: 資料一致性成本 代碼維護成本 運維成本 3.2需求說明 如下,當我們點擊商店詳 ......

    uj5u.com 2023-04-20 08:24:03 more
  • day02-短信登錄

    功能實作02 2.功能01-短信登錄 2.1基于Session實作登錄 2.1.1思路分析 2.1.2代碼實作 2.1.2.1發送短信驗證碼 發送短信驗證碼: 發送驗證碼的介面為:http://127.0.0.1:8080/api/user/code?phone=xxxxx<手機號> 請求方式:PO ......

    uj5u.com 2023-04-20 08:23:11 more