具體描述
産品特色
編輯推薦
PostgreSQL 是免費開源的對象關係型數據庫管理係統,眾多企業數據庫的特性使之成為開源數據庫中*可能用於商業化應用開發的一個。同時,PostgreSQL提供瞭眾多的開發接口,非常方便開發人員的開發。
本書全麵介紹PostgreSQL 9.6的安裝與配置、庫錶的操作、SQL語言、函數、索引、事務和鎖、視圖、觸發器、安全機製、備份與恢復、高可用、負載均衡、數據復製、服務器配置、數據庫監控以及數據庫內部結構等內容。
本書既適閤PostgreSQL初學者和應用開發人員使用,也適閤高等院校和培訓學校相關專業的師生教學參考。
內容簡介
本書循序漸進地介紹PostgreSQL 9.6數據庫係統管理與開發的相關基礎知識,並提供大量具體操作PostgreSQL 9.6數據庫的示例。通過本書的學習,讀者可以完整地掌握PostgreSQL 9.6的技術要點並具備係統管理與開發的基本技能。
全書共分為18章,主要內容包括PostgreSQL 9.6的安裝與配置、數據庫的基本操作、數據錶的基本操作、SQL語言基礎、輕鬆掌握SQL語句、認識函數、PostgreSQL查詢、數據的更新、創建和使用索引、事務和鎖、視圖操作、觸發器、PostgreSQL的安全機製、數據庫的備份與還原、高可用、負載均衡、數據復製、服務器配置與數據庫監控、內部結構等。同時,本書在大部分章節的後麵提供典型習題,供讀者操作練習,從而加深理解。
本書適閤PostgreSQL 9.6數據庫初學者學習,同時也適閤想全麵瞭解PostgreSQL 9.6的數據庫係統管理與開發的人員閱讀。
作者簡介
李小威,軟件開發項目經理,精通網站開發和windows程序開發,精通window桌麵軟件和網絡編程,精通各種編程語言和數據庫開發知識,具有多年實戰開發經驗。
目錄
目 錄
第1章 初識PostgreSQL 1
1.1 數據庫基礎 1
1.1.1 什麼是數據庫 1
1.1.2 錶 2
1.1.3 數據類型 2
1.1.4 主鍵 2
1.1.5 什麼是開源 2
1.2 數據庫技術構成 3
1.2.1 數據庫係統 3
1.2.2 SQL語言 4
1.2.3 數據庫訪問技術 5
1.3 什麼是PostgreSQL 6
1.3.1 客戶機-服務器軟件 6
1.3.2 PostgreSQL發展曆程 6
1.3.3 PostgreSQL的優勢 7
1.4 如何學習PostgreSQL 7
第2章 PostgreSQL 9.6的安裝與配置 9
2.1 PostgreSQL 9.6的新功能 9
2.2 安裝與啓動PostgreSQL 9.6 10
2.2.1 下載PostgreSQL 9.6安裝包 10
2.2.2 安裝PostgreSQL 9.6 13
2.2.3 啓動PostgreSQL服務器 15
2.3 pgAdmin 4的基本操作 17
2.3.1 pgAdmin 4的啓動與連接 18
2.3.2 pgAdmin 4的界麵簡介 19
2.3.3 配置PostgreSQL服務器的屬性 24
2.3.4 執行SQL查詢語句 25
2.4 常見問題及解答 25
疑問1:連接pgAdmin時提示“服務器未監聽”的錯誤怎麼辦? 26
疑問2:如何修改服務器登錄密碼? 26
2.5 本章小結 26
2.6 經典習題 26
第3章 數據庫的基本操作 27
3.1 創建數據庫 27
3.1.1 使用對象瀏覽器創建數據庫 27
3.1.2 使用SQL創建數據庫 29
3.2 修改數據庫的屬性 31
3.2.1 使用對象瀏覽器修改數據庫的屬性 31
3.2.2 使用SQL語句修改數據庫的屬性 32
3.3 刪除數據庫 32
3.3.1 使用對象瀏覽器刪除數據庫 32
3.3.2 使用SQL語句刪除數據庫 33
3.4 綜閤案例——數據庫的創建和刪除 33
3.5 常見問題及解答 35
疑問1:如何使用SQL語句創建具有一定條件的數據庫? 35
疑問2:使用DROP語句時需要注意什麼問題? 35
3.6 經典習題 35
第4章 數據錶的基本操作 36
4.1 創建數據錶 36
4.1.1 創建數據錶的基本方法 36
4.1.2 使用主鍵約束 41
4.1.3 使用外鍵約束 43
4.1.4 使用非空約束 45
4.1.5 使用唯一性約束 45
4.1.6 使用默認約束 47
4.2 修改數據錶 47
4.2.1 修改錶名 48
4.2.2 修改字段的數據類型 48
4.2.3 修改字段名 50
4.2.4 添加字段 51
4.2.5 刪除字段 52
4.2.6 刪除錶的外鍵約束 53
4.3 刪除數據錶 54
4.3.1 刪除沒有被關聯的錶 54
4.3.2 刪除被其他錶關聯的主錶 55
4.4 綜閤案例——數據錶的基本操作 56
4.5 常見問題及解答 62
疑問1:刪除和修改錶時需注意什麼問題? 62
疑問2:每一個錶中都要有一個主鍵嗎? 62
4.6 經典習題 62
第5章 數據類型和運算符 64
5.1 PostgreSQL數據類型介紹 64
5.1.1 整數類型 64
5.1.2 浮點數類型 65
5.1.3 任意精度類型 66
5.1.4 日期與時間類型 66
5.1.5 字符串類型 71
5.1.6 二進製類型 73
5.1.7 布爾類型 73
5.1.8 數組類型 74
5.2 如何選擇數據類型 75
5.3 常見運算符介紹 75
5.3.1 運算符概述 75
5.3.2 算術運算符 76
5.3.3 比較運算符 77
5.3.4 邏輯運算符 83
5.3.5 運算符的優先級 84
5.4 綜閤案例——運算符的使用 85
5.5 常見問題及解答 87
疑問1:PostgreSQL中可以存儲文件嗎? 87
疑問2:二進製和普通字符串的區彆是什麼? 87
5.6 經典習題 87
第6章 PostgreSQL函數 88
6.1 PostgreSQL函數簡介 88
6.2 數學函數 88
6.2.1 絕對值函數ABS(x)和返迴圓周率的函數PI() 89
6.2.2 平方根函數SQRT(x)和求餘函數MOD(x,y) 89
6.2.3 獲取整數的函數CEIL(x)、CEILING(x)和FLOOR(x) 90
6.2.4 四捨五入函數ROUND(x)和ROUND(x,y) 91
6.2.5 符號函數SIGN(x) 91
6.2.6 冪運算函數POW(x,y)、POWER(x,y)和EXP(x) 92
6.2.7 對數運算函數LOG(x) 92
6.2.8 角度與弧度相互轉換的函數RADIANS(x)和DEGREES(x) 93
6.2.9 正弦函數SIN(x)和反正弦函數ASIN(x) 93
6.2.10 餘弦函數COS(x)和反餘弦函數ACOS(x) 94
6.2.11 正切函數TAN(x)、反正切函數ATAN(x)和餘切函數COT(x) 94
6.3 字符串函數 95
6.3.1 計算字符串字符數和字符串長度的函數 95
6.3.2 閤並字符串函數CONCAT(s1,s2,…)、CONCAT_WS(x,s1,s2,…) 96
6.3.3 獲取指定長度的字符串的函數LEFT(s,n)和RIGHT(s,n) 97
6.3.4 填充字符串的函數LPAD(s1,len,s2)和RPAD(s1,len,s2) 98
6.3.5 刪除空格的函數LTRIM(s)、RTRIM(s)和TRIM(s) 98
6.3.6 刪除指定字符串的函數TRIM(s1 FROM s) 99
6.3.7 重復生成字符串的函數REPEAT(s,n) 100
6.3.8 替換函數REPLACE(s,s1,s2) 100
6.3.9 獲取子串的函數SUBSTRING(s,n,len) 100
6.3.10 匹配子串開始位置的函數POSITION(str1 IN str) 101
6.3.11 字符串逆序函數REVERSE(s) 101
6.4 日期和時間函數 101
6.4.1 獲取當前日期的函數和獲取當前時間的函數 101
6.4.2 獲取當前日期和時間的函數 102
6.4.3 獲取日期指定值的函數 103
6.4.4 日期和時間的運算操作 104
6.5 條件判斷函數 106
6.6 係統信息函數 107
6.6.1 獲取PostgreSQL版本號 107
6.6.2 獲取用戶名的函數 107
6.7 加密和解密函數 108
6.7.1 加密函數MD5(str) 108
6.7.2 加密函數ENCODE(str,pswd_str) 108
6.7.3 解密函數DECODE(crypt_str,pswd_str) 108
6.8 改變數據類型的函數 109
6.9 綜閤案例——PostgreSQL函數的使用 109
6.10 常見問題及解答 112
疑問1:如何從日期時間值中獲取年、月、日等部分日期或時間值? 112
疑問2:如何計算年齡? 112
6.11 經典習題 113
第7章 插入、更新與刪除數據 114
7.1 插入數據 114
7.1.1 為錶的所有字段插入數據 114
7.1.2 為錶的指定字段插入數據 116
7.1.3 同時插入多條記錄 117
7.1.4 將查詢結果插入錶中 118
7.2 更新數據 120
7.3 刪除數據 122
7.4 綜閤案例——記錄的插入、更新和刪除 124
7.5 常見問題及解答 130
疑問1:插入記錄時可以不指定字段名稱嗎? 130
疑問2:更新或者刪除錶時必須指定WHERE子句嗎? 130
7.6 經典習題 130
前言/序言
前 言
本書是麵嚮PostgreSQL 9.6初學者的一本高質量的書籍,通過詳細的實用案例,讓讀者快速入門,再也不會為數據庫而發愁。
本書特色
知識豐富全麵:知識點由淺入深,幾乎涵蓋所有PostgreSQL 9.6的基礎知識點和開發技術。
圖文並茂:注重操作,圖文並茂,在介紹案例的過程中,每一個操作均有對應步驟和過程說明。這種結閤的方式使讀者在學習過程中能夠直觀、清晰地看到操作的過程以及效果,便於更快地理解和掌握。
易學易用:顛覆傳統“看”書的觀念,變成一本能“操作”的圖書。
案例豐富:把知識點融匯於係統的案例實訓中,並且結閤綜閤案例進行講解和拓展,進而達到“知其然,並知其所以然”的效果。
提示技巧、貼心周到:本書對讀者在學習過程中可能會遇到的疑難問題以“提示”和“技巧”的形式進行說明,以免讀者在學習的過程中走彎路。
超值資源:本書400多個詳細示例和大量經典習題,讓你在實戰應用中掌握PostgreSQL 9.6的每一項技能。
讀者對象
本書是一本完整介紹PostgreSQL 9.6的教程,內容豐富,條理清晰,實用性強,適閤以下讀者學習使用:
? 對PostgreSQL 9.6完全不瞭解或者有一定瞭解的讀者。
? 對數據庫有興趣的讀者,並希望快速、全麵地掌握PostgreSQL 9.6。
? 對沒有任何PostgreSQL 9.6經驗、想學習PostgreSQL 9.6並進行應用開發的讀者。
代碼、課件與教學視頻
本書代碼、課件與教學視頻下載地址(注意數字與英文字母大小寫)如下:
鏈接:https://pan.baidu.com/s/1smGqicd 密碼:mjri
如果下載有問題或者有其他關於本書的問題,請聯係電子郵箱booksaga@163.com,郵件主題為“PostgreSQL 9.6從零開始學”。
鳴謝
除瞭本書署名編者李小威(長期從事PostgreSQL實訓的培訓工作)外,參與本書編寫的人員還有包惠利、張工廠、陳偉光、鬍同夫、梁雲亮、劉海鬆、劉玉萍、劉增産、孫若淞、王攀登、王維維、王英英、肖品和李園等人。雖然傾注瞭編者的努力,但由於水平有限,書中難免有疏漏之處,請讀者諒解,如果遇到問題或有意見,敬請與我們聯係,我們將全力提供幫助。
編 者
2018年2月
PostgreSQL 9.6 從零開始學 (視頻教學版) 內容簡介 本書旨在帶領讀者從零基礎齣發,全麵掌握 PostgreSQL 9.6 數據庫的管理與開發技能。通過係統性的講解和豐富的視頻演示,無論您是初學者,還是希望深入瞭解 PostgreSQL 的開發者或運維人員,都能在這本書中找到所需的知識和實踐指導。本書內容詳實,結構清晰,力求讓讀者在最短的時間內,以最直觀的方式,紮實掌握 PostgreSQL 9.6 的核心概念和高級特性。 第一部分: PostgreSQL 基礎入門 本部分將為讀者打下堅實的 PostgreSQL 基礎。我們將從最基本的概念入手,逐步引導您瞭解 PostgreSQL 的發展曆程、安裝部署、客戶端連接等關鍵內容。 第一章: PostgreSQL 概覽與安裝部署 PostgreSQL 簡介: 詳細介紹 PostgreSQL 的發展曆史、開源社區、核心優勢(如 ACID 事務、可擴展性、豐富的數據類型等),以及其在不同應用場景中的廣泛應用。我們會探討 PostgreSQL 相較於其他關係型數據庫的獨特之處,讓您深刻理解選擇 PostgreSQL 的價值。 係統要求與環境準備: 說明在不同操作係統(Windows, Linux, macOS)上安裝 PostgreSQL 9.6 的硬件和軟件要求,並提供詳細的係統環境配置建議,確保安裝過程的順利進行。 安裝與配置: Windows 安裝: 提供一步步的圖形化安裝教程,重點講解安裝嚮導中的各項選項,如安裝路徑、端口設置、數據目錄、Postmaster 進程等。 Linux/macOS 安裝: 演示通過源碼編譯安裝和使用包管理器(如 apt, yum, brew)安裝 PostgreSQL 的方法。詳細介紹安裝後的目錄結構,以及如何啓動、停止和重啓 PostgreSQL 服務。 基本配置: 講解 `postgresql.conf` 配置文件,重點介紹常用的配置參數,如 `listen_addresses`, `port`, `max_connections`, `shared_buffers`, `wal_buffers` 等,並解釋其作用和優化建議。同時,介紹 `pg_hba.conf` 文件,講解如何配置客戶端連接的認證方式,確保數據庫的安全訪問。 首次連接與客戶端工具: psql 命令行客戶端: 詳細介紹 `psql` 的基本使用方法,包括連接數據庫、執行 SQL 命令、查看幫助信息、退齣等。演示 `psql` 的常用快捷鍵和元命令,如 `l`, `dt`, `d`, `dn`, `du` 等,讓您能高效地與數據庫交互。 GUI 客戶端介紹: 推薦並簡要介紹常用的 PostgreSQL 圖形化管理工具,如 pgAdmin,Navicat 等,並演示如何通過這些工具連接數據庫,進行初步的數據庫對象管理。 第二章: SQL 基礎與數據類型 本章將帶您走進 SQL(Structured Query Language)的世界,這是與 PostgreSQL 交互的核心語言。我們將深入講解 SQL 的基本語法,並重點介紹 PostgreSQL 支持的豐富數據類型,為後續的數據庫設計和開發奠定基礎。 SQL 基礎語法: DDL (Data Definition Language): 詳細講解 `CREATE DATABASE`, `CREATE SCHEMA`, `CREATE TABLE`, `ALTER TABLE`, `DROP TABLE`, `DROP DATABASE`, `CREATE INDEX` 等數據定義語句,演示如何創建和管理數據庫對象。 DML (Data Manipulation Language): 深入講解 `INSERT`, `UPDATE`, `DELETE`, `SELECT` 語句。重點講解 `SELECT` 語句的強大功能,包括 `WHERE` 子句的條件過濾、`ORDER BY` 子句的排序、`GROUP BY` 子句的數據聚閤、`HAVING` 子句的過濾聚閤結果。 DCL (Data Control Language): 介紹 `GRANT`, `REVOKE` 語句,講解如何管理用戶權限。 TCL (Transaction Control Language): 講解 `BEGIN`, `COMMIT`, `ROLLBACK` 語句,理解事務的概念及其重要性。 PostgreSQL 數據類型詳解: 數值類型: 講解 `SMALLINT`, `INTEGER`, `BIGINT`, `DECIMAL`, `NUMERIC`, `REAL`, `DOUBLE PRECISION`, `SERIAL`, `BIGSERIAL` 等,並說明其精度和範圍。 字符串類型: 講解 `CHAR`, `VARCHAR`, `TEXT`,以及 `BYTEA` (二進製字符串)。 日期/時間類型: 詳細講解 `DATE`, `TIME`, `TIMESTAMP`, `TIMESTAMPTZ`, `INTERVAL`,並演示如何進行日期和時間的計算與格式化。 布爾類型: 講解 `BOOLEAN` 類型及其取值 `TRUE`, `FALSE`, `NULL`。 幾何類型: 簡要介紹 `POINT`, `LINE`, `LSEG`, `BOX`, `PATH`, `POLYGON`, `CIRCLE` 等地理信息係統(GIS)常用類型。 JSON/JSONB 類型: 重點講解 PostgreSQL 對 JSON 數據的強大支持,包括 `JSON` 和 `JSONB` 類型的區彆、常用操作符(如 `->`, `->>`, `>`, `>>`)以及 JSON 函數。 數組類型: 演示如何創建和操作數組類型的字段,以及相關的函數。 其他常用類型: 介紹 `UUID`, `MACADDR`, `INET` 等實用類型。 約束 (Constraints): 講解 `PRIMARY KEY`, `FOREIGN KEY`, `UNIQUE`, `NOT NULL`, `CHECK` 等約束的定義和作用,以及如何通過約束保證數據的完整性和一緻性。 第二部分: PostgreSQL 數據庫設計與管理 在掌握瞭基礎知識後,本部分將帶領您深入數據庫設計和日常管理層麵,學習如何構建高效、健壯的數據庫係統。 第三章: 數據庫設計與規範 範式理論: 講解數據庫設計的基本原則,包括第一範式、第二範式、第三範式,以及 BCNF,理解如何通過範式化消除數據冗餘和提高數據一緻性。 ER 模型(實體-關係模型): 介紹 ER 圖的繪製方法,如何識彆實體、屬性和關係,並將 ER 模型轉化為關係型數據庫的錶結構。 錶結構設計實踐: 演示如何根據業務需求設計閤理的錶結構,選擇閤適的數據類型,設置主鍵、外鍵和索引,以及其他約束。 數據庫規範化與反範式化: 探討在不同場景下,如何權衡規範化帶來的好處和反範式化可能帶來的性能提升。 數據字典與元數據管理: 講解數據字典的重要性,以及如何通過 `information_schema` 等係統目錄視圖來查詢數據庫元數據。 第四章: 索引與性能優化 索引是提高數據庫查詢性能的關鍵。本章將深入講解 PostgreSQL 的索引機製,並提供一係列性能優化的策略。 索引的概念與作用: 闡述索引的原理,為何能加速查詢,以及索引可能帶來的寫操作開銷。 PostgreSQL 索引類型: B-tree 索引: 詳細講解最常用的 B-tree 索引,理解其結構和查找過程。 Hash 索引: 介紹 Hash 索引的特點及其適用場景。 GIN (Generalized Inverted Index) 索引: 重點講解 GIN 索引,特彆是在全文搜索和 JSONB 數據查詢中的應用。 GiST (Generalized Search Tree) 索引: 介紹 GiST 索引,其在地理空間數據等復雜數據類型查詢中的優勢。 SP-GiST 索引: 簡要介紹 SP-GiST 索引。 BRIN (Block Range Index) 索引: 介紹 BRIN 索引的特性。 創建、管理與使用索引: 演示 `CREATE INDEX`, `DROP INDEX`, `REINDEX` 等命令。講解如何根據查詢模式選擇閤適的索引類型和字段。 理解執行計劃 (EXPLAIN): 重點講解 `EXPLAIN` 和 `EXPLAIN ANALYZE` 命令,如何解讀查詢執行計劃,識彆性能瓶頸(如全錶掃描、不閤適的 join 策略等)。 查詢優化技巧: 避免使用 `SELECT `: 強調隻查詢需要的字段。 閤理使用 `WHERE` 子句: 確保 `WHERE` 子句中的條件能夠被索引有效利用。 理解 JOIN 順序與算法: 介紹 Nested Loop, Hash Join, Merge Join 等 Join 算法,以及 PostgreSQL 如何選擇最優算法。 函數與索引: 討論函數調用對索引使用可能造成的影響,以及如何通過函數索引解決這一問題。 子查詢與 CTEs (Common Table Expressions): 演示如何使用子查詢和 CTEs 優化復雜查詢。 數據庫統計信息: 講解 `ANALYZE` 命令的作用,以及 PostgreSQL 如何利用統計信息進行查詢優化。 Vacuum 操作: 解釋 `VACUUM` 和 `VACUUM FULL` 的作用,理解 MVCC (Multi-Version Concurrency Control) 機製下的垃圾迴收。 第五章: 視圖、序列與同義詞 本章將介紹 PostgreSQL 中用於簡化數據訪問和管理的幾種重要對象。 視圖 (Views): 講解視圖的概念,如何創建、修改和刪除視圖。演示視圖在數據抽象、簡化復雜查詢、增強安全性等方麵的應用。 序列 (Sequences): 介紹序列的用途,如何創建、修改和刪除序列。演示序列在生成唯一標識符(如主鍵)中的應用,以及 `nextval()`, `currval()`, `setval()` 等函數的使用。 同義詞 (Synonyms - PostgreSQL 中的 `ALIASES` 的概念): 介紹在 PostgreSQL 中,雖然沒有直接的 `SYNONYM` 關鍵字,但可以通過 `CREATE VIEW` 或 schema 的方式實現類似功能,並講解其應用場景。 第三部分: PostgreSQL 高級特性與應用 本部分將深入探討 PostgreSQL 的高級功能,幫助您構建更強大、更靈活的數據庫應用。 第六章: 函數、存儲過程與觸發器 函數 (Functions): SQL 函數: 演示如何使用 SQL 語言編寫函數,以及如何創建、調用和管理 SQL 函數。 PL/pgSQL: 深入講解 PostgreSQL 的過程語言 PL/pgSQL。講解變量聲明、控製流語句(`IF-THEN-ELSIF-ELSE`, `LOOP`, `WHILE`, `FOR`)、遊標 (Cursors) 的使用。 其他過程語言: 簡要介紹 PL/Python, PL/Perl, PL/Java 等其他過程語言的可能性。 存儲過程 (Stored Procedures): 講解存儲過程的概念,以及 PL/pgSQL 如何實現存儲過程的邏輯。 觸發器 (Triggers): 詳細介紹觸發器的概念、類型(`BEFORE`, `AFTER`, `INSTEAD OF`)和事件(`INSERT`, `UPDATE`, `DELETE`)。演示如何創建觸發器函數,並將其與錶關聯,實現自動化的數據處理和約束。 事務控製在函數和觸發器中: 講解如何在函數和觸發器中管理事務。 第七章: 事務、並發與鎖 理解 PostgreSQL 的事務和並發機製是保證數據一緻性和係統穩定性的關鍵。 事務的 ACID 特性: 深入講解原子性 (Atomicity)、一緻性 (Consistency)、隔離性 (Isolation) 和持久性 (Durability) 的含義及 PostgreSQL 如何實現。 隔離級彆 (Isolation Levels): 詳細介紹 PostgreSQL 的隔離級彆:`READ UNCOMMITTED`, `READ COMMITTED`, `REPEATABLE READ`, `SERIALIZABLE`,並解釋它們在處理並發讀寫時可能齣現的現象(如髒讀、不可重復讀、幻讀)。 MVCC (Multi-Version Concurrency Control): 深入剖析 PostgreSQL 的 MVCC 實現機製,解釋 `xmin` 和 `xmax` 的作用,以及 `VACUUM` 的重要性。 鎖 (Locks): 鎖的類型: 介紹共享鎖 (Share Lock, S)、排他鎖 (Exclusive Lock, X)、意嚮共享鎖 (Intent Share Lock, IS)、意嚮排他鎖 (Intent Exclusive Lock, IX) 等。 鎖的粒度: 講解行鎖、頁鎖、錶鎖。 死鎖 (Deadlocks): 解釋死鎖産生的原因,以及 PostgreSQL 如何檢測和處理死鎖。 `pg_locks` 視圖: 演示如何使用 `pg_locks` 視圖監控數據庫的鎖信息。 第八章: 復製與高可用性 本章將介紹 PostgreSQL 的復製機製,以及如何構建高可用性 (High Availability, HA) 的數據庫解決方案。 復製基礎概念: 介紹主從復製、流復製、邏輯復製等基本概念。 PostgreSQL 9.6 的復製方式: 流復製 (Streaming Replication): 詳細講解流復製的工作原理,包括 WAL (Write-Ahead Logging) 的發送和接收。演示如何配置主庫和備庫,實現同步復製和異步復製。 邏輯復製 (Logical Replication): 介紹邏輯復製的原理,以及其在實現跨版本復製、選擇性數據復製等場景下的優勢。 故障轉移 (Failover) 與恢復 (Failback): 討論實現自動故障轉移的策略,並介紹手動故障轉移和恢復的步驟。 高可用性解決方案: 簡要介紹 Pacemaker, Patroni, pg_auto_failover 等第三方 HA 工具,以及它們如何與 PostgreSQL 結閤使用。 第九章: 數據備份與恢復 可靠的數據備份與恢復是數據庫管理的重要組成部分。 備份策略: 討論不同的備份策略,如全量備份、增量備份、差異備份。 PostgreSQL 備份工具: `pg_dump`: 詳細講解 `pg_dump` 的用法,包括備份單個數據庫、所有數據庫、特定錶,以及備份格式(純文本、自定義格式、目錄格式)。演示如何使用 `-Fc` (自定義格式) 結閤 `pg_restore` 實現更靈活的恢復。 `pg_dumpall`: 介紹 `pg_dumpall` 用於備份全局對象(如角色、錶空間)以及所有數據庫。 物理備份: 介紹使用 `pg_basebackup` 進行基礎備份,以及結閤 WAL 歸檔實現時間點恢復 (Point-in-Time Recovery, PITR) 的原理和配置。 數據恢復: 演示如何使用 `pg_restore` 和 `psql` 進行不同格式備份的恢復。重點講解如何使用 WAL 歸檔文件和基礎備份進行 PITR。 備份的驗證與測試: 強調定期驗證備份的完整性和有效性,以及進行恢復演練的重要性。 第十章: 安全管理與用戶權限 本章將詳細講解 PostgreSQL 的安全機製,以及如何進行用戶管理和權限控製。 用戶與角色管理: `CREATE USER`, `CREATE ROLE`, `ALTER USER`, `ALTER ROLE`, `DROP USER`, `DROP ROLE`: 演示如何創建、修改和刪除用戶和角色。 角色繼承: 講解角色之間的繼承關係。 權限係統: `GRANT`, `REVOKE`: 詳細講解如何為用戶或角色授予或撤銷對數據庫對象(錶、視圖、序列、函數等)的各種權限(如 `SELECT`, `INSERT`, `UPDATE`, `DELETE`, `TRUNCATE`, `REFERENCES`, `TRIGGER`, `ALL PRIVILEGES`)。 `pg_roles` 和 `pg_permissions` 視圖: 演示如何查詢用戶和權限信息。 連接安全: `pg_hba.conf` 文件詳解: 再次深入講解 `pg_hba.conf` 的配置,包括連接類型、數據庫、用戶、地址、認證方法(`trust`, `reject`, `md5`, `scram-sha-256`, `cert` 等)。 SSL/TLS 加密: 演示如何配置 SSL/TLS 來加密客戶端與服務器之間的通信,確保數據傳輸的安全性。 常用安全策略: 給齣一些實用的安全加固建議,如使用強密碼、最小權限原則、定期審計等。 第四部分: 進階主題與實戰案例 本部分將介紹一些 PostgreSQL 的進階主題,並通過實戰案例幫助讀者將所學知識應用於實際開發中。 第十一章: 全文搜索 (Full Text Search, FTS) 全文搜索概念: 介紹全文搜索的原理,以及它與傳統 SQL 搜索的區彆。 PostgreSQL FTS 功能: 文本搜索配置 (Text Search Configuration): 講解如何創建和管理文本搜索配置(包括詞典、解析器、規則)。 文本搜索文檔 (Text Search Document): 演示如何將文本數據轉換為可搜索的文檔。 文本搜索匹配操作符: 講解 `@@` (match), `@@/` (match any), `@@=` (match all) 等操作符。 `tsvector` 和 `tsquery` 類型: 重點講解 `tsvector`(用於存儲文本搜索文檔)和 `tsquery`(用於構建搜索查詢)的用法。 GIN 索引在 FTS 中的應用: 演示如何為 `tsvector` 列創建 GIN 索引以獲得高性能的搜索。 實戰:構建一個簡單的博客搜索功能。 第十二章: JSON/JSONB 高級應用 JSON/JSONB 數據操作函數: 深入講解 `jsonb_each`, `jsonb_each_text`, `jsonb_array_elements`, `jsonb_object_keys`, `jsonb_extract_path` 等常用函數。 JSONB 索引策略: 演示如何為 JSONB 數據創建 GIN 索引,以及如何針對特定的 JSON 鍵值進行索引優化。 JSONB 與關係型數據的結閤: 探討在什麼場景下可以使用 JSONB 來存儲半結構化數據,以及如何將其與關係型數據進行查詢。 實戰:使用 JSONB 存儲用戶配置信息。 第十三章: GIS (地理信息係統) 支持 PostGIS 擴展: 介紹 PostGIS 擴展,以及如何安裝和啓用 PostGIS。 PostGIS 數據類型: 講解 `GEOMETRY`, `GEOGRAPHY`, `RASTER` 等類型。 PostGIS 函數: 介紹常用的空間查詢函數,如 `ST_Distance`, `ST_Intersects`, `ST_Contains`, `ST_Within`, `ST_Buffer` 等。 空間索引: 講解 GiST 索引在空間查詢中的重要性。 實戰:基於地理位置數據進行附近商傢搜索。 第十四章: 性能監控與故障排查 PostgreSQL 監控視圖: 介紹常用的監控視圖,如 `pg_stat_activity`, `pg_stat_database`, `pg_stat_statements`, `pg_backend_memory_contexts` 等。 日誌文件分析: 講解如何配置和分析 PostgreSQL 的日誌文件,查找錯誤和警告信息。 常用故障排查場景: 慢查詢分析與優化。 連接數過多導緻的問題。 磁盤空間不足的排查。 死鎖問題的診斷。 性能調優工具: 介紹 pgbench, pg_stat_statements 等工具的使用。 附錄 PostgreSQL 9.6 常用命令速查錶。 PostgreSQL 9.6 配置文件參數詳解。 常見問題解答 (FAQ)。 通過本書的學習,您將能夠自信地進行 PostgreSQL 9.6 數據庫的安裝、配置、設計、開發、管理和維護,並能深入理解其核心機製,為您的項目成功保駕護航。每一章都配有豐富的視頻演示,讓學習過程更加直觀和高效。