2025年9月25日: PostgreSQL 18 釋出!
支援的版本:當前 (18) / 17 / 16 / 15 / 14 / 13
開發版本:devel
不支援的版本:12 / 11 / 10 / 9.6 / 9.5 / 9.4 / 9.3 / 9.2 / 9.1 / 9.0 / 8.4 / 8.3 / 8.2 / 8.1 / 8.0 / 7.4 / 7.3 / 7.2 / 7.1

2. PostgreSQL 簡史 #

現在被稱為 PostgreSQL 的物件關係資料庫管理系統源自加州大學伯克利分校編寫的 POSTGRES 包。經過幾十年的開發,PostgreSQL 已成為目前最先進的開源資料庫。

您可以在 Hellerstein 博士的論文《回顧 Postgres[hell18] 中找到另一個關於此歷史的視角。

2.1. 加州大學伯克利分校 POSTGRES 專案 #

由 Michael Stonebraker 教授領導的 POSTGRES 專案得到了美國國防部高階研究計劃局(DARPA)、陸軍研究辦公室(ARO)、國家科學基金會(NSF)以及 ESL 公司(ESL, Inc.)的資助。POSTGRES 的實現始於 1986 年。該系統的初步概念在 [ston86] 中提出,初始資料模型的定義出現在 [rowe87] 中。當時規則系統的設計在 [ston87a] 中進行了描述。儲存管理器的原理和架構在 [ston87b] 中得到了詳細闡述。

此後,POSTGRES 經歷了數次重大發布。第一個“演示軟體”系統於 1987 年投入執行,並在 1988 年的ACM-SIGMOD會議上展出。在 [ston90a] 中描述的 1.0 版本於 1989 年 6 月釋出給了一些外部使用者。針對第一個規則系統的批評([ston89]),規則系統被重新設計([ston90b]),並在 1990 年 6 月釋出了帶有新規則系統的 2.0 版本。3.0 版本出現在 1991 年,增加了對多個儲存管理器的支援、改進的查詢執行器以及重寫的規則系統。在 Postgres95(見下文)之前的後續版本,大部分都側重於可移植性和可靠性。

POSTGRES 已被用於實現許多不同的研究和生產應用。其中包括:財務資料分析系統、噴氣發動機效能監控包、小行星跟蹤資料庫、醫療資訊資料庫以及多個地理資訊系統。POSTGRES 也被用作多所大學的教學工具。最後,Illustra Information Technologies(後來併入 Informix,現在歸 IBM 所有)獲取了程式碼並將其商業化。1992 年底,POSTGRES 成為 [ston92] 中描述的 Sequoia 2000 科學計算專案的主要資料管理器。

1993 年,外部使用者社群的規模幾乎翻了一番。人們越來越清楚地認識到,維護原型程式碼和提供支援佔用了大量本應用於資料庫研究的時間。為了減輕這種支援負擔,加州大學伯克利分校的 POSTGRES 專案正式結束,版本為 4.2。

2.2. Postgres95 #

1994 年,Andrew Yu 和 Jolly Chen 為 POSTGRES 添加了一個 SQL 語言直譯器。在新名稱 Postgres95 下,該版本隨後在網上釋出,作為一個源自原始 POSTGRES Berkeley 程式碼的開源專案,以自己的方式發展。

Postgres95 的程式碼完全採用 ANSI C 編寫,並且體積縮小了 25%。許多內部更改提高了效能和可維護性。與 POSTGRES 4.2 版本相比,Postgres95 1.0.x 版本在 Wisconsin Benchmark 上的執行速度提高了約 30-50%。除了錯誤修復外,以下是主要的增強功能:

  • 查詢語言 PostQUEL 被替換為SQL(在伺服器中實現)。(介面庫 libpq 的名稱來源於 PostQUEL。)直到 PostgreSQL(見下文)才支援子查詢,但它們可以透過使用者定義的SQL函式在 Postgres95 中模仿。聚合函式被重新實現。還增加了對 GROUP BY 查詢子句的支援。

  • 提供了一個新程式(psql)用於互動式 SQL 查詢,該程式使用GNU Readline。這在很大程度上取代了舊的 monitor 程式。

  • 一個新的前端庫 libpgtcl 支援Tcl-आधारित 客戶端。一個示例 shell pgtclsh 提供了新的 Tcl 命令,用於將 Tcl 程式與 Postgres95 伺服器連線。

  • 大型物件介面得到了改進。倒置大型物件是儲存大型物件的唯一機制。(倒置檔案系統被移除。)

  • 例項級別的規則系統被移除。規則仍然作為重寫規則存在。

  • 一個簡短的教程,介紹了正則表示式SQL功能以及 Postgres95 的功能,隨原始碼分發。

  • GNUmake(而不是BSDmake)用於構建。此外,Postgres95 可以用未打補丁的 GCC 編譯(雙精度浮點數的對齊方式已修復)。

2.3. PostgreSQL #

到 1996 年,很明顯“Postgres95”這個名字將經不起時間的考驗。我們選擇了新名稱 PostgreSQL,以反映原始 POSTGRES 與近期版本之間的關係以及SQL能力。同時,我們將版本號從 6.0 開始,回溯到加州大學伯克利分校 POSTGRES 專案最初開始的序列。

由於傳統原因以及人們發現 Postgres 比 PostgreSQL 更容易發音,Postgres 仍然被視為一個官方專案名稱。

Postgres95 開發期間的重點是識別和理解伺服器程式碼中現有的問題。而對於 PostgreSQL,重點已經轉移到增強功能和特性上,儘管所有領域的工作仍在繼續。

關於此後每個 PostgreSQL 版本釋出的詳細資訊,請參見 https://postgres.tw/docs/release/

提交更正

如果您在文件中發現任何不正確、與您在特定功能上的實際體驗不符或需要進一步澄清的內容,請使用此表單報告文件問題。