外篇 postgresql
加入書簽
章節字數:2402
滾屏速度:
保存設置 開始滾屏
PostgreSQL
PostgreSQL是以加州大學伯克利分校計算機係開發的POSTGRES,版本4。2為基礎的對象關係型數據庫管理係統(ORDBMS)。POSTGRES領先的許多概念隻是在非常遲的時候才出現在商業數據庫中。
PostgreSQL是最初的伯克利的代碼的一個開放源碼的繼承人。
它支持大部分SQL:2003標準並且提供了許多其他現代特性:複雜查詢、外鍵、觸發器、視圖、事務完整性、多版本並發控製
同樣,PostgreSQL可以用許多方法擴展,比如,通過增加新的:數據類型、函數、操作符、聚集函數、索引方法、過程語言
並且,因為許可證的靈活,任何人都可以以任何目的免費使用,修改,和分發PostgreSQL,不管是私用,商用,還是學術研究使用。
PostgreSQL的曆史簡介
現在被稱為PostgreSQL的對象-關係型數據庫管理係統(有一段時間被稱為Postgres95)是從伯克利寫的POSTGRES軟件包發展而來的。經過十幾年的發展,PostgreSQL是世界上可以獲得的最先進的開放源碼的數據庫係統,它提供了多版本並行控製,支持幾乎所有SQL構件(包括子查詢,事務和用戶定義類型和函數),並且可以獲得非常廣闊範圍的(開發)語言綁定(包括C,C++,Java,perl,tcl,和python)。
伯克利的POSTGRES項目
MichaelStonebraker領導的POSTGRES項目是由防務高級研究項目局(DARPA),陸軍研究辦公室(ARO),國家科學基金(NSF),以及ESL,Inc共同讚助的。POSTGRES的實現始於1986年,該係統最初的概念詳見POSTGRES的設計。最早的數據模型定義見ThePOSTGRESDataModel。當時的規則係統設計在POSTGRES規則係統的設計裏描述。存儲管理器的理論基礎和體係結構在POSTGRES存儲係統的設計裏有詳細描述。
從那以後,POSTGRES經曆了幾次主要的版本更新。第一個"演示性"係統在1987年便可使用了,並且在1988年的ACM-SIGMOD大會上展出。在1989年六月發布了版本1給一些外部的用戶使用。為了回應用戶對第一個規則係統的批評,作者重新設計了規則係統,並在1990年6月發布了使用新規則係統的版本2。版本3在1991年出現,增加了多存儲管理器的支持,並且改進了查詢執行器,重新編寫了規則係統。從那以後,隨後的版本直到Postgres95發布前工作都集中在移植性和可靠性上。
POSTGRES已經在許多研究或實際的應用中得到了應用。這些應用包括:一個財務數據分析係統,一個噴氣引擎性能監控軟件包,一個小行星跟蹤數據庫,一個醫療信息數據庫和一些地理信息係統。POSTGRES還被許多大學用於教學用途。最後,IllustraInformationTechnologiesIllustraInformationTechnologies(後來並入Informix)後者現在屬於IBM)拿到代碼並使之商業化。在1992年末POSTGRES成為Sequoia2000科學計算計劃的首要數據管理器。
到了1993年,外部用戶的數量幾乎翻番。隨著用戶的增加。用於源代碼維護的時間日益增加占用了太多本應該用於數據庫研究的時間,為了減少支持的負擔,伯克利的POSTGRES項目在版本4。2時正式終止。
Postgres95
在1994年,AndrewYu和JollyChen向POSTGRES中增加了SQL語言的解釋器。並隨後將Postgres95源代碼發布到互聯網上供大家使用,成為一個開放源碼的,原先伯克利POSTGRES代碼的繼承者。
Postgres95所有源代碼都是完全的ANSIC,而且代碼量減少了25%。並且有許多內部修改以利於提高性能和代碼的維護性。Postgres95版本1。0。x在進行WisconsinBenchmark測試時大概比POSTGRESv4。2快30-50%。除了修正了一些錯誤,下麵的是一些主要改進:
原來的查詢語言PostQUEL被SQL取代(在server端實現)。在PostgreSQL之前還不支持子查詢)(但這個功能可以在Postgres95裏麵由用戶定義的SQL函數實現)。重新實現了聚集。同時還增加了對GROUPBY查詢子句的支持。C程序仍可以調用libpq接口函數。
新增加了利用GNUReadline進行交互SQL查詢(psql)。這個程序很大程度上取代了老的monitor程序。
增加了新的前端庫,libpgtcl,用以支持以Tcl為基礎的客戶端。一個樣本shell,pgtclsh,提供了新的Tcl命令用於Tcl程序和Postgres95後端之間的交互。
徹底重寫了大對象的接口。保留了將大對象倒轉(Inversion)作為存儲大對象的唯一機製。(去掉了倒轉(Inversion)文件係統。)
去掉了記錄級(instance-level)的規則係統。但我們仍然可以通過重寫規則使用規則。
在發布的源碼中增加了一個簡短的常用SQL和Postgres95特有的SQL特性的教程。
用GNUmake(取代了BSDmake)用於製作。Postgres95可以使用不加補丁的GCC(修正了偶數字節數據(doubles)的對齊問題)。
PostgreSQL
到了1996年,我們很明顯的看出"Postgres95"這個名字已經不能經得起時間的考驗了。於是我們起了一個新名字PostgreSQL用於反映最初的POSTGRES和最新的使用SQL的版本之間的關係。同時版本號也重新從6。0開始,將版本號放回到最初的由伯克利POSTGRES項目開始的順序中。
Postgres95版本的開發重點放在標明和理解現有的後端代碼的問題上。PostgreSQL開發重點轉到了一些有爭議的特性和功能上麵,當然各個方麵的工作同時都在進行。