PostgreSQL關係型資料庫
介紹
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)擴充套件
相關文章
- 關係型資料庫與非關係型資料庫介紹!資料庫
- NoSQL:從關係型資料庫到非關係型資料庫SQL資料庫
- 關係型資料庫資料庫
- 關係型資料庫和非關係型資料庫的區別資料庫
- 關係型資料庫概要資料庫
- 關係型資料庫原理資料庫
- 關係型資料庫,何以稱為“關係”資料庫
- 關係型資料庫和非關係型資料庫的簡單對比資料庫
- OO資料庫和關係型資料庫資料庫
- 三款開源關係型資料庫對比:MySQL、PostgreSQL、SQLiteXP資料庫MySqlSQLite
- 非關係型資料庫(NOSQL)和關係型資料庫(SQL)區別詳解資料庫SQL
- 關係型資料庫之SQL資料庫SQL
- 關係型資料庫之索引資料庫索引
- 關係型資料庫的理解資料庫
- 關係型資料庫理論資料庫
- 非關係型資料庫:Cassandra資料庫
- redis—非關係型資料庫Redis資料庫
- Linux系統:Centos7下搭建PostgreSQL關係型資料庫LinuxCentOSSQL資料庫
- Windows版PostgreSQL資料庫下載及安裝教程(關係型資料庫管理系統)WindowsSQL資料庫
- 資料庫入門之3張表對比關係型與非關係型資料庫資料庫
- 關係型資料庫和非關係型資料庫介紹及優劣勢比較資料庫
- NoSQL資料庫探討 -- 非關係型資料庫SQL資料庫
- SQLALchemy操作MySQL關係型資料庫MySql資料庫
- mysqlclient操作MySQL關係型資料庫MySqlclient資料庫
- FastAPI(44)- 操作關係型資料庫ASTAPI資料庫
- Node MySQL打造關係型資料庫MySql資料庫
- SQL與NoSQL(關係型與非關係型)資料庫的區別SQL資料庫
- 資料庫——關係型資料庫MySQL--簡單使用資料庫MySql
- 平時常見關係型資料庫資料庫
- 聊聊非關係型資料庫MongoDB索引資料庫MongoDB索引
- 反DDD模式之關係型資料庫模式資料庫
- 列舉常見的關係型資料庫和非關係型都有那些?資料庫
- 關係型資料庫:使用正規化建立資料庫(轉)資料庫
- 關係型和非關係型資料庫一定要對立?達夢資料提供新思路資料庫
- 雲關係型資料庫(Relational Database Service,RDS)資料庫Database
- nodejs之MongoDB 非關係型資料庫NodeJSMongoDB資料庫
- MapReduce 與 關係型資料庫的區別資料庫
- 關係型資料庫分庫分表系列之一資料庫