何為 PostgreSQL?
PostgreSQL 是最初伯克利的代碼的一個開放源碼的繼承人。 它支持大部分 SQL 標準並且提供了許多其他現代特性:
● 複雜查詢
● 外鍵
● 觸發器
● 視圖
● 事務完整性
● 多版本並發控制
同樣,PostgreSQL 可以用許多方法擴展,比如, 通過增加新的:
● 數據類型
● 函式
● 操作符
● 聚集函式
● 索引方法
● 過程語言
並且,因為許可證的靈活,任何人都可以以任何目的免費使用,修改,和分發 PostgreSQL, 不管是私用,商用,還是學術研究使用。
PostgreSQL 的歷史簡介
現在被稱為 PostgreSQL 的對象-關係型資料庫管理系統(有一段時間被稱為 Postgres95)是從伯克利寫的 POSTGRES 軟體包發展而來的。經過十幾年的發展, PostgreSQL 是世界上可以獲得的最先進的開放源碼的資料庫系統, 它提供了多版本並行控制,支持幾乎所有 SQL 構件(包括子查詢,事務和用戶定義類型和函式), 並且可以獲得非常廣闊範圍的(開發)語言綁定(包括 C,C++,Java,perl,tcl,和 python)。
伯克利的 POSTGRES 項目
Michael Stonebraker 領導的 POSTGRES 項目是由防務高級研究項目局(DARPA), 陸軍研究辦公室(ARO),國家科學基金(NSF), 以及 ESL, Inc 共同贊助的。 POSTGRES 的實現始於 1986 年, 該系統最初的概念詳見 POSTGRES的設計 。 最早的數據模型定義見 The POSTGRES Data Model。 當時的規則系統設計在 POSTGRES 規則系統的設計 里描述. 存儲管理器的理論基礎和體系結構在 POSTGRES存儲系統的設計 里有詳細描述。
從那以後,POSTGRES 經歷了幾次主要的版本更新。 第一個"演示性"系統在 1987 年便可使用了, 並且在 1988 年的 ACM-SIGMOD 大會上展出。在 1989 年六月發布了版本 1(在 POSTGRES的實現 里有描述)給一些外部的用戶使用。 為了回套用戶對第一個規則系統的批評,( POSTGRES 規則系統的註解 ), 我們重新設計了規則系統( 有關資料庫系統的規則,過程,快取和視圖 )並在1990年6月發布了使用新規則系統的版本 2。 版本 3 在1991年出現, 增加了多存儲管理器的支持, 並且改進了查詢執行器, 重新編寫了規則系統。 從那以後,隨後的版本直到 Postgres95 發布前(見下文),工作都集中在移植性和可靠性上。
POSTGRES 已經在許多研究或實際的套用中得到了套用。 這些套用包括: 一個財務數據分析系統,一個噴氣引擎性能監控軟體包,一個小行星跟蹤資料庫, 一個醫療信息資料庫和一些地理信息系統。 POSTGRES 還被許多大學用於教學用途。 最後,Illustra Information Technologies Illustra Information Technologies (後來併入Informix, 而 Informix 在屬於 IBM) 拿到代碼並使之商業化。在 1992 年末 POSTGRES 成為 Sequoia 2000科學計算項目 的首要數據管理器。
到了 1993 年,外部用戶的數量幾乎翻番。隨著用戶的增加。 用於原始碼維護的時間日益增加占用了太多本應該用於資料庫研究的時間, 為了減少支持的負擔,伯克利的 POSTGRES 項目在版本 4.2 時正式終止。
軟體改進
除了修正了一些錯誤,下面的是一些主要改進:
查詢語言
原來的查詢語言 PostQUEL 被 SQL 取代(在 server 端實現)。在 PostgreSQL 之前還不支持子查詢)(但這個功能可以在 Postgres95 裡面由用戶定義的 SQL 函式實現)。重新實現了聚集。同時還增加了對 GROUP BY 查詢子句的支持。 C 程式仍可以調用 libpq接口函式。
新增加了利用 GNU Readline 進行互動 SQL 查詢(psql)。 這個程式很大程度上取代了老的 monitor 程式。
前端庫
增加了新的前端庫, libpgtcl, 用以支持以 Tcl為基礎的客戶端。一個樣本 shell, pgtclsh,提供了新的 Tcl 命令用於 Tcl 程式和 Postgres95 後端之間的互動。
徹底重寫了大對象的接口。 保留了將大對象倒轉(Inversion )作為存儲大對象的唯一機制。 (去掉了倒轉(Inversion )檔案系統。)
去掉了記錄級(instance-level )的規則系統。 但我們仍然可以通過重寫規則使用規則。
特性教程
在發布的源碼中增加了一個簡短的常用 SQL 和 Postgres95 特有的 SQL 特性的教程。
用GNU make (取代了 BSD make)用於製作。 Postgres95 可以使用不加補丁的 GCC (修正了偶數位元組數據( doubles )的對齊問題)。
版本發布
2013年10月10日,PostgreSQL 正式發布9.3.1版本。
2012年09月10日,PostgreSQL 宣布 9.2 正式版發布了!該版本主要在性能方面有很大的提升,也包括一些新的 SQL 特性以及複製支持方面,主要內容包括:
允許查詢直接從索引中獲取數據,避免訪問堆數據 ( index-only scans)
允許查詢計畫器為指定參數值生成自定義的計畫,甚至是用了 Prepared Statement
提升計畫器通過內部索引掃描來使用嵌套循環
允許流複製從節點將數據轉到其他從節點 (cascading replication)
允許pg_basebackup對待機的伺服器進行基準備份
增加新工具pg_receivexlog用來收集WAL 檔案的改動
增加SP-GiST(Space-Partitioned GiST) 索引訪問方法
支持range data types
增加JSON數據類型
為視圖增加security_barrier選項
允許 libpq 連線字元串使用URI格式
支技HP-UX
為 libpq 增加single-row processing mode以更好的處理大結果集。