分享主要圍繞以下三個方面:
- PG是什麼
- PG新版本開發者特性精選
- PG與Oracle全方位對比

1、PG是什麼?
如果99%的開源資料庫都是商業公司
那麼PG是那1%
首先,PG是開源資料庫,但還要給它再加一個字首“PG是社群開源資料庫”。如下圖所示,PG的SPONSOR中,占比最高的是最終使用者,也就是說使用PG的使用者貢獻的代碼量是最多的。之後是服務提供商、資料庫廠商和雲廠商。
是以,大家可以發現PG并沒有主體所有者,它不是被某一家公司控制的開源資料庫,是以可以稱之為“社群開源資料庫”。不像是被公司控制的開源資料庫的目的在于營收,PG開源的目的是傳播,就像是人類繁衍一樣。
那麼,為何很多資料庫廠商的資料庫是基于PG的,并且也向PG貢獻代碼呢?他們不是應該敝帚自珍嗎?
首先要從資料庫格局說起,如今的資料庫市場基本掌握在幾家商業資料庫巨頭手中,如果想要向市場推出一款新資料庫需要找使用者背書。
如果資料庫廠商希望推出一款很快能夠被使用者接受的資料庫,最好基于開源生态,是以可以向PG貢獻代碼,使得全世界的PG使用者為你背書。
其次,之前資料庫廠商和服務提供商隻需要安裝、優化、排錯和解決使用者問題即可。在閉源時代這樣還可以,但是在開源時代,這些就遠遠不夠了。
如今,隻有能夠掌握資料庫的核心代碼,在市場裡面才能展現出優勢。而證明能力的最簡單途徑就是貢獻代碼,成為SPONSOR。
再次,PG的最終使用者之是以貢獻代碼,是因為他們将PG用在核心業務中,也希望PG開源資料庫能夠更好地發展,隻有PG社群長久,才可以享受免費的、可持續發展的、開源的、穩定的、不被任何商業公司、任何國家控制的企業級的資料庫。是以:
1、PG用的人越多,越多人背書,使用越靠譜。
2、抛磚引玉,企業投入2個研發持續貢獻(一年可能一兩百萬),實際上整個PG社群有全球成千上萬的開發者在貢獻,對最終使用者來說,簡直賺到了。
使用商業資料庫,除了LICENSE等成本,依舊需要投管理、研發、外包資源,一年數千萬。公司越大,越有動力去貢獻社群(事實證明如此)。從趨勢來看,給PG貢獻代碼的大客戶會越來越多。
是以社群會像滾雪球一樣越來越大,算清這筆賬,企業是非常願意給PG社群貢獻代碼的。
最後,雲廠商之是以向PG貢獻代碼是因為他們輸出自研資料庫,同樣也會涉及到背書和生态建構的問題。而基于開源建構自研資料庫,可以避免重複造輪子。
PG是有組織有紀律的開源資料庫
PG是有組織、有紀律的開源資料庫,有專門負責籌款、基金管理的準則,也有負責生成行為準則的委員會和負責贊助商管理的委員會。正因為有組織、有紀律,PG才能經久不衰。
PG是活雷鋒
開源許可證獨特性-活雷鋒
PG還是一個“活雷鋒”,大家可以随意使用、拷貝、修改和分發。PG的許可證非常友好,是以可以将PG作為解決方案或者軟體資産的一部分進行打包輸出。
PG是全方位可擴充資料庫
技術架構獨特性
PG具有非常獨特的技術架構,允許拓展新的資料類型,PG 12甚至開放了存儲接口的背景,可以增加行列混合存儲等。此外,PG還可以擴充出很多衍生的資料庫或者插件。
是以,PG是一個可以真正做到全方位擴充的資料庫,使用者可以直接使用,當使用者覺得無法滿足業務需求時也可以擴充,而擴充未必需要自己實作,可以在社群裡面尋找相應插件。
PG是基石
商業趨勢
目前,提高正版化、安全、合規等意識已經成為一個全球趨勢。而PG因為它的開源協定,成為了一個很好的選擇。并且PG的穩定性和可靠性也非常優秀,能夠很好地相容Oracle資料庫,是以将會成為企業“去O”的首選。
PG是趨勢
技術趨勢
如今,業務對資料庫的要求越來越高,不僅需要存儲關系型資料,也可能需要存儲多模資料。基于PG的可擴充性,可以擴充出各種功能,既能夠滿足SQL的通用性,又能夠滿足NoSQL的擴充性,同時還具有多模開發的便捷性。
PG是學術界與工業界的先進代表
PostgreSQL榮譽
PG獲得了DB-engines 2017和2018年的年度資料庫,并且在2019年獲得OSCON終身成就獎,成為了Linux後第二個獲得該獎的開源産品。
PG是企業替換Oracle首選
PG定位-企業級、純社群開源、多模資料庫
對于資料庫系統而言,需要關注其商業價值和創新價值。而且PG能夠相容大多數Oracle使用場景。另外,阿裡雲提供了POLARDB相容Oracle文法版本,具有更高相容度,PG将會成為代替Oracle的首選。
大家可以回憶一下PG資料庫的釋出節奏,從最早1973年Michael Stonebraker發表的論文,到1994年SQL解析系統重新啟動以後開源,就有了現在看到的PG版本。之後,PG每年都會發一個大版本,每一兩個月左右發一個小版本。這就相當于是股市中的藍籌股,非常穩定。
PG是生态
PG的生态非常完善,從使用者、高校、軟體開發商、雲廠商、服務提供商、開源社群、教育訓練機構到硬體廠商,整個生态一應俱全。
上述這麼多隻是為了回答一個問題,那就是PG到底是什麼?可以說,PG重新定義了開源資料庫。這才是企業心目中的開源資料庫。
2、PG新版本開發者特性精選
PG 11在并行計算部分做了較大增強,還做了btree index include索引葉子附加屬性,并且添加字段速度更快(無論多大的表加減字段都是毫秒級)。
并行計算增強
自動并行計算不需要改寫SQL,而是根據SQL代價自動規劃并行數量,并且能夠覆寫幾乎所有複雜查詢。
btree indexinclude
btree index include功能非常有用。很多使用者非常在意資料庫有沒有聚集表的功能,所謂聚集表是資料存儲以某個KEY的順序去組織的,但不能以多種KEY順序來組織。
是以,PG提供了btree index include功能可以支援任意次元的聚集存儲組織形态,對于開發者非常友好。
添加字段更快
PG 11無論是否加預設值修改原資料,而且不管這個表多大,都不需要修改資料,是以對資料特别友好。
PG 12增加了幾個非常重要的功能,比如AM接口使得可以在PG增加存儲引擎,分區表大幅度性能提升,GiST index include索引葉子附加屬性,日志采樣,自定義統計資訊支援MCV,Reindex concurrently不堵塞讀寫操作,SQL/JSON path language,Generated columns以及case-insensitive and accent-insensitive grouping and ordering。
3、PG與Oracle全方位對比
最後将PG和Oracle做一個全方位對比。就像是雙11購買空調一樣,我們需要精心對比一下。首先,從口碑和版本的釋出節奏來看, PG一定穩赢。
以下幾張圖中标黃的部分是具有的優勢。其中,價格很明顯不用比,因為PG“不要錢”。
在核心技術方面,Oracle具有Rac,比原生PG強。但是PG的生态非常強大,用整個生态去PK Oracle,輸赢就不好說了。
在優化器方面,Oracle确實做得特别好。對于記憶體表而言,PG表空間對應到檔案系統,一個檔案一個表空間。而Oracle通過datafile加進去,可以了解為在多個block devs上面組合出一個大表空間,在這個大表空間裡面可以橫向去擴充對象。而PG如果想要整出一個特别大的表空間則需要借助存儲的能力或檔案系統的能力。
Oracle強調它有次元group,也就是一個次元可以寫到多個檔案裡面形成多個副本。這是因為很早以前Oracle的存儲不是特别可靠,需要通過多個副本方式來保證資料可靠。
而今天檔案系統非常強大,存儲本身的可靠性也已經很強大了,是以存儲或者檔案系統可以保證可靠性,是以PG沒有做這部分的工作,可以借助生态實作(例如檔案系統塊裝置鏡像、存儲鏡像等)。Oracle支援塊級壓縮,而PG 13版本中也應該會支援塊級壓縮。
PG的存儲引擎是可插拔的,可以支援很多元件、引擎和索引,可拓展性比Oracle好很多。PG具有quorumbase能力,而Oracle不具備。此外,PG還具有較好的橫向擴充能力,例如MPP能力。
另外,PG支援的資料類型比Oracle多,支援數組、json、kml、kv、GIS、多元向量、圖像等。對于外部通路接口而言,Oracle有getv,PG有邏輯訂閱和資源隔離可以支援通路外部源。
在增值功能方面,Oracle的閃回做得确實非常好。但PG增值功能可以做的更好,比如GPU加速,語言擴充性。
PG維護成本相對低很多,因為其診斷工具比較多,并且問題上報給社群,通常在24小時内就會收到回複。PG的産品限制也很少,可以無限地建立db、user、schema和table。
至于“售後服務”,Oracle的第三方的支援公司遇到無法解決掉問題隻能交給原廠,但是使用PG,不僅支援公司能夠幫助修複,社群也可以。
PG的代碼可讀性堪稱教科書級别,即使不懂C語言也沒有關系,代碼注釋非常清晰,子產品歸類也很清晰,甚至技術引用哪個論文都會直接告訴你。PG的細節處理比較好,例如Psql是dba用得最多的黑屏操作,支援補齊功能、指令幫助功能、簡單程式設計功能等,而Oracle往往沒有補齊的功能。
而且,PG是純C代碼的,效率是最高的,沒有偷工減料。在産能方面,PG的發行頻率更是Oracle沒法比的,每年一個大版本,小版本每個月左右釋出一個。
對于公司的資本組成或者社群的sponsor組成、企業運作而言,PG來自于全球社群背後有很多的商業巨頭的支撐,并且在社群化運作方面,PG也更具有優勢。
德哥PPT擷取方式
關注微信公衆号“阿裡資料庫技術”回複“PG”即可擷取德哥演講PPT資料啦!