從分佈式數據庫結構入手講解其前世今生

由於分佈式數據庫克服了集中式數據庫的許多缺點,並且自然地適應於許多單位地理上分散而邏輯上統一的組織結構,因此,20多年以來從理論到實踐都得到了迅速發展,並取得了決定性成果。

  分佈式數據庫結構

  分佈式數據庫的典型定義是:分佈式數據庫是一個數據集合,這些數據在邏輯上屬於同一個系統,但物理上卻分散在計算機網絡的若干站點上,並且要求網絡的每個站點具有自治的處理能力,能執行本地的應用。每個站點的計算機還至少參與一個全局應用的執行。

  所謂全局應用,要求使用通訊子系統在幾個站點存取數據。這個定義強調了分佈式數據庫的兩個重要特點:分佈性和邏輯相關性。

  圖1給出了典型的分佈式數據庫系統(DDBS)的物理結構。其中在不同地域的3臺計算機分別控制本地數據庫及各終端用戶T;每臺計算機及其本地數據庫組成了此分佈式數據庫的一個站點,各站點用通訊網絡連接起來,可以是局域網或廣域網。


圖1 DDBS的物理結構圖

  圖2給出了分佈式數據庫的邏輯結構。其中,DDBMS是分佈式數據庫管理系統,用來支持分佈式數據庫的建立和維護。LDBMS是局部數據庫管理系統,也就是通常的集中式數據庫管理系統,用來管理本站的數據。


圖2 DDBS的邏輯結構

DDBS的工作原理

  DDBMS是分佈式數據庫系統的核心部分,就其性質可分爲勻質和異質兩種。若每個站點的LDBMS相同,則是勻質的;若至少有兩個LDBMS不同,則是異質的。

  異質DDBMS要在不同LDBMS的不同數據模型間進行轉換,因而比勻質DDBMS更復雜。一般來說,若從頭開始研製一個DDBS,則選擇勻質較方便,且通常都選用關係模型。這是由於關係模型易於分佈管理,但若DDBS是建立在已有的若干數據庫之上,則這些數據庫很可能有的是基於關係模型的,有的是基於層次或網絡模型的,即它們是不同質的,因此要建立異質的DDBMS。

  圖3給出了分佈式數據庫管理系統DDBMS的工作原理的參考模型。


圖3 DDBMS工作原理參考模型

  用戶處理器根據外模式和概念模式把用戶命令翻譯成格式更適合於機器的規範化命令,並實施完整性約束,同時它負責將規範化格式的數據轉換成用戶結果格式。

  數據處理器根據概念模式和內模式選擇通向物理數據的最優或近乎最優的訪問路徑,用規範化命令翻譯成物理命令,併發執行物理命令,並送回結果。它還負責將物理數據轉換成規範化數據。 這一部分功能通常由LDBMS完成。

  全局數據庫控制和通訊系統的組成如圖4所示。分解器根據分佈模式負責將來自用戶處理器的規範化命令翻譯成一個分佈執行策略,指明各數據處理器應完成的命令。分佈式執行監測器負責分佈策略的正確執行以及保證分佈環境中事務的原子性。通訊子系統負責在網絡的各計算面站點問傳輸命令和數據。局部執行監視器負責監視執行分佈策略中的本地部分。合併器把來自幾個數據處理器的結果組合起來,形成最終結果。


圖4 DDB控制和通訊系統的組成

  此參考模型支持了DDBMS的4個特性:響應時間快和費用低,結構獨立性,位置獨立性以及併發和重複的獨立性。

各站點計算機的自治程度也是分佈式數據庫系統的一個重要特性。它與分解器和分佈執行監視器所處的位置密切相關。若分解器和分佈式執行監視器處在外部模式以上,這時分佈模式實際只存在於程序員的腦海之中,是一種由程序員來聯繫的系統。若它們處在外部模式以下概念模式以上,則是聯邦式DBMS。若它們處在概念模式以下內部模式以上(如圖3),則稱爲緊耦合的分佈式DBMS。若它們在內模式以下,則是集中式DBMS的體系結構。分解器和分佈式執行監視器所處的位置越往下,站點的自治能力越弱。

  DDBMS技術

  圖5給出了DDB的參考體系結構。分佈式數據庫設計包括外模式、全局模式、分段模式、分配模式和各站點內模式的定義。


圖5 DDB的參考體系結構

  設計應考慮到下述目標:提高處理的本地性以提高響應速度和降低處理成本;提高數據的可用性和可靠性;合理地分佈工作負荷以提高並行處理的能力等。

  將關係分段的方法有水平分段(叉分簡單水平分段和誘導水平分段),垂直分段和混合分段。設計分段時應該遵守完整性約束規則,重構性條件規則和不相交性條件規則。

  複製副本的方法可以提高數據的可用性和可靠性以及處理的局部性。但對副本要加以控制,使得對用戶是透明的,即對用戶來說好象只存在一個副本一樣。一般來說,查詢只需對一個副本進行;而更新則要對所有副本進行,這使得更新的算法變得複雜。

  目錄管理

  分佈式數據庫的目錄中存放了系統爲保證正確而有效地訪問數據而要使用的全部信息。一般應包括各級模式的描述、訪問方法的描述、關於數據庫的統計數據和一致性信息等。系統根據這些信息將用戶查詢轉換爲物理數據庫上的查詢,並進行查詢優化選擇一條最佳的存取路徑,進行事務管理,進行安全性和完整性檢查等。

  目錄的管理有多種方式。最基本的3種方式是:集中式目錄,只有一個站點存放目錄;全複製目錄,每個站點都存放目錄;局部目錄,每個站點只含有本地數據庫的目錄。可以把目錄本身作爲一個特殊的系統庫來對待,則對它也有檢索、更新、併發控制等訪問和維護問題。

  查詢處理及其優化

  這是分佈式數據庫的主要技術問題之一。相應於圖5的DDB參考體系結構,圖6給出了分佈式查詢處理模型。


圖6 分佈式查詢處理模型

  分佈式查詢處理負責將用戶查詢轉換爲各站點上的物理查詢,並負責合併各子查詢結果以得到最後結果。

  查詢的效率問題是個關鍵。因此對用戶查詢程序應加以優化,尋找一種使查詢費用最少的執行策略,這個費用等於傳輸費用和局部費用之和。有時局部費用相對於傳輸費用可以忽略不計,如大型廣域網聯接的系統。但在高速的局域網中,局部費用也必須考慮。

 

分佈式併發控制技術

  事務是一個應用或一個應用的一部分,它是數據庫的一致性單位,即在事務的執行前後數據庫都必須是一致的。分佈事務管理必須保證事務具有原子性、持久性、可串行性和隔離性。在大多數系統中是這樣得到的,即在現有的本地事務管理程序上面用兩階段託付協議來獲得可靠性,用兩階段鎖定來進行併發控制,以及用超時來解決死鎖檢測。

  兩階段託付協議確保同一事務的子事務全部託付或全部終止,不管有無發生故障;兩階段託付在不丟失運行記錄信息的情況下可從任何故障恢復。兩階段鎖定機構要求全部子事務在生長階段獲得鎖定而在收縮階段釋放鎖定。用於死鎖檢測的超時機構在那些事務可能因死鎖而等待時簡單地使它們終止。

  併發控制是分佈式事務管理的基本任務之一,其目的是保證分佈式數據庫系統中多個事務的併發、高效、正確執行。併發控制用來保證事務的可串行性,即事務的併發執行等價於它們按某種次序的串行執行,從而爲用戶提供了併發透明性。

  目前已提出了大量的併發控制方法,最基本的有封鎖方法、時間印方法和樂觀方法等。時間印方法和樂觀方法理論上研究得較多,大多數原型DDBMS和商品化DDBMS採用二段鎖方法。

  封鎖法

  對於由於共享而產生的衝突,一般可採用封鎖技術。即在對數據操作之前,先向併發控制機構提出封鎖申請,如果不與其他事務發生衝突,申請被批准,系統對數據加上鎖標誌;否則令其等待,直至其他事務釋放對此數據的封鎖。

  封鎖方法中的一個重要問題是封鎖粒度的選擇。理想的情況是隻封鎖與操作有關的數據集,通常稱爲完整性相關域。爲了保持數據完整性,至少應封鎖完整性相關域中的數據,從而使其中任何施加於現有數據集合的操作所影響的數據都置於封鎖之中。封鎖分爲讀鎖和寫鎖,也稱共享鎖和排它鎖。當事務出現衝突操作時,通過加鎖原則及鎖的相容性機制實現。

  衝突操作的可串行化調度:當數據共享時,事務並行執行;當數據排它時事務串行執行。使用鎖模型實現併發的最著名的算法是兩段鎖協議。其基本方法是任何事務對數據項操作之前先加鎖。加鎖的方法是,在事務中的全部加鎖操作在第一次解鎖操作前完成。鎖方式中要進行死鎖消除、預防、檢測處理。在集中式數據庫管理系統中通過兩段鎖協議可以破壞死鎖的形成條件,以保證事務調度的正確性。

  但是,在分佈式數據庫管理系統中,要對各自分散而又有共享要求的數據進行集中統一的管理,並用統一的描述使分散在各地的應用數據在用戶看來全局統一在一個數據庫中,這給事務的併發控制提出了更高要求。

  在分佈式環境下,如果在分佈式數據庫系統中沒有重複存儲的數據,可以使用分佈式鎖技術。其實現方法是,對每個結點保留一個局部鎖管理器,處理對存儲在本地的數據加鎖和釋放鎖的請求。當分佈式數據庫系統中有多處重複存儲的數據時,可採用集中式鎖技術,即僅有一個鎖管理器,該管理器放在惟一一個結點上,所有的加鎖和釋放鎖的請求都在該結點上處理。此外,在分佈式環境下的鎖方法,還有混合鎖技術、主副本鎖協議等。

  封鎖法實現了一種併發控制,可以滿足一般數據庫應用對併發控制的要求,但是也有自身的缺點,那就是開銷大。事務加鎖都有一定的開銷,還會降低事務的併發性。以鎖爲基礎的併發控制算法在實際DDBMS中應用較爲廣泛,例如,在Oracle系統中併發控制的實現就是採用鎖方法。

  時間印法

  所謂時間印法就是在每個事務啓動運行時,併發控制機制賦予其惟一一個時間印(通常爲事務的啓動時間),以實現多事務的可串行性。後繼事務有較大的時間印,事務的時間印一直保持到事務結束。

  此外,每個數據實體都有時間印,分爲讀時間印和寫時間印。讀時間印即數據上一次被讀出的時間,寫時間印即數據最近被寫入的時間。只有當時間印比數據項上的時間印大或者相當的事務才能執行對數據的操作並在操作完成後置數據項的時間印爲事務和數據項時間印的最大值,否則拒絕令操作重啓。這種方法使事務的並行等價於特定的串行序列,即按時間印遞增的序列,一般不會產生死鎖。

  在分佈式環境下,如果能夠解決所有事務生成惟一時間印的策略,集中式時間印技術就可以直接應用於分佈式數據庫管理系統。實際上,在分佈式策略中,每個結點都使用本地的邏輯計數器或時鐘產生局部的時間印,全局的時間印通過在局部的時間印前加上各結點的標識符來獲得,這樣獲得的時間印是惟一的,如圖7所示。


圖7 產生惟一時間印的分佈策略

  惟一時間印

  採用時間印的並行控制算法主要有兩種:基本時間印法和保守時間印法。主要缺點是使事務重新啓動的次數較多。爲解決這個問題,提出保守時間印法,該方法的主要特點是不會拒絕任何操作,從而不會重啓事務。

  處理方法是當出現衝突操作時,把年輕的緩衝起來,等待年老的操作執行完成後再執行被緩衝起來的操作。這就需要確定何時所有的事務操作均已執行完。但這可能引發死鎖的情況,也可能出現某一場地被阻斷的情況。事實上,避免死鎖的惟一方法是超時後發送一個空操作。

  在分佈式數據庫管理系統中,數據的可用性和可靠性從某種角度看是矛盾的。對於可用性和可靠性要求較高的應用,可以採用封鎖和時間印相結合的方法,可以避免錯誤、避免死鎖,必要時要考慮採用容錯和重構技術來提高可靠性。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章