本書是針對(duì)openGauss開源數(shù)據(jù)庫的源碼進(jìn)行分模塊解析的書籍。 全書共分為10章。第1章對(duì)openGauss進(jìn)行簡(jiǎn)介。第2章介紹了內(nèi)核開發(fā)所需的入門知識(shí),包括 openGauss的安裝、基本使用、開發(fā)、編譯、參與社區(qū)開源項(xiàng)目等。第3~10章針對(duì)openGauss不同的功能 模塊分別進(jìn)行源碼介紹。第3章針對(duì)系統(tǒng)表、多線程架構(gòu)、內(nèi)存管理等作用于整個(gè)數(shù)據(jù)庫系統(tǒng)的公共組件 從定義、原理、流程等方面進(jìn)行源碼介紹; 第4章介紹openGauss滿足OLTP、OLAP不同業(yè)務(wù)場(chǎng)景的存儲(chǔ) 引擎實(shí)現(xiàn)及對(duì)應(yīng)的源碼; 第5章介紹保證數(shù)據(jù)庫ACID屬性的事務(wù)機(jī)制的原理和源碼; 第6章介紹SQL 引擎的SQL解析和查詢優(yōu)化代碼主流程; 第7章介紹openGauss執(zhí)行器的整體架構(gòu)和各類執(zhí)行算子的源 碼; 第8章介紹openGauss在人工智能與數(shù)據(jù)庫結(jié)合領(lǐng)域探索的源碼; 第9章從系統(tǒng)整體角度出發(fā),針對(duì) 基礎(chǔ)和高階的安全能力進(jìn)行全面介紹和源碼解讀; 第10章介紹openGauss的備份恢復(fù)機(jī)制的源碼,包括 全量備份、增量備份所涉及的工具、交互流程和主要文件等。 本書可以作為內(nèi)核開發(fā)者了解openGauss數(shù)據(jù)庫并基于openGauss進(jìn)行數(shù)據(jù)庫開發(fā)的參考教程,也 可以作為廣大高校計(jì)算機(jī)專業(yè)數(shù)據(jù)庫設(shè)計(jì)課程的參考教材。
第1章openGauss簡(jiǎn)介00
1.1openGauss概述00
1.2應(yīng)用場(chǎng)景00
1.3系統(tǒng)架構(gòu)00
1.4代碼結(jié)構(gòu)00
1.4.1通信管理00
1.4.2SQL引擎00
1.4.3存儲(chǔ)引擎0
1.5價(jià)值特性0
1.5.1高性能0
1.5.2高擴(kuò)展0
1.5.3高可用0
1.5.4可維護(hù)性0
1.5.5數(shù)據(jù)庫安全0
1.5.6AI能力0
1.6本章小結(jié)0
第2章openGauss開發(fā)快速入門0
2.1安裝部署0
2.1.1了解安裝流程0
2.1.2準(zhǔn)備軟硬件安裝環(huán)境0
2.1.3修改操作系統(tǒng)配置0
2.1.4設(shè)置root用戶遠(yuǎn)程登錄0
2.1.5獲取安裝包0
2.1.6創(chuàng)建XML配置文件0
2.1.7初始化安裝環(huán)境0
2.1.8執(zhí)行安裝0
2.1.9安裝驗(yàn)證0
2.2基本使用0
2.2.1連接數(shù)據(jù)庫0
2.2.2使用數(shù)據(jù)庫0
2.3開發(fā)和編譯0
2.3.1搭建開發(fā)環(huán)境0
2.3.2搭建編譯環(huán)境0
2.3.3版本編譯0
2.4參與openGauss社區(qū)開源項(xiàng)目0
2.4.1開源社區(qū)概述0
2.4.2社區(qū)環(huán)境準(zhǔn)備0
2.4.3提交Issue0
2.4.4貢獻(xiàn)代碼和文檔0
2.4.5Git使用0
2.5本章小結(jié)
openGauss數(shù)據(jù)庫源碼解析
目錄
第3章公共組件源碼解析
3.1系統(tǒng)表
3.1.1系統(tǒng)表的定義
3.1.2系統(tǒng)表的訪問
3.2數(shù)據(jù)庫初始化
3.3多線程架構(gòu)
3.3.1openGauss主要線程
3.3.2線程間通信
3.3.3線程初始化流程
3.4線程池技術(shù)
3.4.1線程池原理
3.4.2線程池實(shí)現(xiàn)
3.5內(nèi)存管理
3.6多維監(jiān)控
3.7模擬信號(hào)機(jī)制
3.8本章小結(jié)
第4章存儲(chǔ)引擎源碼解析
4.1存儲(chǔ)引擎整體架構(gòu)與代碼
4.2磁盤引擎
4.2.1磁盤引擎整體框架與代碼
4.2.2行存儲(chǔ)統(tǒng)一訪存接口
4.2.3astore
4.2.4ustore
4.2.5行存儲(chǔ)索引機(jī)制
4.2.6行存儲(chǔ)緩存機(jī)制
4.2.7cstore
4.2.8日志系統(tǒng)
4.2.9持久化及故障恢復(fù)機(jī)制
4.2.10主備機(jī)制
4.3內(nèi)存表
4.3.1總體架構(gòu)與代碼
4.3.2FDW
4.3.3內(nèi)存表的存儲(chǔ)
4.3.4索引
4.3.5事務(wù)
4.3.6并發(fā)控制
4.3.7重做日志
4.3.8檢查點(diǎn)
4.3.9恢復(fù)
4.4本章小結(jié)
第5章事務(wù)機(jī)制源碼解析
5.1事務(wù)整體架構(gòu)與代碼
5.2事務(wù)并發(fā)控制
5.2.1事務(wù)狀態(tài)機(jī)
5.2.2事務(wù)ID分配及CLOG/CSNLOG
5.2.3MVCC可見性判斷機(jī)制
5.2.4進(jìn)程內(nèi)多線程管理機(jī)制
5.3鎖機(jī)制
5.3.1自旋鎖
5.3.2輕量級(jí)鎖
5.3.3常規(guī)鎖
5.3.4死鎖檢測(cè)機(jī)制
5.3.5無鎖原子操作
5.3.6基于鯤鵬服務(wù)器的性能優(yōu)化
5.4本章小結(jié)
第6章SQL引擎源碼解析
6.1概述
6.2SQL解析
6.2.1詞法分析
6.2.2語法分析
6.2.3語義分析
6.2.4解析流程分析
6.3查詢優(yōu)化
6.3.1查詢重寫
6.3.2統(tǒng)計(jì)信息與代價(jià)估算
6.3.3物理路徑
6.3.4動(dòng)態(tài)規(guī)劃
6.3.5遺傳算法
6.4本章小結(jié)
第7章執(zhí)行器解析
7.1執(zhí)行器整體架構(gòu)與代碼
7.1.1執(zhí)行器整體架構(gòu)
7.1.2火山模型
7.1.3代碼
7.2執(zhí)行流程
7.2.1Portal策略選擇模塊
7.2.2ProcessUtility模塊
7.2.3executor模塊
7.3執(zhí)行算子
7.3.1控制算子
7.3.2掃描算子
7.3.3物化算子
7.3.4連接算子
7.4表達(dá)式計(jì)算
7.4.1初始化階段
7.4.2執(zhí)行階段
7.5編譯執(zhí)行
7.5.1VecExprCode類
7.5.2VecHashAggCodeGen類
7.5.3VecHashJoinCodeGen類
7.5.4VecSortCodeGen類
7.6向量化引擎
7.6.1控制算子
7.6.2掃描算子
7.6.3物化算子
7.6.4連接算子
7.7本章小結(jié)
第8章 AI技術(shù)
8.1概述
8.2自調(diào)優(yōu)
8.2.1參數(shù)自調(diào)優(yōu)的使用場(chǎng)景
8.2.2現(xiàn)有的參數(shù)調(diào)優(yōu)技術(shù)
8.2.3XTuner的調(diào)優(yōu)策略
8.2.4openGauss關(guān)鍵源碼解析
8.2.5使用示例
8.2.6對(duì)XTuner的二次開發(fā)
8.2.7XTuner的演進(jìn)路線
8.3慢SQL發(fā)現(xiàn)
8.3.1慢SQL發(fā)現(xiàn)的功能
8.3.2現(xiàn)有技術(shù)
8.3.3慢SQL發(fā)現(xiàn)采取的策略
8.3.4關(guān)鍵源碼解析
8.3.5使用示例
8.4智能索引推薦
8.4.1使用場(chǎng)景
8.4.2現(xiàn)有技術(shù)
8.4.3實(shí)現(xiàn)原理
8.4.4關(guān)鍵源碼解析
8.4.5使用示例
8.5指標(biāo)采集、預(yù)測(cè)與異常檢測(cè)
8.5.1使用場(chǎng)景
8.5.2實(shí)現(xiàn)原理
8.5.3關(guān)鍵源碼解析
8.5.4使用示例
8.5.5演進(jìn)路線
8.6AI查詢時(shí)間預(yù)測(cè)
8.6.1使用場(chǎng)景
8.6.2現(xiàn)有技術(shù)
8.6.3實(shí)現(xiàn)原理
8.6.4關(guān)鍵源碼解析
8.6.5使用示例
8.6.6演進(jìn)路線
8.7DeepSQL
8.7.1使用場(chǎng)景
8.7.2現(xiàn)有技術(shù)
8.7.3關(guān)鍵源碼解析
8.7.4基于MADlib框架的擴(kuò)展
8.7.5MADlib在openGauss上的使用示例
8.7.6演進(jìn)路線
8.8本章小結(jié)
第9章安全管理源碼解析
9.1安全管理整體架構(gòu)與代碼
9.2安全認(rèn)證
9.2.1身份認(rèn)證
9.2.2口令存儲(chǔ)
9.2.3認(rèn)證機(jī)制
9.2.4Kerberos安全認(rèn)證
9.3角色創(chuàng)建與角色管理
9.3.1角色創(chuàng)建
9.3.2角色管理
9.4權(quán)限管理與權(quán)限檢查
9.4.1權(quán)限管理
9.4.2權(quán)限檢查
9.5審計(jì)與追蹤
9.5.1審計(jì)日志設(shè)計(jì)
9.5.2審計(jì)執(zhí)行
9.6數(shù)據(jù)安全技術(shù)
9.6.1數(shù)據(jù)加解密接口
9.6.2數(shù)據(jù)動(dòng)態(tài)脫敏
9.6.3密態(tài)等值查詢
9.7本章小結(jié)
第10章備份恢復(fù)機(jī)制
10.1openGauss全量備份技術(shù)
10.1.1gs_basebackup備份工具
10.1.2gs_basebackup備份交互流程
10.2openGauss增量備份技術(shù)
10.2.1gs_probackup子命令
10.2.2gs_probackup主要文件
10.2.3gs_probackup備份恢復(fù)流程
10.2.4redo日志增量備份恢復(fù)流程
10.3本章小結(jié)