PostgreSQL 教學

PostgreSQL 是一個免費的物件-關聯式資料庫伺服器(ORDBMS),在靈活的BSD許可證下發行。

PostgreSQL 開發者把它念作 post-gress-Q-L

PostgreSQL 的 Slogan 是 "世界上最先進的開源關係型資料庫"。

參考內容:PostgreSQL 10.1 手冊


什麼是資料庫?

資料庫(Database)是按照資料結構來組織、儲存和管理資料的倉庫。

每個資料庫都有一個或多個不同的 API 用於建立,訪問,管理,搜尋和複製所儲存的資料。

我們也可以將資料儲存在檔案中,但是在檔案中讀寫資料速度相對較慢。

所以,現在我們使用關係型資料庫管理系統(RDBMS)來儲存和管理的大資料量。所謂的關係型資料庫,是建立在關係模型基礎上的資料庫,藉助於群集代數等數學概念和方法來處理資料庫中的資料。

ORDBMS(物件關聯式資料庫系統)是物件導向科技與傳統的關聯式資料庫相結合的產物,搜尋處理是 ORDBMS 的重要組成部分,它的效能優劣將直接影響到DBMS 的效能。

ORDBMS在原來關聯式資料庫的基礎上,增加了一些新的屬性。

RDBMS 是關聯式資料庫管理系統,是建立實體之間的聯繫,最後得到的是關係表。

OODBMS 物件導向資料庫管理系統,將所有實體都看著物件,並將這些物件類進行封裝,物件之間的通訊透過訊息 OODBMS 物件關聯式資料庫在實質上還是關聯式資料庫 。


ORDBMS 術語

在我們開始學習 PostgreSQL 資料庫前,讓我們先了解下 ORDBMS 的一些術語:

  • 資料庫: 資料庫是一些關聯表的群集。
  • 資料表: 表是資料的矩陣。在一個資料庫中的表看起來像一個簡單的試算表。
  • 列: 一列(資料元素) 包含了相同的資料, 例如郵政編碼的資料。
  • 行:一行(=元組,或資料)是一組相關的資料,例如一條使用者訂閱的資料。
  • 冗餘:儲存兩倍資料,冗餘降低了效能,但提高了資料的安全性。
  • 主鍵:主鍵是唯一的。一個資料表中只能包含一個主鍵。你可以使用主鍵來搜尋資料。
  • 外來鍵:外來鍵用於關聯兩個表。
  • 複合鍵:複合鍵(組合鍵)將多個列作為一個索引鍵,一般用於複合索引。
  • 索引:使用索引可快速訪問資料庫表中的特定訊息。索引是對資料庫表中一列或多列的值進行排序的一種結構。類似於書籍的目錄。
  • 參照完整性: 參照的完整性要求關係中不允許引用不存在的實體。與實體完整性是關係模型必須滿足的完整性約束條件,目的是保證資料的一致性。

PostgreSQL 特徵

  • 函式:透過函式,可以在資料庫伺服端執行指令程式。

  • 索引:使用者可以自定義索引方法,或使用內建的 B 樹,雜湊表與 GiST 索引。

  • 觸發程式:觸發程式是由sql陳述式搜尋所觸發的事件。如:一個INSERT敘述可能觸發一個檢查資料完整性的觸發程式。觸發程式通常由INSERT或UPDATE敘述觸發。 多版本併發控制:PostgreSQL使用多版本併發控制(MVCC,Multiversion concurrency control)系統進行併發控制,該系統向每個使用者提供了一個資料庫的"快照",使用者在交易內所作的每個修改,對於其他的使用者都不可見,直到該交易成功提交。

  • 規則:規則(RULE)允許一個搜尋能被重寫,通常用來實現對檢視表(VIEW)的操作,如寫入(INSERT)、更新(UPDATE)、刪除(DELETE)。

  • 資料型態:包括文字、任意精度的數值陣列、JSON 資料、列舉型態、XML 資料

    等。
  • 全文檢索:透過 Tsearch2 或 OpenFTS,8.3版本中內嵌 Tsearch2。

  • NoSQL:JSON,JSONB,XML,HStore 原生支援,至 NoSQL 資料庫的外部資料套件裝器。

  • 資料倉庫:能平滑遷移至同屬 PostgreSQL 生態的 GreenPlum,DeepGreen,HAWK 等,使用 FDW 進行 ETL。


相關資源

PostgreSQL 10.1 手冊 線上手冊:https://www.twcode01.com/manual/PostgreSQL/

離線手冊 - PDF 版本: https://pan.baidu.com/s/1h1J14i8tzJUY3p9yyeW0mA, 選取碼: xs7r

離線手冊 - CHM 版本: https://pan.baidu.com/s/1h1J14i8tzJUY3p9yyeW0mA, 選取碼: tq4z

檢視最新版:https://github.com/postgres-cn/pgdoc-cn/releases