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