點(diǎn)擊查看:2015計(jì)算機(jī)等級(jí)考試四級(jí)數(shù)據(jù)庫(kù)工程師復(fù)習(xí)匯總
第六章 存儲(chǔ)技術(shù)與數(shù)據(jù)庫(kù)物理設(shè)計(jì)
6.1 文件組織
6.1.1 數(shù)據(jù)庫(kù)的物理結(jié)構(gòu)
1、 數(shù)據(jù)庫(kù)中的應(yīng)用數(shù)據(jù)是以文件形式存儲(chǔ)在外存上的,文件在邏輯上被組織成記錄的序列,即每個(gè)DB文件可看作是邏輯記錄的集合;
2、 一個(gè)文件在磁盤上占有一定的物理存儲(chǔ)空間,文件中的每個(gè)邏輯記錄被映射存儲(chǔ)到某個(gè)特定的磁盤塊上,一個(gè)文件在物理上可以看作是由存放文件記錄的一系列磁盤塊組成,稱為物理文件;
3、 文件的邏輯記錄與磁盤間的映射關(guān)系是由操作系統(tǒng)或DBMS來(lái)管理的,當(dāng)需要對(duì)一個(gè)文件的邏輯記錄進(jìn)行操作時(shí),先要根據(jù)這種映射關(guān)系找到該邏輯記錄所在的磁盤塊,然后再進(jìn)行操作。
4、 從數(shù)據(jù)庫(kù)物理結(jié)構(gòu)角度需要解決如下問題:
(1) 文件的組織;
(2) 文件的結(jié)構(gòu);
(3) 文件的存取;
(4) 索引技術(shù);
6.1.2 文件組織
1、 數(shù)據(jù)庫(kù)與文件的對(duì)應(yīng)關(guān)系
(1) 在外存中,數(shù)據(jù)庫(kù)以文件形式組織,文件由邏輯記錄組成,記錄由多個(gè)域組成;
(2) 一個(gè)關(guān)系數(shù)據(jù)庫(kù)包括一張或多張關(guān)系表,關(guān)系表與文件的對(duì)應(yīng)關(guān)系有如下方式:
(A) 每張關(guān)系表單獨(dú)用一個(gè)文件來(lái)存儲(chǔ),由DBMS通過OS的文件管理功能來(lái)管理;
(B) 現(xiàn)代中大型DBMS是由OS直接分配一塊大的磁盤空間,DBMS將該磁盤空間作為數(shù)據(jù)庫(kù)磁盤文件直接管理,DB的所有關(guān)系表都存儲(chǔ)在該文件中;
(1) 關(guān)系表在邏輯上由一系列元組組成,元組由多個(gè)屬性組成,每個(gè)元組可以用磁盤文件中的一個(gè)邏輯記錄來(lái)存儲(chǔ),記錄包括多個(gè)域,對(duì)應(yīng)元組的多個(gè)屬性;
2、文件記錄格式:
(1) 數(shù)據(jù)庫(kù)文件通常采用兩種邏輯記錄格式:定長(zhǎng)記錄格式和變長(zhǎng)記錄格式;
6.2 文件結(jié)構(gòu)與存取
6.2.1 堆文件
1、 堆文件也稱無(wú)序文件,記錄隨機(jī)在存儲(chǔ)在文件物理空間是,新插入的記錄存儲(chǔ)在文件的末尾;
2、 堆文件常常用作存儲(chǔ)那些將來(lái)使用,但目前不清楚如何使用的記錄,為了實(shí)現(xiàn)文件記錄的有效存取,堆文件經(jīng)常與附加的存取路徑一起使用;
3、 查找操行平均需要搜索(B+1)/2個(gè)磁盤塊,效率比較低;
4、 插入操作十分簡(jiǎn)單,先讀文件頭,找到最末磁盤地址,將最末磁盤塊讀入內(nèi)存,將需插入的新記錄寫入磁盤塊的末端,最后將修改過的磁盤塊寫回磁盤;
5、 刪除比較復(fù)雜,可以先找到被刪除記錄所在的磁盤塊,讀入內(nèi)存后在內(nèi)存緩沖區(qū)刪除記錄,最后再寫回磁盤;也可以在每個(gè)記錄的磁盤空間增加一個(gè)刪除標(biāo)志位,當(dāng)需要?jiǎng)h除記錄時(shí),將標(biāo)示位置1;
6.2.2 順序文件
1、 順序文件按照文件記錄在查詢碼上的取值的大小順序排列各個(gè)記錄;
2、 順序文件的每個(gè)記錄中有一個(gè)指針字段,根據(jù)查詢碼大小用指針將各個(gè)記錄按序連接起來(lái);
3、 文件建立時(shí),應(yīng)盡量使記錄的物理順序與查找碼的順序一致,以減少訪問磁盤塊的次數(shù);
4、 根據(jù)查詢條件對(duì)順序文件進(jìn)行查詢時(shí),如查詢條件定義在查找碼上,則使用二分法查找技術(shù)快速找到記錄,如條件不在查找碼上,則必須從頭到尾依次掃描磁盤塊,與堆文件一致,所以順序文件的訪問效率也不高;
5、 順序文件插入工作包括定位和插入:
(1) 定位:在指針鏈中找到插入的位置,即插入記錄在哪個(gè)記錄的前面;
(2) 插入:如有自由空間,則在該位置插入新記錄,如沒有自由空間,則只能插入溢出塊中,重新調(diào)整記錄指針鏈關(guān)系,保證記錄順序;
6.2.3 聚集文件
1、 聚集文件是一種具有多種記錄類型文件,存儲(chǔ)了來(lái)自多個(gè)關(guān)系表的數(shù)據(jù),每個(gè)關(guān)系表對(duì)應(yīng)文件中的一種記錄類型;
2、 當(dāng)數(shù)據(jù)庫(kù)中數(shù)據(jù)量效大時(shí),對(duì)數(shù)據(jù)庫(kù)查詢需要多次訪問磁盤文件,嚴(yán)重影響性能指標(biāo),為了降低多表操作時(shí)的磁盤訪問次數(shù),提高多表查詢速度,可采用聚集文件;
3、 聚集文件將不同關(guān)系表中有關(guān)聯(lián)關(guān)系的記錄存儲(chǔ)在同一磁盤塊內(nèi),從而減少多表查詢時(shí)磁盤塊的訪問次數(shù),提高處理速度;
6.2.4 索引文件
是一種利用索引技術(shù)技術(shù)快速文件訪問的文件組織和存取方法;
6.2.4 散列文件
是一種利用散列函數(shù)支持快速文件訪問的文件組織和存取方法;
6.3 索引技術(shù)
6.3.1 基本概念
1、 索引技術(shù):是一種快速文件訪問技術(shù),它將一個(gè)文件的每個(gè)記錄在某個(gè)或某些域(屬性)上的取值與該記錄的物理地址直接聯(lián)系起來(lái),提供了一種根據(jù)記錄域的取值快速訪問文件記錄的機(jī)制;它的關(guān)鍵是建立取值域到記錄的物理地址劉的映射關(guān)系,這種映射關(guān)系叫索引;
2、 索引技術(shù)分類:
(1) 有序索引技術(shù):利用索引文件實(shí)現(xiàn)記錄域(查找碼)取值到記錄物理地址間的映射關(guān)系,索引文件由索引記錄組成,每個(gè)記錄中記載一個(gè)索引項(xiàng),索引項(xiàng)記錄了某個(gè)特定的查找碼值和具有該值的數(shù)據(jù)文件記錄的物理地址;
(2) 散列技術(shù):利用一個(gè)散列函數(shù)實(shí)現(xiàn)記錄域取值到記錄物理地址間的直接映射關(guān)系;
(3) 有序索引:有序索引作為基于索引文件的索引技術(shù),需要考慮兩個(gè)問題:(1)如何組織索引文件中的索引記錄;(2)如何從索引文件出發(fā),訪問數(shù)據(jù)文件中的數(shù)據(jù)記錄;
(A) 當(dāng)需要采用有序索引機(jī)制快速訪問數(shù)據(jù)文件時(shí),首先要為該數(shù)據(jù)文件建立一個(gè)索引文件,它是索引記錄和索引項(xiàng)的集合;
(B) 索引文件建立的方法:首先選定某些記錄域作為查找碼,然后建立數(shù)據(jù)記錄在查找碼上的取值與物理地址間的映射關(guān)系,組成索引項(xiàng)。所有索引項(xiàng)作為索引記錄存儲(chǔ)在索引文件中,索引文件根據(jù)某個(gè)特定的查找碼值的順序組織為順序文件;
(C) 一個(gè)數(shù)據(jù)文件可以有多個(gè)查找碼和索引文件;
6.3.2 有序索引的分類及特點(diǎn)
1、 聚集索引與非聚集索引
(1) 對(duì)數(shù)據(jù)文件和它的一個(gè)特定的索引文件,如果數(shù)據(jù)文件中數(shù)據(jù)記錄的排列順序與索引文件中索引項(xiàng)的排列順序相一致,則該索引文件稱為聚集索引,否則稱為非聚集索引;
(2) 在一個(gè)數(shù)據(jù)文件上除了建立一個(gè)聚集索引外,還可建立多個(gè)非聚集索引;
2、 稠密索引和稀疏索引
如果數(shù)據(jù)文件中的每個(gè)查找碼都在索引文件中都對(duì)應(yīng)一個(gè)索引記錄,稱為稠密索引,如果只一部分對(duì)應(yīng),則稱為稀疏索引;
3、 主索引和輔索引
在數(shù)據(jù)文件包含主碼的屬性集上建立索引稱為主索引,在非主碼屬性上建立的索引稱為輔索引;
4、單層索引和多層索引
(1) 單層索引(線性索引):索引項(xiàng)根據(jù)鍵值在索引文件中順序排列,組織成一維線性結(jié)構(gòu),每個(gè)索引項(xiàng)直接指向數(shù)據(jù)文件中的數(shù)據(jù)記錄;
(2) 當(dāng)數(shù)據(jù)文件很大時(shí),即使采用稀疏索引,建成的索引文件也很大,導(dǎo)致效率低下,為解決該問題,可對(duì)索引文件中的索引項(xiàng)本身再建立一級(jí)稀疏索引,組成2層索引結(jié)構(gòu);進(jìn)一步地,可建立多層樹型索引結(jié)構(gòu)來(lái)快速定位;
6.4 散列技術(shù)
6.4.1 散列文件
1、 散列是一種快速查找技術(shù),它利用定義在文件記錄上的查找碼,通過計(jì)算一個(gè)散列函數(shù),以散列函數(shù)值作為記錄的物理地址,實(shí)現(xiàn)對(duì)文件記錄直接快速訪問。
2、 首先指定文件記錄的一個(gè)域作為查找碼(散列域),然后定義一個(gè)查找碼上的函數(shù)(散列函數(shù)),函數(shù)的輸入為查找碼值,輸出為物理地址;
3、 一般使用桶作為基本的存儲(chǔ)單位,一個(gè)桶可存放多個(gè)文件記錄,物理地址可以是記錄所在的桶號(hào),散列函數(shù)的輸出可以是桶號(hào);
6.4.2 散列函數(shù)
1、 散列方法依賴于好的散列函數(shù),它應(yīng)該盡可能均勻地將查找碼分布到各個(gè)桶中,具體要滿足如下兩個(gè)條件:
(1) 地址的分布是均勻的;
(2) 地址的分布是隨機(jī)的;
6.4.3 桶溢出
1、 產(chǎn)生桶溢出的兩個(gè)原因:
(1) 文件初始設(shè)計(jì)時(shí),為文件記錄預(yù)留的存儲(chǔ)空間不足;
(2) 散列函數(shù)的均勻分布性不好;
2、 設(shè)計(jì)散列函數(shù)時(shí),應(yīng)根據(jù)文件大小決定物理空間,一般應(yīng)有20%余量,再設(shè)計(jì)合適的桶數(shù)目和桶大小,盡可能留有一些空閑桶,降低桶溢出的可能性;
3、 桶溢出的現(xiàn)象是難免的,需要DBS采用相應(yīng)的桶溢出處理機(jī)制;
4、 散列方法的缺點(diǎn):為了避免桶溢出。必須選一合適的散列函數(shù),但這比較復(fù)雜,而且不象索引文件那樣可以據(jù)數(shù)據(jù)記錄變化動(dòng)態(tài)調(diào)整。
6.5 數(shù)據(jù)字典
1、 數(shù)據(jù)字典(系統(tǒng)目錄)中存儲(chǔ)了數(shù)據(jù)庫(kù)對(duì)象的各類描述信息和DBMS所需的控制信息,全稱數(shù)據(jù)庫(kù)元數(shù)據(jù);
2、 數(shù)據(jù)庫(kù)對(duì)象的各類描述信息:包括外模式、模式、內(nèi)模式以及它們之間的映射的描述;
3、 DBMS所需的控制信息:包括查詢優(yōu)化、安全性檢查、用戶權(quán)限驗(yàn)證等;
4、 數(shù)據(jù)字典主要包括:
(1) 關(guān)系模式信息;
(2) 與視圖描述有關(guān)的信息;
(3) 關(guān)系的存儲(chǔ)結(jié)構(gòu)和存取方法信息;
(4) 完整性約束信息;
(5) 安全性有關(guān)信息;
(6) 數(shù)據(jù)庫(kù)運(yùn)行統(tǒng)計(jì)信息;
6.6 數(shù)據(jù)庫(kù)物理設(shè)計(jì)
6.6.1 設(shè)計(jì)步驟和內(nèi)容
1、 數(shù)據(jù)庫(kù)物理結(jié)構(gòu)設(shè)計(jì):在具體的硬件環(huán)境、OS、DBMS約束下,根據(jù)數(shù)據(jù)庫(kù)邏輯設(shè)計(jì)結(jié)果,設(shè)計(jì)合適的數(shù)據(jù)庫(kù)物理結(jié)構(gòu)。目標(biāo)是存儲(chǔ)空間占用少、訪問效率高和維護(hù)代價(jià)低;
2、 一旦選定了硬件平臺(tái)、OS和DBMS,數(shù)據(jù)庫(kù)的數(shù)據(jù)存儲(chǔ)和存取方式等可用的物理模式也就隨之確定了;
3、 數(shù)據(jù)庫(kù)物理設(shè)計(jì)主要包括以下步驟:
(1) 數(shù)據(jù)庫(kù)邏輯模式調(diào)整:將數(shù)據(jù)庫(kù)邏輯模式及其視圖轉(zhuǎn)換為DBMS支持的基本表和視圖,并利用DBMS提供的完整性機(jī)制設(shè)計(jì)業(yè)務(wù)規(guī)則;
(2) 文件組織與存取設(shè)計(jì):配置基本表的文件組織形式,據(jù)實(shí)際情況為基本表設(shè)計(jì)合適的存取方法和路徑;
(3) 數(shù)據(jù)分布設(shè)計(jì):
(4) 安全模式設(shè)計(jì):
(5) 確定系統(tǒng)配置:
(6) 物理模式評(píng)估:
6.6.2 數(shù)據(jù)庫(kù)邏輯模式調(diào)整
1、 物理數(shù)據(jù)庫(kù)設(shè)計(jì)首先需要根據(jù)數(shù)據(jù)庫(kù)邏輯結(jié)構(gòu)信息,設(shè)計(jì)目標(biāo)DBMS平臺(tái)支持的基本表的模式信息,這些模式信息代表了所要開發(fā)的具體目標(biāo)數(shù)據(jù)庫(kù)的結(jié)構(gòu),這個(gè)過程稱為數(shù)據(jù)庫(kù)邏輯模式調(diào)整,主要包括如下設(shè)計(jì)內(nèi)容:
(1) 實(shí)現(xiàn)目標(biāo)數(shù)據(jù)庫(kù)基本表和視圖:采用目標(biāo)DBMS所支持的建表方法,設(shè)計(jì)基本表及其面向模型的完整性約束;
(2) 設(shè)計(jì)基本表業(yè)務(wù)規(guī)則;
6.6.3 DB文件組織與存取設(shè)計(jì)
1、分析事務(wù)的數(shù)據(jù)訪問特性
(1) 使用事務(wù)-基本表交叉引用矩陣,分析系統(tǒng)內(nèi)數(shù)據(jù)庫(kù)事務(wù)對(duì)各個(gè)基本表的訪問情況,確定事務(wù)訪問了哪些基本表,對(duì)這些基本表執(zhí)行了何種操作,并進(jìn)一步分析各操作涉及到的基本表屬性;
(2) 估計(jì)各事務(wù)的執(zhí)行頻率;
(3) 對(duì)每張基本表,匯總所有作用于該表上的各事務(wù)的操作頻率信息;
2、 了解并選擇數(shù)據(jù)庫(kù)文件結(jié)構(gòu)
(1) 如果數(shù)據(jù)庫(kù)中的一個(gè)基本表中的數(shù)據(jù)量很少,并且操作非常頻繁,該基本表可采用堆文件組織方式;
(2) 順序文件支持基于查找碼的順序訪問,也支持快速二分查找;
(3) 如果用戶查詢是基于散列域值的等值匹配,特別是如果訪問順序是隨機(jī)的,散列文件比較合適。但散列文件組織不適合以下情況:
(A) 基于散列值域的非精確查詢;
(B) 基于非散列域進(jìn)行查詢時(shí);
(4) B-樹和B+樹文件是實(shí)際數(shù)據(jù)庫(kù)系統(tǒng)中使用非常廣泛的索引文件結(jié)構(gòu),適合于定義在大數(shù)據(jù)量基本表上、基于查找碼的等值查詢等;
(5) 如果某此重要而頻繁的用戶查詢經(jīng)常需要進(jìn)行多表連接操作,可考慮將這些基本表組織為聚集文件;
3、 設(shè)計(jì)存取路徑:
(1) 為數(shù)據(jù)庫(kù)文件設(shè)計(jì)合理的物理存儲(chǔ)位置;
(2) 為基本表設(shè)計(jì)索引機(jī)制:索引可以提高文件存取速度,改善訪問性能,但索引由DBMS管理,它的建立、維護(hù)需要一定的系統(tǒng)開銷,數(shù)據(jù)的操作會(huì)引起索引的重新調(diào)整,還占用一定的存儲(chǔ)空間,可根據(jù)如下原則決定是否為一個(gè)基本表建立索引:
(A) 對(duì)于經(jīng)常需要查詢、連接、統(tǒng)計(jì)操作,且數(shù)據(jù)量大的基本表可考慮建立索引,而對(duì)于經(jīng)常執(zhí)行插入、刪除、更新操作或小數(shù)據(jù)量的基本表應(yīng)盡量不建立索引;
(B) 一個(gè)基本表上除了可以建立一個(gè)聚集索引外,還可以建立多個(gè)非聚集索引,但索引越多,對(duì)表內(nèi)數(shù)據(jù)更新所需的開銷越大,對(duì)于一個(gè)更新頻繁的表應(yīng)少建或不建索引;
(C) 索引可以由用戶根據(jù)需要隨時(shí)創(chuàng)建或刪除,以提高數(shù)據(jù)查詢性能;
6.6.4 數(shù)據(jù)分布設(shè)計(jì)
1、不同類型數(shù)據(jù)的物理分布
(1) 各種數(shù)據(jù)在系統(tǒng)中的作用不同,使用的頻率也不一樣,應(yīng)根據(jù)實(shí)際使用情況放在合適的物理介質(zhì)上;
(2) 使用頻率低但數(shù)據(jù)量大的,可以放在磁帶中,而使用頻繁,要求響應(yīng)時(shí)間短的,必須放在支持直接存取的磁盤存儲(chǔ)介質(zhì)上;
2、 應(yīng)用數(shù)據(jù)的劃分和分布
(1) 根據(jù)數(shù)據(jù)的使用特征劃分:可將基本表劃分為頻繁使用分區(qū)和非頻繁使用分區(qū),分別存放在不同的磁盤上,對(duì)前者可考慮建立B+樹等多層索引,而后者不建立或只建立單層索引;
(2) 根據(jù)時(shí)間、地點(diǎn)劃分;
(3) 分布式數(shù)據(jù)庫(kù)系統(tǒng)中的數(shù)據(jù)劃分:
3、派生屬性數(shù)據(jù)分布
(1) 派生屬性指該屬性的取值可根據(jù)表中其他屬性的取值惟一確定;
(2) 對(duì)帶有派生屬性的基本表可采用兩種實(shí)現(xiàn)方式:
(A) 將派生屬性作為基本表內(nèi)單獨(dú)一列,稱為派生列;
(B) 派生屬性不出現(xiàn)在基本表中;
4、 關(guān)系模式的去規(guī)范化
(1) 在數(shù)據(jù)庫(kù)物理設(shè)計(jì)階段,可以對(duì)考慮數(shù)據(jù)庫(kù)中某些3NF、BCNF模式是否可以降低其規(guī)范化程度,以提高查詢效率,這稱為關(guān)系模式的去規(guī)范化處理,但不滿足3NF的關(guān)系模式又可能導(dǎo)致數(shù)據(jù)庫(kù)訪問異常,因此,設(shè)計(jì)基本表時(shí),需在規(guī)范化和查詢效率間權(quán)衡;
6.6.5 安全模式設(shè)計(jì)
1、系統(tǒng)安全設(shè)計(jì)
(1) 是指為數(shù)據(jù)庫(kù)服務(wù)器合法用戶分配用戶名和口令,使其能夠正常登錄服務(wù)器訪問所需的數(shù)據(jù),還可采用基于CA認(rèn)證的系統(tǒng)安全控制機(jī)制;
1、 數(shù)據(jù)安全設(shè)計(jì)
(1) 是指通過數(shù)據(jù)庫(kù)系統(tǒng)視圖機(jī)制和授權(quán)機(jī)制為用戶對(duì)數(shù)據(jù)庫(kù)對(duì)象訪問的權(quán)限;
(2) 引用數(shù)據(jù)視圖機(jī)制,只給用戶需求的那部分?jǐn)?shù)據(jù)訪問權(quán)限,防止由合法用戶造成信息泄密,另外數(shù)據(jù)視圖還可以防止基本表發(fā)生改變時(shí),影響用戶的訪問;
(3) 權(quán)限是允許用戶對(duì)一給定的數(shù)據(jù)庫(kù)對(duì)象可執(zhí)行的操作;
(4) 數(shù)據(jù)庫(kù)安全設(shè)計(jì)需要根據(jù)用戶需求,采用授權(quán)機(jī)制,為用戶分配合法訪問的權(quán)限;
6.6.6 確定系統(tǒng)配置
1、 要根據(jù)實(shí)際應(yīng)用系統(tǒng)的運(yùn)行情況配置系統(tǒng)參數(shù);
6.6.7 物理模式評(píng)估
1、 在設(shè)計(jì)過程中,通過對(duì)時(shí)間效率、空間效率、維護(hù)代價(jià)和用戶要求權(quán)衡考慮,擇優(yōu)采用;
2、 評(píng)估物理數(shù)據(jù)庫(kù)的方法完全依賴所選用的DBMS,主要從定量估算各方案的存儲(chǔ)空間、存取時(shí)間和維護(hù)代價(jià)入手;
相關(guān)推薦:
各地2015年計(jì)算機(jī)等級(jí)考試報(bào)名時(shí)間匯總
北京 | 天津 | 上海 | 江蘇 | 山東 |
安徽 | 浙江 | 江西 | 福建 | 深圳 |
廣東 | 河北 | 湖南 | 廣西 | 河南 |
海南 | 湖北 | 四川 | 重慶 | 云南 |
貴州 | 西藏 | 新疆 | 陜西 | 山西 |
寧夏 | 甘肅 | 青海 | 遼寧 | 吉林 |
黑龍江 | 內(nèi)蒙古 |