精通 LevelDB

廖環宇,張仕華

  • 出版商: 機械工業
  • 出版日期: 2021-11-02
  • 售價: $474
  • 貴賓價: 9.5$450
  • 語言: 簡體中文
  • 頁數: 209
  • 裝訂: 平裝
  • ISBN: 7111693264
  • ISBN-13: 9787111693260
  • 相關分類: C++ 程式語言
  • 立即出貨

買這商品的人也買了...

商品描述

本書邏輯上分為兩部分。
第一部分著重講解LevelDB的基礎知識,涵蓋LevelDB的特性、基本數據結構、基本使用與操作
(讀取、寫入、刪除)、總體架構與設計思想以及公用基礎類(文件操作、數值編碼、內存管理)。
第二部分著重講解LevelDB各模塊的實現細節與具體作用,涵蓋Log模塊、
MemTable模塊、SSTable模塊的實現,以及Compaction原理與多版本管理。
同時,本部分有針對性地加入了一些與C++編程規範相關的內容。
通過閱讀本書,讀者不僅可以熟悉LevelDB的底層原理,
也可以加深對整個數據庫實現的了解。

作者簡介

廖環宇,中南大學碩士、阿里雲高級算法專家與工業大腦算法團隊負責人,長期致力於人工智能算法與工業大數據技術的研究和實踐,主導過許多大型數據智能平台的開發與應用。


張仕華,貝殼找房資深軟件開發工程師,畢業於北京科技大學,曾就職於360、滴滴。熱衷源碼研究與探究技術本質,合著有《Redis 5設計與源碼分析》。

目錄大綱

前言
第1章 初識LevelDB1
1.1 鍵-值數據庫的提出與價值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章 基本數據結構9
2.1 string與Slice9
2.2 錯誤處理Status10
2.3 key比較函數接口Comparator11
2.4 迭代器接口13
2.5 系統參數14
2.5.1 DB參數Options14
2.5.2 讀操作參數ReadOptions16
2.5.3 寫操作參數WriteOptions16
2.6 小結17
第3章 LevelDB使用入門18
3.1 源碼簡介18
3.1.1 目錄結構18
3.1.2 安裝與編譯19
3.1.3 引用頭文件20
3.2 創建(打開)與關閉數據庫21
3.3 數據的讀、寫與刪除23
3.4 數據批量操作24
3.5 迭代器與key的查詢操作26
3.5.1 前向與反向迭代循環遍歷26
3.5.2 按key的範圍進行查詢27
3.6 性能優化方案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 鍵-值存儲系統的基本要求32
4.2 Bigtable與LevelDB 33
4.3 主要模塊功能介紹34
4.4 主要操作流程分析36
4.4.1 數據庫Open流程分析36
4.4.2 數據Get流程分析39
4.4.3 數據Put與Write流程分析42
4.4.4 快照生成與讀取分析46
4.5 小結48
第5章 公用基礎類49
5.1 LevelDB跨平台編程49
5.1.1 LevelDB操作系統可移植方案49
5.1.2 LevelDB移植到操作系統接口規範50
5.1.3 POSIX可移植操作系統接口55
5.1.4 原子指針與內存屏障61
5.2 文件操作66
5.2.1 順序文件操作66
5.2.2 隨機文件操作73
5.2.3 Log文件操作77
5.3 Env操作環境抽象接口81
5.3.1 PosixEnv對象84
5.3.2 EnvWrapper與InMemoryEnv93
5.4 int數值編碼99
5.4.1 什麼是編碼99
5.4.2 int定長數值編碼100
5.4.3 int變長數值編碼102
5.5 內存管理104
5.5.1 Arena內存池的基本思想105
5.5.2 Arena內存池的定義與原理105
5.5.3 Arena內存的分配108
5.5.4 內存使用率統計114
5.5.5 非內存池的內存分配優化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 數據索引區域145
8.1.4 數據區域145
8.1.5 元數據索引區域145
8.1.6 元數據區域146
8.2 SSTable的讀寫流程148
8.2.1 生成塊148
8.2.2 讀取塊151
8.2.3 生成SSTable152
8.2.4 讀取SSTable156
8.3 布隆過濾器的實現158
8.3.1 布隆過濾器的設計160
8.3.2 布隆過濾器的使用162
8.4 LRU Cache的實現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 觸發時機190
9.2.2 文件選取191
9.2.3 執行流程195
9.2.4 文件清理197
9.3 小結199
附錄 LevelDB的演進200