官术网_书友最值得收藏!

3.2 軟件項目數據庫架構特性

每一種數據庫架構模式都有它自己的特點,選擇正確的數據庫架構模式來滿足需求功能和質量特性是非常重要的。本節總結了數據庫架構的共同特性。

3.2.1 實現數據共享

數據共享就是讓在不同地方使用不同計算機、不同軟件的用戶能夠讀取他人的數據并進行各種操作運算和分析。數據共享包括所有用戶可同時存取數據庫中的數據,也包括用戶可以各種方式通過接口來使用數據庫,并提供數據共享。

實現數據共享可以使更多的人更充分地使用已有數據資源,減少資料收集、數據采集等重復勞動和相應費用,而把精力重點放在開發新的應用程序及系統集成上。不同用戶提供的數據可能來自不同的途徑,其數據內容、數據格式和數據質量千差萬別,因而給數據共享帶來了很大困難,有時甚至會遇到數據格式不能轉換或數據轉換格式后丟失信息的棘手問題,嚴重地阻礙了數據在各部門和各軟件系統中的流動與共享。

3.2.2 減少數據的冗余度

數據冗余是指數據之間的重復,也可以說是同一數據存儲在不同數據文件中的現象。數據冗余會妨礙數據庫中數據的完整性,也會造成存儲空間的浪費。盡可能地降低數據冗余度是數據庫設計的主要目標之一。

同文件系統相比,由于數據庫實現了數據共享,避免了用戶各自建立應用文件,因此減少了大量重復數據和數據冗余,維護了數據的一致性。

為了減少數據冗余,可以使用以下方法。

(1)重復存儲或傳輸數據以防止數據的丟失。

(2)對數據進行冗余性的編碼來防止數據的丟失、錯誤,并提供對錯誤數據進行反變換得到原始數據的功能。

(3)為簡化流程所造成的數據冗余(例如,向多個目的發送同樣的信息、在多個地點存放同樣的信息),不對數據進行分析而減少工作量。

(4)為加快處理過程而將同一數據在不同地點存放。例如,并行處理同一信息的不同內容,或用不同方法處理同一信息等。

(5)為方便處理而使同一信息在不同地點有不同的表現形式。例如,一本書的不同語言版本。

(6)對大量數據的索引,一般在數據庫中經常使用。

3.2.3 數據的獨立性

數據的獨立性是數據庫系統最基本的特征之一。數據獨立性是指應用程序和數據結構之間相互獨立,互不影響。在三層模式體系結構中,數據獨立性是指數據庫系統在某一層次模式上的改變不會使它的上一層模式也發生改變的能力。三級模式間的兩層映像保證了數據庫系統中的數據具有較高的數據獨立性。數據獨立性包括數據邏輯獨立性和數據物理獨立性。

(1)物理獨立性是指用戶的應用程序與存儲在磁盤上的數據庫中數據是相互獨立的。即數據在磁盤上怎樣存儲由DBMS管理,用戶程序不需要了解,應用程序要處理的只是數據的邏輯結構。這樣,當數據的物理存儲改變時,應用程序不用改變。

為了實現數據庫系統模式與內模式的聯系和轉換,在模式與內模式之間提供了映像,即模式/內模式映像。通過模式與內模式之間的映像,把描述全局邏輯結構的模式與描述物理結構的內模式聯系起來。由于數據庫只有一個模式,也只有一個內模式,因此,模式/內模式映像也只有一個。通常情況下,模式/內模式映像放在內模式中描述。

有了模式/內模式映像,當內模式改變(如存儲設備或存儲方式有所改變)時,只要對模式/內模式映像做相應的改變,可使模式保持不變,則應用程序就不受影響,從而保證了數據與程序之間的物理獨立性,稱為存儲數據獨立性。

(2)邏輯獨立性是指用戶的應用程序與數據庫的邏輯結構是相互獨立的,即當數據的邏輯結構改變時,用戶程序也可以不變。

為了實現數據庫系統的外模式與模式的聯系和轉換,在外模式與模式之間建立映像,即外模式/模式映像。通過外模式與模式之間的映像,把描述局部邏輯結構的外模式與描述全局邏輯結構的模式聯系起來。由于一個模式與多個外模式對應,因此對于每個外模式,數據庫系統都有一個外模式/模式映像,它定義了該外模式與模式之間的對應關系,這些映像定義通常包含在各自外模式的描述中。

有了外模式/模式映像,當模式改變(如增加新的屬性、修改屬性的類型)時,只要對外模式/模式的映像做相應的改變,可使外模式保持不變,則以外模式為依據編寫的應用程序就不受影響,從而應用程序不必修改,保證了數據與程序之間的邏輯獨立性,也就是邏輯數據獨立性。

3.2.4 數據的集中控制

數據的集中控制是指在組織中建立一個相對穩定的控制中心,由控制中心對組織內外的各種信息進行統一的加工處理,發現問題并提出問題的解決方案。這種形式的特點是所有的信息(包括內部、外部)都流入中心,由控制中心集中加工處理,且所有的控制指令也全部由控制中心統一下達,因此可以全面保證數據的完整性、可用性和機密性。

在文件管理方式中,數據處于一種分散的狀態,不同的用戶或同一用戶在不同處理中其文件之間毫無關系。利用數據庫可以對數據進行集中控制和管理,并通過數據模型表示各種數據的組織及數據間的聯系。

數據庫集中控制的優勢如下。

(1)可以降低存儲數據的冗余度。

(2)有更高的數據一致性。

(3)存儲數據可以共享。

(4)能夠實現數據的安全性。

(5)便于維護數據的完整性。

(6)建立數據庫所遵循的標準。

3.2.5 數據的一致性和可維護性

數據庫一致性是指事務執行的結果必須是使數據庫從一個一致性狀態轉變到另一個一致性狀態。保證數據庫一致性是指當事務完成時,必須使所有數據都具有一致的狀態。在關系型數據庫中,所有的規則必須應用到事務的修改上,以便維護所有數據的完整性。

可維護性是衡量一個系統的可修復(恢復)性和可改進性的難易程度。所謂可修復性,是指在系統發生故障后能夠排除(或抑制)故障予以修復,并返回到原來正常運行狀態的可能性。而可改進性則是系統具有接受對現有功能的改進,增加新功能的可能性。

可維護性實際上也是對系統性能的一種不可缺少的評價體系。它主要包括兩個方面:首先是評價一個系統在實施預防型和糾正型維護功能時的難易程度,其中包括對故障的檢測、診斷、修復及能否將該系統重新進行初始化等功能;其次是衡量一個系統能接受改進,甚至為了進一步適應外界(或新的)環境而進行功能修改的難易程度。

數據的一致性和可維護性可以確保數據的安全性和可靠性。其主要包括對以下幾個方面的控制。

(1)安全性控制:防止數據丟失、錯誤更新和越權使用。

(2)完整性控制:保證數據的正確性、有效性和相容性。

(3)并發控制:使在同一時間周期內,允許對數據實現多路存取,又能防止用戶之間的不正常交互作用。

3.2.6 數據的故障恢復

由數據庫管理系統提供的方法可以及時地發現故障和修復故障,從而防止數據被破壞。數據庫系統能盡快恢復數據庫系統運行時出現的故障,這種故障可能是物理上或是邏輯上的錯誤,例如由對系統誤操作造成的數據錯誤等。

數據庫的故障恢復處理有以下3種方法。

1.事務故障恢復

事務故障由系統自動完成,對用戶是透明的。

DBMS執行恢復操作的步驟如下。

(1)反向掃描日志文件(即從最后向前掃描日志文件),查找該事務的更新操作。

(2)對該事務的更新操作執行逆操作,即將日志記錄中“更新前的值”寫入數據庫。

(3)繼續反向掃描日志文件,做同樣處理。

(4)如此處理下去,直至讀到此事務的開始標記,該事務故障的恢復就完成了。

2.系統故障恢復

系統故障可能會造成數據庫處于不一致性狀態。

(1)未完成事務對數據庫的更新可能已寫入數據庫。

(2)已提交事務對數據庫的更新可能還留在緩沖區,沒來得及寫入數據庫。

因此,恢復操作就是要撤銷故障發生時未完成的事務,重做已完成的事務。

系統故障的恢復步驟如下。

(1)正向掃描日志文件,找出在故障發生前已經提交的事務隊列(REDO隊列)和未完成的事務隊列(UNDO隊列)。

(2)對撤銷隊列中的各個事務進行UNDO處理。進行UNDO處理的方法是,反向掃描日志文件,對每個UNDO事務的更新操作執行逆操作,即將日志記錄中“更新前的值”寫入數據庫。

(3)對重做隊列中的各個事務進行REDO處理。進行REDO處理的方法是,正向掃描日志文件,對每個REDO事務重新執行日志文件登記的操作,即將日志記錄中“更新后的值”寫入數據庫。

3.介質故障恢復

介質故障是最嚴重的一種故障。恢復方法是重裝數據庫,然后重做已完成的事務。介質故障的具體恢復步驟如下。

(1)DBA裝入最新的數據庫后備副本(離故障發生時刻最近的轉儲副本),使數據庫恢復到轉儲時的一致性狀態。

(2)DBA裝入轉儲結束時刻的日志文件副本。

(3)DBA啟動系統恢復命令,由DBMS完成恢復功能,即重做已完成的事務。

主站蜘蛛池模板: 蒲江县| 高台县| 吴江市| 尚义县| 九江市| 梁平县| 浑源县| 宁德市| 寿光市| 沂水县| 濮阳县| 都昌县| 凤城市| 兴隆县| 曲水县| 西充县| 灵山县| 长垣县| 葫芦岛市| 达拉特旗| 托克托县| 五家渠市| 洪雅县| 广昌县| 健康| 新郑市| 扬中市| 东莞市| 巴塘县| 原平市| 罗田县| 汾阳市| 祁东县| 武清区| 柘城县| 于田县| 伊宁市| 安庆市| 南投市| 孟村| 凉山|