數(shù)據(jù)庫系統(tǒng)實現(xiàn)
存儲管理
存儲管理模塊為底層數(shù)據(jù)與查詢語句之間提供交互的接口之众。該模塊與操作系統(tǒng)的文件系統(tǒng)進行交互。它將各種DML語句翻譯成底層的文件系統(tǒng)的指令蝇率。它的職責在于數(shù)據(jù)庫的存儲迟杂、查詢與更新。存儲管理模塊有以下幾個部件組成:
- 權(quán)限與一致性管理器:該模塊用于檢查數(shù)據(jù)一致性約束以及用戶的權(quán)限本慕。
- 事務管理器:該模塊用于保證數(shù)據(jù)庫的一致狀態(tài)排拷。它確保數(shù)據(jù)庫的數(shù)據(jù)在系統(tǒng)崩潰時依然能保持一致性,還要確保并發(fā)的事務同時執(zhí)行時不會發(fā)生沖突锅尘。
- 文件管理器:該模塊用于管理磁盤空間的分配以及存儲在磁盤上的监氢,用于表示信息的數(shù)據(jù)結(jié)構(gòu)。
- 緩沖管理器:該模塊用于將磁盤上的數(shù)據(jù)讀入內(nèi)存并決定那些數(shù)據(jù)要讀入到內(nèi)存中藤违。它是數(shù)據(jù)庫的關(guān)鍵模塊浪腐,因為它能讓數(shù)據(jù)庫管理比內(nèi)存容量還要多的數(shù)據(jù)。
存儲管理器使用了以下幾種數(shù)據(jù)結(jié)構(gòu)來完成系統(tǒng)的物理實現(xiàn):
- 數(shù)據(jù)文件:用于存儲數(shù)據(jù)庫本身
- 數(shù)據(jù)字典:用于存儲元數(shù)據(jù)
- 索引:用于為數(shù)據(jù)項提供快速訪問顿乒,類似于書中的目錄议街。
查詢處理
查詢處理模塊包括:
- DDL解釋器:用于解釋DDL語句以及記錄數(shù)據(jù)字典中的定義
- DML編譯器:用于將DML語句翻譯為查詢求值引擎可以理解的底層指令。一個查詢語句通常會被翻譯為多種可以得出同樣結(jié)果的求值計劃璧榄,DML編譯器會選擇效率最高的計劃特漩,這項操作被稱為查詢優(yōu)化吧雹。
- 查詢求值引擎:用于執(zhí)行DML編譯器生成的底層指令。
事務管理
事務特性:
- 原子性:若數(shù)據(jù)庫中一個事務中的多個步驟只允許同時操作成功或不操作的特性稱為事務的原子性拾稳。
- 一致性:數(shù)據(jù)庫中的的不同數(shù)據(jù)在描述相同的實體要求這些數(shù)據(jù)需要正確描述這個實體吮炕,這種數(shù)據(jù)的正確性被稱為一致性
- 持久性:在一次事務的進行中涉及的所有數(shù)據(jù)要求保持一致,即使事務出現(xiàn)了錯誤访得,涉及的所有數(shù)據(jù)也必須一致。這種要求稱作持久性陕凹。
事務管理模塊:
- 恢復管理器:該模塊負責檢測系統(tǒng)錯誤并將數(shù)據(jù)庫恢復到錯誤發(fā)生之前的狀態(tài)悍抑。
- 并發(fā)控制模塊:該模塊負責通過控制同時發(fā)生的事務,保證這些事務不會導致數(shù)據(jù)庫的不一致性杜耙。
數(shù)據(jù)庫架構(gòu)
由于當今的數(shù)據(jù)庫的用戶一般不會在數(shù)據(jù)庫所在的地方使用數(shù)據(jù)庫搜骡,而是通過網(wǎng)絡遠程連接數(shù)據(jù)庫,數(shù)據(jù)庫會將客戶端與服務端分離佑女。
數(shù)據(jù)庫架構(gòu)一般可分為兩部分或三部分:
- 雙層架構(gòu):客戶端部分在客戶端機器上记靡,用戶通過查詢語句來使用在服務端機器上的數(shù)據(jù)庫系統(tǒng)。
- 三層架構(gòu):客戶端機器僅僅是一個前端部分团驱,并不提供直接的數(shù)據(jù)庫調(diào)用摸吠。它僅僅有通過一些表單與處在服務端機器的應用服務器進行通訊的職責。而應用的事務邏輯才是負責與數(shù)據(jù)庫系統(tǒng)的直接訪問嚎花。此時寸痢,應用的事務邏輯則在應用服務器一處,而不是分散在多個客戶端機器中紊选。這種應用更適合在大型應用和互聯(lián)網(wǎng)應用中啼止。