postgresql?是一個免費(fèi)的對象-關(guān)系數(shù)據(jù)庫服務(wù)器(數(shù)據(jù)庫管理系統(tǒng)),它在靈活的 bsd-風(fēng)格許可證下發(fā)行。它提供了相對其他開放源代碼數(shù)據(jù)庫系統(tǒng)(比如 mysql 和 firebird),和專有系統(tǒng)(比如 oracle、sybase、ibm 的 db2 和 microsoft sql server)之外的另一種選擇。
PostgreSQL 不尋常的名字導(dǎo)致一些讀者停下來嘗試拼讀它,特別是那些把SQL拼讀為”sequel”的人。PostgreSQL 開發(fā)者把它拼讀為 “post-gress-Q-L”。它也經(jīng)常被簡略念為 “postgres”。
事實(shí)上, PostgreSQL 的特性覆蓋了 SQL-2/SQL-92 和 SQL-3/SQL-99,首先,它包括了可以說是目前世界上最豐富的數(shù)據(jù)類型的支持,其中有些數(shù)據(jù)類型可以說連商業(yè)數(shù)據(jù)庫都不具備, 比如 IP 類型和幾何類型等;其次,PostgreSQL 是全功能的自由軟件數(shù)據(jù)庫,很長時間以來,PostgreSQL 是唯一支持事務(wù)、子查詢、多版本并行控制系統(tǒng)(MVCC)、數(shù)據(jù)完整性檢查等特性的唯一的一種自由軟件的數(shù)據(jù)庫管理系統(tǒng)。 Inprise 的 InterBase 以及SAP等廠商將其原先專有軟件開放為自由軟件之后才打破了這個唯一。最后,PostgreSQL擁有一支非常活躍的開發(fā)隊伍,而且在許多黑客的努力下,PostgreSQL 的質(zhì)量日益提高。
從技術(shù)角度來講,PostgreSQL 采用的是比較經(jīng)典的C/S(client/server)結(jié)構(gòu),也就是一個客戶端對應(yīng)一個服務(wù)器端守護(hù)進(jìn)程的模式,這個守護(hù)進(jìn)程分析客戶端來的查詢請求,生成規(guī)劃樹,進(jìn)行數(shù)據(jù)檢索并最終把結(jié)果格式化輸出后返回給客戶端。為了便于客戶端的程序的編寫,由數(shù)據(jù)庫服務(wù)器提供了統(tǒng)一的客戶端 C 接口。而不同的客戶端接口都是源自這個 C 接口,比如ODBC,JDBC,Python,Perl,Tcl,C/C++,ESQL等, 同時也要指出的是,PostgreSQL 對接口的支持也是非常豐富的,幾乎支持所有類型的數(shù)據(jù)庫客戶端接口。這一點(diǎn)也可以說是 PostgreSQL 一大優(yōu)點(diǎn)。
架構(gòu)
PostgreSQL強(qiáng)壯的一個原因源于它的架構(gòu)。和商業(yè)數(shù)據(jù)庫一樣,PostgreSQL可以用于C/S(客戶/服務(wù)器)環(huán)境。這對于用戶和開發(fā)人員有很多好處。
PostgreSQL安裝核心是數(shù)據(jù)庫服務(wù)端進(jìn)程。它允許在一個獨(dú)立服務(wù)器上。需要訪問存儲在數(shù)據(jù)庫中的數(shù)據(jù)的應(yīng)用程序必須通過數(shù)據(jù)庫進(jìn)程。這些客戶端程序無法直接訪問數(shù)據(jù),即使它們和服務(wù)程序在同一臺機(jī)器上。