PostgreSQL 的昨天今天和明天

zecaro發表於2011-02-03

        打算好好研究一下mysql,這幾天也順便看了一些非oracle的資料庫方面的東西。覺得有些意思,轉載之~


PostgreSQL 的昨天今天和明天

 原文連結  


PostgreSQL 是一種非常複雜的物件-關係型資料庫管理系統(ORDBMS), 也是目前功能最強大,特性最豐富和最複雜的自由軟體資料庫系統。有些特性甚至連商業資料庫都不具備。
    這個起源於伯克利(BSD)的資料庫研究計劃目前已經衍生成一項國際開發專案, 並且有非常廣泛的使用者。

    請參看本站主要成員何偉平(BITBIRD)的文章“PostgreSQL的昨天、今天和明天—自由軟體資料庫PostgreSQL簡介”。

 

PostgreSQL 的昨天今天和明天
                                              --自由軟體資料庫 PostgreSQL 簡介 v2.0


前言

今天,如果人們談論起計算機作業系統,肯定有非常多的人會津津樂道自由軟體作業系統Linux,畢竟,眾人拾柴火焰高, 如今沒有任何人敢於忽視 Linux 這個自由軟體作業系統在我們星球的存在,就連國內比較特殊的環境下,也不斷地有 各種各樣的 Linux 秀出現讓公眾,甚至是那些對計算機知之甚少的群眾都能意識到 Linux 的存在。但是,如果我們 說起資料庫,可能絕大多數人只會記得有 Oracle,IBM DB2,Informix,Sybase,MS SQL Server,以及在網際網路廣為 使用的輕量級 Mysql,而提到 PostgreSQL 的名字,可能很多人都會皺起眉毛:“這是什麼?”

“PostgreSQL 是一種特性非常齊全的自由軟體的物件-關係性資料庫管理系統(ORDBMS),它的很多特性正是當今許多商業資料庫的前身”
--摘自 PostgreSQL 手冊。

為了讓大家能夠清楚的瞭解 PostgreSQL,請聽我細細道來。

歷史

出身名門

談到 PostgreSQL,我們不得不談 Berkeley,也就是中文中的“加州大學伯克利分校”這所大名鼎鼎的大學。 老實說,伯克利(BSD)對電腦科學的貢獻可謂巨大,在整個電腦科學的發展史上,幾乎到處都有這所學 校的研究人員和學生的足跡。只要稍微對計算機技術史有些記憶的人都會記得在 Unix 作業系統的發展里程碑 上 BSD 這三個字的分量,然而也許正是由於 BSD 在系統和網路領域裡的光芒太耀眼,掩蓋了 BSD 對計算機技術其他分支的貢獻,而
PostgreSQL 正是其中之一。

創世紀——Ingres

追本溯源地講,PostgreSQL 最早開始於 BSD 的 Ingres 專案,這個專案主要是研究關係型資料庫技術,早在 1970 年 E.F. Codd 就提出了關係模型,從那以後,人類在計算機領域的資料管理就進入了一個新的時期。從此人們開始用抽象的關係語句來描述自己的 資料,大大提高了人類對資料的抽象描述能力。而 Ingres 專案正是就此進行研究的,它始於 1977 年,到 1985 年結束,而其研究成果後來被一家叫 Relational Technologies 的商業公司拿去做成了商品軟體,後來這家公司又被 Computer Associates(CA)收購,不知道 CA 的 JASMINE裡面是否還有當年 Ingres 的影子?

新專案——Postgres

然後,從1986年開始,BSD 的 Michael Stonebraker 教授領導了稱為 Postgres 的“後Ingres”專案, 其主要目的是資料庫管理系統的更高階研究,因此而產生了 PostgreSQL 的直接前身,Postgres,而 PostgreSQL 的名字也是從 Postgres 專案繼承過來的。 這個專案的成果是非常巨大的,在現代資料庫的許多方面都做出的大量的貢獻,比如,物件導向的資料庫, 部分索引技術,規則,過程和資料庫擴充套件等方面都走在了資料庫管理系統的前列。而且,Stonebraker 教授還做出了一件造福全人類的事情, 那就是把 Postgres 放在了 BSD 版權的保護下,在這個版權的範圍裡,任何人幾乎可以做任何事情,包括增強它和商業化等。條件只是把 BSD 的版權宣告包括在軟體的源程式裡。

Postgres 在 1989 年釋出了第一個版本,因為是BSD版權,所以很快在各種研究機構和一些公眾服務組織裡廣泛使用起來, 由於 眾多使用者使 Postgres 的開發變得更多地是維護程式碼和打補丁,而日益背離了原先的資料庫管理系統的研究的目標, 到了1994年 Postgres 在版本 4.2 的時候正式終止。而 Postgres 的許多成果則轉化成一個商業公司 Illustra,後來 Illustra 被 Informix 收購。看到這裡,想必大家應該對 Postgres 的影響有一些認識了吧。

炎黃子孫的貢獻——Postgres95

Postgres 並沒有因為 Postgres 專案的終止而停止發展,而是獲得了一次新生:在1994年,兩名伯克利的研究生在做研究生課題的時候, 向 Postgres 裡增加了現代的 SQL 語言的支援。請不要奇怪,SQL 的祖宗是 E.F. Codd 的關係模型,但是 SQL 作為語言,一直到1992年 才形成真正的國際標準(還是草案),當時稱為 SQL2,但是人們常稱為 SQL92。而在那之前,所以查詢語言都是由不同的資料庫管理系統 自己實現的,比如,在 Postgres 裡原來是用叫 Postquel 的查詢語言;這兩位研究生是 Andrew Yu 和 Jolly Chen,看了名字,大家可能會想:“很象中國人的名字嘛”,沒錯,他們就是黑頭髮 黃皮膚的炎黃子孫,不過很可惜的是他們並沒有在中國的(包括臺灣省的)xx大學取得這樣的成就。這樣,Postgres 迎來了1995年,大概 是受xxxxxxx95 的命名方法的“啟發”吧,他們倆把這個版本的 Postgres 命名為 Postgres95,並且繼續釋出了幾個版本,增強了一些特性。

國際化——PostgreSQL

到了 1996 年,Andrew Yu 和 Jolly Chen 相繼離開 Postgres95 的開發隊伍,(Andrew Yu 加入了 Informix,Jolly Chen 繼續讀書),而在一些自由軟體駭客(注1)的發起下,Postgres 專案又開始了新的歷程,最先是由幾位 加拿大駭客發起,開始了 PostgreSQL 專案,後來參與的人越來越多,逐漸成為了一個由近20個國家的近四十名駭客組成的團體共同開發的 自由軟體專案。PostgreSQL 重新把版本號放到了原先 Postgres 專案的順序中去,從 6.0 開 始(Postgres 本身到4.2,Postgres95 算5.0)。經過五年多的協作開發,PostgreSQL 可以說是目前世界上最先進,功能最強大的自由軟體的資料庫管理系統。

目前,PostgreSQL 的穩定版本到了 7.3,具有非常豐富的特性和商業級資料庫管理系統的質量。而即將到來的 7.4 版本又將是一次飛躍, 將向高質量大型資料庫管理系統的方向又邁進了一步。

在這裡,先讓我告訴您怎麼念 PostgreSQL (的確很繞口):Post-gres-Q-L,大概因為大多自由軟體開發人員把 SQL 念做:S-Q-L,而不是 IBM 常說的(squel)。

特點

PostgreSQL 可以說是最富特色的自由資料庫管理系統,甚至我們也可以說是最強大的自由軟體資料庫管理系統。事實上,PostgreSQL 的特性覆蓋了 SQL-2/SQL-92 和 SQL-3/SQL-99,首先,它包括了可以說是目前世界上最豐富的資料型別的支援,其中有些資料型別可以說連商業資料庫都不具備, 比如 IP 型別和幾何型別等;其次,PostgreSQL 是全功能的自由軟體資料庫,很長時間以來,PostgreSQL 是唯一支援事務、子查詢、多版本並行控制系統、資料完整性
檢查等特性的唯一的一種自由軟體的資料庫管理系統。直到最近才有 Inprise 的 InterBase 以及 SAP 等廠商將其原先專有軟體開放為自由軟體之後才打破了這個唯一。最後,PostgreSQL擁有一支非常活躍的開發隊伍,目前的提交人員已經超過三十人, 而且在許多駭客的努力下,PostgreSQL 的質量日益提高,也從另外一個側面上增加了人們使用 PostgreSQL 的信心,畢竟資料庫管理系統不能象桌面作業系統那樣 一天宕一次還讓人覺得挺滿意 :-P。

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

說完優點,不能不說幾句缺點,不能因為是自由軟體而偏袒 PostgreSQL,從 Postgres 開始,PostgreSQL 就經受了多次變化。

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

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

但是,話說回來,PostgreSQL 擁有極其強大的擴充套件能力,你可以很容易地擴充套件資料型別,內部函式,聚集,運算子等等,而且,別忘了,你擁有所有的源程式, 理論上你可以做任何你可以做的事情。因此,很多缺點,在轉瞬之間就會消失也是很正常的。


總而言之,PostgreSQL的特性已經完全可以滿足絕大部分使用者的需要,而且其質量和特性仍然在日新月異地進步著,所以, 我們有理由相信在不遠的將來,PostgreSQL 肯定能夠成為一種優秀的,自由的,商業資料庫的替代產品。

人物

對 PostgreSQL 做出巨大貢獻的人物太多了,我在這裡只能摘其一二而為之,

首先是伯克利,作為一個學院,好象不應該進入人物的範疇,但是如果沒有 BSD 的優良的學術環境,創造出這樣優秀的科學技術成果是不可能的, 只要想想我們的 5000 多所科研單位就能明白。(我是不是應該還要在這裡感謝美國?:-P)。

然後是 Michael Stonebraker 教授,正是這位學究的開明才能讓這樣優秀的科技成果走向了公眾,甚至到了“自由的對立面”的我們的手裡, 而且是所有的東西,不僅僅是一堆二進位制檔案。

接下來有我們的同胞,Andrew Yu 和 Jolly Chen,他們為 PostgreSQL 走向現代做出了巨大的貢獻。

最後是現在正在辛勤耕耘的駭客們,這些駭客以他們執著的精神和高超的技術,為 PostgreSQL的日益完善做出了不可磨滅的貢獻。 駭客總共有數十人之多,我只好把核心成員挑出來介紹一下,而對於貢獻了更多程式碼的其他重要駭客,只好暫且委屈他們一陣子了,如果有機會,我還會進一步介紹他們。

Tom Lane:一位卡耐基梅隆大學(CMU)的電子工程學 ph.D(博士),是 PostgreSQL 的非常重要開發人員,其足跡遍部 PostgreSQL 的每一個角落, 可以說對 PostgreSQL 的效能和穩定性以及特性的取捨有極其重要的貢獻,在開始參加 PostgreSQL 專案之前,他已經有了十餘年的自由軟體開發經驗, 可以說是老牌的自由軟體程式設計師;

Vadim Mikheev:一位來自俄國的駭客,其特點是專幹大專案,比如 V6.3 裡面的子查詢,V6.5裡面的多版本並行控制,以及 7.1 裡面的預寫式日誌系統等, 可以說是 PostgreSQL 的開拓者;

Jan Wieck:一位來自德國的駭客,有十餘年的資料庫開發經驗,原先曾經為 SAP 等大型軟體廠商工作,後來加入 PostgreSQL 的開發;他也是喜歡大專案, 不過興趣是使用者端的特性,比如外來鍵,一些過程語言比如 pl/pgsql 等,7.1 版本中的 CLOB(文字大物件)的部分也是他的作品。

Thmas Lockhart:一位畢業於加洲理工學院的美國駭客,主要負責文件和若干種資料型別(尤其是與時間相關的型別),SQL 語法的標準一致性,時間型別,以及完整性約束等。

Bruce Monjian:來自美國,是一些文件和專案協調,以及許多完整性約束和 SQL 語法的標準等,比如 OUTER JOIN,同時維護 TODO 列表和 FAQ。

Marc Fournier:加拿大駭客,主要的協調人,維護站點,郵件列表,以及釋出版本等。

Peter Eisentraut:德國/瑞典駭客,主要負責文件編寫、完善,認證和許可權管理,製作指令碼和一些管理配置介面的制定,以及客戶端互動工具 psql 等, 其作用日益突出,可以說在 7.2 版本的開發過程中是不可或缺的人物。

另外還有大量來自歐洲,澳洲和亞洲(日本)等地的駭客。實際上,有越來越多的駭客的作用變得日益重要,在郵遞列表中每天都有來自不同駭客的 各種各樣的補丁程式。所以,自由軟體的特點就是,只要願意,任何人都可以對它有足夠的影響。也就是說,我們命運是真正掌握在自己手裡的。

展望

就目前而言, PostgreSQL 的前景非常好,目前的穩定版本是 7.3,這個版本在 7.2 版本的基礎上再次做了大量的改進和提高。

7.1 是繼 6.5 之後的又一個巨大的變化,她首先引入了預寫式日誌的功能。這樣,事務就擁有了完善的日誌機制,可以提供更好的效能, 以及還可以實現更優良的備份和災難恢復的能力(比如聯機熱備份和當機後的自動恢復)。其次是對文字型別的資料段的長度不再限制, 從而很大程度上解決了 PostgreSQL 的大物件的問題。尤其在如今的 web 應用盛行的環境下,這個功能幾乎立即將 PostgreSQL 擺到了 可以與其他所有型別的資料庫競爭的地位。而且在 SQL 標
準上又有進一步的提高,比如OUTER JOIN 的支援等等。

7.2 版本在 7.1 的基礎上改進了原來的資料庫定期清理工作中排它鎖的過程,使資料庫維護不再影響資料庫的正常使用,同時增強了查詢最佳化的智慧, 使資料庫對索引的使用更加準確;同時還消除了每個安裝節點的免維護事務次數的限制;國際化;以及還有大量其他方面的增強。
7.3 版本在 7.2 版本的基礎上,繼續增強了許多特性,包括可返回結果集的使用者函式,模式(schema)的支援,準備好的查詢規劃,DROP COLUMN 的支援, 以及vacuum的最佳化,更好的查詢計劃器,更好的許可權管理系統等。7.3 版本在許多現實專案中得到了充分的證明和大量的應用。標誌著 PostgreSQL 正式成為主流資料庫產品之一。
在未來的 7.4 版本中,我們有望可以看到索引空間的重複利用,最佳化了的 IN 子句(大家不用為 IN 惡劣的效能發愁了),新的前後端協議,更優的聚集函式。 甚至還可能提供 windows 的本機移植版本和具有相當的熱備份功能的 PITR (即時恢復)和很多人期待已久的表空間的功能。可以說 7.4 將是一個完全勝任 7x24 應用需求的真正的高階資料庫,一個具有開拓企業級應用的資料庫。我們有什麼理由不歡呼呢?
後記

作為一種資料庫管理系統,PostgreSQL 並不象 Linux 與某些商業作業系統相比那樣,得到迅速廣泛的承認,這一點是可以理解的,Tom Lan 曾經有一段話說得實在: “首先,商業資料庫系統不象某些商業作業系統那樣實在太爛,相反,商業資料庫系統的質量還是非常高的,與之相比,PostgreSQL 仍然有一定差距”但同時他也相信 “我們已經達到商業級的資料庫系統的質量......”

的確,自由軟體的發展具有跳躍性,因為開發者大多是利用空餘時間進行開發,當開發者雲集的時候,新的東西可能一下子就增加上去;而如果在自由軟體運動的低潮時, 因為缺少開發人員,所以可能會有一長段時間的沉寂,而後又會隨著社會的發展而出現新的活動。也就是一種螺旋的上升。

因而,我們在面對自由軟體的時候,一定要有一點:要相信自己和依靠自己,因為自由軟體的發展的確需要每一個愛好者充分發揮自己的聰明才智, 同時,也只有自由軟體給你提供了這樣的機會——依靠自己的力量改變自己的命運。最後,也只有這樣,自由軟體之光才能真正照耀我們的世界。

附錄
參考資料
歷史
http://www.daemonnews.org/199907/devhistory.html


特性


注:
1,本文中駭客一詞源於英文 Hacker,是指那些計算機尖子,對計算機及全人類都有貢獻的創造者, 不是一般媒體上的“駭客”概念,那是指 Cracker,也就是破壞者。

 

本文來自CSDN部落格,轉載請標明出處:http://blog.csdn.net/beick/archive/2005/04/18/353063.aspx

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/23650854/viewspace-686848/,如需轉載,請註明出處,否則將追究法律責任。

相關文章