數(shù)據(jù)庫管理系統(tǒng)體系結(jié)構(gòu)(數(shù)據(jù)庫)
時間:2022-11-17 18:30:01 | 來源:信息時代
時間:2022-11-17 18:30:01 來源:信息時代
數(shù)據(jù)庫管理系統(tǒng)體系結(jié)構(gòu) : 介于數(shù)據(jù)庫用戶和數(shù)據(jù)庫之間的軟件系統(tǒng)結(jié)構(gòu)。數(shù)據(jù)庫用戶所要用的數(shù)據(jù)存儲在數(shù)據(jù)庫之中,如圖1所示。
圖1 數(shù)據(jù)庫、數(shù)據(jù)庫管理系統(tǒng)和數(shù)據(jù)庫系統(tǒng)
數(shù)據(jù)庫用戶要存取(access)數(shù)據(jù)庫之中的數(shù)據(jù)時,必須通過一種數(shù)據(jù)庫存取語言將它存取數(shù)據(jù)的意圖(例如查詢(query)數(shù)據(jù)、插入(insert)數(shù)據(jù)、刪除(delete)數(shù)據(jù)、修改(update)數(shù)據(jù)等)告知數(shù)據(jù)庫系統(tǒng),這種語言多種多樣,但最常用的是SQL(structured query language)語言。
數(shù)據(jù)庫系統(tǒng)中的數(shù)據(jù)庫管理系統(tǒng)負責(zé)將以SQL語言表達的數(shù)據(jù)庫用戶存取數(shù)據(jù)的意圖翻譯成計算機能執(zhí)行的動作,去存取數(shù)據(jù)庫之中的數(shù)據(jù),并將取得的結(jié)果返回給用戶。數(shù)據(jù)庫用戶的任務(wù)只是提出查詢數(shù)據(jù)的問題和得到數(shù)據(jù)結(jié)果的答案兩件事,兩件事之間的一切過程,即如何去解釋問題和找到答案則是數(shù)據(jù)庫管理系統(tǒng)的任務(wù),用戶不必知道也不可能知道。用戶的任務(wù)比較輕松,可專注于應(yīng)用問題。
數(shù)據(jù)庫管理系統(tǒng)完成上述任務(wù)并非是一步到位的,而是要經(jīng)過一系列的復(fù)雜的步驟。其原因在于表達數(shù)據(jù)庫用戶存取數(shù)據(jù)意圖的語言SQL是一種類似英語的結(jié)構(gòu)化的數(shù)據(jù)查詢語言,具有簡單、方便的特點,十分有利于用戶的使用。它是一種非過程型的語言,用戶只需要簡單地指出要什么(what),而無須詳盡地指明如何去要(how),這大大地方便了用戶。但是如何去高效地找到數(shù)據(jù)并取得數(shù)據(jù)是一點也不能省略的,全部應(yīng)當(dāng)由數(shù)據(jù)庫管理系統(tǒng)來完成。這是一項十分困難和復(fù)雜的任務(wù)。自 1970年E.F.Codd提出數(shù)據(jù)的關(guān)系模型以后,經(jīng)過了全世界數(shù)據(jù)庫專家齊心協(xié)力的十幾年的不懈努力,才研究并開發(fā)出了實用的合乎用戶需求的數(shù)據(jù)庫管理系統(tǒng)。著名的有DB2(其前身為System R和SQL/DS)和Ingres及后來的Oracle,Sybase和Informix以及更后來的SQL Server。數(shù)據(jù)庫管理系統(tǒng)完成任務(wù)的一系列步驟可以劃分為不同的層次,各層次各自完成相應(yīng)的子任務(wù),而各層次之間又是緊密無縫地銜接,承上啟下,一氣呵成。數(shù)據(jù)庫管理系統(tǒng)的分層體系結(jié)構(gòu)可以用圖2來表示。
圖2 數(shù)據(jù)庫管理系統(tǒng)的分層體系結(jié)構(gòu)
其中,數(shù)據(jù)庫用戶接口層用于和用戶打交道,用戶中有使用上述的SQL語言的,也有使用其他語言的,如Alpha、QBE等。以SQL語言為例,這一層將用戶的以SQL語言表示的查詢提交給數(shù)據(jù)系統(tǒng)層并在接收到數(shù)據(jù)庫系統(tǒng)返回的結(jié)果數(shù)據(jù)時,將之表示為用戶需要的形式,如通用的表格形式,或直方圖、餅圖等提供給用戶。
往下一層是數(shù)據(jù)系統(tǒng)層,它要完成的工作包括:
存取檢查: 檢查該用戶有無資格存取數(shù)據(jù)庫。
編譯:將SQL語言程序編譯為易于被計算機處理的中間語言,以便存取系統(tǒng)層繼續(xù)處理。
數(shù)據(jù)系統(tǒng)層還包括完整性檢查,專用視圖支持和存取優(yōu)化等功能。
數(shù)據(jù)系統(tǒng)層處理的對象是關(guān)系,關(guān)系是元組(tuple)的集合,所以SQL語言也叫做集合論語言。
后續(xù)的存取系統(tǒng)層將進一步對數(shù)據(jù)系統(tǒng)層的輸出進行處理。這一層要深入處理關(guān)系中的組成部分,即一個一個的元組,也稱為一個一個的記錄(record)。其功能包括元組(或記錄)管理、存取路徑(access path)或索引(index)管理、事務(wù)管理(transaction management)、并發(fā)控制(concurrency control)、恢復(fù)管理(recovery management)、優(yōu)化和排序(optimization and sorting)等。可以看出這一層是數(shù)據(jù)庫管理系統(tǒng)的核心部分,它最為復(fù)雜和關(guān)鍵。
以上提到的數(shù)據(jù)的表示形式是關(guān)系和元組(記錄),數(shù)據(jù)庫管理系統(tǒng)對它們的處理在計算機的內(nèi)存中進行,內(nèi)存中承載數(shù)據(jù)處理的平臺叫做系統(tǒng)緩沖區(qū),它由定長的頁面組成,如圖3所示。
圖3 存儲系統(tǒng)層和系統(tǒng)緩沖區(qū)
系統(tǒng)緩沖區(qū)的大小和定長頁面的尺寸因各系統(tǒng)而異,不同的數(shù)據(jù)庫管理系統(tǒng),不同的操作系統(tǒng)和不同的計算機硬件配置會有不同大小的系統(tǒng)緩沖區(qū)和不同尺寸的定長頁面。一般頁面尺寸可能是8K byte或16K byte甚至64K byte。
關(guān)系和元組存儲在頁面上,如何在頁面上進行存儲(諸如存儲的結(jié)構(gòu)、格式和安排等)則是元組管理(記錄管理)模塊(子系統(tǒng))的任務(wù)。
數(shù)據(jù)庫管理系統(tǒng)的存儲系統(tǒng)層的任務(wù)就是管理系統(tǒng)緩沖區(qū)。組成系統(tǒng)緩沖區(qū)的定長頁面為了管理的方便可以劃分成若干個組稱之為段。對系統(tǒng)緩沖區(qū)的管理也就是對段和頁面的管理。段的類型可以劃分為公用的或?qū)S玫? 永久的或臨時的; 其恢復(fù)是系統(tǒng)自動恢復(fù)還是用戶去恢復(fù),抑或是不可能恢復(fù);其打開和關(guān)閉是由系統(tǒng)自動進行還是由用戶顯式進行,等等。對于段的操作有申請段、釋放段、打開段和關(guān)閉段。對于頁的操作則有申請頁、釋放頁、讀頁和寫頁等。
系統(tǒng)緩沖區(qū)是一道界限,數(shù)據(jù)庫管理系統(tǒng)對數(shù)據(jù)的處理都在這一道界限之上進行。迄今為止,它們是獨立于具體的計算機硬件和操作系統(tǒng)的,即系統(tǒng)緩沖區(qū)確立了系統(tǒng)的設(shè)備獨立性,外部設(shè)備發(fā)生變動其影響僅限于此,不會再往上傳播。將系統(tǒng)緩沖區(qū)的內(nèi)存頁面存儲到計算機的外存(如磁盤)上去,則必須與具體的計算機外部設(shè)備和操作系統(tǒng)打交道,需要利用具體的操作系統(tǒng)所提供的存取外存設(shè)備的設(shè)施(例如文件系統(tǒng)),或利用具體外存設(shè)備的設(shè)備接口。這一部分的工作依賴于具體的操作系統(tǒng)或具體的外部設(shè)備,已不存在設(shè)備獨立性了。這一系統(tǒng)層的工作,可以將系統(tǒng)緩沖區(qū)中的數(shù)據(jù)存儲到磁盤上去,也可將磁盤上的數(shù)據(jù)取到內(nèi)存的系統(tǒng)緩沖區(qū)中來,即完成所謂的內(nèi)外存交換的任務(wù)。
數(shù)據(jù)庫一般是存放在磁盤中的,以上數(shù)據(jù)庫管理系統(tǒng)的四個系統(tǒng)層,上下銜接,環(huán)環(huán)相扣,一以貫之,完成了數(shù)據(jù)庫用戶和數(shù)據(jù)庫之間的交互。