📘 深度概覽
作者背景#
Alex Petrov 是分散式系統工程師,曾任 Apple 與 DataStax 的資料庫工程師,專注於分散式資料庫的儲存引擎與共識協定實作。他是 Apache Cassandra 的活躍貢獻者,對資料庫內部實現有深厚的實務經驗。Petrov 也是 Papers We Love 社群的活躍成員,長期在各大技術會議上分享資料庫系統的設計原理與學術論文導讀。本書是他將多年工程實踐與學術文獻研讀整合而成的系統性著作。
完整摘要#
全書分為兩大部分:儲存引擎與分散式系統,共十四章。
第一部分「Storage Engines」從 DBMS 的整體架構開篇,介紹查詢處理器、最佳化器、執行引擎與儲存引擎的分工,以及 OLTP、OLAP、HTAP 三種工作負載的特性差異。接著以二元搜尋樹為起點,解釋為什麼記憶體內的搜尋結構不適合磁碟儲存——磁碟的特性要求高扇出(fan-out)以減少 I/O 次數,由此引出 B-Tree 的設計邏輯。檔案格式一章深入頁面結構、分槽頁面(slotted page)與溢出頁面的實作細節。B-Tree 實作一章探討節點分裂與合併、右側追加最佳化(right-only appends)與批量載入策略。
事務處理與復原一章介紹 WAL(Write-Ahead Log)、ARIES 復原演算法與並行控制機制。B-Tree 變體一章涵蓋 Copy-on-Write B-Tree、Lazy B-Tree 與 FD-Tree 等針對特定工作負載的最佳化方案。最後一章轉向不可變儲存結構,詳細分析 LSM-Tree 的多層合併策略(Size-Tiered 與 Leveled Compaction)、Bloom Filter 的誤判率計算,以及 LSM-Tree 與 B-Tree 在讀寫放大(Read/Write Amplification)上的取捨。
第二部分「Distributed Systems」從並行執行的不可預測性出發,建立分散式運算的基本詞彙——一致性模型、故障模型、FLP 不可能定理。故障偵測一章比較心跳機制、Phi Accrual Detector 與 SWIM 等演算法。領導者選舉一章分析 Bully Algorithm、Multi-Paxos 與 Raft 的選舉機制。複製與一致性一章從主從複製到無主複製,探討 Quorum 系統、版本向量(Version Vector)與因果一致性。
反熵與散佈一章介紹 Gossip Protocol、Merkle Tree 與 Anti-entropy Repair 等機制。分散式事務一章涵蓋兩階段提交(2PC)、三階段提交(3PC)與 Calvin 確定性事務模型。共識一章從 Paxos 到 Raft 到 EPaxos,系統性地比較各共識演算法的假設、保證與效能特性。
本書的貢獻與定位#
本書填補了資料庫教科書與工程實務之間的知識鴻溝。傳統教科書偏重關聯代數與 SQL 語義,而本書直接深入儲存引擎的位元組層面——頁面佈局、磁碟 I/O 最佳化、WAL 格式——這些是資料庫開發者日常面對的核心問題。在分散式系統部分,本書整合了大量原本散落在學術論文中的演算法(如 Phi Accrual Detector、SWIM、EPaxos),使其成為分散式資料庫工程師的重要參考手冊。
