天天看點

PostgreSQL

PostgreSQL

PostgreSQL

目錄

<dl></dl>

<dd></dd>

展開

  現在被稱為 PostgreSQL (發音為Post-gress-cue-ell 聲音檔案: MP3檔案)的對象-關系型資料庫管理系統(有一段時間被稱為 Postgres95)是從伯克利寫的 POSTGRES 軟體包發展而來的。經過十幾年的發展, PostgreSQL 是世界上可以獲得的最先進的開放源碼的資料庫系統, 它提供了多版本并行控制,支援幾乎所有 SQL 構件(包括子查詢,事務和使用者定 義類型和函數), 并且可以獲得非常廣闊範圍的(開發)語言綁定 (包括 C,C++,Java,perl,tcl,和 python)。

  在 1994 年, Andrew Yu 和 Jolly Chen 向 POSTGRES 中增加了 SQL 語言的解釋器。并随後将 Postgres95 源代碼釋出到網際網路上供大家使用, 成為一個開放源碼的,原先伯克利 POSTGRES 代碼的繼承者。

  Postgres95 所有源代碼都是完全的 ANSI C , 而且代碼量減少了 25%。并且有許多内部修改以利于提高性能和代碼的維護性。 Postgres95 版本 1.0.x 在進行 Wisconsin Benchmark 測試時大概比 POSTGRES v4.2 快 30-50%。

  到了 1996 年, "Postgres95"改成新名字 PostgreSQL 用于反映最初的 POSTGRES 和最新的使用 SQL 的版本之間的關系。 同時版本号也 重新從 6.0 開始, 将版本号放回到最初的由 伯克利 POSTGRES 項目開始的順序中。

  Postgres95 版本的開發重點放在标明和了解現有的後端代碼的問題上。 PostgreSQL 開發重點轉到了 一些有争議的特性和功能上面,當然各個方面的工作同時都在進行。

  除了修正了一些錯誤,下面的是一些主要

  原來的查詢語言 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 )的對齊問題)。

  Michael Stonebraker 上司的 POSTGRES 項目是由防務進階研究項目局(DARPA), 陸軍研究辦公室(ARO),國家科學基金(NSF), 以及 ESL, Inc 共同贊助的。 POSTGRES 的實作始于 1986 年, 該系統最初的概念詳見 POSTGRES的設計。 最早的資料模型定義見 The POSTGRES Data Model。 當時的規則系統設計在 POSTGRES 規則系統的設計 裡描述. 存儲管理器的理論基礎和體系結構在 POSTGRES存儲系統的設計 裡有較長的描述。

  從那以後,POSTGRES 經曆了幾次主要的版本更新。 第一個"示範性"系統在 1987 年便可使用了, 并且在 1988 年的 ACM-SIGMOD 大會上展出。在 1989 年六月釋出了版本 1給一些外部的使用者使用。 為了回應使用者對第一個規則系統的批評,作者重新設計了規則系統,并在1990年6月釋出了使用新規則系統的版本 2。 版本 3 在1991年出現, 增加了多存儲管理器的支援, 并且改進了查 詢執行器, 重新編寫了規則系統。 從那以後,随後的版本直到 Postgres95 釋出前工作都集中在移植性和可靠性上。

  POSTGRES 已經在許多研究或實際的應用中得到了應用。 這些應用包括: 一個财務資料分析系統,一個噴氣引擎性能監控軟體包,一個小行星跟蹤資料庫, 一個醫療資訊資料庫和一些地理資訊系統。 POSTGRES 還被許多大學用于教學用途。 最後, Illustra Information Technologies Illustra Information Technologies (後來并入 Informix) 後者現在屬于 IBM) 拿到代碼并使之商業化。在 1992 年末 POSTGRES 成為 Sequoia 2000 科學計算計劃的首要資料管理器。

  到了 1993 年,外部使用者的數量幾乎翻番。随着使用者的增加。 用于源代碼維護的時間日益增加 占用了太多本應該用于資料庫研究的時間, 為了減少支援的負擔,伯克利的POSTGRES 項目在版本 4.2 時正式終止。

  事實上, PostgreSQL 的特性覆寫了 SQL-2/SQL-92 和 SQL-3/SQL-99,首先,它包括了可以說是目前世界上最豐富的資料類型的支援,其中有些資料類型可以說連商業資料庫都不具備, 比如 IP 類型和幾何類型等;其次,PostgreSQL 是全功能的自由軟體資料庫,很長時間以來,PostgreSQL 是唯一支援事務、子查詢、多版本并行控制系統、資料完整性檢查等特性的唯一的一種自由軟體的資料庫管理系統。直到最近才有 Inprise 的 InterBase 以及 SAP 等廠商将其原先專有軟體開放為自由軟體之後才打破了這個唯一。最後,PostgreSQL擁有一支非常活躍的開發隊伍,而且在許多黑客的努力下,PostgreSQL 的品質日益提高。

  從技術角度來講,PostgreSQL 采用的是比較經典的 C/S (client/server)結構,也就是一個用戶端對應一個伺服器端守護程序的模式,這個守護程序分析用戶端來的查詢請求,生成規劃樹,進行資料檢索并最終把結果格式化輸出後傳回給用戶端。為了便于用戶端的程式的編寫,由資料庫伺服器提供了統一的用戶端 C 接口。而不同的用戶端接口都是源自這個 C 接口,比如 ODBC,JDBC,Python,Perl ,Tcl,C/C++,ESQL 等, 同時也要指出的是,PostgreSQL 對接口的支援也是非常豐富的,幾乎支援所有類型的資料庫用戶端接口。這一點也可以說是 PostgreSQL 一大優點。

  從 Postgres 開始,PostgreSQL 就經受了多次變化。

  首先,早期的 PostgreSQL 繼承了幾乎所有 Ingres, Postgres, Postgres95 的問題:過于學院味,因為首先它的目的是資料庫研究,是以不論在穩定性, 性能還是使用友善方面,長期以來一直沒有得到重視,直到 PostgreSQL 項目開始以後,情況才越來越好,目前,PostgreSQL 已經完全可以勝任任何中上規模範圍内的應用範圍的業務。目前有報道的生産資料庫的大小已經有 TB 級的資料量,已經逼近 32 位計算的極限。不過學院味也給 PostgreSQL 帶來一個意想不到的好處:大概因為各大學的軟硬體環境差異太大的緣故,它是目前支援平台最多的資料庫管理系統的一種,所支援的平台多達十幾種,包括不同的系統,不同的硬體體系。至今,它仍然保持着支援平台最多的資料庫管理系統的稱号。

  其次,PostgreSQL 的确還欠缺一些比較高端的資料庫管理系統需要的特性,比如資料庫叢集,更優良的管理工具和更加自動化的系統優化功能 等提高資料庫性能的機制等。

<dt>擴充閱讀:</dt>

1

PostgreSQL 8.0.0 中文文檔(PostgreSQL 中國 制作)

2

<a href="http://www.postgresql.org/" target="_blank">http://www.postgresql.org/</a>

3

<a href="http://www.pgsqldb.org/" target="_blank">http://www.pgsqldb.org/</a>

4

<a href="http://tech.ccidnet.com/art/1105/20071206/1300105_1.html" target="_blank">http://tech.ccidnet.com/art/1105/20071206/1300105_1.html</a>

<dt>開放分類:</dt>