為什麼PostgreSQL是最成功的資料庫?
當我們說一個資料庫"成功"時,到底在說什麼?是指功能效能易用性,還是成本生態複雜度?評價指標有很多,但這件事最終還得由使用者來定奪。
資料庫的使用者是開發者,而開發者的意願、喜好、選擇又怎麼說 ?StackOverflow 連續六年向來自180個國家的七萬多開發者問了這三個問題。
縱覽這六年資料,不難看出在2022年,PostgreSQL 已經同時在這三項上登頂奪冠,成了字面意義上 “最成功的資料庫”
PG 成為 專業開發者最常使用的資料庫!(Used)
PG 成為 開發者最為喜愛的資料庫!(Loved)
PG 成為開發者最想要用的資料庫!(Wanted)
流行度反映當年的勢能,需求度預示來年的動能,喜愛度代表長期的潛能,時與勢都站在 PostgreSQL 一側。
問為什麼前先說是不是,讓我們來看一看具體的調研結果。
最流行
PostgreSQL —— 專業開發者中最流行的資料庫!
第一項調研,研究開發者目前使用什麼資料庫,即,流行度。
過去幾年,MySQL 一直霸佔著資料庫流行榜的榜首,很符合其 ”世界上最流行的開源關係型資料庫“ 這一口號。不過這次,”最流行“的桂冠恐怕要讓給 PostgreSQL 了。
在專業開發者中,PostgreSQL 以 46.5% 的使用率第一次超過 MySQL 位居第一,而 MySQL 以 45.7% 的使用率降至第二名。同為泛用性最好的開源關係型資料庫,排名第一第二的 PGSQL 與 MySQL ,與其他的資料庫遠遠拉開了距離。
TOP 9 資料庫流行度演變(2017-2022)
PGSQL 與 MySQL 的流行度差別並不大。值得一提的是,在見習開發者群體中,MySQL 仍然佔據顯著的使用率優勢(58.4%),如果算上這些新手初學者,MySQL 仍然保有 3.3% 的微弱流行度領先優勢。
但從下圖中不難看出,PostgreSQL 有顯著的增長動能,而其他資料庫,特別是 MySQL、 SQL Server、Oracle 的使用率則在最近幾年持續衰退。隨著時間的推移,PostgreSQL 的領先優勢將進一步拉大。
四大關係型資料庫流行度對比
流行度反映的是當下資料庫的規模勢能,而喜愛度反映的是未來資料庫的增長潛能。
最喜愛
PostgreSQL —— 開發者最為喜愛的資料庫!
第二個問題是關於開發者喜愛什麼資料庫,討厭什麼資料庫。在此項調研中,PostgreSQL 與 Redis 一騎絕塵,以 70%+ 的喜愛率高居榜首,顯著甩開其他資料庫。
在過去幾年,Redis 一直是使用者最喜歡的資料庫。在 2022 年,形勢發生了變化,PostgreSQL 第一次超過 Redis,成為最受開發者喜愛的資料庫。
Redis是簡單易用的資料結構快取伺服器,經常會與關係型資料庫搭配使用,廣受開發者喜愛。不過這次看起來,開發者還是更偏愛功能更豐富的 PostgreSQL 多一丟丟。
相比之下 MySQL 與 Oracle 的表現就比較拉胯了。喜歡和討厭 MySQL 的人基本各佔一半;而只有35% 的使用者喜歡 Oracle ,這也意味著近 2/3 的開發者反感 Oracle 。
TOP 9 資料庫喜愛度演變(2017-2022)
從邏輯上講,使用者的喜愛將導致軟體的流行,使用者的厭惡將導致軟體過氣。我們可以參照 淨推薦指數(NPS,又稱口碑,推薦者% - 貶損者%)的構造方式, 設計一個 淨喜愛指數 NLS:即 喜愛人群% - 厭惡人群%, 而資料庫流行度的導數應當與 NLS 呈現正相關性 。
資料很好地印證了這一點:PG 有著全場最高的 NLS:44% ,對應著最高的流行度增長率 每年 460 個基點。MySQL 的口碑剛好落在褒貶線上方 (2.3%),流行度平均增速為 36 個基點;而 Oracle 的口碑則為負的 29%,對應平均每年44個基點的使用率負增長。當然在這份榜單上, Oracle 只是倒數第三慘的,最不受人待見的是 IBM DB2 :1/4的人喜歡,3/4的人討厭,NLS = -48% ,對應 46 個基點的年平均衰退。
當然,並不是所有潛能,都可以轉換為實打實的動能。使用者的喜愛並不一定會付諸行動,而這就是第三項調研所要回答的問題。
最想要
PostgreSQL —— 開發者最想使用的資料庫!
“在過去的一年中,你在哪些資料庫環境中進行了大量開發工作?在未來一年,你想在哪些資料庫環境中工作?”
對於這個問題前半段的回答,引出了”最流行“資料庫的調研結果;而後半段,則給出了”最想要“這個問題的答案。如果說使用者的喜愛代表的是未來增長的潛能,那麼使用者的需求就代表了下一年實打實的增長動能。
在今年的調研中, PostgreSQL 毫不客氣地擠開 MongoDB ,佔據了開發者最想使用資料庫的寶座。高達 19% 的受訪者表示,下一年中想要使用 PostgreSQL 環境進行開發。緊隨其後的是 MongoDB (17%) 與 Redis (14%),這三種資料庫的需求程度與其他資料庫顯著拉開了一個臺階。
此前, MongoDB 一直佔據”最想要“資料庫榜首,但最近開始出現過氣乏力的態勢。有多因素,例如,MongoDB 本身也受到了 PG 的衝擊。PostgreSQL 本身就包含了完整的 JSON 特性,可直接用作文件資料庫,更有類似 FerretDB (原名 MangoDB)的專案可以直接在 PG 上對外提供 MongoDB 的 API。
MongoDB 與 Redis 都是 NoSQL 運動的主力軍,而 Redis 的需求也在不斷增長。PostgreSQL 與 Redis,分別作為 SQL 與 NoSQL 的領軍者,保持著旺盛的需求與高速的增長,前途無量。
為什麼?
PostgreSQL 在需求率, 使用率,喜愛率上都拔得頭籌,天時地利人和齊備,動能勢能潛能都有,足以稱得上是最成功的資料庫。
但我們想知道的是,為什麼 PostgreSQL 會如此成功 ?
其實,秘密就藏在它的 Slogan 裡:”世界上最先進的開源關係型資料庫“
關係型資料庫
關係型資料庫是如此的普及與重要,也許其他的資料庫品類如鍵值,文件,搜尋引擎,時序,圖,向量加起來也比不上它的一個零頭。以至於當大家談起資料庫時,如果沒有特殊說明,預設隱指的就是”關係型資料庫“。在它面前,沒有其他資料庫品類敢稱自己為”主流“。
以 DB-Engine 為例,DB-Engine的排名標準包括搜尋系統名稱時的搜尋引擎結果數,Google趨勢,Stack Overflow討論,Indeed 提及系統的工作機會,LinkedIn等專業網路中的個人資料數,Twitter等社交網路中的提及數等,可理解為資料庫的“綜合熱度”。
資料庫熱度趨勢:db-engines.com/en/ranking_trend
在 DB-Engine 的熱度趨勢圖中我們可以看到一條鴻溝,前四名全都是 關係型資料庫 ,加上排名第五的 MongoDB,與其他資料庫在熱度上拉開了 數量級上的差距。
我們只需要把關注點聚焦到這四種核心的關係型資料庫 Oracle,MySQL,SQL Server,PostgreSQL 上即可。
關係型資料庫的生態位高度重疊,其關係可以視作零和博弈。拋開微軟生態關門自嗨相對獨立的商業資料庫 SQL Server 不提。關係型資料庫世界裡上演的是一場三國演義。
Oracle 有才無德,MySQL 才淺德薄,PGSQL 德才兼備
Oracle 是老牌商業資料庫,有著深厚的歷史技術積澱,功能豐富,支援完善。穩坐資料庫頭把交椅,廣受不差錢且需要背鍋俠的企業喜愛。但其費用高昂,且以訟棍行徑成為知名的業界毒瘤。Microsoft SQL Server 性質與Oracle類似,都屬於商業資料庫。商業資料庫整體受開源資料庫衝擊,處於緩慢衰退的狀態。
MySQL 流行度位居第二,但樹大招風,處於前狼後虎,上有野爹下有逆子的不利境地:在嚴謹的事務處理和資料分析上,MySQL 被同為開源生態位的 PostgreSQL 甩開幾條街;而在糙猛快的敏捷方法論上,MySQL 又不如新興 NoSQL 好用;同時 MySQL 上有養父 Oracle 壓制,中有兄弟 MariaDB 分家,下有諸如逆子 TiDB 等協議相容 NewSQL 分羹,因此也在走下坡路。
作為老牌商業資料庫,Oracle 的才毋庸質疑,但其作為業界毒瘤,“德” ,亦不必多說,故曰:“有才無德”。
MySQL 雖有開源之功德,奈何認賊作父;且才疏學淺,功能簡陋,只能乾乾CRUD,故曰“才淺德薄”。
唯有 PostgreSQL,德才兼備,既佔據了開源崛起之天時,又把握住功能先進之地利,還有著寬鬆BSD協議之人和。
正所謂:君子藏器於身,因時而動。不鳴則已,一鳴驚人!
單口開源:PostgreSQL已經甩開MySQL了
PostgreSQL 成功的秘訣就是兩個詞: 先進 與 開源!
開源之德
PG的“德”在於開源。祖師爺級的開源專案,全世界開發者群策群力的偉大成果。協議友善BSD,生態繁榮擴充套件多。開枝散葉,子孫滿堂,Oracle替代扛旗者
什麼叫“德”,合乎於“道”的表現就是德。而這條“道”就是開源。PostgreSQL是歷史悠久的祖師爺級開源專案,更是全世界開發者群策群力的典範成果。
很久很久以前,開發軟體/資訊服務需要使用非常昂貴的商業資料庫軟體。單花在軟體授權上的費用可能就有六七位數,加之相近的硬體成本與服務訂閱成本。Oracle一個 CPU 核一年的軟體授權費用便高達十幾萬,壕如阿里也吃不消要“去IOE”。以 PostgreSQL / MySQL 為代表的的開源資料庫崛起,讓使用者多了一個新的選擇。
“不要錢” 的開源資料庫可以讓我們自由隨意地使用資料庫軟體,而這一點引發了行業變革:從一萬¥/ 核·月的商業資料庫,到20塊錢/核·月的純硬體成本。資料庫走入了尋常企業中,讓免費提供資訊服務成為可能。
開源是有大功德的。網際網路的歷史就是開源軟體的歷史,IT行業之所以有今天的繁榮,人們能享受到如此多的免費資訊服務,核心原因之一就是開源軟體。開源是一種真正成功的,以軟體自由為目的,由開發者構成的 Communism(社群主義):軟體這種IT業的核心生產資料變為全世界開發者公有,按需分配。開發者各盡所能,人人為我,我為人人。
一個開源程式設計師工作時,其勞動背後可能蘊含的是數以萬計頂尖開發者的智慧結晶。程式設計師薪資高從原理上來說是因為,開發者本質上不是一個簡單的工人,而是一個指揮軟體和硬體幹活的包工頭。程式設計師自己就是核心生產資料;軟體來自公有社群;伺服器硬體更是唾手可得;因此一個或幾個高階的軟體工程師,就可以很輕鬆地利用開源生態快速解決領域問題。
透過開源,所有社群開發者形成合力,極大降低了重複造輪子的內耗。使得整個行業的技術水平以匪夷所思的速度向前邁進。開源的勢頭就像滾雪球,時至今日已經勢不可擋。基本上除了一些特殊場景和路徑依賴,軟體開發中閉門造車搞自力更生幾乎成了一個大笑話。
越是底層基礎的軟體,開源便越佔優勢。
開源,也是 PostgreSQL 對陣 Oracle 的最大底氣所在。
Oracle 先進,但 PostgreSQL 也不差。PostgreSQL 是 Oracle 相容性最好的開源資料庫,原生即支援 Oracle 85% 的功能,更有 96% 功能相容的專業發行版。但更重要的是,Oracle 價格高昂,而 PG 開源免費。壓倒性的成本優勢讓 PG 擁有了巨大的生態位基礎:它不一定要在功能先進性上超過 Oracle 才能成功 ,廉價9成正確 已經足以幹翻 Oracle 。
PostgreSQL 可以視作一個開源版的“Oracle”,是唯一能真正威脅到 Oracle 的資料庫。作為 ”去O“ 抗旗者,PG 可謂子孫滿堂, 36% 的 “國產資料庫” 更是直接基於PG “開發”,養活了一大批 自主可控 的 資料庫公司,可謂功德無量。重要的是,PostgreSQL 社群並不反對這樣的行為,BSD 協議允許這樣做。這樣開放的胸襟,是被Oracle收購的,使用GPL協議的MySQL所難以比擬的。
先進之才
PG的“才”在於先進。一專多長的全棧資料庫,一個打十個,天生就是 HTAP。時空地理分散式,時序文件超融合,單一元件即可覆蓋幾乎所有資料庫需求。
PG的“才”在於一專多長。PostgreSQL是一專多長的全棧資料庫,天生就是HTAP,超融合資料庫,一個打十個。基本單一元件便足以覆蓋中小型企業絕大多數的資料庫需求:OLTP,OLAP,時序資料庫,空間GIS,全文檢索,JSON/XML,圖資料庫,快取,等等等等。
PostgreSQL 是各種關係型資料庫中價效比最高的選擇:它不僅可以用來做傳統的 CRUD OLTP 業務,資料分析更是它的拿手好戲。各種特色功能更是提供了切入多種行業以的契機:基於 PostGIS 的地理時空資料處理分析,基於 TimescaleDB 的時序金融物聯網資料處理分析,基於儲存過程觸發器的流式處理,基於倒排索引全文檢索的搜尋引擎,FDW 對接統一各式各樣的外部資料來源。可以說,PG是真正一專多長的全棧資料庫,它可以實現的比單純 OLTP 資料庫要豐富得多的功能。
在一個很可觀的規模內,PostgreSQL 都可以獨立扮演多面手的角色,一個元件當多種元件使。而單一資料元件選型可以極大地削減專案額外複雜度,這意味著能節省很多成本。它讓十個人才能搞定的事,變成一個人就能搞定的事。 不是說PG要一個打十個把其他資料庫的飯碗都掀翻:專業元件在專業領域的實力是毋庸置疑的。但切莫忘記,為了不需要的規模而設計是白費功夫,這屬於過早最佳化的一種形式。如果真有那麼一樣技術可以滿足你所有的需求,那麼使用該技術就是最佳選擇,而不是試圖用多個元件來重新實現它。
以探探為例,在 250w TPS 與 200 TB 資料的量級下,單一PostgreSQL選型依然能穩定可靠地撐起業務,並能在很可觀的規模內做到一專多長。除了本職的 OLTP,PG 還在相當長的時間裡兼任了快取,OLAP,批處理,甚至訊息佇列的角色。當然神龜雖壽,猶有竟時。最終這些兼職功能還是要逐漸分拆出去由專用元件負責,但那已經是近千萬日活時候的事了。
vs MySQL
PostgreSQL 的先進性有目共睹,這也是其對陣同為開源關係型資料庫的老對手 —— MySQL 時,真正的核心競爭力。
MySQL的口號是“世界上最流行的開源關係型資料庫”,它的核心特點是糙猛快,基本盤是網際網路公司。
網際網路公司的典型特點是什麼?追逐潮流糙猛快。糙說的是網際網路公司業務場景簡單(CRUD居多);資料重要性不高,不像傳統行業(例如銀行)那樣在意資料的一致性與正確性;可用性優先,相比停服務更能容忍資料丟亂錯,而一些傳統行業寧可停止服務也不能讓賬目出錯。 猛說的則是網際網路行業資料量大,它們需要的就是水泥槽罐車做海量 CRUD,而不是高鐵和載人飛船。 快說的則是網際網路行業需求變化多端,出活週期短,要求響應時間快,大量需求的就是開箱即用的軟體全家桶(如LAMP)和簡單培訓就能上手幹活的 CRUD Boy。於是,糙猛快的網際網路公司和糙猛快的 MySQL 一拍即合。
但時過境遷,PostgreSQL 進步神速,在”快“與”猛“上 MySQL 已經不佔優,現在只剩下”糙“了。舉個例子,MySQL 的哲學可以稱之為:“好死不如賴活著”,與 “我死後哪管洪水滔天”。其“糙”體現在各種“容錯”上,例如允許呆瓜程式設計師寫出的錯誤的SQL也能跑起來。最離譜的例子就是:MySQL 竟然允許部分成功的事務提交,這就違背了關係型資料庫的基本約束:原子性與資料一致性。
圖:MySQL預設竟然允許部分成功的事務提交
在先進性上, PostgreSQL 豐富的功能已經甩開 MySQL 了幾條街,而 MySQL 引以為豪的 ”流行度“ 也開始被 PostgreSQL 反超。
時來天地皆同力,運去英雄不自由。先進的因會反映為流行的果,流行的東西因為落後而過氣,而先進的東西會因為先進變得流行。在這個變革的時代中,沒有先進的功能打底,“流行”也也難以長久。時代所賦予的紅利,也會隨時代過去而退潮。
先進與開源,就是 PostgreSQL 成功的最大法寶。Oracle 先進, MySQL 開源,PostgreSQL 先進又開源。天時地利人和齊備,何愁大業不成?
展望未來
軟體吞噬世界, 開源吞噬軟體,而云吞噬開源。
看上去,資料庫之爭已經塵埃落定,一段時間內大概不會有其他資料庫核心能威脅到 PostgreSQL 了。但對 PostgreSQL 開源社群真正的威脅已經不再是其他資料庫核心,而是軟體使用正規化的嬗變:雲出現了。
最初,大家開發軟體/資訊服務需要使用昂貴的商業軟體( Oracle,SQL Server,Unix )。而隨著 Linux / PostgreSQL 這些開源軟體的興起,使用者們有了新的選擇。開源軟體確實免費不要錢,但想用好開源軟體,是一件門檻很高的事情,使用者需要僱傭開源軟體專家來幫助自己用好開源軟體。
大規模下用開源DBA自建更合算,只是好DBA太稀缺了。
這便是開源的核心模式:開源軟體開發者給開源軟體做貢獻;開源軟體透過好用免費吸引大量使用者;使用者在使用開源軟體時產生需求,創造更多開源軟體相關就業崗位,創造更多的開源軟體開發者。這三步形成了一個正反饋迴圈:更多的開源貢獻者讓開源軟體更好用,更省錢,從而吸引更多使用者,並創造出更多的開源貢獻者。開源生態的繁榮有賴於這個閉環,而公有云廠商的出現打破了這個迴圈。
公有云廠商將開源資料庫套上殼,加上自己的硬體與管控軟體,僱傭共享DBA提供支援,便成了雲資料庫。誠然這是一項很有價值的服務,但云廠商將開源軟體放在自家的雲平臺售賣而鮮有回饋,實質上是一種透過“搭便車”吸血開源的行為。這樣的共享外包模式將導致開源軟體的崗位與利潤向雲廠商集中,最終形成少數巨頭做大壟斷,傷害到所有使用者的軟體自由。
世界已經被雲改變了,閉源軟體早已不是最重要的問題了。
“在 2020 年,計算自由的敵人是雲端計算軟體”。
這是 DDIA 作者 Martin Kleppmann 在其“本地優先軟體”運動中提出的 宣言。雲軟體指的是執行在供應商伺服器上的軟體,例如:Google Docs、Trello、Slack、Figma、Notion 。以及最核心的雲軟體,雲資料庫。
後雲時代,開源社群如何應對雲軟體的挑戰?Cloud Native 運動給出了答案。這是一場從公有云奪回軟體自由的偉大運動,而資料庫,則是其中的核心焦點。
Cloud Native 全景還缺少最後一塊拼圖:資料庫!
這也是我們做 開箱即用的開源PostgreSQL 資料庫發行版 —— Pigsty 想要解決的問題:做一個使用者在本地即可使用的RDS服務,成為雲資料庫的開源替代!
Pigsty 帶有開箱即用的 RDS / PaaS / SaaS 整合;一個無可比擬的PG監控系統與自動駕駛的高可用叢集架構方案;一鍵安裝部署,並提供 Database as Code 的易用體驗;在體驗比肩甚至超越雲資料庫的前提下,資料自主可控且成本減少 50% ~ 90%。我們希望它能極大降低 PostgreSQL 使用的門檻,成為開發者與DBA的 Copilot :讓更多使用者可以用 好資料庫, 用好 資料庫。
當然,限於篇幅,雲資料庫與後雲時代的資料庫未來,就是下一篇文章要介紹的故事了。
參考閱讀:90後,辭職創業,說要卷死雲資料庫
參考閱讀:為什麼說PostgreSQL前途無量?
參考閱讀:DBA還是一份好工作嗎?
參考閱讀:StackOverflow 2022資料庫年度調查
參考閱讀:Pigsty v1.5釋出與新特性
資料來源:
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/70024923/viewspace-2937613/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 為什麼說雲資料庫是商業的成功、技術的倒退?資料庫
- 為什麼說資料庫是Serverless最難攻堅的堡壘?資料庫Server
- PostgreSQL 17重磅登場——世界上最成功的資料庫SQL資料庫
- 資料庫倉庫系列:(一)什麼是資料倉儲,為什麼要資料倉儲資料庫
- 為什麼Laravel會成為最成功的PHP框架LaravelPHP框架
- 什麼是皇帝資料庫?資料庫
- Chronicles 是什麼資料庫資料庫
- 什麼是Cassandra資料庫資料庫
- 什麼是真正的自治資料庫?資料庫
- 【資料庫】雲資料庫rds是什麼意思?有什麼優勢?資料庫
- 什麼是資料庫檢視?資料庫
- MySQL資料庫的優勢是什麼?MySql資料庫
- MySQL資料庫是什麼?linux資料庫運維MySql資料庫Linux運維
- 雲資料庫RDS是什麼?雲資料庫RDS有什麼優勢?資料庫
- 為什麼你的敏捷總是不成功?敏捷
- 為什麼DBA需要資料庫廠商的資料庫概念文件資料庫
- 到底什麼是雲原生資料庫?資料庫
- 資料庫:外來鍵是什麼資料庫
- 【TcaplusDB知識庫】什麼是TcaplusDB資料庫?資料庫
- PostgreSQL/LightDB 不走並行是為什麼?SQL並行
- PG資料庫為什麼要用autovacuum資料庫
- 資料庫mysql儲存是什麼?可以存什麼?資料庫MySql
- 資料庫審計是什麼意思?作用是什麼?資料庫
- 什麼是行為資料?企業為什麼要使用它?
- 從本地MySQL遷移到雲資料庫,為什麼是Amazon Aurora?MySql資料庫
- postgresql資料庫怎麼備份SQL資料庫
- 什麼是騰訊雲資料庫 CynosDB?雲資料庫 TencentDB for CynosDB 的特性資料庫
- 帝國cms配置資料庫是什麼資料庫
- flask資料庫遷移是什麼意思Flask資料庫
- 什麼是資料運營?資料運營是做什麼的?
- 什麼是大資料?大資料開發是做什麼的?大資料
- 為什麼資料庫列的字元長度為191? - Grouparoo資料庫字元
- 資料庫DBA為什麼拒絕DevOps?資料庫dev
- MapReduce中對大資料處理最合適的資料格式是什麼?大資料
- 大資料技術 - 為什麼是SQL大資料SQL
- 什麼是資料實時同步,為什麼資料實時同步很重要
- 什麼是資料視覺化,為什麼資料視覺化很重要?視覺化
- 為什麼NoSQL資料庫這麼受歡迎?SQL資料庫