亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 數據庫 > PostgreSQL > 正文

PostgreSQL是什么?PostgreSQL數據庫百科全解

2020-03-12 23:55:43
字體:
來源:轉載
供稿:網友

PostgreSQL是什么?PostgreSQL數據庫百科全解


什么是PostgreSQL?

PostgreSQL是以加州大學伯克利分校計算機系開發的 POSTGRES,現在已經更名為PostgreSQL,版本 4.2為基礎的對象關系型數據庫管理系統(ORDBMS)。PostgreSQL支持大部分 SQL標準并且提供了許多其他現代特性:復雜查詢、外鍵、觸發器、視圖、事務完整性、MVCC。同樣,PostgreSQL 可以用許多方法擴展,比如, 通過增加新的數據類型、函數、操作符、聚集函數、索引免費使用、修改、和分發 PostgreSQL,不管是私用、商用、還是學術研究使用。

主要特性:

PostgreSQL 是一個自由的對象-關系數據庫服務器(數據庫管理系統),它在靈活的 BSD-風格許可證下發行。它提供了相對其他開放源代碼數據庫系統(比如 MySQL 和 Firebird),和專有系統(比如 Oracle、Sybase、IBM 的 DB2 和 Microsoft SQL Server)之外的另一種選擇。

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

優點

事實上, PostgreSQL 的特性覆蓋了 SQL-2/SQL-92 和 SQL-3/SQL-99,首先,它包括了可以說是目前世界上最豐富的數據類型的支持,其中有些數據類型可以說連商業數據庫都不具備, 比如 IP 類型和幾何類型等;其次,PostgreSQL 是全功能的自由軟件數據庫,很長時間以來,PostgreSQL 是唯一支持事務、子查詢、多版本并行控制系統(MVCC)、數據完整性檢查等特性的唯一的一種自由軟件的數據庫管理系統。 Inprise 的 InterBase 以及SAP等廠商將其原先專有軟件開放為自由軟件之后才打破了這個唯一。最后,PostgreSQL擁有一支非?;钴S的開發隊伍,而且在許多黑客的努力下,PostgreSQL 的質量日益提高。

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

缺點

從 Postgres 開始,PostgreSQL 就經受了多次變化。

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

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


PostgreSQL歷史版本:


早期版本

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

在 1994 年, Andrew Yu 和 Jolly Chen 向 POSTGRES 中增加了 SQL 語言的解釋器。并隨后將 Postgres95 源代碼發布到互聯網上供大家使用, 成為一個開放源碼的,原先伯克利 POSTGRES 代碼的繼承者。
Postgres95 所有源代碼都是完全的 ANSI C , 而且代碼量減少了 25%。并且有許多內部修改以利于提高性能和代碼的維護性。 Postgres95 版本 1.0.x 在進行 Wisconsin Benchmark 測試時大概比 POSTGRES v4.2 快 30-50%。
目前版本

到了 1996 年, "Postgres95"改成新名字 PostgreSQL 用于反映最初的 POSTGRES 和最新的使用 SQL 的版本之間的關系。 同時版本號也 重新從 6.0 開始, 將版本號放回到最初的由 伯克利 POSTGRES 項目開始的順序中。
Postgres95 版本的開發重點放在標明和理解現有的后端代碼的問題上。 PostgreSQL 開發重點轉到了 一些有爭議的特性和功能上面,當然各個方面的工作同時都在進行。
目前,PostgresSQL的穩定版本到了9.3.1,具有非常豐富的特性和商業級數據庫管理系統的質量。


PostgreSQL改進:

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

原來的查詢語言 PostQUEL 被 SQL 取代(在 server 端實現)。在 PostgreSQL 之前還不支持子查詢)(但這個功能可以在 Postgres95 里面由用戶定義的 SQL 函數實現)。重新實現了聚集。同時還增加了對 GROUP BY 查詢子句的支持。 C 程序仍可以調用 libpq接口函數。
新增加了利用 GNU Readline 進行交互 SQL 查詢(psql)。 這個程序很大程度上取代了老的 monitor 程序。
前端庫

增加了新的前端庫, libpgtcl, 用以支持以 Tcl為基礎的客戶端。一個樣本 shell, pgtclsh,提供了新的 Tcl 命令用于 Tcl 程序和 Postgres95 后端之間的交互。
徹底重寫了大對象的接口。 保留了將大對象倒轉(Inversion )作為存儲大對象的唯一機制。 (去掉了倒轉(Inversion )文件系統。)
去掉了記錄級(instance-level )的規則系統。 但我們仍然可以通過重寫規則使用規則。
特性教程

在發布的源碼中增加了一個簡短的常用 SQL 和 Postgres95 特有的 SQL 特性的教程。
用GNU make (取代了 BSD make)用于制作。 Postgres95 可以使用不加補丁的 GCC (修正了偶數字節數據( doubles )的對齊問題)。


PostgreSQL項目:

Michael Stonebraker 領導的 POSTGRES 項目是由防務高級研究項目局(DARPA), 陸軍研究辦公室(ARO),國家科學基金(NSF), 以及 ESL, Inc 共同贊助的。 POSTGRES 的實現始于 1986 年, 該系統最初的概念詳見 POSTGRES的設計。 最早的數據模型定義見 The POSTGRES Data Model。 當時的規則系統設計在 POSTGRES 規則系統的設計 里描述. 存儲管理器的理論基礎和體系結構在 POSTGRES存儲系統的設計 里有詳細描述。
從那以后,POSTGRES 經歷了幾次主要的版本更新。 第一個"演示性"系統在 1987 年便可使用了, 并且在 1988 年的 ACM-SIGMOD 大會上展出。在 1989 年六月發布了版本 1給一些外部的用戶使用。 為了回應用戶對第一個規則系統的批評,作者重新設計了規則系統,并在1990年6月發布了使用新規則系統的版本 2。 版本 3 在1991年出現, 增加了多存儲管理器的支持, 并且改進了查 詢執行器, 重新編寫了規則系統。 從那以后,隨后的版本直到 Postgres95 發布前工作都集中在移植性和可靠性上。
POSTGRES 已經在許多研究或實際的應用中得到了應用。 這些應用包括: 一個財務數據分析系統,一個噴氣引擎性能監控軟件包,一個小行星跟蹤數據庫, 一個醫療信息數據庫和一些地理信息系統。 POSTGRES 還被許多大學用于教學用途。 Illustra Information Technologies Illustra Information Technologies (并入 Informix) 拿到代碼并使之商業化。在 1992 年 POSTGRES 成為 Sequoia 2000 科學計算計劃的首要數據管理器。
到了 1993 年,外部用戶的數量幾乎翻番。隨著用戶的增加。 用于源代碼維護的時間日益增加 占用了太多本應該用于數據庫研究的時間, 為了減少支持的負擔,伯克利的POSTGRES 項目在版本 4.2 時正式終止。


PostgreSQL版本發布:

2013年10月10日,PostgreSQL 正式發布9.3.1版本。
2012年09月10日,PostgreSQL 宣布 9.2 正式版發布了!該版本主要在性能方面有很大的提升,也包括一些新的 SQL 特性以及復制支持方面,主要內容包括:
允許查詢直接從索引中獲取數據,避免訪問堆數據 (index-only scans)
允許查詢計劃器為指定參數值生成自定義的計劃,甚至是用了 Prepared Statement
提升計劃器通過內部索引掃描來使用嵌套循環
允許流復制從節點將數據轉到其他從節點 (cascading replication)
允許pg_basebackup對待機的服務器進行基準備份
增加新工具pg_receivexlog用來收集[3] WAL 文件的改動
增加SP-GiST(Space-Partitioned GiST) 索引訪問方法
支持range data types
增加JSON數據類型
為視圖增加security_barrier選項
允許 libpq 連接字符串使用URI格式
支技HP-UX
為 libpq 增加single-row processing mode以更好的處理大結果集。


PostgreSQL特征:

函數

通過函數,可以在數據庫服務器端執行指令程序。盡管這樣的指令程序可以使用基本的SQL語句寫成,但是由于其缺乏流程控制等功能,所以在PostgreSQL中引入了使用其它程序語言編寫函數的能力,包括:
一個內置的名為PL/pgSQL的過程語言,類似于Oracle的PL/SQL;
包括PL/Perl,plPHP,PL/Python,PL/Ruby,PL/sh,PL/Tcl與PL/Scheme在內的腳本語言;
編譯語言:C,C++,或Java(通過PL/Java)。
R統計語言(PL/R)。
以上部分的語言,甚至可以在觸發器內執行。PostgreSQL支持行返回函數:它們的輸出是一系列行類型數據的集合,可以在查詢中當作表來使用。函數也可以被定義成以創建者或者調用者的身份運行。在某些場合,或者其他的數據庫產品中,函數也會被稱為“存儲過程”,但技術上這兩者并未有太大分別。
索引

在PostgreSQL中,用戶可以自定義索引方法,或使用內置的B-tree,哈希表與GiST索引。PosrgreSQL的索引功能同時也具有以下功能:
反向索引檢索:無須額外的索引就能實現類似ORDER BYfieldDESC的操作。
表達式索引:可以建立基于表達式值而非數值或列的索引。
部分索引:僅索引表的部分,可以通過在CREATE INDEX語句口添加WHERE從句以創建更小的索引。
位圖索引掃描:從8.1版開始支持此功能。該功能將讀取多個索引,生成表示它們之間符合查詢標準的多元組交集的位圖。這樣解決了混合索引的問題。在一個具有20列的表中,理論上能創建20! 個索引,在實際應用中已不現實。使用位圖索引掃描后,在每次查詢時,它將能把約束條件中所涉及列各自的索引進行任意的排列組合。
觸發器

觸發器是由SQL語句查詢所觸發的事件。如:一個INSERT語句可能觸發一個檢查數據完整性的觸發器。觸發器通常由INSERT或UPDATE語句觸發。
在PostgreSQL中,可在數據表上設置觸發器,但無法在視圖中設置(對視圖的UPDATE或者INSERT操作可以使用規則(RULE)定義)。多個觸發器可依據字母順序依次執行。此外,除了使用內嵌的PL/PgSQL語言之外,觸發器的函數也可以用PL/Perl,PL/Python等語言編寫。
并發控制

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

規則(RULE)允許一個查詢能被重寫,通常被用作實現可更新的視圖。
數據類型

PostgreSQL內置豐富的數據類型,包括:
任意精度的數值
無限制長度文本
幾何圖元
IP地址與IPv6地址
無類域間路由地址塊,MAC地址
數組
此外,用戶可以創建自定義數據類型,通常通過PostgreSQL的GiST機制,它們也能被很好得索引,比如PostGIS地理信息系統的數據類型。
定義對象

用戶可以為數據庫內幾乎所有的對象定義新的類型,包括:
索引
操作符(可重載現有操作符。)
聚合函數
數據域
數據類型轉換
會話(編碼轉換)
繼承

數據表的結構及屬性可從一個“父”表中繼承,數據將在兩者間共享。對子表中數據的插入或者刪除也將在父表中體現,同樣,對父表作出的修改,比如添加列等操作也會導致子表產生相應改動。該功能尚未完全實現,實際上,表的約束尚不能繼承。比如,在一張外聯參考了父表id字段的表中,插入一條具有子表中某條記錄id數據的記錄會導致失敗,因為PostgreSQL在對父表的外鍵約束檢查中不會檢查子表的內容。
擴展

地理數據對象:PostGISGPL
全文檢索:通過Tsearch2或OpenFTS, 將在8.3版本中內嵌Tsearch2。GPL
多種異步主/從復制方案,包括Slony-I(BSD授權),Mammoth Replicator
XML/XSLT支持contrib軟件包中的XPath擴展GPL

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
久久99亚洲热视| 91精品久久久久久久久久久| 91色p视频在线| 国内精品小视频在线观看| 欧美激情精品久久久久久| 国产一区二区三区在线观看视频| 国产成人aa精品一区在线播放| 久久夜色精品国产亚洲aⅴ| 亚洲成人黄色网址| 日本久久久久久| 91天堂在线视频| 91免费国产网站| 在线视频亚洲欧美| 亚洲成人亚洲激情| 欧美性少妇18aaaa视频| 国产欧美一区二区三区四区| 亚洲色在线视频| 亚洲精品国产电影| 成人精品视频99在线观看免费| 国产精品美女免费看| 中文字幕欧美日韩va免费视频| 欧美另类极品videosbestfree| 播播国产欧美激情| 羞羞色国产精品| 国产91露脸中文字幕在线| 亚洲国产美女久久久久| 精品成人在线视频| 色老头一区二区三区在线观看| 日韩免费看的电影电视剧大全| 久久精品国产一区二区电影| 国产精品视频久久| 97久久精品国产| 精品免费在线观看| 久久精品成人动漫| 欧美专区国产专区| 亚洲一区av在线播放| 亚洲第一区中文99精品| 欧美大胆在线视频| 国产欧美在线看| 国产精品久久久久久久久免费| 成人免费视频xnxx.com| 欧美日韩中文在线观看| 亚洲精品按摩视频| 成人免费高清完整版在线观看| 国模吧一区二区三区| 日本伊人精品一区二区三区介绍| 九九精品在线观看| 欧美午夜丰满在线18影院| 精品国偷自产在线| 欧美激情在线一区| 久久亚洲国产成人| 欧美国产日本在线| 国产99在线|中文| 久久伊人精品天天| 国产欧美一区二区三区视频| 性色av一区二区三区红粉影视| 欧美成人h版在线观看| 欧美激情视频给我| 9.1国产丝袜在线观看| 欧美日韩激情网| 亚洲韩国欧洲国产日产av| 亚洲最大在线视频| 日韩黄色高清视频| 国产精品免费网站| 91日韩在线播放| 91福利视频在线观看| xxxxxxxxx欧美| 久久综合免费视频| 国产美女直播视频一区| 91精品中国老女人| 亚洲2020天天堂在线观看| 亚洲国产精久久久久久久| 在线观看国产精品淫| 国产日韩欧美在线播放| 性日韩欧美在线视频| 亚洲最大的免费| 欧美伦理91i| 亚洲加勒比久久88色综合| 一区二区三区视频免费| 午夜美女久久久久爽久久| 亚洲aⅴ日韩av电影在线观看| 欧美精品在线免费| 亚洲影院色在线观看免费| 欧美专区在线观看| 亚洲视频axxx| 亚洲高清一区二| 日韩电影第一页| 日韩国产中文字幕| 日韩欧美亚洲国产一区| 成人网在线观看| 动漫精品一区二区| 97在线精品国自产拍中文| 国产主播在线一区| 日韩免费在线电影| 精品人伦一区二区三区蜜桃网站| 日本久久久久久久久久久| 亚洲午夜精品久久久久久性色| 亚洲网站在线看| 亚洲精品91美女久久久久久久| 亚洲性视频网站| 国内成人精品一区| 性欧美xxxx交| 一区二区三区国产视频| 日韩电影中文字幕| 欧美在线视频一区二区| 在线观看国产精品日韩av| 亚洲精品大尺度| 日韩大片免费观看视频播放| 国产精国产精品| 精品中文字幕久久久久久| 国产精品久久激情| 成人有码在线播放| 日韩av在线最新| 日韩激情av在线免费观看| 欧美精品久久久久久久| 欧美在线性视频| 亚洲色图欧美制服丝袜另类第一页| 成人国产亚洲精品a区天堂华泰| 欧美专区日韩视频| 国产精品96久久久久久又黄又硬| 成人激情在线观看| 亚洲欧美中文在线视频| 欧美视频在线免费看| 国产精品网站视频| 欧美综合在线观看| 国产精品自拍网| 国产深夜精品福利| 亚洲第一男人天堂| 欧美成人剧情片在线观看| 欧美在线视频在线播放完整版免费观看| 欧美wwwxxxx| 欧美裸体男粗大视频在线观看| 538国产精品视频一区二区| 2019亚洲日韩新视频| 欧美一区深夜视频| 久久久久久久久中文字幕| 亚洲国产女人aaa毛片在线| 国产午夜精品久久久| 色香阁99久久精品久久久| 黑人巨大精品欧美一区免费视频| 久久久久久久一区二区| 国产精品丝袜高跟| 一区二区福利视频| 国产精品麻豆va在线播放| 久久综合免费视频影院| 91精品免费看| 亚洲国产又黄又爽女人高潮的| 在线精品播放av| 午夜精品国产精品大乳美女| 国产精品免费一区二区三区都可以| 中文字幕日本欧美| 日韩在线中文视频| 88xx成人精品| 久久亚洲欧美日韩精品专区| 国产午夜精品免费一区二区三区| 正在播放欧美一区| 欧美电影院免费观看| 国产精品中文字幕久久久| 日韩欧美精品网站| 久热精品视频在线观看| 久久综合免费视频影院| 国产精品草莓在线免费观看| 久久久久一本一区二区青青蜜月| 亚洲码在线观看|