關於多資料庫系統互聯機制的計算機論文

  不同DM3資料庫系統間的資訊共享通過協調器實現。所有這些被協調器連線在一起的資料庫系統組成了一個聯邦資料庫。下面是小編給大家推薦的,希望大家喜歡!

  篇一

  《多資料庫系統互聯機制的設計與實現》

  摘要:隨著企業規模的不斷擴大,各部門所需資訊既相互交錯,又相對獨立。這就要求各部門所用的資料庫既能高度自治地工作,又能進行資訊共享。本文主要介紹多DM3資料庫系統間的資訊共享機制。不同DM3資料庫系統間的資訊共享通過協調器實現。所有這些被協調器連線在一起的資料庫系統組成了一個聯邦資料庫。這樣既能較好地滿足企業的需要,也能在保證效率的前提下,提高資料的可用性。

  關鍵詞:DBMS 複製 聯邦資料庫

  1.引言

  隨著經濟的發展,企業的規模越來越大,其積累的資訊也越來越多。存在著各部門所處理的資訊多數只對本部門有效,僅有少數資訊需給其它某些部門共享的問題。這種資訊的分佈性和獨立性要求對所處理的資料進行分類,使各部門既能獨立地處理本部門大多數資料,也使部門間能協調處理跨部門的事務。在這種情況下,對整個企業建立一個完全的緊密耦合的分散式資料庫是很困難的,也是沒必要的,特別是大型企業,這樣的資料庫的效率往往是很低的。

  為解決這個問題,我們採用以下策略:每個部門使用一套緊密耦合的資料庫系統,而在存在跨部門事務處理的資料庫系統間用一個協調器聯起來。這樣就組成了一個橫跨整個企業,各部門高度自治的聯邦資料庫系統。

  DM2是由華中理工大學資料庫多媒體技術研究所研製的資料庫管理系統。它採用客戶/伺服器模型,客戶機與伺服器,伺服器與伺服器均通過網路互連,通過訊息相互通訊,組成一個緊密耦合的分散式資料庫系統。它的工作流程如下:客戶機登入到一臺伺服器上,這臺伺服器便成為它的代理伺服器;它接收來自客戶機的訊息,然後根據全域性資料字典決定是自己獨立完成該操作,還是與其它伺服器協作處理這條訊息,處理完成之後,再由代理伺服器將處理結果返回給客戶機。

  而資料字典,作為記錄資料庫所有元資料的系統表,它向以上過程中提供各類有用的資訊,引導它們向正確的方向執行,起著“指南針”的作用。它分為區域性資料字典和全域性資料字典。其中,區域性資料字典用於記錄一個伺服器站點中資料庫的控制資訊,如表的模式,檢視的模式及各個資料區的的檔名等資訊。全域性資料字典用於記錄分散式資料庫系統中各個伺服器站點上有關全域性資料的控制資訊,如伺服器站點資訊,各伺服器站點的全域性表名及表內碼記錄,各伺服器站點上的全域性資料檢視名及檢視內碼記錄,使用者名稱及口令記錄,使用者許可權記錄等資訊。各個區域性資料字典可以各不相同,但為了保證在各個伺服器上所看到的全域性資料庫是一致的,因此,全域性資料字典必須一致。我們所關心的是全域性資料字典中的基表控制塊TV_CTRL_BLOCK,它的內容主要包括:全域性基表總數,每個全域性基表名和其對應的表內碼,該基表所在的伺服器站點的編號等資訊。它的功能是將各個伺服器站點號與儲存在其上的表名及表內碼聯絡起來。這樣,代理伺服器從客戶訊息中找到被處理的表名,然後通過查詢基表控制塊TV_CTRL_BLOCK,就能知道該表存在哪個伺服器上,以便將相關訊息發給該伺服器。

  由於DM2上各個伺服器站點的全域性字典完全相同,任何全域性表的資訊都會記入全域性字典。若用它來構建一個企業的資料庫系統,則大量只對企業某部門有用的資訊將會充斥在各部門所有伺服器的全域性字典中,增加了冗餘。而且,當對全域性表進行DDL操作時,為了確保全域性字典的一致性,須對所有伺服器的全域性字典進行加鎖。DM2對全域性字典的封鎖方式是採用令牌環方式,即令牌繞虛環***非實環***傳輸,某個伺服器想對全域性字典進行操作,必須等令牌到達該伺服器才可以執行。每個部門建立的全域性表絕大多數只對本部門有用,當對這些表進行DDL操作時,卻要對所有伺服器的全域性字典進行封鎖,通過令牌來實現對全域性字典的互斥訪問。假如,兩個部門都要分別對本部門的內部表進行DDL操作,這應該是可以並行處理的操作,現在卻只能序列執行。而且,當伺服器數目龐大時,每個伺服器等待令牌的時間將會很長。這嚴重損害了資料庫的效率。

  為彌補以上不足,在DM2的改進版本DM3中增加了協調器,用以聯接各個獨立的DM3資料庫子系統,並協調各子系統間的各種關係,使各子系統既能高度自治地工作,又能進行有效的資訊共享。

  2.體系結構

  本系統可看作多個數據庫子系統被協調器聯起來的,高度自治的一個聯邦資料庫系統。其中,每個子系統獨立處理本系統內部的事務,而子系統間的資訊共享由複製技術提供,副本間的一致性由協調器協調處理,處理所需的資訊在初始化時寫入協調器的組間資料字典中。當對某子系統中的一份資料副本進行修改時,該子系統會將修改通知協調器,由協調器對該資料的其它副本進行修改,從而保證了所有副本的一致性。

  由以上可知,子系統彼此並不直接接觸,而是各自都與協調器直接相聯,由協調器統一管理子系統間的通訊。這樣,當子系統對副本進行修改時,不必關心相應的子系統處於何種狀態,也不必等待迴應訊息,以及異常處理,所有這些都由協調器進行管理。因此,既提高了系統執行的效率,也保證了子系統的獨立性。其體系結構如下圖所示。

  協調器主要有三大功能,首先,它對協調器和伺服器進行初始化,並將有關資訊存入組間字典;其次,它管理不同子系統間的通訊,維護副本的一致性;最後,它在子系統出現崩潰時,進行異常管理及恢復工作。

  3.主要策略

  多個DM3系統間的資訊共享是通過副本實現的,副本的一致性是由協調器來維持的,是一種弱一致性。通常,多資料庫系統間的一致性是通過協調器週期性地訪問伺服器的日誌來完成的。由於副本的更新帶有隨機性,因此,若採用這種方法,可能資料被修改多次,但其相對應的副本仍未被修改,這樣就損害了資料的一致性;也可能資料並未被修改,但協調器已多次訪問了伺服器的日誌了,這樣就降低了系統的效率。

  所以,本系統採用的方法是當資料被修改時,由伺服器通知協調器有關資訊,再由協調器通知相關係統,修改相關資料。這樣,資料的修改及時***仍然是弱一致性***,而協調器也不會在資料未被修改的情況下訪問伺服器,提高了準確性。

  為了使協調器正常工作,我們對底層資料庫管理系統DM2進行了修改。在基表控制塊TV_CTRL_BLOCK中增加一項IsReplication。建表時,該項初始化為false;當為該表建立一個副本時,該項賦值為true。具體演算法如下。

  3.1初始化演算法。

  協調器:

  從使用者或應用程式接收待連線的兩個系統中的伺服器名,需複製的表名;

  分別登入到兩個系統的伺服器上;

  向存有待複製表的伺服器發預複製訊息;

  等待伺服器訊息;

  若失敗,發一條失敗的訊息給伺服器和使用者或應用程式,轉11***;

  若成功,從訊息中取出待複製表的有關資訊,根據這些資訊,發一條建表訊息給另一個系統的伺服器;

  等待伺服器訊息;

  若失敗,發一條失敗的訊息給伺服器和使用者或應用程式,轉11***;

  若成功,調資料轉移程式,進行資料複製;

  將有關資訊寫入組間字典。

  退出。

  伺服器:

  當伺服器收到預複製訊息後,將基表控制塊TV_CTRL_BLOCK中的IsReplication賦為true。同時,取出待複製表的有關資訊,組成應答訊息發給協調器。

  當伺服器收到失敗的訊息後,將基表控制塊TV_CTRL_BLOCK中的IsReplication賦為false。

  3.2維護演算法。

  協調器:

  從組間字典讀出相關資訊,根據這些資訊,登入到相應系統上;

  等待訊息;

  從某系統的伺服器上收到一條修改訊息後,通過查詢組間字典,確定該訊息的目的地,然後將它轉發過去;

  若失敗,定時重發;

  轉2***;

  伺服器:

  1***等待訊息;

  2***當收到某客戶或應用程式的訊息後,檢查它是否是修改資料的操作***如delete,update或insert等***;

  若不是,轉7***;

  若是,檢查基表控制塊TV_CTRL_BLOCK中的IsReplication是否為true;

  若不是,轉7***;

  若是,向協調器發修改訊息;

  繼續執行伺服器程式的其它部分。

  3.3恢復演算法。

  若協調器所聯接的系統中有一個跨掉了,則對副本的修改無法及時地反映到跨掉的系統中來。這時,需要恢復演算法來進行處理。

  協調器:

  當協調器發現有一個系統已經崩潰後,採取以下步驟。

  將與該系統相關的變數open賦值為false;

  開啟記時器;

  等待訊息;

  若收到的訊息是其它系統發出的修改崩潰了的系統上的副本的命令,則依次將這些訊息儲存起來,轉3***;

  若收到的訊息是記時器發出的時間到的訊息,則向崩潰的系統發登入命令;

  若登入成功,將open的值改為true;

  將儲存的訊息依次傳送過去,轉9***;

  若登入失敗,轉3***;

  退出。

  4.結論

  我們曾在三個DM3資料庫系統上,用兩個協調器進行聯接。結果,執行情況良好,各副本最終都能保證一致,且各副本間存在差異的時間間隔很短。另外,在出現異常的情況下,協調器也能正常工作。

  主要參考文獻:

  1.周龍驤等,分散式資料庫管理系統實現技術,科學出版社,1998。

  2.鄭振楣,於戈,郭敏,分散式資料庫,科學出版社,1998。

  3.王珊等,資料倉庫技術與聯機分析處理,科學出版社,1998。

  點選下頁還有更多>>>