數(shù)據(jù)庫系統(tǒng)實現(xiàn)(第2版)
定 價:59 元
叢書名:計算機科學(xué)叢書
- 作者:(美),加西亞·莫利納 ,等 著 楊冬青 ,等 譯
- 出版時間:2010/5/1
- ISBN:9787111302872
- 出 版 社:機械工業(yè)出版社
- 中圖法分類:TP311.13
- 頁碼:385
- 紙張:膠版紙
- 版次:2
- 開本:16開
《數(shù)據(jù)庫系統(tǒng)實現(xiàn)(第2版)》是斯坦福大學(xué)計算機科學(xué)專業(yè)數(shù)據(jù)庫系列課程第二門課的教科書。書中對數(shù)據(jù)庫系統(tǒng)實現(xiàn)原理進(jìn)行了深入闡述,并具體討論了數(shù)據(jù)庫管理系統(tǒng)的三個主要成分——存儲管理器、查詢處理器和事務(wù)管理器的實現(xiàn)技術(shù)。此外,第2版充分反映了數(shù)據(jù)管理技術(shù)的新進(jìn)展,對內(nèi)容進(jìn)行了擴充,除了在第1版中原有的“信息集成”一章(第10章)中加入了新的內(nèi)容外,還增加了兩個全新的章:“數(shù)據(jù)挖掘”(第11章)和“數(shù)據(jù)庫系統(tǒng)與互聯(lián)網(wǎng)”(第12章)。
《數(shù)據(jù)庫系統(tǒng)實現(xiàn)(第2版)》適合作為高等院校計算機專業(yè)研究生的教材或本科生的教學(xué)參考書,也適合作為從事相關(guān)研究或開發(fā)工作的專業(yè)技術(shù)人員的高級參考資料。
《數(shù)據(jù)庫系統(tǒng)實現(xiàn)(第2版)》內(nèi)容深入且全面,技術(shù)實用且先進(jìn),敘述深入淺出,是一本難得的高層次的教材,適合作為高等院校計算機專業(yè)研究生的教材或本科生的教學(xué)參考書,也適合作為從事相關(guān)研究或開發(fā)工作的專業(yè)技術(shù)人員的高級參考資料。
隨著計算機硬件、軟件技術(shù)的飛速發(fā)展和計算機系統(tǒng)在各行各業(yè)的廣泛應(yīng)用,數(shù)據(jù)已經(jīng)成為各種機構(gòu)的寶貴資源,數(shù)據(jù)庫系統(tǒng)對于當(dāng)今科研部門、政府機關(guān)、企事業(yè)單位等來說都是至關(guān)重要的。而數(shù)據(jù)庫系統(tǒng)中的核心軟件是數(shù)據(jù)庫管理系統(tǒng)(DBMS)。DBMS用于高效地創(chuàng)建和存儲大量的數(shù)據(jù),并對數(shù)據(jù)進(jìn)行有效的管理、處理和維護(hù),是數(shù)據(jù)庫專家和技術(shù)人員數(shù)十年研究開發(fā)的結(jié)果,是當(dāng)前最復(fù)雜的系統(tǒng)軟件之一。要深入掌握數(shù)據(jù)庫系統(tǒng)的原理和技術(shù),進(jìn)而從事數(shù)據(jù)庫管理軟件和工具的開發(fā),必須學(xué)習(xí)和研究數(shù)據(jù)庫管理系統(tǒng)實現(xiàn)技術(shù)。要深入了解數(shù)據(jù)庫系統(tǒng)的內(nèi)部結(jié)構(gòu),以開發(fā)出高效的數(shù)據(jù)庫應(yīng)用系統(tǒng),也需要學(xué)習(xí)和研究數(shù)據(jù)庫管理系統(tǒng)實現(xiàn)技術(shù)。
Hector Garcia?Molina、Jeffrey D?Ullman和Jennifer Widom是斯坦福大學(xué)著名的計算機科學(xué)家,多年來他們在數(shù)據(jù)庫系統(tǒng)領(lǐng)域中做了大量的開創(chuàng)性工作,由他們撰寫的《數(shù)據(jù)庫系統(tǒng)實現(xiàn)》一書是關(guān)于數(shù)據(jù)庫系統(tǒng)實現(xiàn)方面內(nèi)容最為全面的著述之一。我們于2000年將《數(shù)據(jù)庫系統(tǒng)實現(xiàn)》的第1版譯成中文,國內(nèi)許多大學(xué)采用它作為研究生數(shù)據(jù)庫課程的教材或主要教學(xué)參考書,收到了良好的效果。
現(xiàn)在我們又翻譯了《數(shù)據(jù)庫系統(tǒng)實現(xiàn)》第2版。第2版保持了第1版的總體風(fēng)格,首先對數(shù)據(jù)庫系統(tǒng)實現(xiàn)原理進(jìn)行了深入闡述,并具體討論了數(shù)據(jù)庫管理系統(tǒng)的三個主要成分——存儲管理器、查詢處理器和事務(wù)管理器的實現(xiàn)技術(shù)。與第1版相比,第2版對于數(shù)據(jù)存儲和索引結(jié)構(gòu)的闡述進(jìn)行了適當(dāng)?shù)膲嚎s,分別將原來的兩章合并為一章;另外,增加了一章“并行與分布式數(shù)據(jù)庫”(第9章),其中包括了第1版中分散在查詢處理和事務(wù)管理的相關(guān)章節(jié)中的內(nèi)容,并增加了有關(guān)分布式查詢執(zhí)行的一些新內(nèi)容,例如,map reduce并行架構(gòu)、P2P數(shù)據(jù)庫以及分布式散列的實現(xiàn)等。同時,第2版充分反映了數(shù)據(jù)管理技術(shù)的新進(jìn)展,對內(nèi)容進(jìn)行了擴充,除了在第1版中原有的“信息集成”一章(第10章)中加入了新的內(nèi)容外,還增加了兩個全新的章:“數(shù)據(jù)挖掘”(第11章)和“數(shù)據(jù)庫系統(tǒng)與互聯(lián)網(wǎng)”(第12章)。“數(shù)據(jù)挖掘”一章中包含了關(guān)聯(lián)規(guī)則與頻繁項集挖掘技術(shù),從一個非常大的數(shù)據(jù)庫或Web頁面集合中發(fā)現(xiàn)“相似”的項的“最小散列”和“局部敏感散列”等關(guān)鍵技術(shù),以及高維空間中大規(guī)模數(shù)據(jù)的聚簇問題等!皵(shù)據(jù)庫系統(tǒng)與互聯(lián)網(wǎng)”一章中重點闡述了與互聯(lián)網(wǎng)相關(guān)的兩個方面的數(shù)據(jù)庫技術(shù):Web搜索引擎及其PageRank算法,流數(shù)據(jù)模型以及管理數(shù)據(jù)流形式的大量數(shù)據(jù)所需的技術(shù)。
我們認(rèn)為這本書既適合作為高等院校計算機專業(yè)研究生的教材或本科生的教學(xué)參考書,又適合作為從事相關(guān)研究或開發(fā)工作的專業(yè)技術(shù)人員的高級參考資料。
楊冬青全面組織了本書的翻譯,吳愈青、包小源、唐世渭在本書的翻譯和審校中做了大量的工作。除此之外,參加翻譯的還有閆秋玲、鄭麗麗、蔡慧慧、馬煜、張棋、陳巍、郭思祺、夏海峰、翁學(xué)天、郭少松、李樹節(jié)。
限于譯者水平,譯文中難免有疏漏和錯誤,歡迎批評指正。
楊冬青,1969年畢業(yè)于北京大學(xué)數(shù)學(xué)力學(xué)系數(shù)學(xué)專業(yè),現(xiàn)任北京大學(xué)信息科學(xué)技術(shù)學(xué)院教授,博士生導(dǎo)師,計算機科學(xué)技術(shù)系主任,中國計算機學(xué)會數(shù)據(jù)庫專委會委員。多年來承擔(dān)并完成973、863、國家科技攻關(guān)、國家自然科學(xué)基金等多項國家重點科研項目,曾獲國家科技進(jìn)步二等獎、三等獎和多項省部級獎勵,在國內(nèi)外雜志及會議上發(fā)表論文百余篇,著譯作十余部。目前主要研究方向為數(shù)據(jù)庫系統(tǒng)實現(xiàn)技術(shù)、Web環(huán)境下的信息集成與共享、數(shù)據(jù)倉庫和數(shù)據(jù)挖掘等。
吳愈青分,別于1995年和1998年在北京大學(xué)計算機系獲得學(xué)士學(xué)位和碩士學(xué)位;2004年于EECS Department,University 0f Michigan獲得博士學(xué)位,F(xiàn)就職于美國Indiana University,任.Assistant Professor。主要研究方向為數(shù)據(jù)庫系統(tǒng)及實現(xiàn),包括數(shù)據(jù)庫查詢語言、查詢優(yōu)化、索引技術(shù)等,及其在半結(jié)構(gòu)化數(shù)據(jù)上的應(yīng)用與實現(xiàn)。在國際會議及期刊上發(fā)表論文三十余篇。
包小源,博士,副教授。蘭州大學(xué)計算數(shù)學(xué)專業(yè)碩士、北京大學(xué)計算機應(yīng)用專業(yè)博士。主要研究方向為數(shù)據(jù)庫實現(xiàn)技術(shù)、XML數(shù)據(jù)管理、對等計算、服務(wù)計算等。
Hector Garcia-Molina,斯坦福大學(xué)計算機科學(xué)與電子工程系的Leona rd BoSack和SandraLerner教授。他在數(shù)據(jù)庫系統(tǒng)、分布式系統(tǒng)和數(shù)字圖書館領(lǐng)域中發(fā)表了大量論文,研究興趣包括分布式計算系統(tǒng)、數(shù)據(jù)庫系統(tǒng)和數(shù)字圖書館。他是ACM會士、美國藝術(shù)與科學(xué)院會士和美國國家工程院成員。他在1999年獲得了ACM SIGMOD創(chuàng)新獎。
Jeffrey D.Ullman,斯坦福大學(xué)計算機科學(xué)與電子工程系StanfordW.Asche rman教授,數(shù)據(jù)庫技術(shù)專家。他獨立或與人合作出版了15.v.k著作,發(fā)表了170多篇技術(shù)論文,研究興趣包括數(shù)據(jù)庫理論、數(shù)據(jù)庫集成、數(shù)據(jù)挖掘和利用信息基礎(chǔ)設(shè)施進(jìn)行教育。他是美國國家工程院成員,曾獲得Knuth獎、SIGMOD貢獻(xiàn)獎、Karlstrom杰出教育家獎DEdgar F.Codd發(fā)明獎。
Jennifer Widom,美國康奈爾大學(xué)計算機科學(xué)博士,現(xiàn)為斯坦福大學(xué)計算機科學(xué)與電子工程系教授,研究興趣包括半結(jié)構(gòu)化數(shù)據(jù)的數(shù)據(jù)庫系統(tǒng)問委員會的成員。她在2007年獲得了ACM SIGMOD Edgar F.Codd發(fā)明獎。
出版者的話
譯者序
譯者簡介
出版前言
第1章 DBMS系統(tǒng)概述
1.1 數(shù)據(jù)庫系統(tǒng)的發(fā)展
1.1.1 早期的數(shù)據(jù)庫管理系統(tǒng)
1.1.2 關(guān)系數(shù)據(jù)庫系統(tǒng)
1.1.3 越來越小的系統(tǒng)
1.1.4 越來越大的系統(tǒng)
1.1.5 信息集成
1.2 數(shù)據(jù)庫管理系統(tǒng)概述
1.2.1 數(shù)據(jù)定義語言命令
1.2.2 查詢處理概述
1.2.3 主存和緩沖區(qū)管理器
1.2.4 事務(wù)處理
1.2.5 查詢處理器
1.3 本書概述
1.4 數(shù)據(jù)庫模型和語言回顧
1.4.1 關(guān)系模型回顧
1.4.2 SQL回顧
1.5 參考文獻(xiàn)
第一部分?jǐn)?shù)據(jù)庫系統(tǒng)實現(xiàn)
第2章 輔助存儲管理
2.1 存儲器層次
2.1.1 存儲器層次
2.1.2 在存儲器層次間傳送數(shù)據(jù)
2.1.3 易失和非易失存儲器
2.1.4 虛擬存儲器
2.1.5 習(xí)題
2.2 磁盤
2.2.1 磁盤結(jié)構(gòu)
2.2.2 磁盤控制器
2.2.3 磁盤存取特性
2.2.4 習(xí)題
2.3 加速對輔助存儲器的訪問
2.3.1 計算的I/O模型
2.3.2 按柱面組織數(shù)據(jù)
2.3.3 使用多個磁盤
2.3.4 磁盤鏡像
2.3.5 磁盤調(diào)度和電梯算法
2.3.6 預(yù)取和大規(guī)模緩沖
2.3.7 習(xí)題
2.4 磁盤故障
2.4.1 間斷性故障
2.4.2 校驗和
2.4.3 穩(wěn)定存儲
2.4.4 穩(wěn)定存儲的錯誤處理能力
2.4.5 從磁盤崩潰中恢復(fù)
2.4.6 作為冗余技術(shù)的鏡像
2.4.7 奇偶塊
2.4.8 一種改進(jìn):RAID5
2.4.9 多個盤崩潰時的處理
2.4.10 習(xí)題
2.5 組織磁盤上的數(shù)據(jù)
2.5.1 定長記錄
2.5.2 定長記錄在塊中的放置
2.5.3 習(xí)題
2.6 塊和記錄地址的表示
2.6.1 客戶機-服務(wù)器系統(tǒng)中的地址
2.6.2 邏輯地址和結(jié)構(gòu)地址
2.6.3 指針混寫
2.6.4 塊返回磁盤
2.6.5 被釘住的記錄和塊
2.6.6 習(xí)題
2.7 變長數(shù)據(jù)和記錄
2.7.1 具有變長字段的記錄
2.7.2 具有重復(fù)字段的記錄
2.7.3 可變格式的記錄
2.7.4 不能裝入一個塊中的記錄
2.7.5 BLOB
2.7.6 列存儲
2.7.7 習(xí)題
2.8 記錄的修改
2.8.1 插入
2.8.2 刪除
2.8.3 修改
2.8.4 習(xí)題
2.9 小結(jié)
2.10 參考文獻(xiàn)
第3章 索引結(jié)構(gòu)
3.1 索引結(jié)構(gòu)基礎(chǔ)
3.1.1 順序文件
3.1.2 稠密索引
3.1.3 稀疏索引
3.1.4 多級索引
3.1.5 輔助索引
3.1.6 輔助索引的運用
3.1.7 輔助索引中的間接
3.1.8 文檔檢索和倒排索引
3.1.9 習(xí)題
3.2 B-樹
3.2.1 B-樹的結(jié)構(gòu)
3.2.2 B-樹的應(yīng)用
3.2.3 B-樹的查找
3.2.4 范圍查詢
3.2.5 B-樹的插入
3.2.6 B-樹的刪除
3.2.7 B-樹的效率
3.2.8 習(xí)題
3.3 散列表
3.3.1 輔存散列表
3.3.2 散列表的插入
3.3.3 散列表的刪除
3.3.4 散列表索引的效率
3.3.5 可擴展散列表
3.3.6 可擴展散列表的插入
3.3.7 線性散列表
3.3.8 線性散列表的插入
3.3.9 習(xí)題
3.4 多維索引
3.4.1 多維索引的應(yīng)用
3.4.2 利用傳統(tǒng)索引執(zhí)行范圍查詢
3.4.3 利用傳統(tǒng)索引執(zhí)行最近鄰查詢
3.4.4 多維索引結(jié)構(gòu)綜述
3.5 多維數(shù)據(jù)的散列結(jié)構(gòu)
3.5.1 網(wǎng)格文件
3.5.2 網(wǎng)格文件的查找
3.5.3 網(wǎng)格文件的插入
3.5.4 網(wǎng)格文件的性能
3.5.5 分段散列函數(shù)
3.5.6 網(wǎng)格文件和分段散列的比較
3.5.7 習(xí)題
3.6 多維數(shù)據(jù)的樹結(jié)構(gòu)
3.6.1 多鍵索引
3.6.2 多鍵索引的性能
3.6.3 kd-樹
3.6.4 kd-樹的操作
3.6.5 使kd-樹適合輔助存儲器
3.6.6 四叉樹
3.6.7 R-樹
3.6.8 R-樹的操作
3.6.9 習(xí)題
3.7 位圖索引
3.7.1 位圖索引的動機
3.7.2 壓縮位圖
3.7.3 分段長度編碼位向量的操作
3.7.4 位圖索引的管理
3.7.5 習(xí)題
3.8 小結(jié)
3.9 參考文獻(xiàn)
第4章 查詢執(zhí)行
4.1 物理查詢計劃操作符介紹
4.1.1 掃描表
4.1.2 掃描表時的排序
4.1.3 物理操作符計算模型
4.1.4 衡量代價的參數(shù)
4.1.5 掃描操作符的I/O代價
4.1.6 實現(xiàn)物理操作符的迭代器
4.2 一趟算法
4.2.1 一次單個元組操作的一趟算法
4.2.2 整個關(guān)系的一元操作的一趟算法
4.2.3 二元操作的一趟算法
4.2.4 習(xí)題
4.3 嵌套循環(huán)連接
4.3.1 基于元組的嵌套循環(huán)連接
4.3.2 基于元組的嵌套循環(huán)連接的迭代器
4.3.3 基于塊的嵌套循環(huán)連接算法
4.3.4 嵌套循環(huán)連接的分析
4.3.5 迄今為止的算法的總結(jié)
4.3.6 習(xí)題
4.4 基于排序的兩趟算法
4.4.1 兩階段多路歸并排序
4.4.2 利用排序去除重復(fù)
4.4.3 利用排序進(jìn)行分組和聚集
4.4.4 基于排序的并算法
4.4.5 基于排序的交和差算法
4.4.6 基于排序的一個簡單的連接算法
4.4.7 簡單的排序連接的分析
4.4.8 一種更有效的基于排序的連接
4.4.9 基于排序的算法的總結(jié)
4.4.1 0習(xí)題
4.5 基于散列的兩趟算法
4.5.1 通過散列劃分關(guān)系
4.5.2 基于散列的消除重復(fù)算法
4.5.3 基于散列的分組和聚集算法
4.5.4 基于散列的并、交、差算法
4.5.5 散列連接算法
4.5.6 節(jié)省一些磁盤I/O
4.5.7 基于散列的算法的總結(jié)
4.5.8 習(xí)題
4.6 基于索引的算法
4.6.1 聚簇和非聚簇索引
4.6.2 基于索引的選擇
4.6.3 使用索引的連接
4.6.4 使用有序索引的連接
4.6.5 習(xí)題
4.7 緩沖區(qū)管理
4.7.1 緩沖區(qū)管理結(jié)構(gòu)
4.7.2 緩沖區(qū)管理策略
4.7.3 物理操作符選擇和緩沖區(qū)管理的關(guān)系
4.7.4 習(xí)題
4.8 使用超過兩趟的算法
4.8.1 基于排序的多趟算法
4.8.2 基于排序的多趟算法的性能
4.8.3 基于散列的多趟算法
4.8.4 基于散列的多趟算法的性能
4.8.5 習(xí)題
4.9 小結(jié)
4.10 參考文獻(xiàn)
第5章 查詢編譯器
5.1 語法分析和預(yù)處理
5.1.1 語法分析與語法分析樹
5.1.2 SQL的一個簡單子集的語法
5.1.3 預(yù)處理器
5.1.4 預(yù)處理涉及視圖的查詢
5.1.5 習(xí)題
5.2 用于改進(jìn)查詢計劃的代數(shù)定律
5.2.1 交換律與結(jié)合律
5.2.2 涉及選擇的定律
5.2.3 下推選擇
5.2.4 涉及投影的定律
5.2.5 有關(guān)連接與積的定律
5.2.6 有關(guān)消除重復(fù)的定律
5.2.7 涉及分組與聚集的定律
5.2.8 習(xí)題
5.3 從語法分析樹到邏輯查詢計劃
5.3.1 轉(zhuǎn)換成關(guān)系代數(shù)
5.3.2 從條件中去除子查詢
5.3.3 邏輯查詢計劃的改進(jìn)
5.3.4 可結(jié)合/可分配的運算符的分組
5.3.5 習(xí)題
5.4 運算代價的估計
5.4.1 中間關(guān)系大小的估計
5.4.2 投影運算大小的估計
5.4.3 選擇運算大小的估計
5.4.4 連接運算大小的估計
5.4.5 多連接屬性的自然連接
5.4.6 多個關(guān)系的連接
5.4.7 其他運算大小的估計
5.4.8 習(xí)題
5.5 基于代價的計劃選擇介紹
5.5.1 大小參數(shù)估計值的獲取
5.5.2 統(tǒng)計量的計算
5.5.3 減少邏輯查詢計劃代價的啟發(fā)式估計
5.5.4 枚舉物理計劃的方法
5.5.5 習(xí)題
5.6 連接順序的選擇
5.6.1 連接的左右參數(shù)的意義
5.6.2 連接樹
5.6.3 左深連接樹
5.6.4 通過動態(tài)規(guī)劃來選擇連接順序和分組
5.6.5 帶有更具體的代價函數(shù)的動態(tài)規(guī)劃
5.6.6 選擇連接順序的貪婪算法
5.6.7 習(xí)題
5.7 物理查詢計劃選擇的完成
5.7.1 選取一個選擇方法
5.7.2 選取連接方法
5.7.3 流水操作與物化
5.7.4 一元流水運算
5.7.5 二元運算的流水操作
5.7.6 物理查詢計劃的符號
5.7.7 物理運算的排序
5.7.8 習(xí)題
5.8 小結(jié)
5.9 參考文獻(xiàn)
第6章 系統(tǒng)故障對策
6.1 可恢復(fù)操作的問題和模型
6.1.1 故障模式
6.1.2 關(guān)于事務(wù)的進(jìn)一步討論
6.1.3 事務(wù)的正確執(zhí)行
6.1.4 事務(wù)的原語操作
6.1.5 習(xí)題
6.2 undo日志
6.2.1 日志記錄
6.2.2 undo日志規(guī)則
6.2.3 使用undo日志的恢復(fù)
6.2.4 檢查點
6.2.5 非靜止檢查點
6.2.6 習(xí)題
6.3 redo日志
6.3.1 redo日志規(guī)則
6.3.2 使用redo日志的恢復(fù)
6.3.3 redo日志的檢查點
6.3.4 使用帶檢查點redo日志的恢復(fù)
6.3.5 習(xí)題
6.4 undo/redo日志
6.4.1 undo/redo規(guī)則
6.4.2 使用undo/redo日志的恢復(fù)
6.4.3 undo/redo日志的檢查點
6.4.4 習(xí)題
6.5 針對介質(zhì)故障的防護(hù)
6.5.1 備份
6.5.2 非靜止轉(zhuǎn)儲
6.5.3 使用備份和日志的恢復(fù)
6.5.4 習(xí)題
6.6 小結(jié)
6.7 參考文獻(xiàn)
第7章 并發(fā)控制
7.1 串行調(diào)度和可串行化調(diào)度
7.1.1 調(diào)度
7.1.2 串行調(diào)度
7.1.3 可串行化調(diào)度
7.1.4 事務(wù)語義的影響
7.1.5 事務(wù)和調(diào)度的一種記法
7.1.6 習(xí)題
7.2 沖突可串行化
7.2.1 沖突
7.2.2 優(yōu)先圖及沖突可串行化判斷
7.2.3 優(yōu)先圖測試發(fā)揮作用的原因
7.2.4 習(xí)題
7.3 使用鎖的可串行化實現(xiàn)
7.3.1 鎖
7.3.2 封鎖調(diào)度器
7.3.3 兩階段封鎖
7.3.4 兩階段封鎖發(fā)揮作用的原因
7.3.5 習(xí)題
7.4 有多種鎖模式的封鎖系統(tǒng)
7.4.1 共享鎖與排他鎖
7.4.2 相容性矩陣
7.4.3 鎖的升級
7.4.4 更新鎖
7.4.5 增量鎖
7.4.6 習(xí)題
7.5 封鎖調(diào)度器的一種體系結(jié)構(gòu)
7.5.1 插入鎖動作的調(diào)度器
7.5.2 鎖表
7.5.3 習(xí)題
7.6 數(shù)據(jù)庫元素的層次
7.6.1 多粒度的鎖
7.6.2 警示鎖
7.6.3 幻象與插入的正確處理
7.6.4 習(xí)題
7.7 樹協(xié)議
……
第8章 再論事務(wù)管理
第9章 并行與分布式數(shù)據(jù)庫
第二部分 現(xiàn)代數(shù)據(jù)庫系統(tǒng)專題
第10章 信息集成
第11章 數(shù)據(jù)挖掘
第12章 數(shù)據(jù)庫系統(tǒng)與互聯(lián)網(wǎng)
1.2.3 主存和緩沖區(qū)管理器
數(shù)據(jù)庫中的數(shù)據(jù)通常駐留在輔助存儲器中,在當(dāng)今的計算機系統(tǒng)中,“輔助存儲器”通常就是磁盤。然而,數(shù)據(jù)必須在主存儲器中,才能對其進(jìn)行有用的操作。存儲管理器的任務(wù)是控制數(shù)據(jù)在磁盤上的放置和在磁盤與主存之間的移動。
在一個簡單的數(shù)據(jù)庫系統(tǒng)中,存儲管理器和底層操作系統(tǒng)的文件系統(tǒng)沒有什么不同。但是。為了提高效率,DBMS通常直接控制在磁盤上的存儲,至少在一些情況下是這樣的。存儲管理器跟蹤文件在磁盤上所處的位置,獲得緩沖區(qū)管理器所要求的文件的磁盤塊號。
緩沖區(qū)管理器負(fù)責(zé)將可利用的主存空間分割成緩沖區(qū),緩沖區(qū)是與頁面同等大小的區(qū)域,磁盤塊的內(nèi)容可以傳送到緩沖區(qū)中。這樣,所有需要從磁盤得到信息的DBMS成分都或直接或通過執(zhí)行引擎與緩沖區(qū)和緩沖區(qū)管理器交互。
不同的DBMS成分所需要的信息的類型包括:
1.數(shù)據(jù):數(shù)據(jù)庫自身的內(nèi)容。
2.元數(shù)據(jù):描述數(shù)據(jù)庫的結(jié)構(gòu)及其約束的數(shù)據(jù)庫模式。
3.日志記錄:關(guān)于最近對數(shù)據(jù)庫所做改變的信息,這些信息支持?jǐn)?shù)據(jù)庫的持久性。
4.統(tǒng)計信息:DBMS收集和存儲的關(guān)于數(shù)據(jù)庫中的各個關(guān)系或其他成分的大小、取值等信息。
5.索引:支持對數(shù)據(jù)進(jìn)行高效存取的數(shù)據(jù)結(jié)構(gòu)。
1.2.4 事務(wù)處理
正如前面所講,通常將一個或多個數(shù)據(jù)庫操作組成一組,稱作事務(wù),事務(wù)是必須被作為一個原子,外觀上獨立于其他事務(wù)執(zhí)行的單位。而且,DBMS保證持久性,即已完成事務(wù)所做的工作決不會丟失。事務(wù)管理器從應(yīng)用系統(tǒng)接收事務(wù)命令,從而得知什么時候事務(wù)開始,什么時候事務(wù)結(jié)束,以及應(yīng)用系統(tǒng)的期望(例如,某些應(yīng)用可能不希望具有原子性)。
事務(wù)處理器執(zhí)行下列任務(wù):
1.日志記錄:為了保證持久性,對于數(shù)據(jù)庫的每一個變化都在磁盤上記錄日志。日志管理器遵循幾種策略中的某一種進(jìn)行工作,這些策略保證不管在什么時候系統(tǒng)發(fā)生故障或“崩潰”,恢復(fù)管理器都能查看關(guān)于數(shù)據(jù)庫變化的日志,并將數(shù)據(jù)庫恢復(fù)到某個一致的狀態(tài)。開始時,日志管理器將日志寫到緩沖區(qū)中,然后它與緩沖區(qū)管理器協(xié)調(diào),保證在適當(dāng)?shù)臅r候?qū)⒕彌_區(qū)寫到磁盤中(磁盤中的數(shù)據(jù)不受系統(tǒng)崩潰的影響)。2.并發(fā)控制:事務(wù)的執(zhí)行從表面上看必須是孤立的。但是在大多數(shù)系統(tǒng)中,實際上有許多事務(wù)在同時執(zhí)行。因此,調(diào)度器(并發(fā)控制管理器)必須保證多個事務(wù)的一個個動作以一種適當(dāng)?shù)捻樞驁?zhí)行,從而使得最終的結(jié)果與這些事務(wù)事實上一個執(zhí)行完了再執(zhí)行下一個的結(jié)果相同。典型的調(diào)度器通過在數(shù)據(jù)庫的某些部分上維護(hù)若干個鎖來進(jìn)行它的工作。這些鎖防止兩個事務(wù)以造成不良后果的方式存取數(shù)據(jù)的相同部分。如圖1.1 所示,鎖通常存儲在主存儲器中的封鎖表中。調(diào)度器禁止執(zhí)行引擎訪問數(shù)據(jù)庫中被封鎖的部分,從而對查詢和其他數(shù)據(jù)庫操作的執(zhí)行發(fā)生影響。