今天,如果人們談?wù)撈鹩?jì)算機(jī)操作系統(tǒng),肯定有非常多的人會(huì)津津樂道自由軟件操作系統(tǒng)linux,畢竟,眾人拾柴火焰高, 如今沒有任何人敢于忽視 linux 這個(gè)自由軟件操作系統(tǒng)在我們星球的存在,就連國(guó)內(nèi)比較特殊的環(huán)境下,也不斷地有 各種各樣的 linux 秀出現(xiàn)讓公眾,甚至是那些對(duì)計(jì)算機(jī)知之甚少的群眾都能意識(shí)到 linux 的存在。但是,如果我們 說(shuō)起數(shù)據(jù)庫(kù),可能絕大多數(shù)人只會(huì)記得有 oracle,ibm db2,informix,sybase,ms sql server,以及在互聯(lián)網(wǎng)廣為 使用的輕量級(jí) mysql,而提到 postgresql 的名字,可能很多人都會(huì)皺起眉毛:“這是什么?”
“postgresql” 是一種特性非常齊全的自由軟件的對(duì)象-關(guān)系型數(shù)據(jù)庫(kù)管理系統(tǒng)(ordbms),它的很多特性正是當(dāng)今許多商業(yè)數(shù)據(jù)庫(kù)的前身。
出身名門
說(shuō)起postgresql,我們不得不談 berkeley,也就是中文中的“加州大學(xué)伯克利分校”這所大名鼎鼎的大學(xué)。 老實(shí)說(shuō),伯克利(bsd)對(duì)計(jì)算機(jī)科學(xué)的貢獻(xiàn)可謂巨大,在整個(gè)計(jì)算機(jī)科學(xué)的發(fā)展史上,幾乎到處都有這所學(xué) 校的研究人員和學(xué)生的足跡。只要稍微對(duì)計(jì)算機(jī)技術(shù)史有些記憶的人都會(huì)記得在 unix 操作系統(tǒng)的發(fā)展里程碑 上 bsd 這三個(gè)字的分量,然而也許正是由于 bsd 在系統(tǒng)和網(wǎng)絡(luò)領(lǐng)域里的光芒太耀眼,掩蓋了 bsd 對(duì)計(jì)算機(jī)技術(shù)其他分支的貢獻(xiàn),而postgresql 正是其中之一。
追本溯源地講,postgresql 最早開始于 bsd 的 ingres 項(xiàng)目,這個(gè)項(xiàng)目主要是研究關(guān)系型數(shù)據(jù)庫(kù)技術(shù),早在 1970 年 e.f. codd 就提出了關(guān)系模型,從那以后,人類在計(jì)算機(jī)領(lǐng)域的數(shù)據(jù)管理就進(jìn)入了一個(gè)新的時(shí)期。從此人們開始用抽象的關(guān)系語(yǔ)句來(lái)描述自己的 數(shù)據(jù),大大提高了人類對(duì)數(shù)據(jù)的抽象描述能力。而 ingres 項(xiàng)目正是就此進(jìn)行研究的,它始于 1977 年,到 1985 年結(jié)束,而其研究成果后來(lái)被一家叫 relational technologies 的商業(yè)公司拿去做成了商品軟件,后來(lái)這家公司又被 computer associates(ca)收購(gòu),不知道 ca 的 jasmine里面是否還有當(dāng)年 ingres 的影子?
|||新項(xiàng)目 postgres
然后,從1986年開始,bsd 的 michael stonebraker 教授領(lǐng)導(dǎo)了稱為 postgres 的“后ingres”項(xiàng)目, 其主要目的是數(shù)據(jù)庫(kù)管理系統(tǒng)的更高級(jí)研究,因此而產(chǎn)生了 postgresql 的直接前身,postgres,而 postgresql 的名字也是從 postgres 項(xiàng)目繼承過來(lái)的。 這個(gè)項(xiàng)目的成果是非常巨大的,在現(xiàn)代數(shù)據(jù)庫(kù)的許多方面都做出的大量的貢獻(xiàn),比如,面向?qū)ο蟮臄?shù)據(jù)庫(kù), 部分索引技術(shù),規(guī)則,過程和數(shù)據(jù)庫(kù)擴(kuò)展等方面都走在了數(shù)據(jù)庫(kù)管理系統(tǒng)的前列。而且,stonebraker 教授還做出了一件造福全人類的事情, 那就是把 postgres 放在了 bsd 版權(quán)的保護(hù)下,在這個(gè)版權(quán)的范圍里,任何人幾乎可以做任何事情,包括增強(qiáng)它和商業(yè)化等。條件只是把 bsd 的版權(quán)聲明包括在軟件的源程序里。
postgres 在 1989 年發(fā)布了第一個(gè)版本,因?yàn)槭莃sd版權(quán),所以很快在各種研究機(jī)構(gòu)和一些公眾服務(wù)組織里廣泛使用起來(lái), 由于 眾多用戶使 postgres 的開發(fā)變得更多地是維護(hù)代碼和打補(bǔ)丁,而日益背離了原先的數(shù)據(jù)庫(kù)管理系統(tǒng)的研究的目標(biāo), 到了1994年 postgres 在版本 4.2 的時(shí)候正式終止。而 postgres 的許多成果則轉(zhuǎn)化成一個(gè)商業(yè)公司 illustra,后來(lái) illustra 被 informix 收購(gòu)。看到這里,想必大家應(yīng)該對(duì) postgres 的影響有一些認(rèn)識(shí)了吧。
炎黃子孫的貢獻(xiàn) postgres95
postgres 并沒有因?yàn)?postgres 項(xiàng)目的終止而停止發(fā)展,而是獲得了一次新生:在1994年,兩名伯克利的研究生在做研究生課題的時(shí)候, 向 postgres 里增加了現(xiàn)代的 sql 語(yǔ)言的支持。請(qǐng)不要奇怪,sql 的祖宗是 e.f. codd 的關(guān)系模型,但是 sql 作為語(yǔ)言,一直到1992年 才形成真正的國(guó)際標(biāo)準(zhǔn)(還是草案),當(dāng)時(shí)稱為 sql2,但是人們常稱為 sql92。而在那之前,所以查詢語(yǔ)言都是由不同的數(shù)據(jù)庫(kù)管理系統(tǒng) 自己實(shí)現(xiàn)的,比如,在 postgres 里原來(lái)是用叫 postquel 的查詢語(yǔ)言;這兩位研究生是 andrew yu 和 jolly chen,看了名字,大家可能會(huì)想:“很象中國(guó)人的名字嘛”,沒錯(cuò),他們就是黑頭發(fā)黃皮膚的炎黃子孫,不過很可惜的是他們并沒有在中國(guó)的(包括臺(tái)灣省的)xx大學(xué)取得這樣的成就。這樣,postgres 迎來(lái)了 1995年,大概 是受xxxxxxx95 的命名方法的“啟發(fā)”吧,他們倆把這個(gè)版本的 postgres 命名為 postgres95,并且繼續(xù)發(fā)布了幾個(gè)版本,增強(qiáng)了一些特性。
|||國(guó)際化 postgresql
到了 1996 年,andrew yu 和 jolly chen 相繼離開 postgres95 的開發(fā)隊(duì)伍,(andrew yu 加入了 informix, jolly chen 繼續(xù)讀書),而在一些自由軟件黑客(注1)的發(fā)起下,postgres 項(xiàng)目又開始了新的歷程,最先是由幾位加拿大黑客發(fā)起,開始了 postgresql 項(xiàng)目,后來(lái)參與的人越來(lái)越多,逐漸成為了一個(gè)由近20個(gè)國(guó)家的近四十名黑客組成的團(tuán)體共同開發(fā)的 自由軟件項(xiàng)目。postgresql 重新把版本號(hào)放到了原先 postgres 項(xiàng)目的順序中去,從 6.0 開 始(postgres 本身到4.2,postgres95 算5.0)。經(jīng)過五年多的協(xié)作開發(fā),postgresql 可以說(shuō)是目前世界上最先進(jìn),功能最強(qiáng)大的自由軟件的數(shù)據(jù)庫(kù)管理系統(tǒng)。
目前,postgresql 的穩(wěn)定版本到了 7.3,具有非常豐富的特性和商業(yè)級(jí)數(shù)據(jù)庫(kù)管理系統(tǒng)的質(zhì)量。而即將到來(lái)的 7.4 版本又將是一次飛躍, 將向高質(zhì)量大型數(shù)據(jù)庫(kù)管理系統(tǒng)的方向又邁進(jìn)了一步。
在這里,先讓我告訴您怎么念 postgresql (的確很繞口):post-gres-q-l,大概因?yàn)榇蠖嘧杂绍浖_發(fā)人員把 sql 念做:s-q-l,而不是 ibm 常說(shuō)的(squel)。
特點(diǎn)
postgresql 可以說(shuō)是最富特色的自由數(shù)據(jù)庫(kù)管理系統(tǒng),甚至我們也可以說(shuō)是最強(qiáng)大的自由軟件數(shù)據(jù)庫(kù)管理系統(tǒng)。事實(shí)上, postgresql 的特性覆蓋了 sql-2/sql-92 和 sql-3/sql-99,首先,它包括了可以說(shuō)是目前世界上最豐富的數(shù)據(jù)類型的支持,其中有些數(shù)據(jù)類型可以說(shuō)連商業(yè)數(shù)據(jù)庫(kù)都不具備, 比如 ip 類型和幾何類型等;其次,postgresql 是全功能的自由軟件數(shù)據(jù)庫(kù),很長(zhǎng)時(shí)間以來(lái),postgresql 是唯一支持事務(wù)、子查詢、多版本并行控制系統(tǒng)、數(shù)據(jù)完整性檢查等特性的唯一的一種自由軟件的數(shù)據(jù)庫(kù)管理系統(tǒng)。直到最近才有 inprise 的 interbase 以及 sap 等廠商將其原先專有軟件開放為自由軟件之后才打破了這個(gè)唯一。最后,postgresql擁有一支非常活躍的開發(fā)隊(duì)伍,目前的提交人員已經(jīng)超過三十人, 而且在許多黑客的努力下,postgresql 的質(zhì)量日益提高,也從另外一個(gè)側(cè)面上增加了人們使用 postgresql 的信心,畢竟數(shù)據(jù)庫(kù)管理系統(tǒng)不能象桌面操作系統(tǒng)那樣 一天宕一次還讓人覺得挺滿意 :-p。
|||從技術(shù)角度來(lái)講,postgresql 采用的是比較經(jīng)典的 c/s (client/server)結(jié)構(gòu),也就是一個(gè)客戶端對(duì)應(yīng)一個(gè)服務(wù)器端守護(hù)進(jìn)程的模式, 這個(gè)守護(hù)進(jìn)程分析客戶端來(lái)的查詢請(qǐng)求,生成規(guī)劃樹,進(jìn)行數(shù)據(jù)檢索并最終把結(jié)果格式化輸出后返回給客戶端。為了便于客戶端的程序的編寫, 由數(shù)據(jù)庫(kù)服務(wù)器提供了統(tǒng)一的客戶端 c 接口。而不同的客戶端接口都是源自這個(gè) c 接口,比如 odbc,jdbc,python,perl ,tcl,c/c++,esql 等, 同時(shí)也要指出的是,postgresql 對(duì)接口的支持也是非常豐富的,幾乎支持所有類型的數(shù)據(jù)庫(kù)客戶端接口。這一點(diǎn)也可以說(shuō)是 postgresql 一大優(yōu)點(diǎn)。
說(shuō)完優(yōu)點(diǎn),不能不說(shuō)幾句缺點(diǎn),不能因?yàn)槭亲杂绍浖?postgresql,從 postgres 開始,postgresql 就經(jīng)受了多次變化。
首先,早期的 postgresql 繼承了幾乎所有 ingres, postgres, postgres95 的問題:過于學(xué)院味,因?yàn)槭紫人哪康氖菙?shù)據(jù)庫(kù)研究,因此不論在穩(wěn)定性, 性能還是使用方便方面,長(zhǎng)期以來(lái)一直沒有得到重視,直到 postgresql 項(xiàng)目開始以后,情況才越來(lái)越好,目前,postgresql 已經(jīng)完全可以勝任任何中上規(guī)模范圍內(nèi)的應(yīng)用范圍的業(yè)務(wù)。目前有報(bào)道的生產(chǎn)數(shù)據(jù)庫(kù)的大小已經(jīng)有 tb 級(jí)的數(shù)據(jù)量,已經(jīng)逼近 32 位計(jì)算的極限。 不過學(xué)院味也給 postgresql 帶來(lái)一個(gè)意想不到的好處:大概因?yàn)楦鞔髮W(xué)的軟硬件環(huán)境差異太大的緣故,它是目前支持平臺(tái)最多的數(shù)據(jù)庫(kù)管理系統(tǒng)的一種, 所支持的平臺(tái)多達(dá)十幾種,包括不同的系統(tǒng),不同的硬件體系。至今,它仍然保持著支持平臺(tái)最多的數(shù)據(jù)庫(kù)管理系統(tǒng)的稱號(hào)。
其次,postgresql 的確還欠缺一些比較高端的數(shù)據(jù)庫(kù)管理系統(tǒng)需要的特性,比如聯(lián)機(jī)熱備份,數(shù)據(jù)庫(kù)集群,更優(yōu)良的管理工具和更加自動(dòng)化的系統(tǒng)優(yōu)化功能 等提高數(shù)據(jù)庫(kù)性能的機(jī)制等。
但是,話說(shuō)回來(lái),postgresql 擁有極其強(qiáng)大的擴(kuò)展能力,你可以很容易地?cái)U(kuò)展數(shù)據(jù)類型,內(nèi)部函數(shù),聚集,操作符等等,而且,別忘了,你擁有所有的源程序, 理論上你可以做任何你可以做的事情。因此,很多缺點(diǎn),在轉(zhuǎn)瞬之間就會(huì)消失也是很正常的。
總而言之,postgresql的特性已經(jīng)完全可以滿足絕大部分用戶的需要,而且其質(zhì)量和特性仍然在日新月異地進(jìn)步著,所以, 我們有理由相信在不遠(yuǎn)的將來(lái),postgresql 肯定能夠成為一種優(yōu)秀的,自由的,商業(yè)數(shù)據(jù)庫(kù)的替代產(chǎn)品。
未來(lái)的前景
就目前而言, postgresql 的前景非常好,目前的穩(wěn)定版本是 7.3,這個(gè)版本在 7.2 版本的基礎(chǔ)上再次做了大量的改進(jìn)和提高。
7.1 是繼 6.5 之后的又一個(gè)巨大的變化,她首先引入了預(yù)寫式日志的功能。這樣,事務(wù)就擁有了完善的日志機(jī)制,可以提供更好的性能, 以及還可以實(shí)現(xiàn)更優(yōu)良的備份和災(zāi)難恢復(fù)的能力(比如聯(lián)機(jī)熱備份和宕機(jī)后的自動(dòng)恢復(fù))。其次是對(duì)文本類型的數(shù)據(jù)段的長(zhǎng)度不再限制, 從而很大程度上解決了 postgresql 的大對(duì)象的問題。尤其在如今的 web 應(yīng)用盛行的環(huán)境下,這個(gè)功能幾乎立即將 postgresql 擺到了 可以與其他所有類型的數(shù)據(jù)庫(kù)競(jìng)爭(zhēng)的地位。而且在 sql 標(biāo)準(zhǔn)上又有進(jìn)一步的提高,比如 outer join 的支持等等。
7.2 版本在 7.1 的基礎(chǔ)上改進(jìn)了原來(lái)的數(shù)據(jù)庫(kù)定期清理工作中排它鎖的過程,使數(shù)據(jù)庫(kù)維護(hù)不再影響數(shù)據(jù)庫(kù)的正常使用,同時(shí)增強(qiáng)了查詢優(yōu)化的智能, 使數(shù)據(jù)庫(kù)對(duì)索引的使用更加準(zhǔn)確;同時(shí)還消除了每個(gè)安裝節(jié)點(diǎn)的免維護(hù)事務(wù)次數(shù)的限制;國(guó)際化;以及還有大量其他方面的增強(qiáng)。
7.3 版本在 7.2 版本的基礎(chǔ)上,繼續(xù)增強(qiáng)了許多特性,包括可返回結(jié)果集的用戶函數(shù),模式(schema)的支持,準(zhǔn)備好的查詢規(guī)劃,drop column 的支持, 以及vacuum的優(yōu)化,更好的查詢計(jì)劃器,更好的權(quán)限管理系統(tǒng)等。7.3 版本在許多現(xiàn)實(shí)項(xiàng)目中得到了充分的證明和大量的應(yīng)用。標(biāo)志著 postgresql 正式成為主流數(shù)據(jù)庫(kù)產(chǎn)品之一。
在未來(lái)的 7.4 版本中,我們有望可以看到索引空間的重復(fù)利用,優(yōu)化了的 in 子句(大家不用為 in 惡劣的性能發(fā)愁了),新的前后端協(xié)議,更優(yōu)的聚集函數(shù)。 甚至還可能提供 windows 的本機(jī)移植版本和具有相當(dāng)?shù)臒醾浞莨δ艿?pitr (即時(shí)恢復(fù))和很多人期待已久的表空間的功能。可以說(shuō) 7.4 將是一個(gè)完全勝任 7x24 應(yīng)用需求的真正的高端數(shù)據(jù)庫(kù),一個(gè)具有開拓企業(yè)級(jí)應(yīng)用的數(shù)據(jù)庫(kù)。我們有什么理由不歡呼呢?
總結(jié)
作為一種數(shù)據(jù)庫(kù)管理系統(tǒng),postgresql 并不象 linux 與某些商業(yè)操作系統(tǒng)相比那樣,得到迅速?gòu)V泛的承認(rèn),這一點(diǎn)是可以理解的,tom lan 曾經(jīng)有一段話說(shuō)得實(shí)在: “首先,商業(yè)數(shù)據(jù)庫(kù)系統(tǒng)不象某些商業(yè)操作系統(tǒng)那樣實(shí)在太爛,相反,商業(yè)數(shù)據(jù)庫(kù)系統(tǒng)的質(zhì)量還是非常高的,與之相比,postgresql 仍然有一定差距”但同時(shí)他也相信 “我們已經(jīng)達(dá)到商業(yè)級(jí)的數(shù)據(jù)庫(kù)系統(tǒng)的質(zhì)量......”
的確,自由軟件的發(fā)展具有跳躍性,因?yàn)殚_發(fā)者大多是利用空余時(shí)間進(jìn)行開發(fā),當(dāng)開發(fā)者云集的時(shí)候,新的東西可能一下子就增加上去;而如果在自由軟件運(yùn)動(dòng)的低潮時(shí), 因?yàn)槿鄙匍_發(fā)人員,所以可能會(huì)有一長(zhǎng)段時(shí)間的沉寂,而后又會(huì)隨著社會(huì)的發(fā)展而出現(xiàn)新的活動(dòng)。也就是一種螺旋的上升。
因而,我們?cè)诿鎸?duì)自由軟件的時(shí)候,一定要有一點(diǎn):要相信自己和依靠自己,因?yàn)樽杂绍浖陌l(fā)展的確需要每一個(gè)愛好者充分發(fā)揮自己的聰明才智, 同時(shí),也只有自由軟件給你提供了這樣的機(jī)會(huì)——依靠自己的力量改變自己的命運(yùn)。最后,也只有這樣,自由軟件之光才能真正照耀我們的世界。
商業(yè)源碼熱門下載www.html.org.cn
新聞熱點(diǎn)
疑難解答
圖片精選