數據庫內核按層次來分,就是兩層:SQL & Storage。SQL Layer負責將你輸入的SQL statement通過一系列步驟(parse/resolve/rewrite/optimize…)轉換成物理執行計划,同時負責計划的執行,執行計划通常是一顆樹的形式,其中樹的葉子節點(執行器算子)部分往往負責單表的數據操作,這些操作算子就要在storage layer來執行了。
因此,一個數據庫存儲引擎的主要工作,簡單來講就是存取數據,但是前提是保證數據庫的ACID(atomicity/consistency/isolation/durability)語義。存儲引擎對外提供的接口其實比較簡單,主要就是數據寫入/修改/查詢,事務處理(start transaction/commit/rollback…),修改schema對象/數據字典(可選), 數據統計,還有一些周邊的運維或數據導入導出功能。
僅僅從功能上來說,要實現一個存儲引擎似乎並不困難,如今也有很多Key-Value Store搖身一變就成為了數據庫存儲引擎,無非是加上一套事務處理機制罷了。但是作為數據庫的底盤,一個成熟的存儲引擎必須要考慮效率,如何高效(性能/成本最大化)的實現數據存取則成了在設計上做出種種權衡的主要考量。可以從存儲引擎的幾個主要組件來討論。
優秀的數據庫存儲引擎應具備哪些能力?
https://www.lastupdate.net/9390.html