基于Web Service的數據庫同步系統的設計與實現_第1頁
基于Web Service的數據庫同步系統的設計與實現_第2頁
基于Web Service的數據庫同步系統的設計與實現_第3頁
基于Web Service的數據庫同步系統的設計與實現_第4頁
基于Web Service的數據庫同步系統的設計與實現_第5頁
免費預覽已結束,剩余23頁可下載查看

VIP免費下載

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、基于基于 WebWeb ServiceService 的數據庫同步系統的設計與實現的數據庫同步系統的設計與實現 摘摘 要要 結合當前流行的 Web Service 和 ADO.NET 技術構造了一個不受平臺限制的 異構數據庫同步系統。實現了處于 Internet 上的 Sql Server2000 向 Oracle 的單向同步功能,能夠基于 IP 的安全身份驗證功能,多個 IP 實現了凈量數據的 傳輸。對同步的配置信息采用 XML 存儲,采用 Windows 應用程序界面化配置, 操作方便、易懂。 因為同步環境是對處于 Internet 上的異構數據庫的實時同步;在設計與開 發中,重點關注異構

2、數據庫的同步以及數據傳輸的可靠性;探討能實現可靠數 據的同步,以及傳輸的高效性。介紹了實現系統的思路以及所需的關鍵技術。 系統用到的相關技術有捕獲技術 Windows 托盤服務、多線程處理、以及網絡消 息機制、多 IP 同步、同步 IP 權限驗證、同步表名及字段以及字段類型的可配 置、異構數據類型的轉換、Web Service 等。 關鍵詞關鍵詞:Web Service;異構數據庫;同步;ADO.NET; The Design and Implementation of Database Synchronization System Based on Web Service Abstract

3、We can construct the Heterogeneous database synchronous system using Web Service. It has realized the function of one-way synchronous from SQL Server2000 to Oracle. It has some functions, the security authentication of IP, the data transmission of IP, the Synchronization configuration using XML stor

4、age and the windows application program UI which can make this system be operated easily. Because the synchronous environment will be real-time synchronous for heterogeneous database on the Internet, in the design and implementation, this system has showed the synchronization of heterogeneous databa

5、se and data transmission reliability, achieving the synchronization of reliable data, the security methods of data transmission, and the efficiency transmission. It will display the ideas of realization and the necessary critical technologies. There are some relevant technologies that this system us

6、ed, for example, the capture technology, the windows tray service, multi- thread processing, and the network news mechanism, and so on. Key words: Web Service; Heterogeneous Database; Synchronization; ADO.NET; 目目 錄錄 論文總頁數:24 頁 1引言 .1 1.1課題背景 .1 1.2國內外研究現狀 .1 1.3本課題研究的意義 .2 1.4本課題的研究方法 .2 2WEB SERVIC

7、E 數據庫同步原理.3 2.1WEB SERVICE構成與特點.3 2.1.1Web Servcie 的結構 .3 2.1.2Web Servcie 的關鍵技術-協議 .3 2.1.3Web Servcie 的特點 .4 2.1.4Web Servcie 安全 .5 2.2數據庫復制的分類 .5 2.3復制數據的類型 .6 2.4數據捕獲技術 .7 2.5沖突檢測 .8 3需求分析 .9 3.1同步環境 .9 3.2功能需求 .9 3.3性能需求 .10 3.4輸入輸出要求 .10 3.5運行需求 .10 4方案設計 .11 4.1數據庫同步復制模型 .11 4.2數據庫設計 .11 4.2.

8、1源結點 Sql Server 2000 表設計.11 4.2.2目的結點 Oracle 表設計.12 4.3模塊設計 .13 4.3.1數據捕獲部分.13 4.3.2同步部分.13 4.3.3沖突檢測處理部分.16 5代碼實現 .16 5.1開發環境 .16 第 1 頁 共 24 頁 5.2關鍵代碼詳解。 .16 5.2.1數據捕獲部分.16 5.2.2同步部分.17 6測試 .19 6.1功能測試 .19 6.2性能測試 .20 結 論 .21 參考文獻 .21 致 謝 .23 聲 明 .24 第 1 頁 共 24 頁 1 1 引言引言 1.11.1 課題背景課題背景 隨著信息化建設的深入

9、,企業和政府如何將己有的“信息孤島”連通起來, 實現信息的集成與共享是當前需要解決的一個關鍵問題。特別是企業和政府部 門多數采用層次管理摸式,各個部門、分支機構可能處于 Internet 上的不同區 域,上下級機構之間需要進行大量的數據匯總與分發,實現整個企業或政府部 門的數據集成。這種數據集成是從一個或多個數據庫中抽取數據,經過遠程傳 輸處理后再加載到另一個數據庫中。各分支機構數據庫系統又包括異構的與同 構的,這里的異構可以是操作系統的異構,可以是數據庫管理系統的異構,也 可以是數據庫內部表結構的異構。 然而,分布式數據庫系統既要提供局部自治又要實現全局控制,給數據的 同步帶來了很大的挑戰性

10、。如何在不同組織之間、不同類型、不同平臺的數據 庫系統之間進行數據同步工作,是數據庫領域一個研究方向。特別是對于異構 的情況。Web Service 的出現使異構數據庫同步的情況變得較為容易實現,因 為它是一種完全的無語言相關性、無平臺相關性、無對象相關性的模型。非常 適合于 Internet 上的數據集成。 1.21.2 國內外研究現狀國內外研究現狀 國外對數據集成的研究比較早,許多數據庫系統提供了專門的數據轉換集 成工具。如 SQL Server 2000 的 DTS, Oracle 的 SQL* Loader, IBM 的 Visual Warehouse 等。另外,還有一些第三方軟件開

11、發商也推出一些產品,例如: Ascential Software 公司的 DataStage, Applied Database Technology 公司 的 DataMapper, Dataflux 公司的 SmartScurb 和 Data Junction 公司開發的析 取包等。這些數據庫附帶的、第三方公司開發的數據集成工具對于結構化數據 在功能上可以說已經基本上能滿足一般的要求。而對于數據庫研究組織來說, 不少研究小組針對數據集成中一些重要的技術難點展開研究工作,例如集成模 型,數據集成的通用性,數據集成的構件化,數據轉換的技術,數據轉換規則 的制訂,數據同步策略等等。 異構數據同步

12、方法的研究現狀: 集成數據的質量是整個系統的關鍵點,而保證源數據和目標數據庫的數據 同步則是保證數據質量的前提,特別是在目前分布式異步數據集成的環境下, 減少數據傳輸過程中的冗余量,實現數據同步的高效性和增量報送成為數據同 步的目標。J.Hammer 教授討論了數據同步的兩種可能方法;如果數據源是功能 完備的數據庫系統,則可以通過定義一組觸發器,或者通過讀取日志的方式來 檢測分析數據源的變化實現數據同步。該方法的可行性及實現依賴于具體的數 第 2 頁 共 24 頁 據源類型,比如文本型數據源就不支持日志或觸發器機制。而對于任意類型的 數據源,都可以采用基于快照差分的方法實現數據同步:每隔一定時

13、期重新生成 基表的快照,同上一次的舊快照作差分計算,得到反映基表自上次到本次生成 快照以來變化的增量數據。增量數據中可以只包含數據源中被刪除或插入的元 組 W.J.Labio 綜述了可應用于快照差分的算法,包括幾種常用算法:Sort Merge 算法、Partition Hash 算法、Window 算法,和一類新提出的基于壓縮策 略的算法,并對所有這些算法作了詳盡的分析。在增量數據更新方面,目前有 五種技術可以達到數據增量更新的要求。第一種方法是掃描已經打上時間戳的 數據,當一個應用對記錄的最后一次修改打上時間戳時,掃描程序就根據時間 戳得到增量數據,但必須原業務系統存在時間戳字段:第二種方

14、法是掃描增量文 件,增量文件僅記錄應用中所發生的變化,有了增量文件,掃描的過程就會高 效,增量文件的生成可以改造應用來完成,如觸發器:第三種方法就是掃描日志 文件或審計文件,但必須使用某種技術手段作為日志文件內容輸出的接口,常 見的使用 Sybase 的工具 RepliactionServer 來識別:第四種方法就是修改以往 的應用程序代碼,使這些程序能夠數據集成;第五種方法就是將前后兩個快照文 件進行比對。 目前,國內大部分應用系統采用針對系統本身設計開發的數據集成工具, 有的甚至用手工方法實現數據抽取、轉換和加載。因此當目標數據庫結構發生 變化或者重建時,需要重新編程實現該過程。 1.31

15、.3 本課題研究的意義本課題研究的意義 分布式數據庫大量的應用,各種應用之間又有很多的交叉性。數據庫同步 就顯得很重要;特別是異構的情況,然而異構數據庫之間的同步不能應用數據 庫自帶的同步工具。另一方面,由于兩者分布在 Internet 中,防火墻的存在使得 同步無法使用特定端口通訊。但因為大多數企業會開放用于 HTTP 的 80 端口, 因而借助 Web Service 可以完成兩者的通訊。數據表要進行的操作,以 XML 形 式編碼作為消息內容。借助 XML 的無語言相關性、無平臺相關性、無對象相 關性來實現異構數據庫的同步,也可應用結構相同的分布式數據庫上。 1.41.4 本課題的研究方法

16、本課題的研究方法 本同步系統采用 Web Service 作為同步數據的傳輸,使用觸發器實時捕獲 數據庫的增量記錄,并保存到臨時緩沖表,以便供同步到目標數據庫,然后采用 Windows 服務實時的監視目標 IP 是否有需要同步的數據,如果存在目標 IP 同 步的數據,就向此 IP 發送同步消息,另外一端收到同步消息就調用 Web Servcie 方法獲取同步的數據,寫入到本地,寫入成功后向服務器方發送確認 消息;服務器收到確認后,將此 IP 同步了的數據標識為已讀。當所有主機同步 第 3 頁 共 24 頁 完成,就物理上刪除被同步了的數據。先實現 Sql Server 2000 同步到 Ora

17、cle,設計時考慮到多個 IP,多個不同異構數據的情況。 2 2 Web Service 數據庫同步原理數據庫同步原理 2.12.1 Web Service 構成與特點構成與特點 2.1.1 2.1.1 Web Servcie 的結構的結構 Web Service 由服務提供者、服務注冊中心和服務請求者三角色以及發布、 查找和綁定三個操作組成。三個角色的交互完成服務。交互涉及發布、查找和 綁定操作。圖 1 描述了角色調用操作完成服務的結構。服務提供者管理可以通 過網絡訪問 Web Service 的一個實例。服務提供者定義 Web Service 的服務描述, 并把它發布到服務請求或服務注冊中

18、心。服務請求者使用查找操作來從本地或 服務注冊中心檢索服務描述。然后使用服務描述與服務提供者進行綁定并調用 Web Service 實現或同它交互。服務提供者和服務請求者角色是邏輯結構,因而 服務可以表現兩種特性。圖 1 展示了這些操作、提供這些操作的組件及它們之 間的交互。 發布 綁定 查找 綁定 查找 圖 1 Web Service 的結構 2.1.2 2.1.2 Web Servcie 的關鍵技術的關鍵技術-協議協議 Web Service 中的主要服務協議包括:XML、SOAP、WSDL、UDDI,它們 構成一個互操作的協議棧。如圖 2 所示 服務提供者 服務注冊中心 服務請求者 服務

19、 服務描述 服務描述 第 4 頁 共 24 頁 UDDI 通用發現、描述、繼承 WSDL Web Service 描述語言 XML、HTTP SOAP 簡單對象訪問協議 圖 2 Web Service 的協議棧 XML(eXtensible Markup Language):可擴展的置標語言,是 W3C 組織于 1998 年 2 月發布的標準。XML 嚴格地定義可移植的結構化數據,并對數據賦予 上下文相關功能。Web 服務完全基于 XML 技術。服務提供者和服務請求者均使 用 XML 傳遞消息和數據流。 SOAP(Simple Object Access Protocol):簡單對象訪問協議,

20、SOAP 完全 獨立于任何廠商,可以相對于任何編程語言、對象模型、操作系統和平臺獨立 實現。它為在分布式環境下使用 XML、對等地交換結構化和類型化的信息提供 了一個簡單且輕量級的機制。HTTP 作為低層通信協議實現了 SOAP 把基于 HTTP 的 Web 技術與 XML 的靈活性和擴展性結合在一起,并有助于實現異構平臺之間 的互相操作性,從而使其擴展性結合在一起,并有助于實現異構平臺之間的互 操作性,從而使其擴展到 Internet 上的分布式計算和數據集成。HTTP 作為一 種普遍接受的協議被用于任何地方及任何平臺上,XML 也同 HTTP 一樣得到普遍 應用,由于 XML 是文本格式文

21、件,所以 SOAP 實質上是一個基于文本的協議,它 沒有對平臺和環境的依賴性。 WSDL (Web Servcie Description Language):Web 服務描述語言,定義了 一個基于 XML 的組件描述標準機制,用來描述 Web 服務的相關信息,它把網絡 服務定義成一個能交換消息的通信端點集。用 WSDL 定義的一套 XML 語法描述的 網絡服務的方式,使用戶端的程序要知道 Web 服務提供了什么服務可以進行調 用。 UDDI (Universal Description Discovery and Integration):通用描述、 發現和集成協議,是一套基于 Web 的、

22、分布式的 、為 Web 服務提供信息注冊的 實現標準規范,是一個跨產業、跨平臺的 開發性架構。可幫助 Web 服務提供者 在 Internet 上公布自己推出的 Web 服務。 2.1.3 2.1.3 Web Servcie 的特點的特點 Web Service 技術的主要目標就是在現有各種異種平臺的基礎上,構筑一 個通用的平臺無關、語言無關的技術層。各種不同平臺之上的應用依靠這個技 第 5 頁 共 24 頁 術層來實施彼此的連接和集成,從而讓使用不同系統和不同編程語言的人們能 夠相互交流和分享數據。Web Service 并不是構件技術發展中的一個革命性改 變。而只是一種較大的進展。它是對象

23、構件技術在 Internet 上的延伸,是一種 部署在 Web 上的對象構件。是封裝成單個實體并發布到網絡上供其它程序使用 的功能集合,它不會完全取代現在的構件技術。 2.1.4 2.1.4 Web Servcie 安全安全 考慮的安全僅僅是 Web Service 在交換數據中的安全。因此,設定的安全 目標是: .客戶端確認服務器的身份; .服務器來確認客戶端的身份; .保證傳輸的數據在傳輸過程中不被監聽; .保證傳輸的數據在傳輸過程中不被篡改。 2.22.2 數據庫復制的分類數據庫復制的分類 數據庫復制有不同的分類方法,不同的分類采用的復制方法往往不同。按 照復制的方向劃分為單向(unid

24、irectional)復制和雙向(hi-directional)復制, 按照傳播更新的方式劃分為同步(synchronous)復制和異步(asynchronous)復制。 單向復制,也稱主從式(master/slave 或 primary/secondary)復制或主版 本(master copy)復制,指的是兩個復制結點之間只從一個結點向另一個結點進 行復制,源結點保存復制對象,目標結點保存復制對象的副本,源結點中數據 對象具有可讀可寫的特性,目標結點中的數據對象只具有可讀的特性,修改數 據對象需要在源結點上進行,從而預防了更新沖突的發生。這種復制方式比較 簡單,應用范圍也比較廣。 雙向復制

25、也稱對等式(peer-to-peer)復制,多版本(multi-copy)復制或隨 處修改(update anywhere)復制,指的是兩個復制結點之間可以互相復制,復制 結點既是源結點也是目標結點。源結點和目標結點上的復制對象都是可讀可寫 的。在分布式環境下可能對同一復制對象同時進行修改,所以在理論上存在沖 突的可能性,因此雙向復制中的一個重要問題就是如何檢測預防和解決復制中 的沖突。雙向復制比單向復制更加復雜,實現難度也較大,但應用的范圍要更 廣泛一些,在移動環境、動態環境等場合下大多采用這種復制方式。 同步復制又稱為急切(eager)復制,是在一個原子事務中同時更新所有的復 制結點,同步

26、復制可以進行序列化操作,但是在交互過程中需要更多的消息交 互,從而降低了復制性能,也增加了事務執行的響應時間。同步復制不適合移 動應用場合,因為移動設備不可能保持實時的連接,通常采用另一種復制方法 第 6 頁 共 24 頁 異步復制。 異步復制又稱為懶惰(lazy)復制,是在本地事務提交以后再將本地數據的 變更反映到其他復制結點上,這種方式不需要實時的連接,可以很好的提高復 制的性能,但異步復制的一個問題是在復制結點中存在“臟”數據,當兩個事 務在不同節點讀和寫數據時,就無法保證事務的序列化,這種復制方式一般應 用在對數據一致性要求不是很高的地方。 同步復制和異步復制的應用場合不同。同步復制可

27、以保證系統所有結點數 據的實時一致性,對于銀行此類系統一般采用同步復制方法。異步復制無法保 證數據的實時一致性,可以應用在移動設備數據復制,多級管理信息系統中。 2.32.3 復制數據的類型復制數據的類型 數據庫復制需要在數據庫之間傳輸數據記錄,這些數據記錄是數據庫中記 錄的一種劃分,這種劃分與數據庫中的記錄存在一定的邏輯關系,按照這種邏 輯關系把復制數據分為以下幾種: 1. 全劃分:復制數據為數據庫中所有表中的所有記錄。數據庫中記錄的任 意變化都需要進行復制操作。 2. 水平劃分:復制數據只是表中的部分記錄,只對滿足復制條件的記錄進 行復制操作。 3. 垂直劃分:復制數據只是記錄的部分字段,

28、不需要對全部改變的字段值 進行復制操作。 4. 水平垂直劃分:復制數據是水平劃分和垂直劃分的組合。 5. 函數統計劃分:復制數據是對記錄進行統計運算的結果。 復制數據的不同劃分用于不同的場合。對于緩存數據庫或備份數據庫一般 采用全劃分的方式,所有的數據都進行復制。水平和垂直劃分對數據進行了過 濾操作,往往用在數據保密,分級管理方面,可以提高復制的效率,降低不必 要的數據傳輸。函數統計劃分主要用在基礎數據不全或者特定情況下不能傳輸 基礎數據而只能傳輸統計數據的情況下,這種方式可以大大的降低數據傳輸量, 同時可以直接利用統計數據,而無需每次都通過基礎數據來生成統計數據,提 高了數據庫的性能,滿足了

29、統計方面的需求。 復制數據按照傳輸數據的形式分為完整拷貝(full copy),增量修改 (incremental-update),凈變化(neat change)三種。 完整拷貝方式:源數據庫中所有的記錄都傳送到目標數據庫中。完整拷貝的 優點是實現起來簡單容易,不占用額外資源,不需要進行沖突檢測等方面的工 作,但其缺點是效率較低,只能應用在初始化復制、崩潰恢復等場合。 增量修改方式,也稱標量(scalable)方式:在這種方式下需要將事務對數據 第 7 頁 共 24 頁 的操作內容全部保存下來,傳輸的數據就是操作的完整序列。增量修改的最大 優點就是滿足復制的單副本可串行性化。這種方式能夠提供

30、詳細的控制信息, 適用于多種復制方式,但保存全部的操作序列需要較多的資源,設計通用的存 儲結構也較復雜。 凈變化方式:傳輸的數據為兩次復制之間更新數據的凈變化值。這種方式需 要記錄上一次復制的狀態,在下一次復制時將上次復制以來的所有變化數據從 數據庫中提取出來作為復制數據項。凈變化方式只傳輸改變的數據,因此傳輸 的數據量是最小的,實現方法也較簡單,可以明顯的提高復制性能,但是這種 方式不是以事務為依據對數據進行劃分,所以不能用于同步復制,在數據復制 的過程中也存在一定的問題。 2.42.4 數據捕獲技術數據捕獲技術 復制數據和數據捕獲技術有一定的相關性,不同種的數據捕獲技術在生成 復制數據的能

31、力方面上有所不同。現在常用的數據捕獲技術包括觸發器法、快 照法、控制表變化法等。 1. 快照法 快照(snapshot)是在某一時刻將數據庫中存儲對象的狀態存儲下來,構成 當前數據庫的一個映像文件,將此映像文件作為復制數據,用來更新其他的數 據庫。 快照法只是在復制時進行一次全面掃描,實現簡單,它不需依賴特別的 機制,也不占用系統資源,在復制初始化和崩潰恢復時通常需要采用這種方式。 由于快照法生成完全拷貝的復制數據,因此效率很低,應用的范圍也比較小。 Oracle 和 MS SQL Server 數據庫明確提供了基于快照的捕獲方法。一般的復制 方案在初始化時往往也使用這種方法。 2. 觸發器法

32、: 觸發器是一種特殊類型的存儲過程,當使用 UPDATE、INSERT 或 DELETE 對 指定數據表中數據進行操作時,觸發器就會生效,通過分析操作的相關信息, 可以在觸發器中定義復雜的業務規則。觸發器法就是通過捕獲這些操作并將數 據操作的信息保存到日志中或者直接進行復制操作。如圖 3 觸發器數據捕捉方 式所示。 觸發器法避免了不必要的數據傳輸,克服了基于快照法的主要缺點, 大大提高了效率,可以用于同步復制和雙向復制。但是觸發器機制需要數據庫 系統的支持,并且為了支持不同的復制數據類型,復制方法需要設置不同的觸 發器腳本,給系統維護和變更帶來了不便。 第 8 頁 共 24 頁 圖 3 觸發器

33、數據捕捉方式 由于大型數據庫系統基本上都提供了完善的觸發器機制,因此大型數據庫 廠商提供的數據庫復制方案往往都運用了這種捕獲方法,如 Oracle 的對稱復制 (Symmetric Replication)綜合應用了快照和觸發器兩種捕獲方法。 3. 控制表變化法 控制表變化(Control Table Change)法就是創建一張包含復制源表的主鍵 字段和一些控制信息字段的控制表,當復制表中的記錄發生變化時,則修改控 制表中相應關鍵字的記錄,在控制信息字段中記錄變化的情況,這一過程可以 通過觸發器,中間件來實現,復制數據可以根據控制表中記錄的變化情況生成。 通過控制表變化法得到的復制數據是數據

34、庫的凈變化,效率較高,由于只保存 了主鍵信息和部分控制信息,所以在空間占用方面也較小。控制表變化法可適 用于除同步復制以外的各種復制形式。 上述的幾種數據捕獲方法各有優缺點,需要結合你的具體應用具體的選擇。 2.52.5 沖突檢測沖突檢測 數據庫復制采用不同的復制方式,復制不同類型的數據都會在復制中產生 各種不同的沖突。下面是幾種常見的沖突。 1. 表間沖突:復制數據不能滿足本地數據庫表上定義的約束條件而造成的 沖突。進行復制數據設計時需要考慮表上定義的完整性約束,引用約束等,否 則在進行數據復制時會因為這些約束無法導入數據。凈變化方式不滿足單副本 可串行化,在進行數據更新時需要更多的考慮表間

35、沖突問題。 2. 唯一性沖突:發生在一個更新產生了一個違反主鍵或唯一性約束時。不 同的結點根據本地數據庫規則設置數據,這時不合理的主鍵生成規則或者是錯 誤的輸入都有可能產生主鍵沖突或者是唯一性沖突。 3. 更新沖突:對于異步更新,本地數據的更新和遠程數據的更新存在時間 差,在這種情況下兩個或多個復制站點可能同時更新一條記錄,如果更新同一 條記錄的相關字段就會存在列級沖突。 第 9 頁 共 24 頁 4. 刪除沖突:發生在一個結點更新另一個結點已刪除的一行時,或者同一 條記錄在不同的復制站點被刪除時。 3 3需求分析需求分析 為了明確系統的應達到的目標,確定系統必須做什么,清楚地理解所要解 決的

36、問題。在下面描述軟件的功能和性能的需求。確定了軟件設計的約束。 3.13.1 同步環境同步環境 本系統的同步環境如圖 4: 圖 4 同步環境 Oracle 9i,mySQL 等不同類型的數據庫通過 Internet 來獲取 SQL Server 2000 的數據,通信的兩端都存在防火墻,提供了一臺 Web 服務器用于發布 Web Service。 3.23.2 功能需求功能需求 本設計要實現的功能: 1. 能夠使處于 Internet 上的異構數據庫的單向同步功能,初步先實現 Sql Server2000 向 Oracle 與的同步,需要考慮其它數據庫的情況比如 my Sql 等。 2. 同步

37、數據需要可靠的傳輸,保證數據能夠準確、完全的傳輸到被同步的 一方。 3. 同步需要一定安全性,能夠按照進行同步 IP 或則物理地址來驗證同步 身份。 4. 由于數據在 Internet 上傳輸,必須保證同步數據的傳輸開銷小,安全 等。 5. 能夠實現不同主機的多個數據庫同時同步功能。 6. 對實時性同步、定期同步可配置,既可以選擇實時同步、手動同步或則 按需要同步的數據量來同步。 7. 同步信息可以配置性。同步信息包括:同步的字段、字段類型、同步的 表、分配了權限的同步主機等。 第 10 頁 共 24 頁 8. 同步的數據類型能夠是不同的類型,比如數值型向字符型的同步等。能 夠對同步的某個字段

38、做特殊的處理后再同步。既是能夠實現多個字段合并為一 個字段,或則一個、多個字段分解為更多個字段。 9. 同步的配置界面化,操作方便、易使用。 10.對網絡連接斷開后能夠保證同步數據的不丟失,網絡連上后能接著繼續 同步。 11.對異常的信息提示盡量多,比如配置系統時對不正確的配置及時提示, 以便產生同步的異常。 12.當是多個數據庫同步到一個數據庫時需要解決同步沖突。 13.系統需要有一定擴展性。 3.33.3 性能需求性能需求 1.精度: 1) 服務器端的增量數據能夠準確的同步到客戶端,不應該存在數據被 截斷的情況。 2) 數據傳輸過程中對數據丟失的情況,應該不影響同步數據的完整性。 2. 時

39、間特性要求: 1)同步操作對其它正常的數據庫應用,無明顯性能降低現象。 2)對配置了實時性同步的,同步延遲應小于 1 分鐘(除網絡斷開等異 常情況)。 3. 靈活性 1) 同步的字段可動態配置,當添加、修改字段后可以通過簡單的配置 來實現修改后的同步。 3.43.4 輸入輸出要求輸入輸出要求 輸入:服務器端數據的改變。 處理:字段合并,分解或者是一定的運算加工。 輸出:將處理了的數據更新到客戶端。 3.53.5 運行需求運行需求 1. 硬件環境需求: 客戶端、服務器端:專用數據庫服務器,P4 以上,512M 以上內存,80G 以 上硬盤;Internet 網絡連接。 2. 軟件環境: 源端:W

40、indows 2003/XP 操作系統、Sql Server 2000 數據庫、IIS 5.0、.NET Framework1.1。 第 11 頁 共 24 頁 目標端: Windows 2003/XP 操作系統、數據庫環境、.NET Framework1.1。 4 4方案設計方案設計 結合前面的同步原理,以及需求的介紹,下面給出同步的方案設計: 4.14.1 數據庫同步復制模型數據庫同步復制模型 模型包括源結點和目標結點兩大塊。源結點模塊包括:數據庫捕獲模塊、 數據生成模塊、Web Service、同步控制模塊、定時器、配置模塊等組成。目標 結點包括:數據庫同步控制模塊、數據導入模塊、配置模

41、塊。如圖 5 所示。 圖 5 系統模塊 4.24.2 數據庫設計數據庫設計 系統包括源端數據庫設計以及目的端數據庫設計。 4.2.1 4.2.1 源結點源結點 SqlSql ServerServer 20002000 表設計表設計 1) E-R 圖如圖 6 第 12 頁 共 24 頁 圖 6 E-R 圖 2) 數據表如表 1: 表 1:tLJ(數據表) 邏輯字段名物理字段名字段類型是否為空主鍵外鍵說 明 編號 IintNOT NULLYesNo 自增加 姓名 NameVarchar(20)NOT NULLNoNo 描述 DesVARCHAR(1000)NULLNoNo 年齡 AgeintNUL

42、LNoNo 3) 控制表如表 2、表 3、表 4、表 5: 表 2 同步緩沖臨時表:tTemp 邏輯字段名物理字段名字段類型是否為空主鍵外鍵說 明 編號 IintNOT NULLYesNo 動作標識 SigntinyintnullNoNo 插入 1,刪除 2,更新 3 數據表名 tableNameVARCHAR(20)NULLNoNo 數據表的表名 數據記錄主鍵 infoIDintNot nullnono 數據表的記錄 主鍵 寫入時間 InsertDateDateTimeNULLNoNo 表 3 讀取狀態表: tReadState 邏輯字段名物理字段名字段類型是否為空主鍵外鍵說 明 編號 Ii

43、ntNOT NULLYesNo 讀取了數據的 IP IPtinyintnullNoYes tIPConfig.I 的外鍵 同步緩沖 ID infoIDintNot nullnoYes 數據表的記錄 表 4 同步 IP 配置表: tIPConfig 邏輯字段名物理字段名字段類型是否為空主鍵外鍵說 明 編號 IintNOT NULLYesNo 自增加 要同步的 IP IPVarcahr(14)nullNoNo 開啟狀態 isOpenintNot nullnono 上次讀取時間 ReadDateDatetimeNot nullNono 表 5 讀取緩沖表:tReadTemp 邏輯字段名物理字段名字段

44、類型是否為空主鍵外鍵說 明 編號 IintNOT NULLYesNo 自增加 讀取 ip IPtinyintnullNoNo 與 tIPConfig.I 關聯 同步緩沖表編 號 InfoIdintNot nullnoNo 同步緩沖表編 號 讀取時間 CreateDateDatetimeNot nullNoNo 讀取秩序號 ReadNointNot nullNoNo 第 13 頁 共 24 頁 4.2.2 4.2.2 目的結點目的結點 OracleOracle 表設計表設計 表 6: tLJ 邏輯字段名物理字段名字段類型是否為空主鍵外鍵說 明 編號 INumber(22)NOT NULLYesN

45、o 姓名 NameVarchar2(50)NOT NULLNoNo 描述 DesVARCHAR2(1000)NULLNoNo 年齡 AgeNumber(22)NULLNoNo 表 7: CopyT1 邏輯字段名物理字段名字段類型是否為空主鍵外鍵說 明 編號 IVARCHAR2(50)NOT NULLnoNo 姓名, 年齡 NameAgeVarcahr2(100) NULLNoNo 年齡 DesVarcahr2(1000)NOT NULLNoNo 4.34.3 模塊設計模塊設計 該模型按照功能劃分為三個部分,一是數據捕獲部份,二是同步部份,三 是沖突檢測處理部份(如圖 7)。 圖 7 模塊圖 4

46、.3.1 4.3.1 數據捕獲部分數據捕獲部分 包含數據捕獲模塊和控制變化表兩個部分。數據捕獲模塊采用基于觸發器 的方式進行數據的捕獲。控制表用來保存數據庫操作的歷史記錄,其基本思想 來源于控制表變化法,即在這些表中記錄每次更新記錄的主鍵信息、表名等, 這種數據捕獲方式獲得的是復制數據的凈變化,可以大大的降低網絡傳輸量, 提高復制性能。控制變化表的格式如上源結點 Sql Server 2000 表設計 。 同步緩沖臨時表 tTemp:用于記錄數據表記錄主鍵、數據表記錄表名,記 錄寫入時間等。當數據表有被修改、添加、刪除時觸發器就向此表寫入更新記 錄 id 等信息。如果是更新 sign 字段的值

47、為 3 ,刪除時 sign 值為 2,插入時 sign 值為 1,當某條記錄在某一時間段內被重復操作了多次時 sign 字段的值始 終保存追后一次的操作。 4.3.2 4.3.2 同步部分同步部分 包括定時器、同步控制模塊、數據導入、Web Servcie、驗證模塊。 沖突檢測 捕獲 同步 第 14 頁 共 24 頁 1.1. 定時器定時器 定時器包含于一個 Windows 服務中,每隔一定的時間檢測 IP 配置表里被 開啟 IP 是否有同步的數據。如果存在同步的數據就啟動同步控制模塊。通過 IP 配置表可以授權某個主機來獲取同步數據。從而起到一定的安全性與高性能。 2.2. 同步控制模塊:同

48、步控制模塊: 1) 在源結點端 在源節點端當定時器通過驗證模塊檢查到某個 IP 有要同步的數據時,就啟 動一個服務線程,并向這個 IP 的特定端口發送 Socket 消息,并等待這個 IP 返 回同步成功的確認消息。當收到確認消息后(此確認消息包含一個同步批次號也 就是“讀取緩沖表:tReadTemp”中的“讀取秩序號:ReadNo” ,“讀取緩沖表” 是在目標端讀取數據后寫入的,在后面將要介紹到),然后源端控制模塊操縱同 步控制表將讀取了的記錄關鍵字以及目的端 IP 寫入“讀取狀態表: tReadState”表示本批次記錄的這個目的端已經讀取、下次不在讀取。當所有 的配置表里的目標端都完成同

49、步后,就物理上刪除控制表里的相關記錄。 2) 在目標端 目的端在啟動了以后就一直監聽源端是否有同步信號(監聽的源端 IP 以及 端口能夠通過讀取本地的 XML 配置文件得到),當監聽到同步信號,創建一個線 程來啟動“數據導入模塊” ,在“數據導入模塊”處理完畢后向源端發送確認消 息,此確認消息包含“數據導入模塊”導入成功與否的標識,如果正常導入此 消息就是同步的序號也就是上面提到的同步批次號。 3) 數據導入 與本模塊相管的 XML 配置文件如下: 第 15 頁 共 24 頁 其中每個結點 T 表示需要與源端同步的一張表,name 屬性給出了同步表的 對應關系,結點 T 的子結點 fields

50、 記錄了同步表中對應的字段名,字段類型, 字段大小等。通過此配置文件能夠對全劃分、水平劃分、垂直劃分、水平垂直 劃分、函數統計劃分等不同復制數據類型的支持。 開始執行時,就先遍歷此 XML 文檔,有多少個 T 結點就循環多少次來實現 從源端提供的 Web Service 讀取數據,讀取數據時需要傳入要讀取的表名以及 目的端的 IP,然后根據配置文件中的字段對應關系,經過類型轉換處理、合并 分解處理后,寫入到本地。 寫入到本地時由于在源端,對數據庫記錄的操作都記錄在控制變化表中, 復制數據就是依據這些表加以確定,但從控制變化表中獲得的是數據的凈變化, 無法保證單副本可串行化,在進行數據導入時就會

51、由于數據庫中定義的外鍵約 束出現表間沖突,一種解決的方式就是在導入數據時臨時禁用數據庫的外鍵檢 查功能。大型的數據庫系統一般都提供了禁用外鍵檢查的功能,如在 MS SQL Server 2000 中可以使用通過命令在進行導入時臨時禁用數據庫的外鍵檢查功 能,在完成以后再恢復外鍵檢查,但是在恢復外鍵檢查功能時,數據庫會自動 對整個數據庫進行一遍外鍵檢查,這樣會帶來比較大的性能問題,特別是在數 據量比較大時這種開銷往往無法接受,而且這種檢查是完全沒有必要的。除了 臨時禁用外鍵檢查功能以外,還有一種方式是完全取消數據庫系統提供的外鍵 檢查功能,即不在數據表上定義外鍵約束,而是通過觸發器等方式實現外鍵

52、檢 查。在進行數據導入時可以設置標志位說明不進行外鍵檢查,這樣就可以暫時 忽略外鍵約束,但每次外鍵檢查都需要查詢外鍵表,這種實現方式會比數據庫 本身提供的外鍵檢查付出更大的代價,因此提出兩步法生成凈變化方式下無外 鍵沖突的復制數據。第一步是生成無外鍵值的操作序列 SN,第二步生成只包含 外鍵值的更新序列 SU。在導入序列 SN 時需要保證外鍵字段允許為空,如果根 據業務規則允許外鍵字段為空,那么就不需要做額外的工作,否則需要在數據 庫設計時將外鍵字段設置允許空,然后通過觸發器等方式在數據更新時進行檢 查,這種方式只需要檢查值是否為空,代價要遠遠小于檢查外鍵表。根據兩步 法生成同步數據的步驟是:

53、 (1)從 Web Servcie 得到的數據中分離出外鍵,分別用兩個虛擬表按順序 保存外鍵置為空的數據 T1 與僅外鍵與主鍵 T2。 (2)然后寫入 T1。 (3)根據 T2 中的主鍵更新外鍵數據。 3.3. WebWeb ServiceService 提供一個可供 Internet 上調用的數據發布方法,發布的數據是以 XML 序 列化的形式傳輸的、便于不同平臺的互相操作。通過傳入 ip、表名控制讀取同 第 16 頁 共 24 頁 步的數據此 ip 應該讀的數據,并且將讀取了的數據主鍵的信息保存到“讀取緩 沖表:tReadTemp” ,如果是在配置表里無配置則不能讀取數據。讀取步驟: 1)

54、 目的方調用 Web Service 方法傳入目的 IP,要同步的表名。 2) Web Servcie 根據傳入的參數,先判斷是否是系統的“合法用戶”,如 果是合法的身份就先得到本次讀取的編號,此讀取編號是“讀取緩沖表: tReadTemp”表中的“讀取秩序號:ReadNo”的最大值加 1 得到的。供以后同 步控制用。 3) 然后根據讀取“同步緩沖臨時表:tTemp”表中記錄的數據表里的主鍵 來讀取數據。 4) 讀取的數據是在“讀取狀態表: tReadState”表里無本 IP 記錄的記錄。 5) 將上步讀了的數據保存到“ 讀取緩沖表:tReadTemp”里,如果在 tReadTemp 表里存

55、在該信息主鍵就更新這條記錄的讀取時間和讀取秩序號為當 前讀取時間和讀取秩序號。 4.4. 驗證模塊驗證模塊 驗證模塊應用在源端的同步控制模塊和目的端的數據導入模塊,主要完成 控制特定 IP 來同步數據,提高安全性與性能。 4.3.3 4.3.3 沖突檢測處理部分沖突檢測處理部分 異步復制存在的一個主要問題就是沖突問題,前面已經說明了常見的幾種 沖突,在上面的同步部分也通過設計避免了其中的一種沖突,但對于其他沖突 還需要采用其他的方法進行解決。沖突檢測和處理部分就是在數據導入過程中 檢測各種可能的沖突。 5 5代碼實現代碼實現 5.15.1 開發環境開發環境 開發平臺的選擇:本系統的開發平臺選擇

56、微軟公司的 .NET,開發工具采用 ASP.NET。.NET 是 Microsoft 面向 XML Web 服務的平臺,由框架、Web 服務、 .NET 企業服務器等幾部分組成,提供涉及面較廣、功能較全面的解決方案。 XML Web 服務使應用程序能夠共享數據,可以跨平臺和操作系統。 數據庫選擇:根據需求分析選擇了 Sql Server 2000+Oracle 9i 的組合。 5.25.2 關鍵代碼詳解關鍵代碼詳解。 5.2.1 5.2.1 數據捕獲部分數據捕獲部分 這部份的功能就是動態的捕獲數據表里數據的變化,其主要的實現就是在 數據表上定義一個觸發器用于記錄本表的凈變化。此觸發器如下: A

57、LTER TRIGGER tlj_Trigger 第 17 頁 共 24 頁 ON dbo.tlj -數據表 FOR INSERT, UPDATE, DELETE AS begin IF EXISTS(select * from deleted) and exists(select * from inserted) begin -更新 delete from dbo.tTemp where infoID in(select I from inserted) and TableName=dbo.tlj insert into dbo.tTemp(infoID,TableName,Sign) se

58、lect I,dbo.tlj,3 from inserted end else if not EXISTS(select * from deleted) and exists(select * from inserted) begin -插入 insert into dbo.tTemp(infoID,TableName,Sign) select I,dbo.tlj,1 from inserted end else if EXISTS(select * from deleted) and not exists(select * from inserted) begin -刪除 delete fr

59、om dbo.tTemp where infoID in(select I from deleted) and TableName=dbo.tlj insert into dbo.tTemp(infoID,TableName,Sign) select I,dbo.tlj,2 from deleted end end 當更新、刪除數據表時,先根據數據表關鍵字與數據表名稱刪除“同步緩 沖臨時表:tTemp”里有的記錄,然后將被修改、刪除的數據表關鍵字、表名、 修改刪除的標識寫入 tTemp 表。當向數據表新增加記錄時只要寫入 tTemp 表即 可。 5.2.2 5.2.2 同步部分同步部分 1 同

60、步控制模塊 源端: 主要包含于 Windows 服務里,通過 Timer 的執行函數調用。其關鍵代碼如下: public static string OpenConn(string IP,string Port) string strResult=-4,-3,-5,-2,-1; IPAddress HostAddr=IPAddress.Parse(IP); IPEndPoint host=new IPEndPoint(HostAddr,int.Parse(Port); Socket s=new Socket(AddressFamily.InterNetwork,SocketType.Strea

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論