為什么開源數(shù)據(jù)庫PostgreSQL是未來數(shù)據(jù)的基石?
當前位置:點晴教程→知識管理交流
→『 技術文檔交流 』
如今,軟件開發(fā)中最大的趨勢之一,是 PostgreSQL 正在成為事實上的數(shù)據(jù)庫標準。已經(jīng)有一些博客闡述了如何做到 萬物皆用 PostgreSQL,但還沒有多少文章能解釋這一現(xiàn)象背后的原因。(更重要的是,為什么這件事很重要) —— 所以我寫下了這篇文章。
目錄01 PostgreSQL 正成為數(shù)據(jù)庫事實標準02 萬物都開始計算機化03 PostgreSQL 王者歸來04 解放雙手,構建未來,擁抱 PostgreSQL PostgreSQL 正成為數(shù)據(jù)庫事實標準在過去幾個月,“一切皆用 PostgreSQL 解決” 已經(jīng)成為開發(fā)者們的戰(zhàn)斗口號:
憑借其堅如磐石的基礎,加上其原生功能與擴展插件帶來的強大功能集,開發(fā)者現(xiàn)在可以單憑 PostgreSQL 解決所有問題,用簡潔明了的方式,取代復雜且脆弱的數(shù)據(jù)架構。
這也許可以解釋為什么去年 PostgreSQL 在專業(yè)開發(fā)者中,在最受歡迎的數(shù)據(jù)庫排行榜上,從MySQL手中奪得了榜首位置(60,369 名受訪者):
在過去一年中,你在哪些數(shù)據(jù)庫環(huán)境中進行了大量開發(fā)工作,以及在接下來的一年中你想在哪些數(shù)據(jù)庫環(huán)境中工作?超過49%的受訪者選擇了PostgreSQL。 —— 來源:StackOverflow 2023 年度用戶調研[12] 這些結果來自 2023 年的 Stack Overflow開發(fā)者調查[13]。如果縱觀過去幾年,可以看到 PostgreSQL 的使用率在過去幾年中有著穩(wěn)步增長的趨勢: 在 2020 ~ 2022 年間,根據(jù) StackOverflow 的開發(fā)者調查顯示,PostgreSQL 是第二受歡迎的數(shù)據(jù)庫,其使用率持續(xù)上升。來源: 2020[14],2021[15],2022[16]。 This is not just a trend among small startups and hobbyists. In fact, PostgreSQL usage is increasing across organizations of all sizes: 這不僅僅是小型初創(chuàng)公司和業(yè)余愛好者里的趨勢。實際上,在各種規(guī)模的組織中,PostgreSQL 的使用率都在增長。
我們 Timescale 對這一趨勢并不陌生 —— 我們已經(jīng)當了十年 PostgreSQL 信徒了。這也是為什么我們將自己的業(yè)務構建在 PostgreSQL 之上,為什么我們是 PostgreSQL 的頂級貢獻者之一[18],為什么我們每年舉辦 PostgreSQL 社區(qū)調研[19](上述提到),以及為什么我們支持 PostgreSQL 的 Meetup 與大會。就個人而言,我已經(jīng)使用 PostgreSQL 超過 13 年了(當時我從 MySQL 切換過來)。 已經(jīng)有一些博客文章討論了 如何 (How)將 PostgreSQL 用于一切問題,但還沒有討論 為什么 (Why)會這樣發(fā)生(更重要的是,這件事為什么重要?)。 直到現(xiàn)在。 但要理解為什么會發(fā)生這種情況,我們必須先了解一個更為基礎的趨勢,以及這個趨勢是如何改變人類現(xiàn)實的基本性質的。 02 一切都變成了電腦一切都變成了計算機 —— 我們的汽車、家庭、城市、農場、工廠、貨幣以及各種事物,包括我們自己,也正在變得更加數(shù)字化。我們每年都在更進一步地數(shù)字化自己的身份和行為:如何購物,如何娛樂,如何收藏藝術,如何尋找答案,如何交流和連接,以及如何表達自我。 二十二年前,這種 “無處不在的計算” 還是一個大膽的想法。那時,我是麻省理工學院人工智能實驗室的研究生,還在搞著智能環(huán)境的論文[20]。我的研究得到了麻省理工學院氧氣計劃[21]的支持,該計劃有一個崇高而大膽的目標:讓計算像我們呼吸的空氣一樣無處不在。就那時候而言,我們自己的服務器架設在一個小隔間中。 但從那以后,很多事情都變了。計算現(xiàn)在無處不在:在我們的桌面上,在我們的口袋里,在我們的 “云” 中,以及在我們的各種物品中。我們預見到了這些變化,但沒有預見到這些變化的二級效應: 無處不在的計算導致了無處不在的數(shù)據(jù)。隨著每一種新的計算設備的出現(xiàn),我們收集了更多關于我們現(xiàn)實世界的信息:人類數(shù)據(jù)、機器數(shù)據(jù)、商業(yè)數(shù)據(jù)、環(huán)境數(shù)據(jù)和合成數(shù)據(jù)。這些數(shù)據(jù)正在淹沒我們的世界。 數(shù)據(jù)的洪流引發(fā)了數(shù)據(jù)庫的寒武紀大爆炸。所有這些新的數(shù)據(jù)源需要新的存儲地點。二十年前,可能只有五種可行的數(shù)據(jù)庫選項。而如今,有數(shù)百種,大多數(shù)都是針對特定的數(shù)據(jù)而特別設計的,且每個月都在涌現(xiàn)新的數(shù)據(jù)庫。 更多的數(shù)據(jù)和數(shù)據(jù)庫導致了更多的軟件復雜性。正確選擇適合你軟件工作負載的數(shù)據(jù)庫已不再簡單。相反,開發(fā)者被迫拼湊復雜的架構,這可能包括:關系數(shù)據(jù)庫(因其可靠性)、非關系數(shù)據(jù)庫(因其可伸縮性)、數(shù)據(jù)倉庫(因其分析能力)、對象存儲(因其便宜歸檔冷數(shù)據(jù)的能力)。這種架構甚至可能會有更為專業(yè)特化的組件,例如時序數(shù)據(jù)庫或向量數(shù)據(jù)庫。 更多的復雜性意味著留給構建軟件的時間越短。架構越復雜,它就越脆弱,就需要更復雜的應用邏輯,并且會拖慢開發(fā)速度,留給開發(fā)的時間就越少。復雜性不是一項優(yōu)點,而是一項真正的成本。 隨著計算越來越普遍,我們的現(xiàn)實生活越來越與計算交織在一起。我們把計算帶入了我們的世界,也把我們自己帶入了計算的世界。我們不再僅僅有著線下的身份,而是一個線下與線上所作所為的混合體。 在這個新現(xiàn)實中,軟件開發(fā)者是人類的先鋒。正是我們構建了那些塑造這一新現(xiàn)實的軟件。 但是,開發(fā)者現(xiàn)在被數(shù)據(jù)淹沒,被淹沒在數(shù)據(jù)庫的復雜性中 這意味著開發(fā)者 —— 花費越來越多的時間,在管理內部架構上,而不是去塑造未來。 我們是如何走到這一步的? 第一部分:逐波遞進的計算浪潮無處不在的計算帶來了無處不在數(shù)據(jù),這一變化并非一夜之間發(fā)生,而是在幾十年中逐波遞進: •主機/大型機 (1950 年代+)•個人計算機 (1970 年代+)•互聯(lián)網(wǎng) (1990 年代+)•手機 (2000 年代+)•云計算 (2000 年代+)•物聯(lián)網(wǎng) (2010 年代+) 每一波技術浪潮都使計算機變得更小、更強大且更普及。每一波也在前一波的基礎上進行構建:個人計算機是小型化的主機;互聯(lián)網(wǎng)是連接計算機的網(wǎng)絡;智能手機則是連接互聯(lián)網(wǎng)的更小型計算機;云計算普及了存算資源的獲??;物聯(lián)網(wǎng)則是將連接到云的智能手機組件,替代為其他物理設備。 但在過去二十年中,計算技術的進步不僅僅出現(xiàn)在物理世界中,也體現(xiàn)在數(shù)字世界中,反映了我們的混合現(xiàn)實: •社交網(wǎng)絡 (2000 年代+)•區(qū)塊鏈 (2010 年代+)•生成式人工智能 (2020 年代+) 每一波新的計算浪潮,我們都能從中獲取有關我們混合現(xiàn)實的新信息源:人類的數(shù)字殘留數(shù)據(jù)、機器數(shù)據(jù)、商業(yè)數(shù)據(jù)和合成數(shù)據(jù)。未來的浪潮將創(chuàng)造更多數(shù)據(jù)。所有這些數(shù)據(jù)都推動了新的技術浪潮,其中最新的是生成式人工智能,進一步塑造了我們的現(xiàn)實。 計算浪潮不是孤立的,而是像多米諾骨牌一樣相互影響。最初的數(shù)據(jù)涓流很快變成了數(shù)據(jù)洪流。接著,數(shù)據(jù)洪流又促使越來越多的數(shù)據(jù)庫的創(chuàng)建。 第二部分:數(shù)據(jù)庫持續(xù)增長所有這些新的數(shù)據(jù)來源,都需要新的地方來存儲 —— 即數(shù)據(jù)庫。 大型機從 Integrated Data Store[22](1964 年)開始,以及后來的 System R[23](1974 年) —— 第一個 SQL 數(shù)據(jù)庫。個人計算機推動了第一批商業(yè)數(shù)據(jù)庫的崛起:受 System R 啟發(fā)的 Oracle[24](1977 年);還有 DB2[25](1983 年);以及微軟對 Oracle 的回應: SQL Server[26](1989 年)。 互聯(lián)網(wǎng)的協(xié)作力量促進了開源軟件的崛起,包括第一個開源數(shù)據(jù)庫:MySQL[27](1995 年),PostgreSQL[28](1996 年)。智能手機推動了 SQLite[29](2000 年)的廣泛傳播。 互聯(lián)網(wǎng)還產(chǎn)生了大量數(shù)據(jù),這導致了第一批非關系型(NoSQL)數(shù)據(jù)庫的出現(xiàn):Hadoop[30](2006 年);Cassandra[31](2008 年);MongoDB[32](2009 年)。有人將這個時期稱為 “大數(shù)據(jù)” 時代。 第三部分:數(shù)據(jù)庫爆炸式增長大約在 2010 年,我們開始達到一個臨界點。在此之前,軟件應用通常依賴單一數(shù)據(jù)庫 —— 例如 Oracle、MySQL、PostgreSQL —— 選型是相對簡單的。 但 “大數(shù)據(jù)” 越來越大:物聯(lián)網(wǎng)帶來了機器數(shù)據(jù)的大爆炸;得益于 iPhone 和 Android,智能手機使用開始呈指數(shù)級增長,排放出了更多的人類數(shù)字 “廢氣”;云計算讓計算和存儲資源的獲取變得普及,并加劇了這些趨勢。生成式人工智能最近使這個問題更加嚴重 —— 它拉動了向量數(shù)據(jù)。 隨著被收集的數(shù)據(jù)量增長,我們看到了專用數(shù)據(jù)庫的興起:Neo4j[33] 用于圖形數(shù)據(jù)(2007 年),Redis[34] 用于基礎鍵值存儲(2009 年),InfluxDB[35] 用于時序數(shù)據(jù)(2013 年),ClickHouse[36] 用于大規(guī)模分析(2016 年),Pinecone 用于向量數(shù)據(jù)(2019 年),等等。 二十年前,可行的數(shù)據(jù)庫選項可能只有五種。如今,卻有數(shù)百種[37],它們大多專為特定用例設計,每個月都有新的數(shù)據(jù)庫出現(xiàn)。雖然早期數(shù)據(jù)庫已經(jīng)承諾 通用的全能性,這些專用的數(shù)據(jù)庫提供了特定場景下的利弊權衡,而這些權衡是否有意義,取決于您的具體用例。 第四部分:數(shù)據(jù)庫越多,問題越多面對這種數(shù)據(jù)洪流,以及各種具有不同利弊權衡的專用數(shù)據(jù)庫,開發(fā)者別無選擇,只能拼湊復雜的架構。 這些架構通常包括一個關系數(shù)據(jù)庫(為了可靠性)、一個非關系數(shù)據(jù)庫(為了可擴展性)、一個數(shù)據(jù)倉庫(用于數(shù)據(jù)分析)、一個對象存儲(用于便宜的歸檔),甚至更專用的組件,如時間序列或向量數(shù)據(jù)庫,用于那些特定的用例。 但是,越復雜的架構就越脆弱,就需要更復雜的應用邏輯,并且會拖慢開發(fā)速度,留給開發(fā)的時間就越少。 這意味著開發(fā)者 —— 花費越來越多的時間,在管理內部架構上,而不是去塑造未來。 有更好的辦法解決這個問題。 PostgreSQL王者歸來故事在這里發(fā)生轉折,我們的主角不再是一個嶄新的數(shù)據(jù)庫,而是一個老牌數(shù)據(jù)庫,它的名字只有 核心開發(fā)者才會喜歡:PostgreSQL。 起初,PostgreSQL 在 MySQL 之后居于第二位,且與其相距甚遠。MySQL 使用起來更簡單,背后有公司支持,而且名字朗朗上口。但后來 MySQL 被 Sun Microsystems 收購(2008年),隨后又被 Oracle 收購(2009年)。在那時,很多軟件開發(fā)者原本視 MySQL 為擺脫昂貴的 Oracle 專制統(tǒng)治的自由軟件救星,在那時也不得不開始重新考慮使用什么數(shù)據(jù)庫。 與此同時,一個由幾家小型獨立公司贊助的分布式開發(fā)者社區(qū),正在慢慢地讓 PostgreSQL 變得越來越好。他們默默地添加了強大的功能,例如全文檢索(2008年)、窗口函數(shù)(2009年)和 JSON 支持(2012年)。他們還通過流復制、熱備份、原地升級(2010年)、邏輯復制(2017年)等功能,使數(shù)據(jù)庫更加堅固可靠,同時勤奮地修復缺陷,并優(yōu)化粗糙的邊緣場景。 PostgreSQL 已經(jīng)成為一個平臺在此期間,PostgreSQL 添加的最具影響力的功能之一,是支持 擴展(Extension):可以為 PostgreSQL 添加功能的軟件模塊(2011年)。擴展讓更多開發(fā)者能夠獨立、迅速且?guī)缀鯚o需協(xié)調地為 PostgreSQL 添加功能[38]。 得益于擴展機制,PostgreSQL 開始變成不僅僅是一個出色的關系型數(shù)據(jù)庫。得益于 PostGIS,它成為了一個出色的地理空間數(shù)據(jù)庫;得益于 TimescaleDB,它成為了一個出色的時間序列數(shù)據(jù)庫;+ hstore,鍵值存儲數(shù)據(jù)庫;+ AGE,圖數(shù)據(jù)庫;+ pgvector,向量數(shù)據(jù)庫。PostgreSQL 成為了一個平臺。 現(xiàn)在,開發(fā)者出于各種目的選用 PostgreSQL。例如為了可靠性、為了可伸縮性(替代NoSQL)、為了數(shù)據(jù)分析(替代數(shù)倉)。 大數(shù)據(jù)則何如?此時,聰明的讀者應該會問,“那么大數(shù)據(jù)呢?” —— 這是個好問題。從歷史上看,“大數(shù)據(jù)”(例如,幾百TB甚至上PB)—— 及相關的分析查詢,曾經(jīng)對于 PostgreSQL 這種本身不支持水平擴展的數(shù)據(jù)庫來說,并不是合適的場景。 但這里的情況也在改變,去年十一月,我們推出了 “分層存儲[39]”,它可以自動將你的數(shù)據(jù)在磁盤和對象存儲(S3)之間進行分級存儲,實際上實現(xiàn)了 無限存儲表 的能力。 所以從歷史上看,雖然 “大數(shù)據(jù)” 曾經(jīng)是 PostgreSQL 的短板,但很快將沒有任何工作負載是太大而處理不了的。 PostgreSQL 是答案。PostgreSQL 是我們解放自我,并構建未來的方式。 解放自我,構建未來,擁抱 PostgreSQL相比于在各種異構數(shù)據(jù)庫系統(tǒng)中糾結(每一種都有自己的查詢語言和怪癖?。?,我們可以依靠世界上功能最豐富,而且可能是最可靠的數(shù)據(jù)庫:PostgreSQL。我們可以不再耗費大量時間在基礎設施上,而將更多時間用于構建未來。 而且 PostgreSQL 還在不斷進步中。PostgreSQL 社區(qū)在不斷改進內核。而現(xiàn)在有更多的公司參與到 PostgreSQL 的開發(fā)中,包括那些巨無霸供應商。
同樣,也有更多創(chuàng)新的獨立公司圍繞著 PostgreSQL 內核開發(fā),以改善其使用體驗:Supabase[41](2020年)正在將 PostgreSQL 打造成一個適用于網(wǎng)頁和移動開發(fā)者的 Firebase 替代品;Neon[42](2021年)和 Xata[43](2022年)都在實現(xiàn)將 PostgreSQL “伸縮至零”, 以適應間歇性 Serverless 工作負載;Tembo[44](2022年)為各種用例提供開箱即用的技術棧;Nile[45](2023年)正在使 PostgreSQL 更易于用于 SaaS 應用;還有許多其他公司。當然,還有我們,Timescale[46](2017年)。
尾聲:尤達?我們的現(xiàn)實世界,無論是物理的還是虛擬的,離線的還是在線的,都充滿著數(shù)據(jù)。正如尤達所說,數(shù)據(jù)環(huán)繞著我們,約束著我們。這個現(xiàn)實越來越多地由軟件所掌控,而這些軟件正是由我們這些開發(fā)者編寫的。 這一點值得贊嘆。特別是不久之前,在2002年,當我還是MIT的研究生時,世界曾經(jīng)對軟件失去了信心。我們當時正在從互聯(lián)網(wǎng)泡沫破裂中復蘇。主流媒體 “IT并不重要[47]”。那時對一個軟件開發(fā)者來說,在金融行業(yè)找到一份好工作比在科技行業(yè)更容易——這也是我許多 MIT 同學所選擇的道路,我自己也是如此。 但今天,特別是在這個生成式AI的世界里,我們是塑造未來的人。我們是未來的建設者。我們應該感到驚喜。 一切都在變成計算機。這在很大程度上是一件好事:我們的汽車更安全,我們的家居環(huán)境更舒適,我們的工廠和農場更高效。我們比以往任何時候都能即時獲取更多的信息。我們彼此之間的聯(lián)系更加緊密。有時,它讓我們更健康,更幸福。 但并非總是如此。就像原力一樣,算力也有光明和黑暗的一面。越來越多的證據(jù)表明,手機和社交媒體直接導致了青少年心理疾病的全球流行[48]。我們仍在努力應對AI于合成生物學[49]的影響。當我們擁抱更強大的力量時,應該意識到這也伴隨著相應的責任。 我們掌管著用于構建未來的寶貴資源:我們的時間和精力。我們可以選擇把這些資源花在管理基礎設施上,或者全力擁抱 PostgreSQL,構建正確的未來。 我想你已經(jīng)知道我們的立場了。 感謝閱讀。#Postgres4Life References
該文章在 2024/5/17 16:00:38 編輯過 |
關鍵字查詢
相關文章
正在查詢... |