史萊姆論壇

返回   史萊姆論壇 > 教學文件資料庫 > 程式 & 網頁設計技術文件
忘記密碼?
註冊帳號 論壇說明 標記討論區已讀

歡迎您來到『史萊姆論壇』 ^___^

您目前正以訪客的身份瀏覽本論壇,訪客所擁有的權限將受到限制,您可以瀏覽本論壇大部份的版區與文章,但您將無法參與任何討論或是使用私人訊息與其他會員交流。若您希望擁有完整的使用權限,請註冊成為我們的一份子,註冊的程序十分簡單、快速,而且最重要的是--註冊是完全免費的!

請點擊這裡:『註冊成為我們的一份子!』

Google 提供的廣告


 
 
主題工具 顯示模式
舊 2006-06-04, 09:23 PM   #1 (permalink)
榮譽會員
 
psac 的頭像
榮譽勳章
UID - 3662
在線等級: 級別:30 | 在線時長:1048小時 | 升級還需:37小時級別:30 | 在線時長:1048小時 | 升級還需:37小時級別:30 | 在線時長:1048小時 | 升級還需:37小時級別:30 | 在線時長:1048小時 | 升級還需:37小時級別:30 | 在線時長:1048小時 | 升級還需:37小時
註冊日期: 2002-12-07
住址: 木柵市立動物園
文章: 17381
現金: 5253 金幣
資產: 33853 金幣
預設 軟體 - PostgreSQL 昨天,今天和明天

1.簡介

PostgreSQL 是一種非常複雜的對象-關係型資料庫管理系統(ORDBMS),也是目前功能最強大,特性最豐富和最複雜的自由軟件資料庫系統。有些特性甚至連商業資料庫都不具備。這個起源於伯克利(BSD)的資料庫研究計劃目前已經衍產生一項國際開發專案,並且有非常廣泛的用戶。請參看本站主 要成員何偉平(BITBIRD)的文章「PostgreSQL的昨天、今天和明天—自由軟件資料庫 PostgreSQL簡介」。

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

2.前言

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

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

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

3.歷史

3.1 出身名門

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

3.2 創世紀——Ingres

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

3.3 新專案 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 的影響有一些認識了吧。

3.4 炎黃子孫的貢獻 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,並且繼續發佈了幾個版本,增強了一些特性。

3.5 國際化 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)。

4. 特點

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 肯定能夠成為一種優秀的,自由的,商業資料庫的替代產品。

5. 人物

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

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

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

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

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

5.1 Tom Lane:

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

5.2 Vadim Mikheev:

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

5.3 Jan Wieck:

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

5.4 Thmas Lockhart:

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

5.5 Bruce Monjian:

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

5.6 Marc Fournier:

加拿大黑客,主要的協調人,維護站點,郵件列表,以及發佈版本等。

5.7 Peter Eisentraut:

德國/瑞典黑客,主要負責文檔編寫、完善,認證和權限管理,製作腳本和一些管理配置接頭的制定,以及客戶端交互工具 psql 等, 其作用日益突出,可以說在 7.2 版本的開發過程中是不可或缺的人物。

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

6. 展望

就目前而言, 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 應用需求的真正的高端資料庫,一個具有開拓企業級應用的資料庫。我們有什麼理由不歡呼呢?

7.後記

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

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

因而,我們在面對自由軟件的時候,一定要有一點:要相信自己和依靠自己,因為自由軟件的發展的確需要每一個愛好者充分發揮自己的聰明才智, 同時,也只有自由軟件給你提供了這樣的機會——依靠自己的力量改變自己的命運。最後,也只有這樣,自由軟件之光才能真正照耀我們的世界。
__________________
http://bbsimg.qianlong.com/upload/01/08/29/68/1082968_1136014649812.gif
psac 目前離線  
送花文章: 3, 收花文章: 1625 篇, 收花: 3188 次
 


主題工具
顯示模式

發表規則
不可以發文
不可以回覆主題
不可以上傳附加檔案
不可以編輯您的文章

論壇啟用 BB 語法
論壇啟用 表情符號
論壇啟用 [IMG] 語法
論壇禁用 HTML 語法
Trackbacks are 禁用
Pingbacks are 禁用
Refbacks are 禁用


所有時間均為台北時間。現在的時間是 02:02 PM


Powered by vBulletin® 版本 3.6.8
版權所有 ©2000 - 2018, Jelsoft Enterprises Ltd.


SEO by vBSEO 3.6.1