📌 30 秒摘要(Layer 3)
拆開資料庫的「引擎蓋」,看它內部到底怎麼運作。上半談儲存引擎:資料在磁碟上如何排列(B-Tree vs LSM-Tree)、如何靠預寫日誌在當機後不丟資料。下半談分散式:節點怎麼偵測彼此死活、怎麼靠 Gossip/反熵把狀態擴散、怎麼用**共識演算法(Paxos/Raft)**在多節點間達成一致。與 設計資料密集型應用 互補——DDIA 教你「該用什麼、為什麼」,本書教你「它內部是怎麼做出來的」。
🗺 心智圖(Canvas)
資料庫底層原理
Link to original
🧰 這本書給我的工具
- 工具-儲存引擎B-Tree與LSM-Tree — 選/理解資料庫的讀寫特性時
- 工具-預寫日誌與崩潰復原 — 想理解資料庫如何保證不丟資料時
- 工具-故障偵測 — 分散式系統要判斷「某節點死了沒」時
- 工具-反熵與Gossip傳播 — 想讓大量節點最終狀態一致時
✨ 關鍵重點(Layer 1–2)
- 儲存引擎兩大流派:B-Tree(就地更新、讀優化)vs LSM-Tree(追加寫、寫優化、靠 SSTable + 合併)。
- 三種放大:讀放大、寫放大、空間放大——沒有引擎能同時最佳化三者。
- 崩潰復原:靠 WAL(預寫日誌)+ ARIES;先寫日誌再改資料。
- 故障偵測:心跳、逾時、Gossip、Phi-accrual(把「死活」變成機率而非布林)。
- 狀態擴散:反熵、Gossip 協定讓資訊在節點間最終傳遍。
- 共識:Paxos / Raft / 領導者選舉,讓多節點對值達成一致(概念層見 工具-線性一致性與共識)。
💬 金句原文(Layer 0)
- 「沒有一種資料結構能同時最佳化讀放大、寫放大與空間放大——你只能取捨。」
🔗 相關
- 高層概念與取捨見 設計資料密集型應用;一致性概念見 工具-線性一致性與共識