
PostgreSQL
對(duì)象關(guān)系數(shù)據(jù)庫(kù)管理系統(tǒng)
軟件語(yǔ)言:簡(jiǎn)體中文
|
軟件授權(quán):免費(fèi)軟件
|
適用系統(tǒng):Windows
|
創(chuàng)建時(shí)間:2021-01-12 |
軟件廠商/開(kāi)發(fā)者信息:獨(dú)立開(kāi)發(fā)者
|
錦囊 更多
- PostgreSQL的教程 2021-03-30
- 提升Git體驗(yàn):探索Gitui——高效的終端UI工具 2024-01-05
- Stirling PDF - 強(qiáng)大的本地 PDF 管理工具 2024-01-05
資訊 更多
- PostgreSQL (64-bit) v9.3.0-1 官方版更新 2013-09-11
- 微信Mac插件——微信小助手,是一款功能強(qiáng)大的插件 2024-01-08
- 完美解碼:打造頂級(jí)視聽(tīng)盛宴的終極使用指南 2024-01-06
軟件介紹
PostgreSQL是一個(gè)自由的對(duì)象-關(guān)系數(shù)據(jù)庫(kù)服務(wù)器(數(shù)據(jù)庫(kù)管理系統(tǒng)),它在靈活的BSD-風(fēng)格許可證下發(fā)行。它提供了相對(duì)其他開(kāi)放源代碼數(shù)據(jù)庫(kù)系統(tǒng)(比如MySQL和Firebird),和專有系統(tǒng)(比如Oracle、Sybase、IBM的DB2和MicrosoftSQLServer)之外的另一種選擇。
PostgreSQL不尋常的名字導(dǎo)致一些讀者停下來(lái)嘗試拼讀它,特別是那些把SQL拼讀為"sequel"的人。PostgreSQL開(kāi)發(fā)者把它拼讀為"post-gress-Q-L"。它也經(jīng)常被簡(jiǎn)略念為"postgres"。
主要特點(diǎn)
優(yōu)點(diǎn)
事實(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)(MVCC)、數(shù)據(jù)完整性檢查等特性的唯一的一種自由軟件的數(shù)據(jù)庫(kù)管理系統(tǒng)。Inprise的InterBase以及SAP等廠商將其原先專有軟件開(kāi)放為自由軟件之后才打破了這個(gè)唯一。最后,PostgreSQL擁有一支非?;钴S的開(kāi)發(fā)隊(duì)伍,而且在許多黑客的努力下,PostgreSQL的質(zhì)量日益提高。
從技術(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ī)劃樹(shù),進(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)。
缺點(diǎn)
從Postgres開(kāi)始,PostgreSQL就經(jīng)受了多次變化。
首先,早期的PostgreSQL繼承了幾乎所有Ingres,Postgres,Postgres95的問(wèn)題:過(guò)于學(xué)院味,因?yàn)槭紫人哪康氖菙?shù)據(jù)庫(kù)研究,因此不論在穩(wěn)定性,性能還是使用方方面面,長(zhǎng)期以來(lái)一直沒(méi)有得到重視,直到PostgreSQL項(xiàng)目開(kāi)始以后,情況才越來(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ì)算的極限。不過(guò)學(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)需要的特性,比如數(shù)據(jù)庫(kù)集群,更優(yōu)良的管理工具和更加自動(dòng)化的系統(tǒng)優(yōu)化功能等提高數(shù)據(jù)庫(kù)性能的機(jī)制等。
版本歷史
早期版本
被稱為PostgreSQL(發(fā)音為Post-gress-cue-ell)的對(duì)象-關(guān)系型數(shù)據(jù)庫(kù)管理系統(tǒng)(有一段時(shí)間被稱為Postgres95)是從伯克利寫的POSTGRES軟件包發(fā)展而來(lái)的。經(jīng)過(guò)十幾年的發(fā)展,PostgreSQL是世界上可以獲得的最先進(jìn)的開(kāi)放源碼的數(shù)據(jù)庫(kù)系統(tǒng),它提供了多版本并發(fā)控制,支持幾乎所有SQL構(gòu)件(包括子查詢,事務(wù)和用戶定義類型和函數(shù)),并且可以獲得非常廣闊范圍的(開(kāi)發(fā))語(yǔ)言綁定(包括C,C++,Java,perl,tcl,和python)。
Postgres95
在1994年,AndrewYu和JollyChen向POSTGRES中增加了SQL語(yǔ)言的解釋器。并隨后將Postgres95源代碼發(fā)布到互聯(lián)網(wǎng)上供大家使用,成為一個(gè)開(kāi)放源碼的,原先伯克利POSTGRES代碼的繼承者。
Postgres95所有源代碼都是完全的ANSIC,而且代碼量減少了25%。并且有許多內(nèi)部修改以利于提高性能和代碼的維護(hù)性。Postgres95版本1.0.x在進(jìn)行WisconsinBenchmark測(cè)試時(shí)大概比POSTGRESv4.2快30-50%。
當(dāng)前版本
到了1996年,"Postgres95"改成新名字PostgreSQL用于反映最初的POSTGRES和最新的使用SQL的版本之間的關(guān)系。同時(shí)版本號(hào)也重新從6.0開(kāi)始,將版本號(hào)放回到最初的由伯克利POSTGRES項(xiàng)目開(kāi)始的順序中。
Postgres95版本的開(kāi)發(fā)重點(diǎn)放在標(biāo)明和理解現(xiàn)有的后端代碼的問(wèn)題上。PostgreSQL開(kāi)發(fā)重點(diǎn)轉(zhuǎn)到了一些有爭(zhēng)議的特性和功能上面,當(dāng)然各個(gè)方面的工作同時(shí)都在進(jìn)行。
目前,PostgresSQL的穩(wěn)定版本到了9.3.1,具有非常豐富的特性和商業(yè)級(jí)數(shù)據(jù)庫(kù)管理系統(tǒng)的質(zhì)量。
軟件改進(jìn)
除了修正了一些錯(cuò)誤,下面的是一些主要改進(jìn):
查詢語(yǔ)言
原來(lái)的查詢語(yǔ)言PostQUEL被SQL取代(在server端實(shí)現(xiàn))。在PostgreSQL之前還不支持子查詢)(但這個(gè)功能可以在Postgres95里面由用戶定義的SQL函數(shù)實(shí)現(xiàn))。重新實(shí)現(xiàn)了聚集。同時(shí)還增加了對(duì)GROUPBY查詢子句的支持。C程序仍可以調(diào)用libpq接口函數(shù)。
新增加了利用GNUReadline進(jìn)行交互SQL查詢(psql)。這個(gè)程序很大程度上取代了老的monitor程序。
前端庫(kù)
增加了新的前端庫(kù),libpgtcl,用以支持以Tcl為基礎(chǔ)的客戶端。一個(gè)樣本shell,pgtclsh,提供了新的Tcl命令用于Tcl程序和Postgres95后端之間的交互。
徹底重寫了大對(duì)象的接口。保留了將大對(duì)象倒轉(zhuǎn)(Inversion)作為存儲(chǔ)大對(duì)象的唯一機(jī)制。(去掉了倒轉(zhuǎn)(Inversion)文件系統(tǒng)。)
去掉了記錄級(jí)(instance-level)的規(guī)則系統(tǒng)。但我們?nèi)匀豢梢酝ㄟ^(guò)重寫規(guī)則使用規(guī)則。
特性教程
在發(fā)布的源碼中增加了一個(gè)簡(jiǎn)短的常用SQL和Postgres95特有的SQL特性的教程。
用GNUmake(取代了BSDmake)用于制作。Postgres95可以使用不加補(bǔ)丁的GCC(修正了偶數(shù)字節(jié)數(shù)據(jù)(doubles)的對(duì)齊問(wèn)題)。
軟件項(xiàng)目
Michael Stonebraker領(lǐng)導(dǎo)的POSTGRES項(xiàng)目是由防務(wù)高級(jí)研究項(xiàng)目局(DARPA),陸軍研究辦公室(ARO),國(guó)家科學(xué)基金(NSF),以及ESL,Inc共同贊助的。POSTGRES的實(shí)現(xiàn)始于1986年,該系統(tǒng)最初的概念詳見(jiàn)POSTGRES的設(shè)計(jì)。最早的數(shù)據(jù)模型定義見(jiàn)The POSTGRES Data Model。當(dāng)時(shí)的規(guī)則系統(tǒng)設(shè)計(jì)在POSTGRES規(guī)則系統(tǒng)的設(shè)計(jì)里描述.存儲(chǔ)管理器的理論基礎(chǔ)和體系結(jié)構(gòu)在POSTGRES存儲(chǔ)系統(tǒng)的設(shè)計(jì)里有詳細(xì)描述。
從那以后,POSTGRES經(jīng)歷了幾次主要的版本更新。第一個(gè)"演示性"系統(tǒng)在1987年便可使用了,并且在1988年的ACM-SIGMOD大會(huì)上展出。在1989年六月發(fā)布了版本1給一些外部的用戶使用。為了回應(yīng)用戶對(duì)第一個(gè)規(guī)則系統(tǒng)的批評(píng),作者重新設(shè)計(jì)了規(guī)則系統(tǒng),并在1990年6月發(fā)布了使用新規(guī)則系統(tǒng)的版本2。版本3在1991年出現(xiàn),增加了多存儲(chǔ)管理器的支持,并且改進(jìn)了查詢執(zhí)行器,重新編寫了規(guī)則系統(tǒng)。從那以后,隨后的版本直到Postgres95發(fā)布前工作都集中在移植性和可靠性上。
POSTGRES已經(jīng)在許多研究或?qū)嶋H的應(yīng)用中得到了應(yīng)用。這些應(yīng)用包括:一個(gè)財(cái)務(wù)數(shù)據(jù)分析系統(tǒng),一個(gè)噴氣引擎性能監(jiān)控軟件包,一個(gè)小行星跟蹤數(shù)據(jù)庫(kù),一個(gè)醫(yī)療信息數(shù)據(jù)庫(kù)和一些地理信息系統(tǒng)。POSTGRES還被許多大學(xué)用于教學(xué)用途。Illustra Information Technologies Illustra Information Technologies(并入Informix)拿到代碼并使之商業(yè)化。在1992年P(guān)OSTGRES成為Sequoia2000科學(xué)計(jì)算計(jì)劃的首要數(shù)據(jù)管理器。
到了1993年,外部用戶的數(shù)量幾乎翻番。隨著用戶的增加。用于源代碼維護(hù)的時(shí)間日益增加占用了太多本應(yīng)該用于數(shù)據(jù)庫(kù)研究的時(shí)間,為了減少支持的負(fù)擔(dān),伯克利的POSTGRES項(xiàng)目在版本4.2時(shí)正式終止。
版本發(fā)布
2013年10月10日,PostgreSQL正式發(fā)布9.3.1版本。
2012年09月10日,PostgreSQL宣布9.2正式版發(fā)布了!該版本主要在性能方面有很大的提升,也包括一些新的SQL特性以及復(fù)制支持方面,主要內(nèi)容包括:
允許查詢直接從索引中獲取數(shù)據(jù),避免訪問(wèn)堆數(shù)據(jù)()
允許查詢計(jì)劃器為指定參數(shù)值生成自定義的計(jì)劃,甚至是用了PreparedStatement
提升計(jì)劃器通過(guò)內(nèi)部索引掃描來(lái)使用嵌套循環(huán)
允許流復(fù)制從節(jié)點(diǎn)將數(shù)據(jù)轉(zhuǎn)到其他從節(jié)點(diǎn)(cascadingreplication)
允許pg_basebackup對(duì)待機(jī)的服務(wù)器進(jìn)行基準(zhǔn)備份
增加新工具pg_receivexlog用來(lái)收集WAL文件的改動(dòng)
增加SP-GiST(Space-PartitionedGiST)索引訪問(wèn)方法
支持rangedatatypes
增加JSON數(shù)據(jù)類型
為視圖增加security_barrier選項(xiàng)
允許libpq連接字符串使用URI格式
支技HP-UX
為libpq增加single-rowprocessingmode以更好的處理大結(jié)果集。
軟件特征
函數(shù)
通過(guò)函數(shù),可以在數(shù)據(jù)庫(kù)服務(wù)器端執(zhí)行指令程序。盡管這樣的指令程序可以使用基本的SQL語(yǔ)句寫成,但是由于其缺乏流程控制等功能,所以在PostgreSQL中引入了使用其它程序語(yǔ)言編寫函數(shù)的能力,包括:
以上部分的語(yǔ)言,甚至可以在觸發(fā)器內(nèi)執(zhí)行。PostgreSQL支持行返回函數(shù):它們的輸出是一系列行類型數(shù)據(jù)的集合,可以在查詢中當(dāng)作表來(lái)使用。函數(shù)也可以被定義成以創(chuàng)建者或者調(diào)用者的身份運(yùn)行。在某些場(chǎng)合,或者其他的數(shù)據(jù)庫(kù)產(chǎn)品中,函數(shù)也會(huì)被稱為“存儲(chǔ)過(guò)程”,但技術(shù)上這兩者并未有太大分別。
索引
在PostgreSQL中,用戶可以自定義索引方法,或使用內(nèi)置的B-tree,哈希表與GiST索引。PosrgreSQL的索引功能同時(shí)也具有以下功能:
觸發(fā)器
觸發(fā)器是由SQL語(yǔ)句查詢所觸發(fā)的事件。如:一個(gè)INSERT語(yǔ)句可能觸發(fā)一個(gè)檢查數(shù)據(jù)完整性的觸發(fā)器。觸發(fā)器通常由INSERT或UPDATE語(yǔ)句觸發(fā)。
在PostgreSQL中,可在數(shù)據(jù)表上設(shè)置觸發(fā)器,但無(wú)法在視圖中設(shè)置(對(duì)視圖的UPDATE或者INSERT操作可以使用規(guī)則(RULE)定義)。多個(gè)觸發(fā)器可依據(jù)字母順序依次執(zhí)行。此外,除了使用內(nèi)嵌的PL/PgSQL語(yǔ)言之外,觸發(fā)器的函數(shù)也可以用PL/Perl,PL/Python等語(yǔ)言編寫。
并發(fā)控制
PostgreSQL使用多版本并發(fā)控制(MVCC,Multiversionconcurrencycontrol)系統(tǒng)進(jìn)行并發(fā)控制,該系統(tǒng)向每個(gè)用戶提供了一個(gè)數(shù)據(jù)庫(kù)的“快照”,用戶在事務(wù)內(nèi)所作的每個(gè)修改,對(duì)于其他的用戶都不可見(jiàn),直到該事務(wù)成功提交。這從很大程度上減少了對(duì)讀取鎖的依賴,同時(shí)保證了數(shù)據(jù)庫(kù)高效地符合ACID原則。
規(guī)則
規(guī)則(RULE)允許一個(gè)查詢能被重寫,通常被用作實(shí)現(xiàn)可更新的視圖。
數(shù)據(jù)類型
PostgreSQL內(nèi)置豐富的數(shù)據(jù)類型,包括:
任意精度的數(shù)值
無(wú)限制長(zhǎng)度文本
幾何圖元
IP地址與IPv6地址
無(wú)類域間路由地址塊,MAC地址
數(shù)組
此外,用戶可以創(chuàng)建自定義數(shù)據(jù)類型,通常通過(guò)PostgreSQL的GiST機(jī)制,它們也能被很好得索引,比如PostGIS地理信息系統(tǒng)的數(shù)據(jù)類型。
定義對(duì)象
用戶可以為數(shù)據(jù)庫(kù)內(nèi)幾乎所有的對(duì)象定義新的類型,包括:
索引
操作符(可重載現(xiàn)有操作符。)
聚合函數(shù)
數(shù)據(jù)域
數(shù)據(jù)類型轉(zhuǎn)換
會(huì)話(編碼轉(zhuǎn)換)
繼承
數(shù)據(jù)表的結(jié)構(gòu)及屬性可從一個(gè)“父”表中繼承,數(shù)據(jù)將在兩者間共享。對(duì)子表中數(shù)據(jù)的插入或者刪除也將在父表中體現(xiàn),同樣,對(duì)父表作出的修改,比如添加列等操作也會(huì)導(dǎo)致子表產(chǎn)生相應(yīng)改動(dòng)。該功能尚未完全實(shí)現(xiàn),實(shí)際上,表的約束尚不能繼承。比如,在一張外聯(lián)參考了父表id字段的表中,插入一條具有子表中某條記錄id數(shù)據(jù)的記錄會(huì)導(dǎo)致失敗,因?yàn)镻ostgreSQL在對(duì)父表的外鍵約束檢查中不會(huì)檢查子表的內(nèi)容。
擴(kuò)展
地理數(shù)據(jù)對(duì)象:PostGISGPL
全文檢索:通過(guò)Tsearch2或OpenFTS, 將在8.3版本中內(nèi)嵌Tsearch2。GPL
多種異步主/從復(fù)制方案,包括Slony-I(BSD授權(quán)),Mammoth Replicator
XML/XSLT支持contrib軟件包中的XPath擴(kuò)展GPL
版本列表
-
-
-
PostgreSQL (64-bit) v9.3.0-1 官方版
PostgreSQL是一個(gè)歷史悠久的對(duì)象關(guān)系數(shù)據(jù)庫(kù)管理系統(tǒng),由美國(guó)Great Bri ...
軟件大小:51.60 MB 更新時(shí)間:2013-09-11
-