為什麼PostgreSQL是“最先進的開源數據庫”

SQL XML Linux LLVM 雲棲社區 2017-06-13

本文每一行都有內鏈,由於今日頭條規則所限,並不能一一加上鍊接,如果想進一步學習的同學,可以點此看到所有的內鏈:https://yq.aliyun.com/articles/99506

背景

打開PostgreSQL網站,你會看到這樣的flag。

The world's most advanced open source database.

為什麼PostgreSQL是“最先進的開源數據庫”

那麼它從何而來呢?

從個人對數據庫的角度,在幾個方面來分析一下

一、功能方面

1 數據處理能力 - 高級SQL特性

1、窗口查詢

2、聚合查詢,支持WITHIN GROUP、grouping sets, rollup, cube等

3、CTE, 遞歸查詢

4、merge,upsert (on conflict)語法

5、繼承

6、重寫規則

7、物化視圖

8、異步消息

9、advisory 鎖

2 數據處理能力 - 豐富類型

除了常見類型還包括擴展類型

1、數值(整型、任意長度精度數值、浮點、序列)

2、時間、日期、時間戳

3、字符串

4、貨幣

5、字節流

6、布爾

7、枚舉

8、幾何

9、網絡

10、比特流

11、全文檢索

12、UUID

13、XML

14、JSON

15、數組

16、複合

17、範圍

18、大對象

19、K-V類型

20、多維類型

21、樹類型

22、加密類型

23、模糊查詢加速類型

24、擴展類型,見擴展章節

3 數據處理能力 - 豐富函數

1、科學計算相關函數、隨機函數、三角函數

2、數據集生成函數 SRF

3、幾何(距離、面積、交錯、支點、位置等)

4、字符串格式化、處理、編碼轉換、等操作函數

5、字節流處理函數

6、比特流處理函數

7、正則表達式處理函數

8、全文檢索處理函數

9、JSON類型處理函數

10、枚舉、網絡、XML類型處理函數

https://www.postgresql.org/docs/10/static/functions-net.html

https://www.postgresql.org/docs/10/static/functions-xml.html

11、序列

12、數組處理函數(是否相交、包含、不包含、差集、交集、等)

13、範圍類型處理函數(是否相交、包含、不包含、差集、交集、等)

14、條件表達式

15、子查詢

16、行、數組構造器

17、聚合函數

18、窗口函數

19、觸發器

20、事件觸發器

4 數據快速檢索能力 - 先進索引

1、函數、表達式索引

2、多列索引

3、多索引合併(bitmapAnd, bitmapOr)

4、部分索引

5、B-Tree 索引

6、hash 索引

7、GIN 倒排索引

8、GiST 通用索引

9、SP-GiST 空間分區通用索引

10、BRIN 塊級索引

11、RUM 增強全文索引

12、BLOOM 布隆過濾索引

13、zombodb elasticSearch索引接口

14、b-tree, gist 合體索引

15、b-tree, gin 合體索引

16、《PostgreSQL 10.0 preview 功能增強 - 唯一約束+附加字段組合功能索引》

17、《PostgreSQL 10.0 preview 優化器改進 - 不完整索引支持複合排序》

18、《PostgreSQL 10.0 preview 性能增強 - 間接索引(secondary index)》

5 數據處理能力 - 高級編程特性

1、python存儲過程

2、pgsql存儲過程

3、sql存儲過程

4、tcl存儲過程

5、perl存儲過程

6、javascript存儲過程

7、CUDA存儲過程](https://github.com/pg-strom/devel)

8、R存儲過程

9、C嵌入式編程

10、分佈式存儲過程pl/proxy

11、還支持眾多語言:ruby, sh, java, php, xslt等等

6 複製能力

1、邏輯流式訂閱

2、物理流式複製

3、時間線逆轉

7 高級內部特性

1、動態視圖、統計信息、狀態信息、等待事件

2、TOP SQL

3、鎖

《PostgreSQL 鎖等待監控 珍藏級SQL - 誰堵塞了誰》

4、進程進度報告

5、探針

6、擴展探針

7、buffer內窺

8、數據文件內窺

9、REDO內窺

10、鉤子

11、流複製控制函數

12、事務快照接口

13、系統管理函數

14、開放協議(流複製協議、等)

15、大版本原地升級

16、plan hint

二、安全、可靠性方面

1、認證模式

祕鑰認證

GSSAPI 認證

SSPI 認證

Ident 認證

Peer 認證

LDAP 認證

RADIUS 認證

Certificate 認證

PAM 認證

BSD 認證

2、行安全策略

3、視圖柵欄

4、集群、庫、表空間、schema、對象、角色 多級權限

5、時間點恢復

6、塊級增量備份

https://github.com/postgrespro/pg_probackup

7、流式備份

8、異地容災

9、quorum-based 任意多副本

10、FPW,full_page_write

三、性能方面

1 多核並行計算

https://www.postgresql.org/docs/10/static/parallel-query.html

2 多機並行計算

fdw + inherit + append parallel

https://www.postgresql.org/docs/10/static/postgres-fdw.html

https://www.postgresql.org/docs/10/static/tutorial-inheritance.html

3 黑科技

1、llvm

《PostgreSQL 10.0 preview 性能增強 - 推出JIT開發框架(朝著HTAP邁進)》

2、向量計算

《PostgreSQL 向量化執行插件(瓦片式實現) 10x提速OLAP》

3、列存儲

《分析加速引擎黑科技 - LLVM、列存、多核並行、算子複用 大聯姻 - 一起來開啟PostgreSQL的百寶箱》

4 優化器

1、成本因子接口

2、統計信息

3、自定義統計信息

4、遺傳算法

5、nestloop, hash, merge JOIN

6、支持 plain, sorted, hashed, mixed 聚合策略

src/backend/commands/explain.c

7、39種NODE類型

src/backend/commands/explain.c

Agg:

8、支持並行sort(merge sort)

四、SQL兼容性方面

1、SQL:2011

160/179項 SQL:2011 的實現,覆蓋率達到 89.4%,另外還有大量擴展。

五、擴展接口方面

1、擴展函數

2、擴展聚合

3、擴展類型

4、擴展操作符

5、擴展索引

6、擴展全文檢索詞典

7、擴展編程語言

https://wiki.postgresql.org/wiki/PL_Matrix

8、擴展外部數據源

https://wiki.postgresql.org/wiki/Fdw

9、擴展數據採樣接口

10、擴展custom scan接口

https://github.com/pg-strom/devel

11、擴展WAL接口

12、擴展GiST索引

13、擴展SP-GiST索引

14、擴展GIN索引

15、擴展BRIN索引

六、橫向生態 - 插件

PostgreSQL 的擴展接口豐富,使得在開源、商業生態中有非常多PostgreSQL的擴展插件。

1、內置插件

2、pgxn

3、pgfoundry

4、github

5、獨立插件生態:

商業數據庫、數據庫支持服務公司、用戶、個人、高校、應用軟件開發商、其他開源社區。

例如 PostGIS, pgrouting, pipelinedb流計算插件, timescaledb時序插件, rdkit化學插件, madlib機器學習插件, plr R語言插件, postbis DNA插件, imgsmlr圖像特徵插件, pgfingerprint指紋特徵插件 等.

七、生態方面

1、內核生態

commitfest

內核

核心組會議

mail list

活躍度

postgresql wiki

postgresql in wiki

2、高校生態

PostgreSQL起源伯克利大學,與高校有非常深的淵源,也被業界貼上了學院派數據庫的標籤。同時PG社區趨於遵從行業標準設計,代碼嚴謹、工整,許多高校將PG用於數據庫教學。

3、開發者生態

4、最終用戶生態, user groups

http://cn.bing.com/search?q=postgresql+user+group&qs=n&form=QBLH&sp=-1&pq=postgresql+user+group&sc=0-21&sk=&cvid=A865739EF479477EB27A3A8DB9895CC1

5、技術支持服務生態

全球有很多技術支持服務商業公司,其中不乏PostgreSQL社區的核心貢獻者。

5.1、EDB

5.2、2ND

5.3、postgrespro(oleg)

5.4、PGEXPERT

5.5、河馬(tom lane)

5.6、cybertec

5.7、阿里雲

5.8、stackoverflow

6、全球主要貢獻者

八、業務場景

1、功能強大,支持非常多業務場景

《PostgreSQL 179 種場景 - 案例實踐》

2、HTAP發展方向

《數據庫任督二脈 - 數據與計算的生態融合》

九、其他

功能強大,同時簡單易用

《PostgreSQL on Linux 最佳部署手冊》

《PostgreSQL 前世今生》

《數據庫選型思考》

《數據庫選型之 - 大象十八摸 - 致 架構師、開發者》

相關推薦

推薦中...