国产成人精品无码青草_亚洲国产美女精品久久久久∴_欧美人与鲁交大毛片免费_国产果冻豆传媒麻婆精东

18143453325 在線咨詢 在線咨詢
18143453325 在線咨詢
所在位置: 首頁 > 營銷資訊 > 信息時代 > 數(shù)據(jù)庫管理系統(tǒng)數(shù)據(jù)系統(tǒng)層(數(shù)據(jù)庫)

數(shù)據(jù)庫管理系統(tǒng)數(shù)據(jù)系統(tǒng)層(數(shù)據(jù)庫)

時間:2022-11-17 12:30:01 | 來源:信息時代

時間:2022-11-17 12:30:01 來源:信息時代

    數(shù)據(jù)庫管理系統(tǒng)數(shù)據(jù)系統(tǒng)層 : 數(shù)據(jù)庫系統(tǒng)的用戶接口層的實現(xiàn)基礎。數(shù)據(jù)系統(tǒng)層向上對用戶接口層提供的邏輯數(shù)據(jù)結構相對于關系數(shù)據(jù)模型來說,是規(guī)范化的關系、視圖及用于支持與宿主語言接口的元組,數(shù)據(jù)系統(tǒng)層向上提供的這一接口稱為多元組接口(相對于下一層存取系統(tǒng)層所提供的單元組接口而言)。對這一邏輯數(shù)據(jù)結構(即關系)所提供的運算有SEQUEL語言、SQL語言、Alpha語言(關系演算)及關系代數(shù)等。
這種關系數(shù)據(jù)庫系統(tǒng)的多元組接口向上對用戶接口層提供的用戶接口語言(典型的如SQL語言)是一種非過程型的描述型數(shù)據(jù)庫語言,對數(shù)據(jù)的定義、操縱和檢查均有統(tǒng)一的語言形式,加上選擇適當?shù)倪壿嫈?shù)據(jù)結構,它具有高度的數(shù)據(jù)獨立性。這就是說,在所定義的邏輯數(shù)據(jù)結構上,使用描述型的語言書寫的應用程序,對數(shù)據(jù)庫系統(tǒng)的數(shù)據(jù)結構、存取路徑和存儲結構的變動具有高度的穩(wěn)定性和適應性。它與較為低級的數(shù)據(jù)庫系統(tǒng)相比有兩個優(yōu)點:
(1)易于更動數(shù)據(jù)庫結構。在正常操作條件下,可補入新關系,可對現(xiàn)有關系擴充新屬性,可在不同屬性上動態(tài)設立或撤消存取路徑。
(2)查詢由非過程型的描述型語言來表達。為滿足查詢而選擇最優(yōu)存取路徑的問題由系統(tǒng)自動完成。若所選出的存取路徑后來發(fā)生了變化甚至被刪除,系統(tǒng)會自動選擇其他的存取路徑,用戶程序無需絲毫改變,對用戶毫無影響,只可能在執(zhí)行效率上發(fā)生一些變動。
數(shù)據(jù)庫管理系統(tǒng)的數(shù)據(jù)系統(tǒng)層的一個重要任務就是將由數(shù)據(jù)庫系統(tǒng)用戶接口所提交的用非過程型的描述型語言書寫的應用程序轉換成(編譯成)一串由存取系統(tǒng)所提供的原語(中間語言)去執(zhí)行。在此編譯期間,數(shù)據(jù)系統(tǒng)還必須承擔存取檢查、完整性檢查、存取優(yōu)化和專用視圖支持等任務,以確保正確和高效地執(zhí)行程序。數(shù)據(jù)系統(tǒng)的體系結構及其在數(shù)據(jù)庫管理系統(tǒng)總體結構中的地位如圖1所示。


圖1 數(shù)據(jù)系統(tǒng)的體系結構


數(shù)據(jù)系統(tǒng)層的各個系統(tǒng)模塊對系統(tǒng)目錄和數(shù)據(jù)庫的訪問是通過其下層即存取系統(tǒng)層進行的。在編譯時數(shù)據(jù)系統(tǒng)層的各個系統(tǒng)成分激活,在執(zhí)行時調用存取模塊而將控制交給存取模塊。
由上所述,數(shù)據(jù)系統(tǒng)層的首要任務就是將非過程型的描述型的數(shù)據(jù)庫語言書寫的程序轉換成(翻譯成)可執(zhí)行的單元組基本存取動作序列。存取動作和編譯時的目錄和存取路徑是密切相關的,當存取路徑改變了,就應重新優(yōu)選存取路徑,重新編譯。
數(shù)據(jù)庫語言(例如SQL語言)程序的編譯其步驟如下:
(1) 詞法和語法分析。
(2)造表: 將外部關系名和屬性名轉換為內部名。前者即外部名便于用戶記憶和使用,后者整齊劃一,由系統(tǒng)內部使用。在造表中需存取系統(tǒng)目錄。
(3)存取檢查:查閱安全矩陣,審核存取權。如果安全條件與數(shù)據(jù)的值有關,則在編譯時尚無法確定該語句是否允許執(zhí)行,需生成相應的動作,以便執(zhí)行時進行檢查。
(4)完整性檢查:查閱系統(tǒng)目錄,按照完整性規(guī)則,對數(shù)據(jù)類型、格式和轉換作簡單的完整性檢查。生成相應的運行時動作和觸發(fā)子,以便在進行正式的存取時作完整性檢查。
(5)存取優(yōu)化: 包括代數(shù)優(yōu)化和非代數(shù)優(yōu)化。
(6)形成存取模塊:按以上五個步驟建立了一系列內部控制表格,形成了和數(shù)據(jù)庫的各種聯(lián)系(即綁定),如外部關系名和屬性名與內部名的聯(lián)系,與所選定的存取路徑的聯(lián)系等。向存取系統(tǒng)的運算符提供參數(shù)、有關完整性檢查和存取權審核的運行時動作及所需要的格式轉換等亦應包含其中。
上述六個步驟將SQL語言的語句即符號串A轉換為一串可執(zhí)行的存取動作,這個加工過程是一個逐步綁定的過程,即同確定的數(shù)據(jù)結構、存取路徑和存儲結構綁定在一起,構成一串確定的存取動作。這一串存取動作包裝在存取模塊中,在執(zhí)行時被調用。容易看出,編譯時的綁定是密切依賴于數(shù)據(jù)庫的狀態(tài)的,該狀態(tài)會由于存取路徑的變化,完整性約束的變更,或收回某種存取權而發(fā)生改變,從而所形成的存取模塊不再有效,需重新進行編譯。當然,重新進行編譯的時機需另行考慮。
按照綁定時間的早晚,翻譯和執(zhí)行的方法不同,從而導致效率各異,靈活性也大不相同。綁定的時間愈早則效率愈高,但靈活性和適應性也愈低。綁定時間愈晚則應變能力愈強,但效率也愈低。
一種最簡單和效率最高的方法是在應用程序設計時進行綁定,它對系統(tǒng)的要求最低但對程序員的要求最高。ADABAS系統(tǒng)和SESAM系統(tǒng)就是采用這種方法。其要點是在應用程序和數(shù)據(jù)庫系統(tǒng)之間開辟一個協(xié)議區(qū),在一個十分低級的接口上進行數(shù)據(jù)庫系統(tǒng)的調用。
另一種極端是完全的解釋執(zhí)行,其綁定時間最晚,靈活性最高但效率最低。直到執(zhí)行之前符號串A均以原始形式保存在源程序中,當真正調用數(shù)據(jù)庫系統(tǒng)時才用解釋程序去完成前述的六個步驟并立即執(zhí)行。它能適應加工過程中數(shù)據(jù)庫狀態(tài)的變化,保持高度的數(shù)據(jù)獨立性。但在某些情況下如在應用程序的循環(huán)體中出現(xiàn)對數(shù)據(jù)庫系統(tǒng)的調用,則每循環(huán)一次都要從頭執(zhí)行全部的六個步驟,其開銷很大,效率很低。
編譯方法介于上述兩個極端之間,預編譯好的存取模塊可以多次調用執(zhí)行,只有在數(shù)據(jù)庫狀態(tài)發(fā)生變更時才需要重新進行編譯。故通常均采用編譯方法,它的效率在典型情況下可比全解釋方法高10~20倍。
應用程序一般采用過程型編程語言書寫,如FORTRAN、PL/1、BASIC、C++等,涉及數(shù)據(jù)存取時則通過嵌在應用程序中的SQL語句來完成。FORTRAN等稱為書寫應用程序的宿主語言。對這樣的應用程序,通常采用預編譯的方法進行加工,即將嵌有SQL語句的宿主語言(如PL/1)源程序進行變換,將所嵌入的SQL語句替換為相應的專用存取模塊的調用,余下的PL/1程序則由PL/1編譯程序進行編譯并生成PL/1目標程序。執(zhí)行PL/1目標程序時將相應調用由所嵌入的SQL語句編譯成的存取模塊。
如圖1所示,數(shù)據(jù)系統(tǒng)層向上提供的是多元組接口,向下則基于存取系統(tǒng)層所提供的單元組接口。多元組接口提供的關系和視圖等是元組的集合,可以直接輸出,提供給用戶。但在有些情況下則不合適,例如,對于宿主語言PL/1書寫的應用程序,它與嵌入其中的SQL語言語句的交互不能直接進行。SQL語言查詢結果是元組的集合,而傳統(tǒng)的PL/1語言是過程型語言不是集合論語言,它只能處理一個一個的元組而不是元組的集合。為此,需在兩者之間架設一座橋梁,游標(cursor)法就是這樣一座橋梁。
游標可定義在SQL語句所說明的元組集合上,它給予該集合一個名字,并指示該元組集合中某個元組的位置。連續(xù)調用游標就可為應用程序一個一個地提供所需的元組。
向數(shù)據(jù)系統(tǒng)層提供支持的存取系統(tǒng)層所提供的單元組接口是在另一個較低的層次上提供一個一個的元組,它依賴于具體的存取路徑,而游標則在較高的層次上,與具體的存取路徑無關。
數(shù)據(jù)庫管理系統(tǒng)的存取系統(tǒng)層提供單元組接口的機制叫做掃描(scan)。掃描分為兩種,一種叫索引掃描,另一種叫關系掃描。索引掃描建立在關系的某個索引上,按索引鍵的值以升序或降序提供一個一個的元組。如果一個關系有若干個索引,則允許建立若干個索引掃描。若一個關系不存在任何索引,則只能建立關系掃描,按關系的存儲位置一個一個地提供元組。顯然,有索引時加工更容易,效率要高得多,特別是當用戶的查詢屬性與索引屬性相一致時。
數(shù)據(jù)系統(tǒng)層編譯用戶的查詢語句所生成的存取模塊,在執(zhí)行時就是對這些由存取系統(tǒng)層的單元組接口提供的一個一個元組進行加工的。

74
73
25
news

版權所有? 億企邦 1997-2022 保留一切法律許可權利。

為了最佳展示效果,本站不支持IE9及以下版本的瀏覽器,建議您使用谷歌Chrome瀏覽器。 點擊下載Chrome瀏覽器
關閉