為什么 PostgreSQL 最受喜愛?
PostgreSQL 在 Stackoverflow 2022 開發(fā)人員調(diào)查中評(píng)為最受喜愛的數(shù)據(jù)庫(見下圖),超過了 MySQL。
為什么 PostgreSQL 是最受喜愛的呢?
簡(jiǎn)言之:一個(gè)數(shù)據(jù)庫幾乎囊括了開發(fā)人員需要的所有用例。并且開源的屬性還培植了一個(gè)應(yīng)用廣泛的生態(tài)系統(tǒng)。
OLTP (Online Transaction Processing)
PostgreSQL 支持事務(wù)的 ACID 屬性,可以進(jìn)行 CRUD(創(chuàng)建-讀取-更新-刪除)操作。并且它還有一般關(guān)系數(shù)據(jù)庫支持的 View, Materialized View, Trigger, 存儲(chǔ)過程等。
OLAP (Online Analytical Processing)
我們可以使用 PostgreSQL 進(jìn)行 OLAP 中常用的聚合處理。PostgreSQL 基于 HTAP(Hybrid transactional/analytical processing)架構(gòu),因此可以很好地在同一個(gè)數(shù)據(jù)庫中運(yùn)行 OLTP 和 OLAP 操作。
HTAP 是咨詢公司 Gartner 在 2014 年的報(bào)告 Hybrid Transaction/Analytical Processing Will Foster Opportunities for Dramatic Business Innovation 中提出的一個(gè)名詞,其定義為:
HTAP 是一種新興的應(yīng)用程序架構(gòu),它“打破了事務(wù)處理和分析之間的壁壘”。它使人們能夠做出更明智和更實(shí)時(shí)的商業(yè)決策。
傳統(tǒng)的數(shù)據(jù)架構(gòu)將事務(wù)系統(tǒng)和分析系統(tǒng)分開。我們需要構(gòu)建大量批處理的任務(wù)從 OLTP 數(shù)據(jù)庫拷貝數(shù)據(jù)到 OLAP 數(shù)據(jù)庫(數(shù)據(jù)倉庫),這個(gè)過程叫做 ETL(Extract-Transform-Load)。這種架構(gòu)不但增加了系統(tǒng)的復(fù)雜度,帶來了數(shù)據(jù)錯(cuò)誤,還減慢了商業(yè)決策的速度。HTAP 大大提高了數(shù)據(jù)架構(gòu)的及時(shí)性。
FDW (Foreign Data Wrapper)
FDW 是 PostgreSQL 中的一個(gè)擴(kuò)展,允許我們?cè)L問外部數(shù)據(jù)庫中的表結(jié)構(gòu)或數(shù)據(jù)。
SQL 標(biāo)準(zhǔn)在 2003 年的時(shí)候加入了 SQL/MED (SQL Management of External Data),用于處理從 SQL 數(shù)據(jù)庫訪問遠(yuǎn)程對(duì)象的標(biāo)準(zhǔn)化方法。2011 年, PostgreSQL 9.1 支持讀取遠(yuǎn)程對(duì)象。2013 年,PostgreSQL 9.3 支持寫入。現(xiàn)在,F(xiàn)DW 可以訪問大部分關(guān)系型數(shù)據(jù)庫,NoSQL 數(shù)據(jù)庫和外部文本文件。
流式計(jì)算
PipelineDB 是用于高性能時(shí)間序列聚合的 PostgreSQL 擴(kuò)展,旨在為實(shí)時(shí)報(bào)告和分析應(yīng)用提供支持。
地理空間
PostGIS 是 PostgreSQL 對(duì)象關(guān)系數(shù)據(jù)庫的空間擴(kuò)展。它增加了對(duì)地理對(duì)象的支持,允許在 SQL 中查詢位置信息。
時(shí)間序列
Timescale 擴(kuò)展了 PostgreSQL 的時(shí)間序列和分析功能。例如,開發(fā)人員可以將金融數(shù)據(jù)流、市場(chǎng)數(shù)據(jù)與其他業(yè)務(wù)數(shù)據(jù)結(jié)合起來,構(gòu)建新的應(yīng)用程序并發(fā)現(xiàn)獨(dú)特的見解。
分布式表
CitusData 是一個(gè) PostgreSQL 的擴(kuò)展,將 Postgres 轉(zhuǎn)換為分布式數(shù)據(jù)庫。