深入淺出儲存引擎
文小飛
- 出版商: 機械工業
- 出版日期: 2024-05-08
- 售價: $594
- 貴賓價: 9.5 折 $564
- 語言: 簡體中文
- 頁數: 364
- 裝訂: 平裝
- ISBN: 7111753003
- ISBN-13: 9787111753001
立即出貨
相關主題
商品描述
全書分為3篇:
1.第1篇首先會詳細講解儲存引擎的全貌,讓讀者能對儲存引擎有一個整體的思維框架,介紹儲存引擎的兩大分支:
基於b+樹的儲存引擎、基於lsm派系的儲存引擎,其次是儲存引擎部分涉及的一些資料結構、
儲存媒體等概念做一個簡短的介紹,為後面內容的深入學習做鋪墊。
2.第二篇主要介紹基於b+樹的儲存引擎,
在理論部分重點回答為什麼選擇b+樹做儲存引擎索引結構、b+樹儲存引擎解決哪些問題以及如何解決。
在實作部分選擇開源社群中比較有名的boltdb儲存引擎專案來講解其內部核心原始碼的實作細節。
3.第三篇主要介紹基於lsm派系的儲存引擎,理論部分重點介紹lsm tree中各組件的功能及作用,
並在此基礎上擴展介紹其他幾類lsm派系儲存引擎的實作思路,幫助讀者開拓視野,
實作部分分別以bitcask、moss、leveldb等開源專案的核心原始碼展開,介紹其內部實作細節。
透過閱讀本書,讀者不僅能對儲存引擎,尤其是單機的儲存引擎有一個整體的框架,
而且能對兩類儲存引擎的實現思維及背後原理有個深刻的掌握,只有深刻理解了儲存引擎的背後實現原理,
讀者不僅可以自己動手開發自己的儲存引擎,更可以很快掌握關係型資料庫或NoSql這類元件的核心原理,對未來實際應用與開發提供參考。
目錄大綱
前言
第1章 儲存引擎概述
1.1 資料儲存體系
1.1.1 OLTP、OLAP與HTAP
1.1.2 關聯式資料庫、NoSQL資料庫與NewSQL資料庫
1.1.3 內存型儲存組件與磁碟型儲存組件
1.1.4 讀多寫少組件、寫多讀少組件和讀多寫多組件
1.1.5 資料儲存與檢索
1.2 資料儲存的核心:儲存引擎
1.2.1 儲存引擎整體架構
1.2.2 儲存引擎的共通性問題
1.3 儲存引擎的分類
1.3.1 讀多寫少:基於B+樹的儲存引擎
1.3.2 寫多讀少:基於LSM派系的儲存引擎
1.4 小結
第2章 索引資料結構
2.1 基礎資料結構
2.1.1 數組
2.1.2 鍊錶
2.2 Hash類資料結構
2.2.1 Hash表
2.2.2 點圖
2.2.3 布隆過濾器
2.3 二元樹類資料結構
2.3.1 二元搜尋樹
2.3.2 紅黑樹
2.3.3 跳表
2.4 多叉樹類資料結構
2.4.1 B樹
2.4.2 B+樹
2.4.3 其他多叉樹
2.5 小結
第3章 資料儲存媒體
3.1 內存
3.1.1 內存的基本內容
3.1.2 記憶體管理機制
3.1.3 虛擬記憶體管理機制
3.2 持久化內存
3.3 磁碟
3.3.1 磁碟的基本內容
3.3.2 磁碟管理機制
3.3.3 加速磁碟存取的方案
3.4 小結
第4章 從宏觀角度理解B+樹儲存引擎的原理
4.1 B+樹儲存引擎產生的起點
4.1.1 誕生的背景
4.1.2 設計的目標
4.2 B+樹儲存引擎方案選型
4.2.1 資料結構方案對比
4.2.2 目光轉向磁碟
4.2.3 索引維護與存儲
4.2.4 選擇B樹還是B+樹
4.3 B+樹儲存引擎方案選用結果
4.3.1 方案選型結果
4.3.2 反向論證
4.4 小結
第5章 從微觀角度理解B+樹儲存引擎的工程細節
5.1 邊界條件處理
5.1.1 B+樹在磁碟和記憶體中的映射
5.1.2 讀取操作的處理
5.1.3 寫入操作的處理
5.2 異常狀況處理
5.2.1 異常狀況總體分析
5.2.2 資料部分寫入的異常處理
5.3 事務
5.3.1 事務的基本概念
5.3.2 並發控制
5.4 範圍查詢與全量遍歷
5.5 小結
第6章 BoltDB核心源碼分析
6.1 BoltDB整體結構
6.1.1 BoltDB專案結構
6.1.2 BoltDB整體實作架構
6.2 page解析
6.2.1 page基本結構
6.2.2 元資料頁
6.2.3 空閒列表頁
6.2.4 分支節點頁
6.2.5 葉子節點頁
6.3 node解析
6.3.1 B+樹結構概述
6.3.2 node結構分析
6.3.3 node的增刪改查
6.3.4 node分裂
6.3.5 node合併
6.4 Bucket解析
6.4.1 Bucket結構分析
6.4.2 Bucket遍歷的Cursor核心結構分析
6.4.3 Bucket的增刪改查
6.4.4 KV資料的增刪改查
6.4.5 Bucket的分裂與合併
6.5 Tx解析
6.5.1 Tx結構分析
6.5.2 Commit()方法分析
6.5.3 Rollback()方法分析
6.6 DB解析
6.6.1 DB結構分析
6.6.2 Open()方法分析
6.6.3 Begin()方法分析
6.6.4 Update()和View()方法分析
6.6.5 Batch()方法分析
6.7 小結
第7章 深入理解LSM Tree原理
7.1 LSM Tree的發展背景
7.2 從零推導LSM Tree
7.2.1 儲存媒體的選擇
7.2.2 寫入請求的處理
7.2.3 讀取請求的處理
7.3 LSM Tree的架構演進
7.3.1 資料更新分類
7.3.2 雙組件LSM Tree結構
7.3.3 多組件LSM Tree結構
7.3.4 實際的LSM Tree結構
7.4 LSM Tree的核心問題
7.4.1 資料壓縮/合併
7.4.2 資料分區
7.4.3 讀放大、寫放大與空間放大
7.4.4 寫放大優化
7.5 小結
第8章 LSM派系儲存引擎
8.1 LSM Tree儲存引擎
8.1.1 LSM Tree工程應用
8.1.2 LSM Tree的KV分離儲存技術WiscKey
8.2 LSM Hash儲存引擎
8.2.1 LSM Hash的起源
8.2.2 Bitcask的核心原理
8.3 LSM Array儲存引擎
8.3.1 LSM Array的設計思想
8.3.2 Moss的核心原理
8.4 其他LSM儲存引擎
8.4.1 LSM儲存引擎擴展
8.4.2 訊息佇列Kafka儲存引擎
8.5 小結
第9章 LevelDB核心源碼分析
9.1 LevelDB概述
9.1.1 LevelDB整體架構
9.1.2 LevelDB專案結構
9.2 DB核心介面分析
9.2.1 DB結構
9.2.2 Open(options,dbname,dbptr)的實現
9.2.3 Put(k,v)和Delete(k)的實現
9.2.4 Get(k)的實現
9.3 MemTable的實作分析
9.3.1 MemTable結構
9.3.2 Add(k,v)和Get(k)的實現
9.3.3 SkipList結構
9.4 WAL日誌的實現分析
9.4.1 WAL日誌的格式
9.4.2 Writer的實現
9.4.3 Reader的實現
9.5 SSTable的實作分析
9.5.1 SSTable的資料格式
9.5.2 Block的寫入與讀取
9.5.3 SSTable的寫入與讀取
9.