快捷登錄,享 免費下載
首頁 > 軟件列表 > PostgreSQL
PostgreSQL

PostgreSQL

對象關(guān)系數(shù)據(jù)庫管理系統(tǒng)

軟件語言:簡體中文
軟件授權(quán):免費軟件
適用系統(tǒng):Windows
創(chuàng)建時間:2021-01-12
軟件廠商/開發(fā)者信息:獨立開發(fā)者

軟件介紹

PostgreSQL是一個自由的對象-關(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和MicrosoftSQLServer)之外的另一種選擇。

PostgreSQL不尋常的名字導(dǎo)致一些讀者停下來嘗試拼讀它,特別是那些把SQL拼讀為"sequel"的人。PostgreSQL開發(fā)者把它拼讀為"post-gress-Q-L"。它也經(jīng)常被簡略念為"postgres"。

主要特點

優(yōu)點

事實上,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擁有一支非?;钴S的開發(fā)隊伍,而且在許多黑客的努力下,PostgreSQL的質(zhì)量日益提高。

從技術(shù)角度來講,PostgreSQL采用的是比較經(jīng)典的C/S(client/server)結(jié)構(gòu),也就是一個客戶端對應(yīng)一個服務(wù)器端守護進程的模式,這個守護進程分析客戶端來的查詢請求,生成規(guī)劃樹,進行數(shù)據(jù)檢索并最終把結(jié)果格式化輸出后返回給客戶端。為了便于客戶端的程序的編寫,由數(shù)據(jù)庫服務(wù)器提供了統(tǒng)一的客戶端C接口。而不同的客戶端接口都是源自這個C接口,比如ODBC,JDBC,Python,Perl,Tcl,C/C++,ESQL等,同時也要指出的是,PostgreSQL對接口的支持也是非常豐富的,幾乎支持所有類型的數(shù)據(jù)庫客戶端接口。這一點也可以說是PostgreSQL一大優(yōu)點。

缺點

從Postgres開始,PostgreSQL就經(jīng)受了多次變化。

首先,早期的PostgreSQL繼承了幾乎所有Ingres,Postgres,Postgres95的問題:過于學(xué)院味,因為首先它的目的是數(shù)據(jù)庫研究,因此不論在穩(wěn)定性,性能還是使用方方面面,長期以來一直沒有得到重視,直到PostgreSQL項目開始以后,情況才越來越好,PostgreSQL已經(jīng)完全可以勝任任何中上規(guī)模范圍內(nèi)的應(yīng)用范圍的業(yè)務(wù)。目前有報道的生產(chǎn)數(shù)據(jù)庫的大小已經(jīng)有TB級的數(shù)據(jù)量,已經(jīng)逼近32位計算的極限。不過學(xué)院味也給PostgreSQL帶來一個意想不到的好處:大概因為各大學(xué)的軟硬件環(huán)境差異太大的緣故,它是目前支持平臺最多的數(shù)據(jù)庫管理系統(tǒng)的一種,所支持的平臺多達十幾種,包括不同的系統(tǒng),不同的硬件體系。至今,它仍然保持著支持平臺最多的數(shù)據(jù)庫管理系統(tǒng)的稱號。

其次,PostgreSQL的確還欠缺一些比較高端的數(shù)據(jù)庫管理系統(tǒng)需要的特性,比如數(shù)據(jù)庫集群,更優(yōu)良的管理工具和更加自動化的系統(tǒng)優(yōu)化功能等提高數(shù)據(jù)庫性能的機制等。

版本歷史

早期版本

被稱為PostgreSQL(發(fā)音為Post-gress-cue-ell)的對象-關(guān)系型數(shù)據(jù)庫管理系統(tǒng)(有一段時間被稱為Postgres95)是從伯克利寫的POSTGRES軟件包發(fā)展而來的。經(jīng)過十幾年的發(fā)展,PostgreSQL是世界上可以獲得的最先進的開放源碼的數(shù)據(jù)庫系統(tǒng),它提供了多版本并發(fā)控制,支持幾乎所有SQL構(gòu)件(包括子查詢,事務(wù)和用戶定義類型和函數(shù)),并且可以獲得非常廣闊范圍的(開發(fā))語言綁定(包括C,C++,Java,perl,tcl,和python)。

Postgres95

在1994年,AndrewYu和JollyChen向POSTGRES中增加了SQL語言的解釋器。并隨后將Postgres95源代碼發(fā)布到互聯(lián)網(wǎng)上供大家使用,成為一個開放源碼的,原先伯克利POSTGRES代碼的繼承者。

Postgres95所有源代碼都是完全的ANSIC,而且代碼量減少了25%。并且有許多內(nèi)部修改以利于提高性能和代碼的維護性。Postgres95版本1.0.x在進行WisconsinBenchmark測試時大概比POSTGRESv4.2快30-50%。

當(dāng)前版本

到了1996年,"Postgres95"改成新名字PostgreSQL用于反映最初的POSTGRES和最新的使用SQL的版本之間的關(guān)系。同時版本號也重新從6.0開始,將版本號放回到最初的由伯克利POSTGRES項目開始的順序中。

Postgres95版本的開發(fā)重點放在標(biāo)明和理解現(xiàn)有的后端代碼的問題上。PostgreSQL開發(fā)重點轉(zhuǎn)到了一些有爭議的特性和功能上面,當(dāng)然各個方面的工作同時都在進行。

目前,PostgresSQL的穩(wěn)定版本到了9.3.1,具有非常豐富的特性和商業(yè)級數(shù)據(jù)庫管理系統(tǒng)的質(zhì)量。

軟件改進

除了修正了一些錯誤,下面的是一些主要改進:

查詢語言

原來的查詢語言PostQUEL被SQL取代(在server端實現(xiàn))。在PostgreSQL之前還不支持子查詢)(但這個功能可以在Postgres95里面由用戶定義的SQL函數(shù)實現(xiàn))。重新實現(xiàn)了聚集。同時還增加了對GROUPBY查詢子句的支持。C程序仍可以調(diào)用libpq接口函數(shù)。

新增加了利用GNUReadline進行交互SQL查詢(psql)。這個程序很大程度上取代了老的monitor程序。

前端庫

增加了新的前端庫,libpgtcl,用以支持以Tcl為基礎(chǔ)的客戶端。一個樣本shell,pgtclsh,提供了新的Tcl命令用于Tcl程序和Postgres95后端之間的交互。

徹底重寫了大對象的接口。保留了將大對象倒轉(zhuǎn)(Inversion)作為存儲大對象的唯一機制。(去掉了倒轉(zhuǎn)(Inversion)文件系統(tǒng)。)

去掉了記錄級(instance-level)的規(guī)則系統(tǒng)。但我們?nèi)匀豢梢酝ㄟ^重寫規(guī)則使用規(guī)則。

特性教程

在發(fā)布的源碼中增加了一個簡短的常用SQL和Postgres95特有的SQL特性的教程。

用GNUmake(取代了BSDmake)用于制作。Postgres95可以使用不加補丁的GCC(修正了偶數(shù)字節(jié)數(shù)據(jù)(doubles)的對齊問題)。

軟件項目

Michael Stonebraker領(lǐng)導(dǎo)的POSTGRES項目是由防務(wù)高級研究項目局(DARPA),陸軍研究辦公室(ARO),國家科學(xué)基金(NSF),以及ESL,Inc共同贊助的。POSTGRES的實現(xiàn)始于1986年,該系統(tǒng)最初的概念詳見POSTGRES的設(shè)計。最早的數(shù)據(jù)模型定義見The POSTGRES Data Model。當(dāng)時的規(guī)則系統(tǒng)設(shè)計在POSTGRES規(guī)則系統(tǒng)的設(shè)計里描述.存儲管理器的理論基礎(chǔ)和體系結(jié)構(gòu)在POSTGRES存儲系統(tǒng)的設(shè)計里有詳細(xì)描述。

從那以后,POSTGRES經(jīng)歷了幾次主要的版本更新。第一個"演示性"系統(tǒng)在1987年便可使用了,并且在1988年的ACM-SIGMOD大會上展出。在1989年六月發(fā)布了版本1給一些外部的用戶使用。為了回應(yīng)用戶對第一個規(guī)則系統(tǒng)的批評,作者重新設(shè)計了規(guī)則系統(tǒng),并在1990年6月發(fā)布了使用新規(guī)則系統(tǒng)的版本2。版本3在1991年出現(xiàn),增加了多存儲管理器的支持,并且改進了查詢執(zhí)行器,重新編寫了規(guī)則系統(tǒng)。從那以后,隨后的版本直到Postgres95發(fā)布前工作都集中在移植性和可靠性上。

POSTGRES已經(jīng)在許多研究或?qū)嶋H的應(yīng)用中得到了應(yīng)用。這些應(yīng)用包括:一個財務(wù)數(shù)據(jù)分析系統(tǒng),一個噴氣引擎性能監(jiān)控軟件包,一個小行星跟蹤數(shù)據(jù)庫,一個醫(yī)療信息數(shù)據(jù)庫和一些地理信息系統(tǒng)。POSTGRES還被許多大學(xué)用于教學(xué)用途。Illustra Information Technologies Illustra Information Technologies(并入Informix)拿到代碼并使之商業(yè)化。在1992年P(guān)OSTGRES成為Sequoia2000科學(xué)計算計劃的首要數(shù)據(jù)管理器。

到了1993年,外部用戶的數(shù)量幾乎翻番。隨著用戶的增加。用于源代碼維護的時間日益增加占用了太多本應(yīng)該用于數(shù)據(jù)庫研究的時間,為了減少支持的負(fù)擔(dān),伯克利的POSTGRES項目在版本4.2時正式終止。

版本發(fā)布

2013年10月10日,PostgreSQL正式發(fā)布9.3.1版本。

2012年09月10日,PostgreSQL宣布9.2正式版發(fā)布了!該版本主要在性能方面有很大的提升,也包括一些新的SQL特性以及復(fù)制支持方面,主要內(nèi)容包括:

允許查詢直接從索引中獲取數(shù)據(jù),避免訪問堆數(shù)據(jù)()

允許查詢計劃器為指定參數(shù)值生成自定義的計劃,甚至是用了PreparedStatement

提升計劃器通過內(nèi)部索引掃描來使用嵌套循環(huán)

允許流復(fù)制從節(jié)點將數(shù)據(jù)轉(zhuǎn)到其他從節(jié)點(cascadingreplication)

允許pg_basebackup對待機的服務(wù)器進行基準(zhǔn)備份

增加新工具pg_receivexlog用來收集WAL文件的改動

增加SP-GiST(Space-PartitionedGiST)索引訪問方法

支持rangedatatypes

增加JSON數(shù)據(jù)類型

為視圖增加security_barrier選項

允許libpq連接字符串使用URI格式

支技HP-UX

為libpq增加single-rowprocessingmode以更好的處理大結(jié)果集。

軟件特征

函數(shù)

通過函數(shù),可以在數(shù)據(jù)庫服務(wù)器端執(zhí)行指令程序。盡管這樣的指令程序可以使用基本的SQL語句寫成,但是由于其缺乏流程控制等功能,所以在PostgreSQL中引入了使用其它程序語言編寫函數(shù)的能力,包括:

以上部分的語言,甚至可以在觸發(fā)器內(nèi)執(zhí)行。PostgreSQL支持行返回函數(shù):它們的輸出是一系列行類型數(shù)據(jù)的集合,可以在查詢中當(dāng)作表來使用。函數(shù)也可以被定義成以創(chuàng)建者或者調(diào)用者的身份運行。在某些場合,或者其他的數(shù)據(jù)庫產(chǎn)品中,函數(shù)也會被稱為“存儲過程”,但技術(shù)上這兩者并未有太大分別。

索引

在PostgreSQL中,用戶可以自定義索引方法,或使用內(nèi)置的B-tree,哈希表與GiST索引。PosrgreSQL的索引功能同時也具有以下功能:

觸發(fā)器

觸發(fā)器是由SQL語句查詢所觸發(fā)的事件。如:一個INSERT語句可能觸發(fā)一個檢查數(shù)據(jù)完整性的觸發(fā)器。觸發(fā)器通常由INSERT或UPDATE語句觸發(fā)。

在PostgreSQL中,可在數(shù)據(jù)表上設(shè)置觸發(fā)器,但無法在視圖中設(shè)置(對視圖的UPDATE或者INSERT操作可以使用規(guī)則(RULE)定義)。多個觸發(fā)器可依據(jù)字母順序依次執(zhí)行。此外,除了使用內(nèi)嵌的PL/PgSQL語言之外,觸發(fā)器的函數(shù)也可以用PL/Perl,PL/Python等語言編寫。

并發(fā)控制

PostgreSQL使用多版本并發(fā)控制(MVCC,Multiversionconcurrencycontrol)系統(tǒng)進行并發(fā)控制,該系統(tǒng)向每個用戶提供了一個數(shù)據(jù)庫的“快照”,用戶在事務(wù)內(nèi)所作的每個修改,對于其他的用戶都不可見,直到該事務(wù)成功提交。這從很大程度上減少了對讀取鎖的依賴,同時保證了數(shù)據(jù)庫高效地符合ACID原則。

規(guī)則

規(guī)則(RULE)允許一個查詢能被重寫,通常被用作實現(xiàn)可更新的視圖。

數(shù)據(jù)類型

PostgreSQL內(nèi)置豐富的數(shù)據(jù)類型,包括:

  • 任意精度的數(shù)值

  • 無限制長度文本

  • 幾何圖元

  • IP地址與IPv6地址

  • 無類域間路由地址塊,MAC地址

  • 數(shù)組

  • 此外,用戶可以創(chuàng)建自定義數(shù)據(jù)類型,通常通過PostgreSQL的GiST機制,它們也能被很好得索引,比如PostGIS地理信息系統(tǒng)的數(shù)據(jù)類型。

    定義對象

    用戶可以為數(shù)據(jù)庫內(nèi)幾乎所有的對象定義新的類型,包括:

  • 索引

  • 操作符(可重載現(xiàn)有操作符。)

  • 聚合函數(shù)

  • 數(shù)據(jù)域

  • 數(shù)據(jù)類型轉(zhuǎn)換

  • 會話(編碼轉(zhuǎn)換)

  • 繼承

    數(shù)據(jù)表的結(jié)構(gòu)及屬性可從一個“父”表中繼承,數(shù)據(jù)將在兩者間共享。對子表中數(shù)據(jù)的插入或者刪除也將在父表中體現(xiàn),同樣,對父表作出的修改,比如添加列等操作也會導(dǎo)致子表產(chǎn)生相應(yīng)改動。該功能尚未完全實現(xiàn),實際上,表的約束尚不能繼承。比如,在一張外聯(lián)參考了父表id字段的表中,插入一條具有子表中某條記錄id數(shù)據(jù)的記錄會導(dǎo)致失敗,因為PostgreSQL在對父表的外鍵約束檢查中不會檢查子表的內(nèi)容。

    擴展

  • 地理數(shù)據(jù)對象:PostGISGPL

  • 全文檢索:通過Tsearch2或OpenFTS, 將在8.3版本中內(nèi)嵌Tsearch2。GPL

  • 多種異步主/從復(fù)制方案,包括Slony-I(BSD授權(quán)),Mammoth Replicator

  • XML/XSLT支持contrib軟件包中的XPath擴展GPL

  • 版本列表

    • PostgreSQL (64-bit) v9.3.0-1  官方版

      PostgreSQL (64-bit) v9.3.0-1 官方版

      PostgreSQL是一個歷史悠久的對象關(guān)系數(shù)據(jù)庫管理系統(tǒng),由美國Great Bri ...

      軟件大?。?span id="o9gqyon" class="gray">51.60 MB 更新時間:2013-09-11
      詳情