七、數據庫的安全與保護
1.安全性
數據庫的安全性是指保護數據庫以防止不合法的或非正常的使用所造成的數據泄露、更改或破壞。安全性問題不是數據庫系統所獨有的,計算機系統都有這個問題。只是在數據庫系統中大量數據集中存放,而且為許多用戶直接共享,是十分重要的信息資源。從而使安全性問題變得更為突出。系統安全保護措施是否有效是數據庫系統的主要性能指標之一。對于數據庫的安全保密方式可以有系統處理的和物理的兩個方面。所謂物理的是指,對于強力逼迫透露口令、在通信線路上竊聽、以至盜竊物理存儲設備等行為。對此所采取的措施是將數據編為密碼,加強警衛以識別用戶身份和保護存儲設備等措施。在一般計算機系統中,安全措施是一級一級層層設置的。
(1)用戶標識和鑒定首先,系統提供一定的方式讓用戶標識自己的名字或身份。系統進行核實,通過鑒定后才提供機器使用權。常用的方法有:用一個用戶名或者用戶標識號來標明用戶身份。系統鑒別此用戶是否是合法用戶。若是,則可以進入下一步的核實;若不是,則不能使用計算機。用戶名的登錄只由系統管理員進行,一般用戶不能實施用戶名登錄。口令(Password),為了進一步核實用戶,系統常常要求用戶輸入口令。
(2)存取控制對于獲得上機權的用戶還要根據預先定義好的用戶權限進行存取控制,保證用戶只能存取他有權存取的數據。所謂用戶權限是指不同的用戶對于不同的數據對象允許執行的操作權限。它由兩部分組成,一是數據對象,二是操作類型。數據對象有二類。一類是數據本身,如關系數據庫中的表、字段,非關系數據庫中的記錄、字段(亦稱為數據項)。另一類是外模式、模式、內模式。在關系系統中DBA可以把建立、修改基本表的權力授予用戶,用戶獲得此權力后可以建立基本表、索引、視圖。這說明關系系統中存取控制的數據對象不僅有數據而且有模式、外模式、內模式等數據字典中的內容。對于存取權限的定義稱為授權(Authorization)。這些定義經過編譯后存儲在數據字典中。每當用戶發出存取數據庫的操作請求后,DBMS查找數據字典,根據用戶權限進行合法權限檢查(Authorization Check)。若用戶的操作請求超出了定義的權限,系統拒絕執行此操作。授權編譯程序和合法權限檢查機制一起組成了安全性子系統。衡量授權子系統精巧程度的另一個盡度是否提供與數據值有關的授權。有的系統還允許存取謂詞中引用系統變量,如一天中的時刻,終端設備號。這樣用戶只能在某臺終端、某段時間內存取有關數據,這就是與時間和地點有關的存取權限。另外,在操作系統中對文件、目標等的存取還有一些安全保護措施。其中加密是一種防止數據內容被別人引用或了解的切實可行的辦法。加密有程序加密和硬件加密卡兩種形式。
2.完整性
數據庫的完整性是指數據的正確性和相容性。DBMS必須提供一種功能來保證數據庫中數據的完整性。這種功能亦稱為完整性檢查,即系統用一定的機制來檢查數據庫中的數據是否滿足規定的條件。這種條件在數據庫中稱為完整性約束條件。數據的約束條件是語義的體現,這些完整性約束條件將作為模式的一部分存放數據字典中。數據的完整性和安全性是兩個不同的概念。前者是為了防止數據庫中存在不符合語義的數據,防止錯誤信息的輸入和輸出,即所謂垃圾進垃圾出(Garbage In Garbage Out)所造成的無效操作和錯誤結果。而后者是保護數據庫防止惡意的破壞和非法的存取。當然,完整性和安全性是密切相關的。特別從系統實現的方法來看,往往是一種機制常常既可用于安全性保護亦可用于完整性保證。完整性約束條件可以分類如下:(1)值的約束和結構的約束前者指對數據的值的限制,后者指對數據之間聯系的限制。關于對數據值的約束 這類約束條件是指對數據取值類型、范圍、精度等的規定。關于數據之間聯系的約束 數據庫中同一關系的不同屬性之間可以有一定的聯系,從而也應滿足一定的約束條件。同時,由于數據庫中數據是結構化的,不同的關系之間也可以有聯系,因而不同關系的屬性之間也可滿足一定的約束條件。
(2)靜態約束和動態約束所謂靜態約束是指對數據庫每一確定狀態的數據所應滿足的約束條件。以上所講的約束都屬靜態約束。動態約束是指數據庫從一種狀態轉變為另一種狀態時新、舊值之間所應滿足的約束條件。
(3)立即執行約束和延遲執行約束立即執行約束是指在執行用戶事務時,對事務中某一更新語句執行完后馬上對此數據所應滿足的約束條件進行完整性檢查。延遲執行是指在整個事務執行結束后方對此約束條件進行完整性檢查,結果正確方能提交。完整性的實現應包括兩個方面,一是系統要提供定義完整性約束條件的功能,二是提供檢查完整性約束條件的方法。對于數據值的那類完整性約束條件通常在模式中定義。例如在模式中定義屬性名、類型、長度、碼屬性名并標明其值是唯一的、非空的等等。另外的那些約束條件就要用專門的方式加以定義。
3.并發控制
數據庫是一個共享資源,可以由多個用戶使用。這些用戶程序可以一個一個地串行執行,也可以并行執行。在單CPU計算機上,為了充分利用數據庫資源,應該允許多個用戶程序并行的存取數據。這樣就會產生多個用戶程度并發地存取同一數據的情況。若對并發操作不加控制就會存取和存儲不正確的數據,破壞數據庫的完整性(這里也稱為一致性)。在多CPU計算機或多計算機網絡環境下,并發控制尤為重要。
(1)事務的概念 事務(Transaction)是并發控制的基本單位。所謂事務是一個操作序列。這些操作作為一個序列形成一個整體要么都做,要么都不做,是一個不可分割的工作單位。事務通常以BEGIN TRANSACTION開始,以COMMIT或ROLLBACK操作結束。COMMIT即提交,提交事務中所有的操作,事務正常結束。ROLLBACK即撤消已作的所有操作,滾回到事務開始時的狀態。這里的操作指對數據庫的更新操作。滾回即相當于所有操作均未執行。事務和程序是兩個概念。一般地講,一個程序可包括多個事務,由于事務是并發控制的基本單位,所以下面的討論均以事務為對象。
(2)數據一致性級別的概念。所謂并發控制就是要用正確的方式調度并發操作,避免造成數據的不一致性,使一個用戶事務的執行不受其它事務的干擾。
4.封鎖
封鎖(Locking)就是事務T可以向系統發出請求,對某個數據對象(最常用的是記錄)加鎖。于是事務T對這個數據對象就有一定的控制。例如,其它事務不能更新此數據直到T釋放(unlock)它的鎖為止。確切的控制由封鎖的類型決定。基本的封鎖類型有兩種:排它鎖(Exclu sive locks簡記為X鎖)和共享鎖(Share locks簡記為S鎖)。若事務T對數據R加上X鎖,則只允許T讀取和修改R;其它一切事務對R的任何(包括封鎖)請求都不成功,直至T釋放R上的X鎖為止。這就保證了其它事務不能再讀取和修改R,直到T釋放X鎖。若事務T對數據R加上S鎖,則其它事務對R的X鎖請求不能成功,而對R的共享請求可以得到。這就保證了其它事務以讀取R但不能修改R,直至T釋放S鎖為止。
5.可串行性
定義 當且僅當某組事務的一定交叉調度產生的結果和這些事務的某一串行調度的結果相同,則這個交叉調度是可串行化的。可串行性(Serializability)是并行事務正確性的準則。這個準則規定,一給定的交叉調度,當且僅當它是可串行化的,才認為是正確的。
6.兩段鎖協議
兩段鎖協議規定所有的事務應遵守下列規則:
(1)在對任何數據進行讀、寫操作之前,事務首先要獲得對該數據的封鎖,而且:
(2)在釋放一個封鎖之后,事務不再獲得任何其它鎖。所謂“兩段”鎖的含義是:事務分為兩個階段。第一階段是獲得封鎖,也稱為擴展階段。第二階段是釋放封鎖,也稱為收縮階段。定理 若所有事務均遵守兩段鎖協議,則這些事務的所有交叉調度都是可串行化的(證明略)。為了確保事務并行執行的正確性,許多系統采用兩段鎖協議。同時系統設有死鎖檢測機制,發現死鎖后按一定的算法解除死鎖。
7.恢復
盡管系統中采取了各種保護措施來保證數據庫的安全性和完整性不被破壞,保證并行事務的正確執行,但是計算機系統中硬件的故障、軟件的錯誤、操作員的失誤以及故意的破壞仍是不可避免的。這些故障輕則造成運行事務非正常地中斷,影響數據庫中數據的正確性,重則破壞數據庫,使數據庫中全部或部分數據丟失。因此數據庫管理系統必須具有把數擾庫從錯誤狀態恢復到某一已知的正確狀態(亦稱為完整狀態或一致狀態)的功能,這就是數據庫的恢復。恢復子系統是數據庫管理系統的一個重要組成部分,而且還相當龐大,常常占整個系統代碼的10%以上(如IMS,DB2)。故障恢復是否考慮周到和行之有效,是數據庫系統性能的一個重要指標。大型的數據庫應用對故障恢復的要求更加強烈。有時甚至采用雙工制。
(1)故障的種類數據庫系統中可能發生各種各樣的故障,大致可以分以下幾類:①事務內部的故障;②系統范圍內的故障;③介質故障;④計算機病毒。
(2)轉儲和恢復轉儲是數據庫恢復中經常采用的基本技術。所謂轉儲即DBA定期地將整個數據庫復制到磁帶或另一個磁盤上保存起來的過程。這些備用的數據文本為后備副本或后援副本。當數據庫遭到破壞后就可以利用后備副本把數據庫恢復。這時,數據庫只能恢復到轉儲時的狀態,從那以后的所有更新事務必須重新運行才能恢復到現時的正常狀態。轉儲是十分耗費時間和資源的,不能頻繁進行。DBA應該根據數據庫使用情況確定一個適當的轉儲周期。轉儲可分為靜態轉儲和動態轉儲。靜態轉儲是指轉儲期間不允許(或不存在)對數據庫進行任何存取、修改活動。動態轉儲是指轉儲期間允許對數據庫進行存取或修改。即轉儲和用戶事務可以并發執行。靜態轉儲簡單,但轉儲必須等待用戶事務結束才能進行。同樣,新的事務必須等待轉儲結束才能執行。顯然,這會降低數據庫的可用性。動態轉儲可克服靜態轉儲的缺點。但是,轉儲結束時后援副本上的數據并不能保證正確有效。例如,在轉儲期間的某時刻t 1 系統把數據A=100轉儲到了磁帶上,而在時刻t 2 ,某一事務對A進行了修改使A=200轉儲結束,后援副本上的A已是過時的數據了。為此,必須把轉儲期間事務對數據庫的修改活動登記下來,建立日志文件(log file)。這樣,后援副本加上日志文件就能把數據庫恢復到某一時刻的正確狀態。轉儲還可以分為海量轉儲和增量轉儲。海量轉儲是指每次轉儲全部數據庫。增量轉儲則指每次只轉儲上次轉儲后更新過的數據。如果數據庫很大,事務處理又十分頻繁,則增量轉儲方式是很有效的。(3)日志文件日志文件是用來記錄對數據庫每一次更新活動的文件。在動態轉儲方式中必須建立日志文件,后援副本和日志文件綜合起來才能有效地恢復數據庫。在靜態轉儲方式中,也可以建立日志文件。當數據庫毀壞后可重新裝放后援副本把數據庫恢復到轉儲結束時刻的正確狀態,然后利用日志文件,把已完成的事務進行重做處理,對故障發生時尚未完成的事務進行撤消處理。這樣不必重新運行那些在轉儲前已完成的事務程序就可把數據庫恢復到故障前某一時刻的正確狀態。
八、數據庫應用系統的設計
1.數據庫應用系統的設計步驟
按規范設計的方法可將數據庫設計分為以下六個階段
(1)需求分析;
(2)概念結構設計;
(3)邏輯結構設計;
(4)數據庫物理設計;
(5)數據庫實施;
(6)數據庫運行和維護。
2.需求分析
需求收集和分析是數據庫應用系統設計的第一階段。明確地把它作為數據庫應用系統設計的第一步是十分重要的。這一階段收集到的基礎數據和一組數據流圖(Data Flow Diaˉgram———DFD)是下一步設計概念結構的基礎。概念結構對整個數據庫設計具有深刻影響。而要設計好概念結構,就必須在需求分析階段用系統的觀點來考慮問題、收集和分析數據及其處理。如何分析和表達用戶需求呢?在眾多的分析方法中,結構化分析(Structured Analysis,簡稱SA方法)是一個簡單實用的方法。SA方法用自頂向下、逐層分解的方式分析系統。用數據流圖,數據字典描述系統。然后把一個處理功能的具體內容分解為若干子功能,每個子功能繼續分解,直到把系統的工作過程表達清楚為止。在處理功能逐步分解的同時,它們所用的數據也逐級分解。形成若干層次的數據流圖。數據流圖表達了數據和處理過程的關系。處理過程的處理邏輯常常用判定表或判定樹來描述。數據字典(Data Dictionary,簡稱DD)則是對系統中數據的詳盡描述,是各類數據屬性的清單。對數據庫應用系統設計來講,數據字典是進行詳細的數據收集和數據分析所獲得的主要結果。數據字典是各類數據描述的集合,它通常包括以下5個部分:
(1)數據項,是數據最小單位。
(2)數據結構,是若干數據項有意義的集合。
(3)數據流,可以是數據項,也可以是數據結構。表示某一處理過程的輸入輸出。
(4)數據存儲,處理過程中存取的數據。常常是手工憑證、手工文檔或計算機文件。
(5)處理過程。
3.概念結構設計
如同軟件工程中重視需求分析與規范說明的思想一樣,數據庫設計中同樣十分重視數據分析、抽象與概念結構的設計。概念結構的設計,是整個數據庫設計的關鍵之一。概念結構獨立于數據庫邏輯結構,獨立于支持數據庫的DBMS,也獨立于具體計算機軟件和硬件系統。歸納總結,其主要特點是:
(1)能充分地反映現實世界,包括實體和實體之間的聯系,能滿足用戶對數據處理的要求,是現實世界的一個真實的模型,或接近真實的模型。
(2)易于理解,從而可以和不熟悉計算機的用戶交換意見。用戶的積極參與是數據庫應用系統設計成功與否的關鍵。
(3)易于更動。當現實世界改變時容易修改和擴充,特別是軟件、硬件環境變化時更應如此。
(4)易于向關系、網狀或層次等各種數據模型轉換。概念結構是各種數據模型的共同基礎,它比任意一種數據模型更獨立于機器,更抽象,從而更加穩定。描述概念結構的有力工具是E-R模型。P.P.S.Chen把用E-R模型定義的概念結構稱為組織模式。設計概念結構的策略有3種:
(1)自頂向下 首先定義全局概念結構的框架,然后逐步細化。
(2)自底向上 首先定義各局部應用的概念結構,然后將它們集成,得到全局概念結構。
(3)混合策略 自頂向下和自底向上相結合的方法。用自頂向下策略設計一個全局概念結構的框架,以它為骨架集成由自底向上策略中設計的各局部概念結構。現介紹自底向上設計概念結構的策略。按照這種策略,概念結構的設計可按下面步驟進行。
(1)數據抽象與局部視圖設計
E-R模型是對現實世界的一種抽象。一般地講,所謂抽象是對實際的人、物、事和概念的人為處理。它抽取人們關心的共同特性,忽略非本質的細節,并把這些特性用各種抽象的概念精確地加以描述。這些概念組成了現實世界的一種模型表示。有3種抽象方法形成了抽象機制,來對數據進行組織:①分類(Classification) 定義某一概念作為現實世界中一組對象的類型。這些對象具有某些共同的特性和行為。它抽象了對象值和型之間的“is a member of”的語義。在E-R模型中,實體型就是這種抽象。②聚集(Aggregation) 定義某一類型的組成成分。它抽象了對象內部屬性類型和整體與部分之間“is a part of”的語義。在E-R模型中若干屬性的聚集組成了實體型,就是這種抽象。③概括(Generalization) 定義類型之間的一種子集聯系。它抽象了類型之間的“is a subset of”的語義。概括具有一個很重要的性質:繼承性。子類繼承超類上定義的所有抽象性質。當然,子類可以增加自己的某些特殊屬性。概念結構設計的第一步就是利用上面介紹的抽象機制對需求分析階段收集到的數據進行組織,形成實體、實體的屬性,標識實體的碼,確定實體之間的聯系類型(1∶1,1∶n,n∶m),設計成部分E-R圖。
(2)視圖的集成視圖集成就是把上一步得到的各個部分E-R圖綜合成一個總體的E-R圖。視圖集成可以有兩種方式:①多個部分E-R圖一次集成。②逐步集成。用累加的方式一次集成兩個部分E-R圖。無論哪種方式,每次集成可分兩步走。第一步是合并,解決各部分E-R圖之間的沖突問題,生成初步E-R圖。第二步是修改和重構,消除不必要的冗余,生成基本E-R圖。
4.邏輯結構設計
邏輯結構設計的任務就是把概念結構轉換為選用的DBMS所支持的數據模型的過程。設計邏輯結構按理應選擇對某個概念結構最好的數據模型,然后對支持這種數據模型的各種DBMS進行比較,選出最合適的DBMS。但實際情況常常是已給定了某臺機器,設計人員沒有選擇DBMS的余地。現行的DBMS一般只支持關系、網狀或層次三種模型中的某一種,對某一種數據模型,各個機器系統又有許多不同的限制,提供不同的環境與工具。因而我們把設計過程分三步進行。首先把概念結構向一般的關系模型轉換,然后向特定的DBMS支持下的數據模型轉換,最后進行模型的優化。
(1)E-R圖向關系數據模型的轉換下面給出把E-R圖轉換為關系模型的轉換規則。
①一個實體轉換為一個關系模式。實體的屬性就是關系的屬性,實體的碼就是關系的碼。
②一個聯系轉換為一個關系模式,與該聯系相連的各實體的碼以及聯系的屬性轉換為關系的屬性。該關系的碼則有三種情況:若聯系為1∶1,則每個實體的碼均是該關系的候選碼。若聯系為1∶n,關系的碼為n端實體的碼。若聯系為n∶m,則關系的碼為諸實體碼的組合。具有相同碼的關系模式可合并。形成了一般的數據模型后,下一步就向特定的DBMS規定的模型轉換。設計人員必須熟知所用DBMS的功能及限制。這一步轉換是依賴于機器的,不能給出一個普遍的規則。轉化后的模型必須進行優化。對數據模型進行優化是指調整數據模型的結構,以提高數據庫應用系統的性能。性能有動態性能和靜態性能兩種。靜態性能分析容易實現。根據應用要求,選出合適的模型是一項復雜的工作。
(2)規范化理論的應用規范化理論是數據庫邏輯設計的指南和工具,具體地講可應用在下面幾個具體的方面:
第一,在數據分析階段用數據依賴的概念分析和表示各數據項之間的關系。
第二,在設計概念結構階段,用規范化理論為工具消除初步E-R圖中冗余的聯系。
第三,由E-R圖向數據模型轉換過程中用模式分解的概念和算法指導設計。現在,不管選用的DBMS是支持哪種數據模型的,均先把概念結構向關系模型轉換。然后,充分運用規范化理論的成果優化關系數據庫模式的設計。
5.數據庫的物理設計
物理設計的內容主要包括:
(1)確定數據的存儲結構 從DBMS所提供的存儲結構中選取一種合適的加以實現。確定存儲結構的主要因素是存取時間、存儲空間利用率和維護代價三個方面。設計者常常要對這些因素進行權衡。一般的DBMS也總是具有一定靈活性供你選擇。例如,若引入某些冗余數據,則可能減少物理I/O次數提高檢索效率。相反節約存儲空間檢索代價就會增加。當然應該盡量尋找優化方法,使這三方面的性能都較好。折衷有時是必須的。
(2)存取路徑的選擇和調整 數據庫必須支持多個用戶的多種應用,因而必須提供對數據庫的多個存取入口,也就是對同一數據存儲要提供多條存取路徑。物理設計的任務應確定建立哪些存取路徑。設計者應該進行定量的分析,根據計算結果確定存取路徑。
(3)確定數據存放位置 首先按數據的應用情況劃分為不同的組,然后確定存放位置。一般的應把數據的易變部分和穩定部分分開,把經常存取和不常存取的數據分開。經常存取或存取時間要求高的記錄應存放在高速存儲器上,如硬盤。存取頻率小或存取時間要求低的放在低速存儲器上,如軟盤磁帶。對于同一數據文件也可根據情況進行水平劃分或垂直劃分。
(4)確定存儲分配 許多DBMS提供了存儲分配的參數供設計者物理優化處理用。例如溢出空間的大小和分布參數,塊的長度,塊因子的大小,裝填因子,緩沖區的大小和個數等等,它們都要在物理設計中確定。這些參數的大小影響存取時間和存儲空間的分配。物理設計過程需要對時間、空間效率、維護代價和各種用戶要求進行權衡,其結果可以產生多種方案。在實施數據庫前對這些方案進行方案進行細致的評價,以選擇一個較優的方案是十分必要的。
6.數據庫應用系統的實施和維護
對數據庫的物理設計初步評價完成后就可建立數據庫了。數據庫應用系統實施對應于軟件工程的編碼、調試階段。設計人員運用DBMS提供的數據定義語言將邏輯設計和物理設計的結果嚴格地描述出來,成為DBMS可接受的源代碼。經過調試產生目標模式。然后組織數據入庫。組織數據入庫是數據庫應用系統實施階段最主要的工作。
(1)數據庫數據的載入和應用程序的開發由于數據庫數據量一般都非常大,并且這些數據來源于一個組織的各個部門,分散在各種數據文件或原始憑證中。這些數據的結構和格式一般也不符合數據庫的要求,還要進行轉換。因此組織數據入庫是一件耗費大量人力物力的工作。數據的轉換和組織對于小系統可以用人工方法完成。但是,人工轉換效率低、質量差。一般來說,應設計一個數據輸入子系統讓計算機完成這個工作。輸入子系統的主要功能是:原始數據的輸入、抽取、校驗、分類、轉換和綜合,最終把數據組織成符合數據庫結構的形式。然后把數據存入數據庫中。數據的轉換、分類和綜合常常要經過多次才能完成,因而輸入子系統的設計和實施亦是比較復雜的,要編寫許多應用程序。輸入子系統的設計不能等物理設計完成后才動手,應該和數據庫設計工作并行開展。為了保證數據庫數據正確無誤,必須高度重視數據的檢驗工作。在輸入子系統進行數據轉換的過程中應該進行多次檢驗,每次檢驗的方法亦不要相同。對于重要數據的校驗更應該反復多次,確認正確后方可入庫。數據庫應用系統中應用程序的設計應該和數據庫模式設計并行。數據庫應用系統的實施階段的另一項工作便這是這些應用程序的編碼、調試工作。有了裝載實際數據的數據庫和應用程序,就建立了數據庫應用系統,可以試運行了。
(2)數據庫應用系統的試運行在完成上述工作之后,便可進入數據庫的試運行階段,或者稱聯合調試階段。這階段的主要工作是:
①實際運行應用程序,執行對數據庫的各種操作,測試應用程序的功能。
②測量系統的性能指標,分析是否符合設計目標。雖然已在物理設計過程中進行了性能預測,但是僅僅估價了時間和空間指標,而且在性能估價的過程中作了許多簡化和假設,忽略了許多次要因素,因而估價是粗糙的并可能失真。必須在試運行階段進行實際測量和評價。有些參數的最佳值往往是經過運行調試后才找到的。如果實際結果不符合設計目標,則需返回物理設計階段,調整物理結構,修改參數。有時,也許還需要返回邏輯設計階段,調整邏輯結構。最后還須指出兩點。
第一,上面已看到組織數據入庫是十分費事的,如果運行調試后又要修改數據庫設計則又要重新組織數據入庫。因此應分批分期輸入數據,逐步完成運行評價。
第二,數據庫的實施和調試不是一朝一夕能完成的,在此期間軟硬件的錯誤隨時可能發生。加上數據庫剛剛建立,工作人員對系統還不熟悉,對其規律更缺乏深入了解,容易發生操作錯誤。因此必須做好數據庫的轉儲和恢復工作,這就要求設計人員了解DBMS的這個功能,并根據調試方式和特點首先實施,盡量減少對數據庫的破壞并簡化故障恢復。
(3)數據庫應用系統的運行和維護數據庫應用系統投入運行標志著開發任務的基本完成和維護工作的開始,但并不意味著設計過程結束。任何數據庫應用系統只要它存在一天,它的設計就得不斷地進行評價、調整、修改,甚至完全改革。因此數據庫應用系統的維護不僅是維護其正常活動而且是設計工作的繼續和提高。維護階段的主要工作是:
①數據庫的安全性、完整性控制及系統的轉儲和恢復;
②性能的監督、分析和改進;
③數據庫的重組織和重構造。下面簡單介紹數據庫的重組織和重構造。數據庫運行一段時間后,由于記錄的不斷增、刪、改,會使數據庫的物理存儲變壞。例如,邏輯上屬于同一記錄型或同一關系的數據被分散到了不同的文件或文件的多個碎片上。從而降低了數據庫存儲空間的利用率和數據的存取效率,數據庫的性能下降。這時,DBA就要進行數據庫的重組織,DBMS一般都提供重組織用的實用程序。在重組過程中,按原設計要求重新安排記錄的存儲位置,調整數據區和溢出區,回收“垃圾”,減少指針鏈等。數據庫的重組織不改變原設計的數據邏輯結構和物理結構。而數據庫的重構造則不同。部分修改原數據庫的模式或內模式稱為數據庫的重構造。由于數據庫應用環境的變化,數據庫重構的程度是有限的。只能作部分的修改和調整。若應用變化太大,重構也無濟于事了,則表明數據庫應用系統生命周期的結束,應該重新設計數據庫應用系統。新的數據庫應用系統新的生命周期開始了。
相關推薦:
北京 | 天津 | 上海 | 江蘇 | 山東 |
安徽 | 浙江 | 江西 | 福建 | 深圳 |
廣東 | 河北 | 湖南 | 廣西 | 河南 |
海南 | 湖北 | 四川 | 重慶 | 云南 |
貴州 | 西藏 | 新疆 | 陜西 | 山西 |
寧夏 | 甘肅 | 青海 | 遼寧 | 吉林 |
黑龍江 | 內蒙古 |