?
このドキュメントでは、 php中國語ネットマニュアル リリース
作為一款出名的對象-關(guān)系型數(shù)據(jù)庫管理系統(tǒng), PostgreSQL是從美國加州大學(xué)伯克利分校寫的POSTGRES軟件包發(fā)展而來的。 經(jīng)過超過二十多年的發(fā)展滯后,PostgreSQL是世界上最先進的開源的數(shù)據(jù)庫系統(tǒng)。
Michael Stonebraker領(lǐng)導(dǎo)的POSTGRES項目 是由防務(wù)高級研究項目局(DARPA)、陸軍研究辦公室(ARO)、國家科學(xué)基金(NSF)、ESL公司共同贊助的。 POSTGRES的實現(xiàn)始于1986年, 該系統(tǒng)最初的概念詳見 The design of POSTGRES POSTGRES的設(shè)計 ,和 The POSTGRES data model 中的初始數(shù)據(jù)模型定義。 最早的數(shù)據(jù)模型定義見POSTGRES 規(guī)則系統(tǒng)的設(shè)計。 存儲管理器的理論基礎(chǔ)和體系結(jié)構(gòu)在 POSTGRES存儲系統(tǒng)的設(shè)計 里有詳細描述。
從那以后,POSTGRES經(jīng)歷了幾次主要的版本更新。 第一個"demoware"系統(tǒng)在1987年便可使用了, 并且在1988年的ACM-SIGMOD大會上展出。 在1989年6月發(fā)布了版本1(在 POSTGRES的實現(xiàn) 里有描述)給一些外部的用戶使用。 為了回應(yīng)用戶對第一個規(guī)則系統(tǒng)的指正( POSTGRES規(guī)則系統(tǒng)的注解 ), 我們重新設(shè)計了規(guī)則系統(tǒng)( 有關(guān)數(shù)據(jù)庫系統(tǒng)的規(guī)則,過程,緩存和視圖 ),并在1990年6月發(fā)布了使用新規(guī)則系統(tǒng)的版本2。 版本3在1991年出現(xiàn),增加了多存儲管理器的支持,并且改進了查詢執(zhí)行器,重新編寫了規(guī)則系統(tǒng)。 從那以后,隨后的版本直到Postgres95發(fā)布前(見下文),工作都集中在移植性和可靠性上。
POSTGRES已經(jīng)在許多研究或?qū)嶋H的應(yīng)用中得到了應(yīng)用。 這些應(yīng)用包括:一個財務(wù)數(shù)據(jù)分析系統(tǒng)、一個噴氣引擎性能監(jiān)控軟件包、一個小行星跟蹤數(shù)據(jù)庫、一個醫(yī)療信息數(shù)據(jù)庫和一些地理信息系統(tǒng)。 POSTGRES還被許多大學(xué)用于教學(xué)用途。 最后,Illustra Information技術(shù)(后來并入Informix, 而它現(xiàn)在屬于IBM)拿到代碼并使之商業(yè)化。 在1992年末POSTGRES成為Sequoia 2000 scientific computing project的首要數(shù)據(jù)管理器。
到了1993年,外部用戶的數(shù)量幾乎翻番。 隨著用戶的增加,用于源代碼維護的時間日益增加,以至占用了太多本應(yīng)該用于數(shù)據(jù)庫研究的時間, 為了減少支持的負擔,伯克利的POSTGRES項目在版本4.2時正式終止。
1994年,Andrew Yu和Jolly Chen向POSTGRES中增加了SQL語言的解釋器, 并隨后將Postgres95的源代碼發(fā)布到互聯(lián)網(wǎng)上供大家使用, 從而成為一個開放源碼的原伯克利POSTGRES的繼承者。
Postgres95所有源代碼都是完全的ANSI C,而且代碼量減少了25%, 并且有許多內(nèi)部修改以利于提高性能和代碼的可維護性。 Postgres95版本1.0.x在進行Wisconsin Benchmark測試時大概比POSTGRESv4.2快 30%-50% 。 除了修正了一些錯誤,下面的是一些主要改進:
原來的查詢語言PostQUEL被SQL取代(在服務(wù)器端實現(xiàn))。 在PostgreSQL之前還不支持子查詢(見下文), 但這個功能可以在Postgres95里面由用戶定義的SQL函數(shù)實現(xiàn), 重新實現(xiàn)了聚集,同時還增加了對GROUP BY查詢子句的支持。
新增加了利用GNUReadline進行交互SQL查詢(psql)。 這個程序很大程度上取代了老的monitor程序。
增加了新的前端庫(libpgtcl), 用以支持以Tcl為基礎(chǔ)的客戶端。 一個樣本shell(pgtclsh), 提供了新的Tcl命令用于Tcl程序和Postgres95后端之間的交互。
徹底重寫了大對象的接口,保留了將大對象倒轉(zhuǎn)(inversion)作為存儲大對象的唯一機制,去掉了倒轉(zhuǎn)(inversion)文件系統(tǒng)。
去掉了實例級的規(guī)則系統(tǒng),但我們?nèi)匀豢梢酝ㄟ^重寫規(guī)則來使用規(guī)則。
在發(fā)布的源碼中增加了一個簡短的常用SQL和Postgres95特有的SQL特性的教程。
用GNUmake取代了BSDmake用于編譯。 Postgres95可以使用不加補丁的GCC進行編譯(修正了偶數(shù)字節(jié)數(shù)據(jù)的對齊問題)。
到了1996年,我們很明顯的看出"Postgres95"這個名字已經(jīng)經(jīng)不起時間的考驗了。 于是我們起了一個新名字PostgreSQL 用于反映最初的POSTGRES和最新的使用SQL的版本之間的關(guān)系。 同時版本號也重新從6.0開始,將版本號放回到最初的由伯克利POSTGRES項目開始的順序中。
許多人處于習(xí)慣或者拼寫簡單的原因,將PostgreSQL稱為"Postgres",這種稱法被當做綽號或者別名而廣泛接受。
Postgres95版本的開發(fā)重點放在標明和理解現(xiàn)有的后端代碼的問題上。 PostgreSQL開發(fā)重點轉(zhuǎn)到了一些有爭議的特性和功能上面,當然各個方面的工作同時都在進行。
自那以來,PostgreSQL發(fā)生的變化可以在Appendix E發(fā)行注記里面找到。