首頁 考試吧論壇 Exam8視線 考試商城 網絡課程 模擬考試 考友錄 實用文檔 求職招聘 論文下載 | ||
![]() |
2011中考 | 2011高考 | 2012考研 | 考研培訓 | 在職研 | 自學考試 | 成人高考 | 法律碩士 | MBA考試 MPA考試 | 中科院 |
|
![]() |
四六級 | 職稱英語 | 商務英語 | 公共英語 | 托福 | 雅思 | 專四專八 | 口譯筆譯 | 博思 | GRE GMAT 新概念英語 | 成人英語三級 | 申碩英語 | 攻碩英語 | 職稱日語 | 日語學習 | 法語 | 德語 | 韓語 |
|
![]() |
計算機等級考試 | 軟件水平考試 | 職稱計算機 | 微軟認證 | 思科認證 | Oracle認證 | Linux認證 華為認證 | Java認證 |
|
![]() |
公務員 | 報關員 | 銀行從業資格 | 證券從業資格 | 期貨從業資格 | 司法考試 | 法律顧問 | 導游資格 報檢員 | 教師資格 | 社會工作者 | 外銷員 | 國際商務師 | 跟單員 | 單證員 | 物流師 | 價格鑒證師 人力資源 | 管理咨詢師考試 | 秘書資格 | 心理咨詢師考試 | 出版專業資格 | 廣告師職業水平 駕駛員 | 網絡編輯 |
|
![]() |
衛生資格 | 執業醫師 | 執業藥師 | 執業護士 | |
![]() |
會計從業資格考試(會計證) | 經濟師 | 會計職稱 | 注冊會計師 | 審計師 | 注冊稅務師 注冊資產評估師 | 高級會計師 | ACCA | 統計師 | 精算師 | 理財規劃師 | 國際內審師 |
|
![]() |
一級建造師 | 二級建造師 | 造價工程師 | 造價員 | 咨詢工程師 | 監理工程師 | 安全工程師 質量工程師 | 物業管理師 | 招標師 | 結構工程師 | 建筑師 | 房地產估價師 | 土地估價師 | 巖土師 設備監理師 | 房地產經紀人 | 投資項目管理師 | 土地登記代理人 | 環境影響評價師 | 環保工程師 城市規劃師 | 公路監理師 | 公路造價師 | 安全評價師 | 電氣工程師 | 注冊測繪師 | 注冊計量師 |
|
![]() |
繽紛校園 | 實用文檔 | 英語學習 | 作文大全 | 求職招聘 | 論文下載 | 訪談 | 游戲 |
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)日志文件日志文件是用來記錄對數據庫每一次更新活動的文件。在動態轉儲方式中必須建立日志文件,后援副本和日志文件綜合起來才能有效地恢復數據庫。在靜態轉儲方式中,也可以建立日志文件。當數據庫毀壞后可重新裝放后援副本把數據庫恢復到轉儲結束時刻的正確狀態,然后利用日志文件,把已完成的事務進行重做處理,對故障發生時尚未完成的事務進行撤消處理。這樣不必重新運行那些在轉儲前已完成的事務程序就可把數據庫恢復到故障前某一時刻的正確狀態。
希望與更多計算機等級考試的網友交流,請進入計算機等級考試論壇
更多信息請訪問:考試吧計算機等級考試欄目
北京 | 天津 | 上海 | 江蘇 | 山東 |
安徽 | 浙江 | 江西 | 福建 | 深圳 |
廣東 | 河北 | 湖南 | 廣西 | 河南 |
海南 | 湖北 | 四川 | 重慶 | 云南 |
貴州 | 西藏 | 新疆 | 陜西 | 山西 |
寧夏 | 甘肅 | 青海 | 遼寧 | 吉林 |
黑龍江 | 內蒙古 |