精通LevelDB:掌握谷歌Bigtable數(shù)據(jù)庫(kù)設(shè)計(jì)精髓
定 價(jià):79 元
叢書名:數(shù)據(jù)庫(kù)技術(shù)叢書
- 作者:廖環(huán)宇,張仕華
- 出版時(shí)間:2021/11/1
- ISBN:9787111693260
- 出 版 社:機(jī)械工業(yè)出版社
- 中圖法分類:TP311.56
- 頁(yè)碼:212
- 紙張:
- 版次:
- 開本:16開
全書分為3個(gè)部分:
第1部分介紹LevelDB的背景知識(shí),主要描述LevelDB是什么,具有什么樣的特性,有什么樣的應(yīng)用場(chǎng)景。此外,分析LevelDB的源代碼目錄結(jié)構(gòu),介紹其總體架構(gòu)與設(shè)計(jì)思想,并對(duì)個(gè)各個(gè)子模塊的功能進(jìn)行簡(jiǎn)要的描述。
第二部分,按前面劃分好的軟件模塊,對(duì)每一個(gè)模塊進(jìn)行詳細(xì)的介紹。在模塊詳細(xì)介紹時(shí),著重講清每個(gè)模塊的原理及其在LevelDB中的具體作用,并有針對(duì)性的加入一些C++編程規(guī)范相關(guān)的內(nèi)容。
通過閱讀本書,讀者不僅能學(xué)習(xí)高性能Kev/Value數(shù)據(jù)庫(kù)的實(shí)現(xiàn)原理,還能掌握LevelDB中幾個(gè)經(jīng)典的數(shù)據(jù)結(jié)構(gòu)與模塊,如SSTable、LSM等,對(duì)未來的應(yīng)用與開發(fā)設(shè)計(jì)提供重要的參考。
前言
第1章 初識(shí)LevelDB1
1.1 鍵-值數(shù)據(jù)庫(kù)的提出與價(jià)值1
1.2 LevelDB的誕生過程2
1.3 LevelDB的特性3
1.4 LevelDB的性能分析4
1.5 LevelDB的衍生產(chǎn)品5
1.5.1 RocksDB6
1.5.2 SSDB7
1.6 小結(jié)8
第2章 基本數(shù)據(jù)結(jié)構(gòu)9
2.1 string與Slice9
2.2 錯(cuò)誤處理Status10
2.3 key比較函數(shù)接口Comparator11
2.4 迭代器接口13
2.5 系統(tǒng)參數(shù)14
2.5.1 DB參數(shù)Options14
2.5.2 讀操作參數(shù)ReadOptions16
2.5.3 寫操作參數(shù)WriteOptions16
2.6 小結(jié)17
第3章 LevelDB使用入門18
3.1 源碼簡(jiǎn)介18
3.1.1 目錄結(jié)構(gòu)18
3.1.2 安裝與編譯19
3.1.3 引用頭文件20
3.2 創(chuàng)建(打開)與關(guān)閉數(shù)據(jù)庫(kù)21
3.3 數(shù)據(jù)的讀、寫與刪除23
3.4 數(shù)據(jù)批量操作24
3.5 迭代器與key的查詢操作26
3.5.1 前向與反向迭代循環(huán)遍歷26
3.5.2 按key的范圍進(jìn)行查詢27
3.6 性能優(yōu)化方案28
3.6.1 啟用壓縮28
3.6.2 啟用Cache29
3.6.3 啟用FilterPolicy30
3.6.4 key的命名設(shè)計(jì)30
3.7 小結(jié)31
第4章 總體架構(gòu)與設(shè)計(jì)思想32
4.1 鍵-值存儲(chǔ)系統(tǒng)的基本要求32
4.2 Bigtable與LevelDB 33
4.3 主要模塊功能介紹34
4.4 主要操作流程分析36
4.4.1 數(shù)據(jù)庫(kù)Open流程分析36
4.4.2 數(shù)據(jù)Get流程分析39
4.4.3 數(shù)據(jù)Put與Write流程分析42
4.4.4 快照生成與讀取分析46
4.5 小結(jié)48
第5章 公用基礎(chǔ)類49
5.1 LevelDB跨平臺(tái)編程49
5.1.1 LevelDB操作系統(tǒng)可移植方案49
5.1.2 LevelDB移植到操作系統(tǒng)接口規(guī)范50
5.1.3 POSIX可移植操作系統(tǒng)接口55
5.1.4 原子指針與內(nèi)存屏障61
5.2 文件操作66
5.2.1 順序文件操作66
5.2.2 隨機(jī)文件操作73
5.2.3 Log文件操作77
5.3 Env操作環(huán)境抽象接口81
5.3.1 PosixEnv對(duì)象84
5.3.2 EnvWrapper與InMemoryEnv93
5.4 int數(shù)值編碼99
5.4.1 什么是編碼99
5.4.2 int定長(zhǎng)數(shù)值編碼100
5.4.3 int變長(zhǎng)數(shù)值編碼102
5.5 內(nèi)存管理104
5.5.1 Arena內(nèi)存池的基本思想105
5.5.2 Arena內(nèi)存池的定義與原理105
5.5.3 Arena內(nèi)存的分配108
5.5.4 內(nèi)存使用率統(tǒng)計(jì)114
5.5.5 非內(nèi)存池的內(nèi)存分配優(yōu)化115
5.6 小結(jié)116
第6章 Log模塊117
6.1 Log文件格式定義117
6.2 Log文件讀寫操作119
6.2.1 Log文件寫入119
6.2.2 Log文件讀取122
6.3 記錄Log文件124
6.4 從Log文件恢復(fù)MemTable125
6.5 小結(jié)126
第7章 MemTable模塊127
7.1 MemTable插入與查找127
7.1.1 MemTable插入128
7.1.2 MemTable查找129
7.2 SkipList插入與查找131
7.2.1 SkipList插入132
7.2.2 SkipList查找134
7.3 MemTable生成SSTable136
7.4 小結(jié)137
第8章 SSTable模塊139
8.1 SSTable文件格式139
8.1.1 SSTable的組成140
8.1.2 塊格式141
8.1.3 數(shù)據(jù)索引區(qū)域145
8.1.4 數(shù)據(jù)區(qū)域145
8.1.5 元數(shù)據(jù)索引區(qū)域145
8.1.6 元數(shù)據(jù)區(qū)域146
8.2 SSTable的讀寫流程148
8.2.1 生成塊148
8.2.2 讀取塊151
8.2.3 生成SSTable152
8.2.4 讀取SSTable156
8.3 布隆過濾器的實(shí)現(xiàn)158
8.3.1 布隆過濾器的設(shè)計(jì)160
8.3.2 布隆過濾器的使用162
8.4 LRU Cache的實(shí)現(xiàn)166
8.4.1 LRU Cache的設(shè)計(jì)167
8.4.2 LRU Cache的使用173
8.5 小結(jié)174
第9章 多版本管理與Compaction原理176
9.1 多版本管理機(jī)制177
9.1.1 VersionEdit機(jī)制177
9.1.2 Version機(jī)制182
9.1.3 VersionSet機(jī)制187
9.1.4 Manifest機(jī)制189
9.2 Compaction原理189
9.2.1 觸發(fā)時(shí)機(jī)190
9.2.2 文件選取191
9.2.3 執(zhí)行流程195
9.2.4 文件清理197
9.3 小結(jié)199
附錄 LevelDB的演進(jìn)200