PostgreSQL關係型資料庫

餡兒了個餅發表於2017-03-17

介紹

PostgreSQL是一個自由的物件-關聯式資料庫伺服器(資料庫管理系統)。開發者把它讀為“post-gress-Q-L”,簡略念為postgres。


什麼是關係型資料庫?什麼是關係型資料庫管理系統?

見上篇。


PostgreSQL支援大部分SQL標準並且提供了許多現代特性:複雜查詢、外來鍵、觸發器、檢視、事務完整性、MVCC。也可以用許多方法擴充套件,比如,通過增加新的資料型別、函式、操作符、集函式、索引。

特點

優點

1 多種資料型別支援 

世界上最豐富的資料型別支援,其中很多資料型別連商業資料庫都不具備,例如IP型別和集合型別等;

2 全功能

PostgreSQL是全功能自動軟體資料庫,很長時間以來其是唯一支援事物、子查詢、多版本並行控制系統(MVCC)、資料完成性檢查等特性的自由軟體資料庫管理系統。

3 C/S架構

PostgreSQL採用比較經典的C/S(client/server)架構,也就是一個客戶端對應一個伺服器端守護程式的模式,這個守護程式分析客戶端的查詢請求,生成規劃樹,進行資料檢索並最終把結果格式化輸出後返回給客戶端。

4 資料客戶端介面 

為了方便客戶端的程式編寫,由資料庫伺服器提供了統一的客戶端C介面,不同的客戶端介面都是源自這個C介面,比如ODBC、JDBC、Python、Perl、Tcl、C/C++等。且其對介面的支援非常豐富,幾乎支援所有型別的資料庫客戶端介面。

5 支援平臺最多

缺點

1 學院味

早期的PostgreSQL繼承了所有Ingres、Postgres、Postgres95的問題:過於學院味。首先它的目的是資料庫研究,因此不論在穩定性、效能還是使用方面都沒得到重視。

架構

PostgreSQL強壯的一個原因源於它的架構,和商業資料庫一樣,可以用於C/S(客戶/伺服器)環境。這對於使用者和開發人員有很多好處。
PostgreSQL安裝核心是資料庫服務端程式,允許在一個獨立伺服器上。需要訪問儲存在資料庫中的資料的應用程式必須通過資料庫程式。這些客戶端程式無法直接訪問資料,即使他們和服務程式在同一臺機器上。

軟體特徵

(1)函式:

通過函式,可以再資料庫伺服器端執行指令程式。儘管指令程式可以使用基本的SQL語句寫成,但由於其缺乏流程控制等功能,所以postgreSQL中引入了使用其他語言編寫函式的能力(內建PL/pgSQL、PL/Perl等指令碼語言、編譯語言C/C++、R統計語言PL/R)。
PostgreSQL支援行返回函式:它們的輸出是一系列行型別資料的集合,可以在查詢中當做表來使用。

(2)索引:

在PostgreSQL中,使用者可以自定義索引方法,或使用內建B-tree,hash table等索引。有反向索引檢索、表示式索引、部分索引、點陣圖索引掃描幾個索引功能。

(3)觸發器:

觸發器是由SQL語句查詢所觸發的事件。觸發器通常由INSERT或UPDATE語句觸發。

在PostgreSQL中,可在資料表上設定觸發器,但無法在檢視中設定。

(4)併發控制:

PostgreSQL使用鎖版本併發控制(MVCC)系統進行併發控制,該系統向每個使用者提供了一個資料庫快照,使用者在事務內所做的每個修改,對其他使用者都不可見,直到該事務成功提交。很大程度上減少了對讀取鎖的依賴,同時保證了資料庫高效的ACID原則。

(5)規則:

允許一個查詢能被重寫,通常被用作實現可更新的檢視。

(6)資料型別:

PostgreSQL內建豐富的資料型別,包括:任意精度的數值、無限制長度文字、幾何圖元、IP地址、MAC地址、陣列。
此外,使用者還可以自定義資料型別。

(7)定義物件:

使用者可以為資料庫內所有物件定義新的型別,包括:索引、操作符(可過載現有操作符)、聚合函式、資料域、資料型別轉換、會話(編碼轉換)。

(8)繼承:

資料表的結構及屬性可從一個父表中繼承,資料在兩者間共享。對子表/父表中資料的插入或者刪除也將在父表/子表中體現(至今還未實現)。

(9)擴充套件


相關文章