為什麼PostgreSQL是最成功的資料庫?

張哥說技術發表於2023-03-01

當我們說一個資料庫"成功"時,到底在說什麼?是指功能效能易用性,還是成本生態複雜度?評價指標有很多,但這件事最終還得由使用者來定奪。

資料庫的使用者是開發者,而開發者的意願、喜好、選擇又怎麼說 ?StackOverflow 連續六年向來自180個國家的七萬多開發者問了這三個問題。

縱覽這六年資料,不難看出在2022年,PostgreSQL 已經同時在這三項上登頂奪冠,成了字面意義上 “最成功的資料庫

  • PG 成為 專業開發者最常使用的資料庫!(Used)

  • PG 成為 開發者最為喜愛的資料庫!(Loved)

  • PG 成為開發者最想要用的資料庫!(Wanted)

為什麼PostgreSQL是最成功的資料庫?


流行度反映當年的勢能,需求度預示來年的動能,喜愛度代表長期的潛能,時與勢都站在 PostgreSQL 一側。

為什麼前先說是不是,讓我們來看一看具體的調研結果。

最流行

PostgreSQL —— 專業開發者中最流行的資料庫!

第一項調研,研究開發者目前使用什麼資料庫,即,流行度

過去幾年,MySQL 一直霸佔著資料庫流行榜的榜首,很符合其 ”世界上最流行的開源關係型資料庫“ 這一口號。不過這次,”最流行“的桂冠恐怕要讓給 PostgreSQL 了。

專業開發者中,PostgreSQL 以 46.5% 的使用率第一次超過 MySQL 位居第一,而 MySQL 以 45.7% 的使用率降至第二名。同為泛用性最好的開源關係型資料庫,排名第一第二的 PGSQL 與 MySQL ,與其他的資料庫遠遠拉開了距離。

為什麼PostgreSQL是最成功的資料庫?


TOP 9 資料庫流行度演變(2017-2022)

PGSQL 與 MySQL 的流行度差別並不大。值得一提的是,在見習開發者群體中,MySQL 仍然佔據顯著的使用率優勢(58.4%),如果算上這些新手初學者,MySQL 仍然保有 3.3% 的微弱流行度領先優勢。

但從下圖中不難看出,PostgreSQL 有顯著的增長動能,而其他資料庫,特別是 MySQL、 SQL Server、Oracle 的使用率則在最近幾年持續衰退。隨著時間的推移,PostgreSQL 的領先優勢將進一步拉大。

為什麼PostgreSQL是最成功的資料庫?


四大關係型資料庫流行度對比

流行度反映的是當下資料庫的規模勢能,而喜愛度反映的是未來資料庫的增長潛能。

最喜愛

PostgreSQL —— 開發者最為喜愛的資料庫!

第二個問題是關於開發者喜愛什麼資料庫,討厭什麼資料庫。在此項調研中,PostgreSQL 與 Redis 一騎絕塵,以 70%+ 的喜愛率高居榜首,顯著甩開其他資料庫。

在過去幾年,Redis 一直是使用者最喜歡的資料庫。在 2022 年,形勢發生了變化,PostgreSQL 第一次超過 Redis,成為最受開發者喜愛的資料庫。

Redis是簡單易用的資料結構快取伺服器,經常會與關係型資料庫搭配使用,廣受開發者喜愛。不過這次看起來,開發者還是更偏愛功能更豐富的 PostgreSQL 多一丟丟。

相比之下 MySQL 與 Oracle 的表現就比較拉胯了。喜歡和討厭 MySQL 的人基本各佔一半;而只有35% 的使用者喜歡 Oracle ,這也意味著近 2/3 的開發者反感 Oracle 。

為什麼PostgreSQL是最成功的資料庫?

TOP 9 資料庫喜愛度演變(2017-2022)

從邏輯上講,使用者的喜愛將導致軟體的流行,使用者的厭惡將導致軟體過氣。我們可以參照 淨推薦指數NPS,又稱口碑,推薦者% - 貶損者%)的構造方式, 設計一個 淨喜愛指數 NLS:即 喜愛人群% - 厭惡人群%, 而資料庫流行度的導數應當與 NLS 呈現正相關性 。

資料很好印證了這一點:PG 有著全場最高的 NLS44% ,對應著最高的流行度增長率 每年 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%),這三種資料庫的需求程度與其他資料庫顯著拉開了一個臺階。

為什麼PostgreSQL是最成功的資料庫?


此前, 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等社交網路中的提及數等,可理解為資料庫的“綜合熱度”。

為什麼PostgreSQL是最成功的資料庫?


資料庫熱度趨勢:db-engines.com/en/ranking_trend

在 DB-Engine 的熱度趨勢圖中我們可以看到一條鴻溝,前四名全都是 關係型資料庫 ,加上排名第五的 MongoDB,與其他資料庫在熱度上拉開了 數量級上的差距

我們只需要把關注點聚焦到這四種核心的關係型資料庫 OracleMySQLSQL ServerPostgreSQL 上即可。

關係型資料庫的生態位高度重疊,其關係可以視作零和博弈。拋開微軟生態關門自嗨相對獨立的商業資料庫 SQL Server 不提。關係型資料庫世界裡上演的是一場三國演義

為什麼PostgreSQL是最成功的資料庫?


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塊錢/核·月的純硬體成本。資料庫走入了尋常企業中,讓免費提供資訊服務成為可能。

為什麼PostgreSQL是最成功的資料庫?


開源是有大功德的。網際網路的歷史就是開源軟體的歷史,IT行業之所以有今天的繁榮,人們能享受到如此多的免費資訊服務,核心原因之一就是開源軟體。開源是一種真正成功的,以軟體自由為目的,由開發者構成的 Communism(社群主義軟體這種IT業的核心生產資料變為全世界開發者公有,按需分配。開發者各盡所能,人人為我,我為人人。

一個開源程式設計師工作時,其勞動背後可能蘊含的是數以萬計頂尖開發者的智慧結晶。程式設計師薪資高從原理上來說是因為,開發者本質上不是一個簡單的工人,而是一個指揮軟體和硬體幹活的包工頭。程式設計師自己就是核心生產資料;軟體來自公有社群;伺服器硬體更是唾手可得;因此一個或幾個高階的軟體工程師,就可以很輕鬆利用開源生態快速解決領域問題。

透過開源,所有社群開發者形成合力,極大降低了重複造輪子的內耗。使得整個行業的技術水平以匪夷所思的速度向前邁進。開源的勢頭就像滾雪球,時至今日已經勢不可擋。基本上除了一些特殊場景和路徑依賴,軟體開發中閉門造車搞自力更生幾乎成了一個大笑話。

為什麼PostgreSQL是最成功的資料庫?


越是底層基礎的軟體,開源便越佔優勢。

開源,也是 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是最成功的資料庫?


在一個很可觀的規模內,PostgreSQL 都可以獨立扮演多面手的角色,一個元件當多種元件使。而單一資料元件選型可以極大地削減專案額外複雜度,這意味著能節省很多成本。它讓十個人才能搞定的事,變成一個人就能搞定的事。 不是說PG要一個打十個把其他資料庫的飯碗都掀翻:專業元件在專業領域的實力是毋庸置疑的。但切莫忘記,為了不需要的規模而設計是白費功夫,這屬於過早最佳化的一種形式。如果真有那麼一樣技術可以滿足你所有的需求,那麼使用該技術就是最佳選擇,而不是試圖用多個元件來重新實現它。

以探探為例,在 250w TPS200 TB 資料的量級下,單一PostgreSQL選型依然能穩定可靠地撐起業務,並能在很可觀的規模內做到一專多長。除了本職的 OLTP,PG 還在相當長的時間裡兼任了快取,OLAP,批處理,甚至訊息佇列的角色。當然神龜雖壽,猶有竟時。最終這些兼職功能還是要逐漸分拆出去由專用元件負責,但那已經是近千萬日活時候的事了。

為什麼PostgreSQL是最成功的資料庫?

vs MySQL 

PostgreSQL 的先進性有目共睹,這也是其對陣同為開源關係型資料庫的老對手 —— MySQL 時,真正的核心競爭力。

MySQL的口號是“世界上最流行的開源關係型資料庫”,它的核心特點是糙猛快,基本盤是網際網路公司。

網際網路公司的典型特點是什麼?追逐潮流糙猛快說的是網際網路公司業務場景簡單(CRUD居多);資料重要性不高,不像傳統行業(例如銀行)那樣在意資料的一致性與正確性;可用性優先,相比停服務更能容忍資料丟亂錯,而一些傳統行業寧可停止服務也不能讓賬目出錯。 說的則是網際網路行業資料量大,它們需要的就是水泥槽罐車做海量 CRUD,而不是高鐵和載人飛船。 說的則是網際網路行業需求變化多端,出活週期短,要求響應時間快,大量需求的就是開箱即用的軟體全家桶(如LAMP)和簡單培訓就能上手幹活的 CRUD Boy。於是,糙猛快的網際網路公司和糙猛快的 MySQL 一拍即合。

但時過境遷,PostgreSQL 進步神速,在”快“與”猛“上 MySQL 已經不佔優,現在只剩下”“了。舉個例子,MySQL 的哲學可以稱之為:“好死不如賴活著”,與 “我死後哪管洪水滔天”。其“”體現在各種“容錯”上,例如允許呆瓜程式設計師寫出的錯誤的SQL也能跑起來。最離譜的例子就是:MySQL 竟然允許部分成功的事務提交,這就違背了關係型資料庫的基本約束:原子性與資料一致性。

為什麼PostgreSQL是最成功的資料庫?

圖:MySQL預設竟然允許部分成功的事務提交

先進性上, PostgreSQL 豐富的功能已經甩開 MySQL 了幾條街,而 MySQL 引以為豪的 ”流行度“ 也開始被 PostgreSQL 反超。

時來天地皆同力,運去英雄不自由先進的因會反映為流行的果,流行的東西因為落後而過氣,而先進的東西會因為先進變得流行。在這個變革的時代中,沒有先進的功能打底,“流行”也也難以長久。時代所賦予的紅利,也會隨時代過去而退潮。


先進開源,就是 PostgreSQL 成功的最大法寶。Oracle 先進, MySQL 開源,PostgreSQL 先進又開源。天時地利人和齊備,何愁大業不成?

展望未來

軟體吞噬世界, 開源吞噬軟體,而云吞噬開源。

看上去,資料庫之爭已經塵埃落定,一段時間內大概不會有其他資料庫核心能威脅到 PostgreSQL 了。但對 PostgreSQL 開源社群真正的威脅已經不再是其他資料庫核心,而是軟體使用正規化的嬗變雲出現了

最初,大家開發軟體/資訊服務需要使用昂貴的商業軟體( Oracle,SQL Server,Unix )。而隨著 Linux / PostgreSQL 這些開源軟體的興起,使用者們有了新的選擇。開源軟體確實免費不要錢,但想用好開源軟體,是一件門檻很高的事情,使用者需要僱傭開源軟體專家來幫助自己用好開源軟體。

為什麼PostgreSQL是最成功的資料庫?


大規模下用開源DBA自建更合算,只是好DBA太稀缺了。

這便是開源的核心模式:開源軟體開發者給開源軟體做貢獻開源軟體透過好用免費吸引大量使用者使用者在使用開源軟體時產生需求,創造更多開源軟體相關就業崗位,創造更多的開源軟體開發者。這三步形成了一個正反饋迴圈:更多的開源貢獻者讓開源軟體更好用,更省錢,從而吸引更多使用者,並創造出更多的開源貢獻者。開源生態的繁榮有賴於這個閉環,而公有云廠商的出現打破了這個迴圈。

公有云廠商將開源資料庫套上殼,加上自己的硬體與管控軟體,僱傭共享DBA提供支援,便成了雲資料庫。誠然這是一項很有價值的服務,但云廠商將開源軟體放在自家的雲平臺售賣而鮮有回饋,實質上是一種透過“搭便車”吸血開源的行為。這樣的共享外包模式將導致開源軟體的崗位與利潤向雲廠商集中,最終形成少數巨頭做大壟斷,傷害到所有使用者的軟體自由。

世界已經被雲改變了,閉源軟體早已不是最重要的問題了。

在 2020 年,計算自由的敵人是雲端計算軟體”。

這是 DDIA 作者 Martin Kleppmann 在其“本地優先軟體”運動中提出的 宣言。雲軟體指的是執行在供應商伺服器上的軟體,例如:Google Docs、Trello、Slack、Figma、Notion 。以及最核心的雲軟體,雲資料庫

後雲時代,開源社群如何應對雲軟體的挑戰?Cloud Native 運動給出了答案。這是一場從公有云奪回軟體自由的偉大運動,而資料庫,則是其中的核心焦點。

為什麼PostgreSQL是最成功的資料庫?


Cloud Native 全景還缺少最後一塊拼圖:資料庫!

這也是我們做 開箱即用的開源PostgreSQL 資料庫發行版 —— Pigsty 想要解決的問題:做一個使用者在本地即可使用的RDS服務,成為雲資料庫的開源替代!

Pigsty 帶有開箱即用的 RDS / PaaS / SaaS 整合;一個無可比擬的PG監控系統與自動駕駛的高可用叢集架構方案;一鍵安裝部署,並提供 Database as Code 的易用體驗;在體驗比肩甚至超越雲資料庫的前提下,資料自主可控且成本減少 50% ~ 90%。我們希望它能極大降低 PostgreSQL 使用的門檻,成為開發者與DBA的 Copilot :讓更多使用者可以用 好資料庫, 用好 資料庫。


為什麼PostgreSQL是最成功的資料庫?


為什麼PostgreSQL是最成功的資料庫?


當然,限於篇幅,雲資料庫與後雲時代的資料庫未來,就是下一篇文章要介紹的故事了。


參考閱讀:90後,辭職創業,說要卷死雲資料庫

參考閱讀:為什麼說PostgreSQL前途無量?

參考閱讀:DBA還是一份好工作嗎?

參考閱讀:StackOverflow 2022資料庫年度調查

參考閱讀:Pigsty v1.5釋出與新特性

資料來源:

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/70024923/viewspace-2937613/,如需轉載,請註明出處,否則將追究法律責任。

相關文章