買這商品的人也買了...
-
透視 C語言指標-深度探索記憶體管理核心技術 (Understanding and Using C Pointers)$480$379 -
$505深入解析 Android 虛擬機 -
HTTP 抓包實戰$354$336 -
$352FFmpeg 從入門到精通 -
唯一串流大數據處理平台 - Apache Kafka 動手做$580$493 -
Kafka 技術手冊|即時資料與串流處理 (Kafka: The Definitive Guide)$580$458 -
圖形演算法|Apache Spark 與 Neo4j 實務範例 (Graph Algorithms)$580$458 -
TypeScript 程式設計 (Programming TypeScript)$580$458 -
$301乙太坊 Solidity 智慧合約開發 -
全員敏捷|創造快速、彈性與客戶優先的組織 (Agile for Everybody)$400$316 -
乾脆一次搞清楚:最完整詳細網路協定全書$690$545 -
Python 機器學習超進化:AI影像辨識跨界應用實戰 (附100分鐘影像處理入門影音教學/範例程式)$450$356 -
$403仿人機器人建模與控制 -
$305Linux 環境下 C程序設計 -
$576深度學習視頻理解 -
$458動手打造深度學習框架 -
鏈接器和加載器$474$450 -
PB 硬碟時代必備技法 -- 精解檔案系統技術及應用$780$616 -
$602NoSQL 數據庫實戰派:Redis + MongoDB + HBase -
去園區當 ARM 工程師 - 嵌入式 C語言全高度昇華$1,080$853 -
$505深入淺出儲存引擎 -
$422大模型動力引擎 — PyTorch 性能與顯存優化手冊 -
軟體設計耦合的平衡之道:建構模組化軟體系統的通用設計原則 (Balancing Coupling in Software Design: Successful Software Architecture in General and Distributed Systems)$650$507 -
生成式 AI x RAG x Hugging Face 提示工程打造數據採樣神技$980$774 -
JavaScript 重修就好$760$600
相關主題
商品描述
本書邏輯上分為兩部分。
第一部分著重講解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
