本教程已為初學者準備,以幫助他們了解與PostgreSQL數(shù)據(jù)庫相關的基本概念到高級概念。
PostgreSQL 是一個免費的對象-關系數(shù)據(jù)庫服務器(ORDBMS),在靈活的BSD許可證下發(fā)行。
PostgreSQL 開發(fā)者把它念作 post-gress-Q-L。
PostgreSQL 的 Slogan 是 "世界上最先進的開源關系型數(shù)據(jù)庫"。
數(shù)據(jù)庫(Database)是按照數(shù)據(jù)結構來組織、存儲和管理數(shù)據(jù)的倉庫。
每個數(shù)據(jù)庫都有一個或多個不同的 API 用于創(chuàng)建,訪問,管理,搜索和復制所保存的數(shù)據(jù)。
我們也可以將數(shù)據(jù)存儲在文件中,但是在文件中讀寫數(shù)據(jù)速度相對較慢。
所以,現(xiàn)在我們使用關系型數(shù)據(jù)庫管理系統(tǒng)(RDBMS)來存儲和管理的大數(shù)據(jù)量。所謂的關系型數(shù)據(jù)庫,是建立在關系模型基礎上的數(shù)據(jù)庫,借助于集合代數(shù)等數(shù)學概念和方法來處理數(shù)據(jù)庫中的數(shù)據(jù)。
ORDBMS(對象關系數(shù)據(jù)庫系統(tǒng))是面向對象技術與傳統(tǒng)的關系數(shù)據(jù)庫相結合的產物,查詢處理是 ORDBMS 的重要組成部分,它的性能優(yōu)劣將直接影響到DBMS 的性能。
ORDBMS在原來關系數(shù)據(jù)庫的基礎上,增加了一些新的特性。
RDBMS 是關系數(shù)據(jù)庫管理系統(tǒng),是建立實體之間的聯(lián)系,最后得到的是關系表。
OODBMS 面向對象數(shù)據(jù)庫管理系統(tǒng),將所有實體都看著對象,并將這些對象類進行封裝,對象之間的通信通過消息 OODBMS 對象關系數(shù)據(jù)庫在實質上還是關系數(shù)據(jù)庫 。
在我們開始學習 PostgreSQL 數(shù)據(jù)庫前,讓我們先了解下 ORDBMS 的一些術語:
數(shù)據(jù)庫: 數(shù)據(jù)庫是一些關聯(lián)表的集合。
數(shù)據(jù)表: 表是數(shù)據(jù)的矩陣。在一個數(shù)據(jù)庫中的表看起來像一個簡單的電子表格。
列: 一列(數(shù)據(jù)元素) 包含了相同的數(shù)據(jù), 例如郵政編碼的數(shù)據(jù)。
行:一行(=元組,或記錄)是一組相關的數(shù)據(jù),例如一條用戶訂閱的數(shù)據(jù)。
冗余:存儲兩倍數(shù)據(jù),冗余降低了性能,但提高了數(shù)據(jù)的安全性。
主鍵:主鍵是唯一的。一個數(shù)據(jù)表中只能包含一個主鍵。你可以使用主鍵來查詢數(shù)據(jù)。
外鍵:外鍵用于關聯(lián)兩個表。
復合鍵:復合鍵(組合鍵)將多個列作為一個索引鍵,一般用于復合索引。
索引:使用索引可快速訪問數(shù)據(jù)庫表中的特定信息。索引是對數(shù)據(jù)庫表中一列或多列的值進行排序的一種結構。類似于書籍的目錄。
參照完整性: 參照的完整性要求關系中不允許引用不存在的實體。與實體完整性是關系模型必須滿足的完整性約束條件,目的是保證數(shù)據(jù)的一致性。
函數(shù):通過函數(shù),可以在數(shù)據(jù)庫服務器端執(zhí)行指令程序。
索引:用戶可以自定義索引方法,或使用內置的 B 樹,哈希表與 GiST 索引。
觸發(fā)器:觸發(fā)器是由SQL語句查詢所觸發(fā)的事件。如:一個INSERT語句可能觸發(fā)一個檢查數(shù)據(jù)完整性的觸發(fā)器。觸發(fā)器通常由INSERT或UPDATE語句觸發(fā)。 多版本并發(fā)控制:PostgreSQL使用多版本并發(fā)控制(MVCC,Multiversion concurrency control)系統(tǒng)進行并發(fā)控制,該系統(tǒng)向每個用戶提供了一個數(shù)據(jù)庫的"快照",用戶在事務內所作的每個修改,對于其他的用戶都不可見,直到該事務成功提交。
規(guī)則:規(guī)則(RULE)允許一個查詢能被重寫,通常用來實現(xiàn)對視圖(VIEW)的操作,如插入(INSERT)、更新(UPDATE)、刪除(DELETE)。
數(shù)據(jù)類型:包括文本、任意精度的數(shù)值數(shù)組、JSON 數(shù)據(jù)、枚舉類型、XML 數(shù)據(jù)等。
全文檢索:通過 Tsearch2 或 OpenFTS,8.3版本中內嵌 Tsearch2。
NoSQL:JSON,JSONB,XML,HStore 原生支持,至 NoSQL 數(shù)據(jù)庫的外部數(shù)據(jù)包裝器。
數(shù)據(jù)倉庫:能平滑遷移至同屬 PostgreSQL 生態(tài)的 GreenPlum,DeepGreen,HAWK 等,使用 FDW 進行 ETL。
PostgreSQL是一個功能強大的開源對象關系數(shù)據(jù)庫系統(tǒng)。它擁有超過15年的積極開發(fā)經驗和成熟的架構,在可靠性,數(shù)據(jù)完整性和正確性方面贏得了極高的聲譽。PostgreSQL可在所有主要操作系統(tǒng)上運行,包括Linux,UNIX(AIX,BSD,HP-UX,SGI
IRIX,Mac OS X,Solaris,Tru64)和Windows。本教程將為您提供PostgreSQL的快速入門,并使您對PostgreSQL編程感到滿意。