本文每一行都有內鏈,由於今日頭條規則所限,並不能一一加上鍊接,如果想進一步學習的同學,可以點此看到所有的內鏈:https://yq.aliyun.com/articles/99506
背景
打開PostgreSQL網站,你會看到這樣的flag。
The world's most advanced open source database.
那麼它從何而來呢?
從個人對數據庫的角度,在幾個方面來分析一下
一、功能方面
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 前世今生》
《數據庫選型思考》
《數據庫選型之 - 大象十八摸 - 致 架構師、開發者》