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