Postgres開源數(shù)據(jù)庫剛剛度過了它的25歲生日。遺憾的是,它既沒有憑借數(shù)百萬美元的風(fēng)險投資脫穎而出,也沒有獲得技術(shù)布道師DevRel團隊的支持,只處于起步階段,但卻一直在更新。幾個月之后,Postgres 16正式版可能會閃亮登場,提及此,不免讓人感到熱血沸騰!我們也一起來回顧下Postgres是如何“走到”今天的吧!Ingres、Postgres95、PostgreSQL追根溯源,其實,Postgres起源于Ingres數(shù)據(jù)庫系統(tǒng),最初是在加州大學(xué)伯克利分校Michael Stonebraker的指導(dǎo)下開始構(gòu)建的交互式圖形檢索系統(tǒng)。后來,為提升數(shù)據(jù)庫性能,團隊改弦易轍,轉(zhuǎn)而資助了關(guān)系數(shù)據(jù)庫項目。一開始,他們用的是QUEL編程語言而不是SQL;1986年,美國國家標(biāo)準(zhǔn)學(xué)會正式將SQL設(shè)置為首選項,至此,許多相關(guān)數(shù)據(jù)庫項目都朝這個方向發(fā)展。·1995年,Postgres95正式發(fā)布,SQL也順理成章地被添加進來。·1996年,當(dāng)?shù)谝粋€PostgreSQL版本6.0發(fā)布時,PostgreSQL全球開發(fā)團隊也成立了,標(biāo)志著開發(fā)走出學(xué)術(shù)界,項目領(lǐng)導(dǎo)小組也延續(xù)至今!·1999年,Postgres 6.5發(fā)布,很多技術(shù)理念至今仍被采用!2000年,Postgres開啟它的成長之旅,通過外鍵和連接引入其它數(shù)據(jù)庫。21世紀(jì)初,Postgres又吸納了更多的關(guān)鍵基礎(chǔ)部件,主要側(cè)重于構(gòu)建可靠的數(shù)據(jù)庫和SQL,用戶可獲取如下的功能:1.預(yù)寫式日志(Write-Ahead-Log):一種數(shù)據(jù)庫日志記錄技術(shù),用于在數(shù)據(jù)實際寫入磁盤之前記錄數(shù)據(jù)的更改,以確保數(shù)據(jù)的一致性和完整性。2.外連接(Outer joins):一種數(shù)據(jù)庫連接操作,用于將兩個表中的記錄組合在一起,即使其中一個表中沒有與另一個表中的記錄匹配的記錄。回顧2000年的一些細(xì)節(jié),最令我感到興奮的是:“一些對Postgres做出貢獻的人至今仍是Postgres社區(qū)里的支柱。這些人包括我的同事Tom Lane、Josh Berkus、Bruce Momjian、Hiroshi Inoue和Peter Eisentraut,還包括2006年‘PostgreSQL周年紀(jì)念峰會’上的一些人:Magnus Hagander、Stephen Frost等?!蔽恼略髡呋貞浾f。總之,每個參與進Postgres的人都對它的前景非??春?,認(rèn)為這里蘊含著巨大的市場機遇,開源數(shù)據(jù)庫的浪潮也正開始達到巔峰。進入20世紀(jì)后期,Postgres已經(jīng)成為一個相當(dāng)可靠的數(shù)據(jù)庫了。有了更豐富的資金支持、更廣泛的SQL支持,以及WAL和VACUUM的改進,Postgres變得更值得信賴,但在易用性方面仍有需要改進之處!之后,更多的SQL支持和更佳的性能將Postgres塑造成了新型數(shù)據(jù)庫,具有可擴展的數(shù)據(jù)庫類型。“我認(rèn)為,強大的報告功能真正改變了Postgres的游戲規(guī)則;2009年,Postgres 8.4中又出現(xiàn)了窗口函數(shù)和公用表達式(CTEs)。有了這些功能的加持,我再也不會回頭看其它數(shù)據(jù)庫了?!痹髡咴谖恼轮刑岬健?/span>奠定了堅實的基礎(chǔ)后,Postgres開始在更廣泛的數(shù)據(jù)生態(tài)系統(tǒng)中留下印記。由于其堅實的代碼基礎(chǔ)以及許可,許多公司選擇Postgres并開始對其進行“分叉”。21世紀(jì)初期到后期,大多數(shù)公司做的第一件事就是向Postgres中添加MPP,使其更多關(guān)注聯(lián)機分析處理(OLAP)的工作負(fù)載。而將MPP與窗口函數(shù)和公用表達式(CTEs)之類的功能結(jié)合在一起時,開發(fā)者能獲得全新而強大的系統(tǒng),無需從頭開始構(gòu)建。這種新型數(shù)據(jù)庫的出現(xiàn)意味著數(shù)據(jù)庫成熟所需時間縮短了數(shù)年。許多最初的分支如今已消失不在了,但有些仍存在于其它的產(chǎn)品中。盡管有些Postgres分支已被擴散,但Postgres始終沒有停止前進的腳步。由于老式關(guān)系數(shù)據(jù)庫不支持listen/notify(從數(shù)據(jù)庫發(fā)布到訂閱)和hstore(鍵/值數(shù)據(jù)類型)功能,Postgres 9.0和9.1出現(xiàn)了,支持pg_upgrade,這使升級變得更容易了。此外,隨著GIN和GiST索引的出現(xiàn),開發(fā)者所能獲得的不再僅是標(biāo)準(zhǔn)B-Tree索引。這之后,Postgres一直都在擴展、重構(gòu)了集成過程,用戶可以更容易地使用這些擴展。自始至終,開發(fā)人員都在尋求不同的數(shù)據(jù)處理方式。Postgres聽取了他們的意見,但后來在JSON方面作弊了。2012年,在9.2版本中出現(xiàn)JSON驗證,但這并不是真正的JSON。實際上,幾年后,Postgres才會真正支持JSON。但這并沒有阻止人們持續(xù)關(guān)注Postgres;2014年,真正的JSON出現(xiàn)。Postgres 9.3非常棒,有橫向連接、可更新的外表、校驗和等。在Postgres 9.4中,JSONB數(shù)據(jù)類型中能獲得更好的JSON。這意味著,你能更輕松地對數(shù)據(jù)進行索引,而不必對特定JSON函數(shù)索引。之后,Postgre在2016年改進了性能,推出9.5、9.6、10版本還持續(xù)增強了現(xiàn)有特性。JSONB不僅開始支持內(nèi)聯(lián)更新,還提升了并行性,其它亮點包括:又名“RLS”,允許數(shù)據(jù)庫管理員決定用戶是否能夠根據(jù)策略查看或操作表中的特定數(shù)據(jù)行,是在PostgreSQL 9.5中引入的,為PostgreSQL用戶又增添了一層安全保障。邏輯復(fù)制從Postgres 10就開始出現(xiàn)了,它是一個復(fù)制工具,會將部分或全部數(shù)據(jù)復(fù)制到新的位置,并繼續(xù)從主源更新數(shù)據(jù)。數(shù)據(jù)的精確副本會被保存于不同的位置。用戶眼中的PostgresSQL VS MySQL在Reddit社區(qū)的評論上,用戶對于選擇PostgresSQL還是MySQL展開了激烈的討論。前幾年,MySQL一直霸占著數(shù)據(jù)庫榜首;但隨著時間的流逝,PostgresSQL憑借上述強大的功能逐漸超越了MySQL,以45.6%的比例位列排行榜第一。不僅如此,Postgres憑借其獨有的先進性逐漸成為了開發(fā)者心目中最受歡迎的開源數(shù)據(jù)庫之一,助力實現(xiàn)數(shù)據(jù)現(xiàn)代化!總結(jié)下,為什么用戶如此認(rèn)可Postgres呢?因為Postgres更可靠和安全、功能極其豐富、沒有鎖定;它不僅僅是一個“數(shù)據(jù)庫”,更是一個數(shù)據(jù)平臺!在Reddit上的其它評論中,我們發(fā)現(xiàn),其實,PostgresSQL的日益流行是在它成為大多數(shù)主流開發(fā)人員的首選之時。“使用PostgresSQL并不意味著你需要放棄SQLite”,一位用戶發(fā)表評論說。
該文章在 2023/10/16 9:34:16 編輯過