基于WEB SERVICE的數據庫同步系統的設計與實現—畢業設計論文_第1頁
基于WEB SERVICE的數據庫同步系統的設計與實現—畢業設計論文_第2頁
基于WEB SERVICE的數據庫同步系統的設計與實現—畢業設計論文_第3頁
基于WEB SERVICE的數據庫同步系統的設計與實現—畢業設計論文_第4頁
基于WEB SERVICE的數據庫同步系統的設計與實現—畢業設計論文_第5頁
已閱讀5頁,還剩29頁未讀, 繼續免費閱讀

下載本文檔

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

文檔簡介

1、畢業設計(論文)基于Web Service的數據庫同步系統的設計與實現論文作者姓名:申請學位專業:申請學位類別:指導教師姓名職稱:論文提交日期:基于Web Service的數據庫同步系統的設計與實現摘 要結合當前流行的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 Abstrac

3、tWe 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 sto

4、rage 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頁 TOC o 1-3 h z u HYPERLINK l _Toc172959937 1引言 PAGEREF _Toc172959937 h 1 HYPERLI

7、NK l _Toc172959938 1.1課題背景 PAGEREF _Toc172959938 h 1 HYPERLINK l _Toc172959939 1.2國內外研究現狀 PAGEREF _Toc172959939 h 1 HYPERLINK l _Toc172959940 1.3本課題研究的意義 PAGEREF _Toc172959940 h 2 HYPERLINK l _Toc172959941 1.4本課題的研究方法 PAGEREF _Toc172959941 h 2 HYPERLINK l _Toc172959942 2Web Service數據庫同步原理 PAGEREF _T

8、oc172959942 h 3 HYPERLINK l _Toc172959943 2.1Web Service構成與特點 PAGEREF _Toc172959943 h 3 HYPERLINK l _Toc172959944 2.1.1Web Servcie的結構 PAGEREF _Toc172959944 h 3 HYPERLINK l _Toc172959945 2.1.2Web Servcie的關鍵技術協議 PAGEREF _Toc172959945 h 3 HYPERLINK l _Toc172959946 2.1.3Web Servcie的特點 PAGEREF _Toc172959

9、946 h 4 HYPERLINK l _Toc172959947 2.1.4Web Servcie平安 PAGEREF _Toc172959947 h 5 HYPERLINK l _Toc172959948 2.2數據庫復制的分類 PAGEREF _Toc172959948 h 5 HYPERLINK l _Toc172959949 2.3復制數據的類型 PAGEREF _Toc172959949 h 6 HYPERLINK l _Toc172959950 2.4數據捕獲技術 PAGEREF _Toc172959950 h 7 HYPERLINK l _Toc172959951 2.5沖突檢

10、測 PAGEREF _Toc172959951 h 8 HYPERLINK l _Toc172959952 3需求分析 PAGEREF _Toc172959952 h 9 HYPERLINK l _Toc172959953 3.1同步環境 PAGEREF _Toc172959953 h 9 HYPERLINK l _Toc172959954 3.2功能需求 PAGEREF _Toc172959954 h 9 HYPERLINK l _Toc172959955 3.3性能需求 PAGEREF _Toc172959955 h 10 HYPERLINK l _Toc172959956 3.4輸入輸出

11、要求 PAGEREF _Toc172959956 h 10 HYPERLINK l _Toc172959957 3.5運行需求 PAGEREF _Toc172959957 h 10 HYPERLINK l _Toc172959958 4方案設計 PAGEREF _Toc172959958 h 11 HYPERLINK l _Toc172959959 4.1數據庫同步復制模型 PAGEREF _Toc172959959 h 11 HYPERLINK l _Toc172959960 4.2數據庫設計 PAGEREF _Toc172959960 h 11 HYPERLINK l _Toc172959

12、961 4.2.1源結點Sql Server 2000表設計 PAGEREF _Toc172959961 h 11 HYPERLINK l _Toc172959962 4.2.2目的結點Oracle表設計 PAGEREF _Toc172959962 h 12 HYPERLINK l _Toc172959963 4.3模塊設計 PAGEREF _Toc172959963 h 13 HYPERLINK l _Toc172959964 4.3.1數據捕獲局部 PAGEREF _Toc172959964 h 13 HYPERLINK l _Toc172959965 4.3.2同步局部 PAGEREF

13、_Toc172959965 h 13 HYPERLINK l _Toc172959966 4.3.3沖突檢測處理局部 PAGEREF _Toc172959966 h 16 HYPERLINK l _Toc172959967 5代碼實現 PAGEREF _Toc172959967 h 16 HYPERLINK l _Toc172959968 5.1開發環境 PAGEREF _Toc172959968 h 16 HYPERLINK l _Toc172959969 5.2關鍵代碼詳解。 PAGEREF _Toc172959969 h 16 HYPERLINK l _Toc172959970 5.2.

14、1數據捕獲局部 PAGEREF _Toc172959970 h 16 HYPERLINK l _Toc172959971 5.2.2同步局部 PAGEREF _Toc172959971 h 17 HYPERLINK l _Toc172959972 6測試 PAGEREF _Toc172959972 h 19 HYPERLINK l _Toc172959973 6.1功能測試 PAGEREF _Toc172959973 h 19 HYPERLINK l _Toc172959974 6.2性能測試 PAGEREF _Toc172959974 h 20 HYPERLINK l _Toc1729599

15、75 結 論 PAGEREF _Toc172959975 h 21 HYPERLINK l _Toc172959976 參考文獻 PAGEREF _Toc172959976 h 21 HYPERLINK l _Toc172959977 致 謝 PAGEREF _Toc172959977 h 23 HYPERLINK l _Toc172959978 聲 明 PAGEREF _Toc172959978 h 24引言 課題背景隨著信息化建設的深入,企業和政府如何將己有的“信息孤島連通起來,實現信息的集成與共享是當前需要解決的一個關鍵問題。特別是企業和政府部門多數采用層次管理摸式,各個部門、分支機構可

16、能處于Internet上的不同區域,上下級機構之間需要進行大量的數據匯總與分發,實現整個企業或政府部門的數據集成。這種數據集成是從一個或多個數據庫中抽取數據,經過遠程傳輸處理后再加載到另一個數據庫中。各分支機構數據庫系統又包括異構的與同構的,這里的異構可以是操作系統的異構,可以是數據庫管理系統的異構,也可以是數據庫內部表結構的異構。然而,分布式數據庫系統既要提供局部自治又要實現全局控制,給數據的同步帶來了很大的挑戰性。如何在不同組織之間、不同類型、不同平臺的數據庫系統之間進行數據同步工作,是數據庫領域一個研究方向。特別是對于異構的情況。Web Service的出現使異構數據庫同步的情況變得較為

17、容易實現,因為它是一種完全的無語言相關性、無平臺相關性、無對象相關性的模型。非常適合于Internet上的數據集成。 國內外研究現狀國外對數據集成的研究比擬早,許多數據庫系統提供了專門的數據轉換集成工具。如SQL Server 2000的DTS, Oracle的SQL* Loader, IBM的Visual Warehouse等。另外,還有一些第三方軟件開發商也推出一些產品,例如:Ascential Software公司的DataStage, Applied Database Technology公司的DataMapper, Dataflux公司的SmartScurb和Data Junctio

18、n公司開發的析取包等。這些數據庫附帶的、第三方公司開發的數據集成工具對于結構化數據在功能上可以說已經根本上能滿足一般的要求。而對于數據庫研究組織來說,不少研究小組針對數據集成中一些重要的技術難點展開研究工作,例如集成模型,數據集成的通用性,數據集成的構件化,數據轉換的技術,數據轉換規那么的制訂,數據同步策略等等。異構數據同步方法的研究現狀:集成數據的質量是整個系統的關鍵點,而保證源數據和目標數據庫的數據同步那么是保證數據質量的前提,特別是在目前分布式異步數據集成的環境下,減少數據傳輸過程中的冗余量,實現數據同步的高效性和增量報送成為數據同步的目標。J.Hammer教授討論了數據同步的兩種可能方

19、法;如果數據源是功能完備的數據庫系統,那么可以通過定義一組觸發器,或者通過讀取日志的方式來檢測分析數據源的變化實現數據同步。該方法的可行性及實現依賴于具體的數據源類型,比方文本型數據源就不支持日志或觸發器機制。而對于任意類型的數據源,都可以采用基于快照差分的方法實現數據同步:每隔一定時期重新生成基表的快照,同上一次的舊快照作差分計算,得到反映基表自上次到本次生成快照以來變化的增量數據。增量數據中可以只包含數據源中被刪除或插入的元組 W.J.Labio綜述了可應用于快照差分的算法,包括幾種常用算法:Sort Merge算法、Partition Hash算法、Window算法,和一類新提出的基于壓

20、縮策略的算法,并對所有這些算法作了詳盡的分析。在增量數據更新方面,目前有五種技術可以到達數據增量更新的要求。第一種方法是掃描已經打上時間戳的數據,當一個應用對記錄的最后一次修改打上時間戳時,掃描程序就根據時間戳得到增量數據,但必須原業務系統存在時間戳字段:第二種方法是掃描增量文件,增量文件僅記錄應用中所發生的變化,有了增量文件,掃描的過程就會高效,增量文件的生成可以改造應用來完成,如觸發器:第三種方法就是掃描日志文件或審計文件,但必須使用某種技術手段作為日志文件內容輸出的接口,常見的使用Sybase的工具RepliactionServer來識別:第四種方法就是修改以往的應用程序代碼,使這些程序

21、能夠數據集成;第五種方法就是將前后兩個快照文件進行比對。目前,國內大局部應用系統采用針對系統本身設計開發的數據集成工具,有的甚至用手工方法實現數據抽取、轉換和加載。因此當目標數據庫結構發生變化或者重建時,需要重新編程實現該過程。本課題研究的意義分布式數據庫大量的應用,各種應用之間又有很多的交叉性。數據庫同步就顯得很重要;特別是異構的情況,然而異構數據庫之間的同步不能應用數據庫自帶的同步工具。另一方面,由于兩者分布在Internet中,防火墻的存在使得同步無法使用特定端口通訊。但因為大多數企業會開放用于 的80端口,因而借助Web Service可以完成兩者的通訊。數據表要進行的操作,以XML形

22、式編碼作為消息內容。借助XML的無語言相關性、無平臺相關性、無對象相關性來實現異構數據庫的同步,也可應用結構相同的分布式數據庫上。本課題的研究方法本同步系統采用Web Service 作為同步數據的傳輸,使用觸發器實時捕獲數據庫的增量記錄,并保存到臨時緩沖表,以便供同步到目標數據庫,然后采用Windows效勞實時的監視目標IP是否有需要同步的數據,如果存在目標IP同步的數據,就向此IP發送同步消息,另外一端收到同步消息就調用Web Servcie方法獲取同步的數據,寫入到本地,寫入成功后向效勞器方發送確認消息;效勞器收到確認后,將此IP同步了的數據標識為已讀。當所有主機同步完成,就物理上刪除被

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

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

25、ervice的協議棧XML(eXtensible Markup Language):可擴展的置標語言,是W3C組織于1998年2月發布的標準。XML嚴格地定義可移植的結構化數據,并對數據賦予上下文相關功能。Web效勞完全基于XML技術。效勞提供者和效勞請求者均使用XML傳遞消息和數據流。SOAP(Simple Object Access Protocol):簡單對象訪問協議,SOAP完全獨立于任何廠商,可以相對于任何編程語言、對象模型、操作系統和平臺獨立實現。它為在分布式環境下使用XML、對等地交換結構化和類型化的信息提供了一個簡單且輕量級的機制。 作為低層通信協議實現了SOAP把基于 的We

26、b技術與XML的靈活性和擴展性結合在一起,并有助于實現異構平臺之間的互相操作性,從而使其擴展性結合在一起,并有助于實現異構平臺之間的互操作性,從而使其擴展到Internet上的分布式計算和數據集成。 作為一種普遍接受的協議被用于任何地方及任何平臺上,XML也同 一樣得到普遍應用,由于XML是文本格式文件,所以SOAP實質上是一個基于文本的協議,它沒有對平臺和環境的依賴性。WSDL (Web Servcie Description Language):Web效勞描述語言,定義了一個基于XML的組件描述標準機制,用來描述Web效勞的相關信息,它把網絡效勞定義成一個能交換消息的通信端點集。用WSDL

27、定義的一套XML語法描述的網絡效勞的方式,使用戶端的程序要知道Web效勞提供了什么效勞可以進行調用。UDDI (Universal Description Discovery and Integration):通用描述、發現和集成協議,是一套基于Web的、分布式的 、為Web效勞提供信息注冊的實現標準標準,是一個跨產業、跨平臺的 開發性架構。可幫助Web效勞提供者在Internet上公布自己推出的Web效勞。Web Servcie的特點 Web Service技術的主要目標就是在現有各種異種平臺的根底上,構筑一個通用的平臺無關、語言無關的技術層。各種不同平臺之上的應用依靠這個技術層來實施彼此的

28、連接和集成,從而讓使用不同系統和不同編程語言的人們能夠相互交流和分享數據。Web Service并不是構件技術開展中的一個革命性改變。而只是一種較大的進展。它是對象構件技術在Internet上的延伸,是一種部署在Web上的對象構件。是封裝成單個實體并發布到網絡上供其它程序使用的功能集合,它不會完全取代現在的構件技術。Web Servcie平安 考慮的平安僅僅是Web Service在交換數據中的平安。因此,設定的平安目標是: .客戶端確認效勞器的身份; .效勞器來確認客戶端的身份; .保證傳輸的數據在傳輸過程中不被監聽; .保證傳輸的數據在傳輸過程中不被篡改。數據庫復制的分類數據庫復制有不同的

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

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

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

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

33、垂直劃分的組合。函數統方案分:復制數據是對記錄進行統計運算的結果。復制數據的不同劃分用于不同的場合。對于緩存數據庫或備份數據庫一般采用全劃分的方式,所有的數據都進行復制。水平和垂直劃分對數據進行了過濾操作,往往用在數據保密,分級管理方面,可以提高復制的效率,降低不必要的數據傳輸。函數統方案分主要用在根底數據不全或者特定情況下不能傳輸根底數據而只能傳輸統計數據的情況下,這種方式可以大大的降低數據傳輸量,同時可以直接利用統計數據,而無需每次都通過根底數據來生成統計數據,提高了數據庫的性能,滿足了統計方面的需求。復制數據按照傳輸數據的形式分為完整拷貝(full copy),增量修改(incremen

34、tal-update),凈變化(neat change)三種。 完整拷貝方式:源數據庫中所有的記錄都傳送到目標數據庫中。完整拷貝的優點是實現起來簡單容易,不占用額外資源,不需要進行沖突檢測等方面的工作,但其缺點是效率較低,只能應用在初始化復制、崩潰恢復等場合。增量修改方式,也稱標量(scalable)方式:在這種方式下需要將事務對數據的操作內容全部保存下來,傳輸的數據就是操作的完整序列。增量修改的最大優點就是滿足復制的單副本可串行性化。這種方式能夠提供詳細的控制信息,適用于多種復制方式,但保存全部的操作序列需要較多的資源,設計通用的存儲結構也較復雜。凈變化方式:傳輸的數據為兩次復制之間更新數據

35、的凈變化值。這種方式需要記錄上一次復制的狀態,在下一次復制時將上次復制以來的所有變化數據從數據庫中提取出來作為復制數據項。凈變化方式只傳輸改變的數據,因此傳輸的數據量是最小的,實現方法也較簡單,可以明顯的提高復制性能,但是這種方式不是以事務為依據對數據進行劃分,所以不能用于同步復制,在數據復制的過程中也存在一定的問題。數據捕獲技術復制數據和數據捕獲技術有一定的相關性,不同種的數據捕獲技術在生成復制數據的能力方面上有所不同。現在常用的數據捕獲技術包括觸發器法、快照法、控制表變化法等。快照法快照(snapshot)是在某一時刻將數據庫中存儲對象的狀態存儲下來,構成當前數據庫的一個映像文件,將此映像

36、文件作為復制數據,用來更新其他的數據庫。 快照法只是在復制時進行一次全面掃描,實現簡單,它不需依賴特別的機制,也不占用系統資源,在復制初始化和崩潰恢復時通常需要采用這種方式。由于快照法生成完全拷貝的復制數據,因此效率很低,應用的范圍也比擬小。Oracle和MS SQL Server數據庫明確提供了基于快照的捕獲方法。一般的復制方案在初始化時往往也使用這種方法。觸發器法:觸發器是一種特殊類型的存儲過程,當使用UPDATE、INSERT或DELETE對指定數據表中數據進行操作時,觸發器就會生效,通過分析操作的相關信息,可以在觸發器中定義復雜的業務規那么。觸發器法就是通過捕獲這些操作并將數據操作的信

37、息保存到日志中或者直接進行復制操作。如圖3觸發器數據捕捉方式所示。 觸發器法防止了不必要的數據傳輸,克服了基于快照法的主要缺點,大大提高了效率,可以用于同步復制和雙向復制。但是觸發器機制需要數據庫系統的支持,并且為了支持不同的復制數據類型,復制方法需要設置不同的觸發器腳本,給系統維護和變更帶來了不便。圖3觸發器數據捕捉方式由于大型數據庫系統根本上都提供了完善的觸發器機制,因此大型數據庫廠商提供的數據庫復制方案往往都運用了這種捕獲方法,如Oracle的對稱復制(Symmetric Replication)綜合應用了快照和觸發器兩種捕獲方法??刂票碜兓刂票碜兓?Control Table Ch

38、ange)法就是創立一張包含復制源表的主鍵字段和一些控制信息字段的控制表,當復制表中的記錄發生變化時,那么修改控制表中相應關鍵字的記錄,在控制信息字段中記錄變化的情況,這一過程可以通過觸發器,中間件來實現,復制數據可以根據控制表中記錄的變化情況生成。通過控制表變化法得到的復制數據是數據庫的凈變化,效率較高,由于只保存了主鍵信息和局部控制信息,所以在空間占用方面也較小??刂票碜兓蛇m用于除同步復制以外的各種復制形式。上述的幾種數據捕獲方法各有優缺點,需要結合你的具體應用具體的選擇。沖突檢測數據庫復制采用不同的復制方式,復制不同類型的數據都會在復制中產生各種不同的沖突。下面是幾種常見的沖突。表間

39、沖突:復制數據不能滿足本地數據庫表上定義的約束條件而造成的沖突。進行復制數據設計時需要考慮表上定義的完整性約束,引用約束等,否那么在進行數據復制時會因為這些約束無法導入數據。凈變化方式不滿足單副本可串行化,在進行數據更新時需要更多的考慮表間沖突問題。唯一性沖突:發生在一個更新產生了一個違反主鍵或唯一性約束時。不同的結點根據本地數據庫規那么設置數據,這時不合理的主鍵生成規那么或者是錯誤的輸入都有可能產生主鍵沖突或者是唯一性沖突。更新沖突:對于異步更新,本地數據的更新和遠程數據的更新存在時間差,在這種情況下兩個或多個復制站點可能同時更新一條記錄,如果更新同一條記錄的相關字段就會存在列級沖突。刪除沖

40、突:發生在一個結點更新另一個結點已刪除的一行時,或者同一條記錄在不同的復制站點被刪除時。需求分析為了明確系統的應到達的目標,確定系統必須做什么,清楚地理解所要解決的問題。在下面描述軟件的功能和性能的需求。確定了軟件設計的約束。同步環境本系統的同步環境如圖4:圖4 同步環境Oracle 9i,mySQL等不同類型的數據庫通過Internet來獲取SQL Server 2000的數據,通信的兩端都存在防火墻,提供了一臺Web效勞器用于發布Web Service。功能需求本設計要實現的功能:能夠使處于Internet 上的異構數據庫的單向同步功能,初步先實現Sql Server2000向Oracle

41、 與的同步,需要考慮其它數據庫的情況比方my Sql等。同步數據需要可靠的傳輸,保證數據能夠準確、完全的傳輸到被同步的一方。同步需要一定平安性,能夠按照進行同步IP或那么物理地址來驗證同步身份。由于數據在Internet上傳輸,必須保證同步數據的傳輸開銷小,平安等。能夠實現不同主機的多個數據庫同時同步功能。對實時性同步、定期同步可配置,既可以選擇實時同步、手動同步或那么按需要同步的數據量來同步。同步信息可以配置性。同步信息包括:同步的字段、字段類型、同步的表、分配了權限的同步主機等。同步的數據類型能夠是不同的類型,比方數值型向字符型的同步等。能夠對同步的某個字段做特殊的處理后再同步。既是能夠實

42、現多個字段合并為一個字段,或那么一個、多個字段分解為更多個字段。同步的配置界面化,操作方便、易使用。對網絡連接斷開后能夠保證同步數據的不喪失,網絡連上后能接著繼續同步。對異常的信息提示盡量多,比方配置系統時對不正確的配置及時提示,以便產生同步的異常。當是多個數據庫同步到一個數據庫時需要解決同步沖突。系統需要有一定擴展性。性能需求精度:效勞器端的增量數據能夠準確的同步到客戶端,不應該存在數據被截斷的情況。數據傳輸過程中對數據喪失的情況,應該不影響同步數據的完整性。時間特性要求:同步操作對其它正常的數據庫應用,無明顯性能降低現象。對配置了實時性同步的,同步延遲應小于1分鐘(除網絡斷開等異常情況)。

43、靈活性同步的字段可動態配置,當添加、修改字段后可以通過簡單的配置來實現修改后的同步。輸入輸出要求輸入:效勞器端數據的改變。處理:字段合并,分解或者是一定的運算加工。輸出:將處理了的數據更新到客戶端。運行需求硬件環境需求:客戶端、效勞器端:專用數據庫效勞器,P4以上,512M以上內存,80G以上硬盤;Internet網絡連接。軟件環境:源端:Windows 2003/XP 操作系統、Sql Server 2000數據庫、IIS 5.0、.NET Framework1.1。目標端: Windows 2003/XP 操作系統、數據庫環境、.NET Framework1.1。方案設計結合前面的同步原理

44、,以及需求的介紹,下面給出同步的方案設計:數據庫同步復制模型模型包括源結點和目標結點兩大塊。源結點模塊包括:數據庫捕獲模塊、數據生成模塊、Web Service、同步控制模塊、定時器、配置模塊等組成。目標結點包括:數據庫同步控制模塊、數據導入模塊、配置模塊。如圖 5所示。圖 5 系統模塊數據庫設計系統包括源端數據庫設計以及目的端數據庫設計。源結點Sql Server 2000表設計E-R圖如圖6圖 6 E-R圖數據表如表1:表1:tLJ數據表邏輯字段名物理字段名字段類型是否為空主鍵外鍵說 明編號IintNOT NULLYesNo自增加姓名NameVarchar(20)NOT NULLNoNo描

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

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

47、ULLYesNo自增加讀取ipIPtinyintnullNoNo與tIPConfig.I 關聯同步緩沖表編號InfoIdintNot nullnoNo同步緩沖表編號讀取時間CreateDateDatetimeNot nullNoNo讀取秩序號ReadNointNot nullNoNo目的結點Oracle表設計表6: tLJ邏輯字段名物理字段名字段類型是否為空主鍵外鍵說 明編號INumber(22)NOT NULLYesNo姓名NameVarchar2(50)NOT NULLNoNo描述DesVARCHAR2(1000)NULLNoNo年齡AgeNumber(22)NULLNoNo表7: Cop

48、yT1邏輯字段名物理字段名字段類型是否為空主鍵外鍵說 明編號IVARCHAR2(50)NOT NULLnoNo姓名, 年齡NameAgeVarcahr2(100) NULLNoNo年齡DesVarcahr2(1000)NOT NULLNoNo模塊設計該模型按照功能劃分為三個局部,一是數據捕獲部份,二是同步部份,三是沖突檢測處理部份(如圖7)。沖突檢測捕獲同步圖 7 模塊圖數據捕獲局部包含數據捕獲模塊和控制變化表兩個局部。數據捕獲模塊采用基于觸發器的方式進行數據的捕獲??刂票碛脕肀4鏀祿觳僮鞯臍v史記錄,其根本思想來源于控制表變化法,即在這些表中記錄每次更新記錄的主鍵信息、表名等,這種數據捕獲方

49、式獲得的是復制數據的凈變化,可以大大的降低網絡傳輸量,提高復制性能。控制變化表的格式如上源結點Sql Server 2000表設計。同步緩沖臨時表tTemp:用于記錄數據表記錄主鍵、數據表記錄表名,記錄寫入時間等。當數據表有被修改、添加、刪除時觸發器就向此表寫入更新記錄id等信息。如果是更新sign字段的值為3 ,刪除時sign值為2,插入時sign值為1,當某條記錄在某一時間段內被重復操作了屢次時sign字段的值始終保存追后一次的操作。同步局部包括定時器、同步控制模塊、數據導入、Web Servcie、驗證模塊。定時器定時器包含于一個Windows 效勞中,每隔一定的時間檢測IP配置表里被開

50、啟IP是否有同步的數據。如果存在同步的數據就啟動同步控制模塊。通過IP配置表可以授權某個主機來獲取同步數據。從而起到一定的平安性與高性能。同步控制模塊:在源結點端在源節點端當定時器通過驗證模塊檢查到某個IP有要同步的數據時,就啟動一個效勞線程,并向這個IP的特定端口發送Socket消息,并等待這個IP返回同步成功確實認消息。當收到確認消息后(此確認消息包含一個同步批次號也就是“讀取緩沖表:tReadTemp中的“讀取秩序號:ReadNo ,“讀取緩沖表是在目標端讀取數據后寫入的,在后面將要介紹到),然后源端控制模塊操縱同步控制表將讀取了的記錄關鍵字以及目的端IP寫入“讀取狀態表: tReadS

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

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

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

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

55、存外鍵置為空的數據T1與僅外鍵與主鍵T2。然后寫入T1。根據T2中的主鍵更新外鍵數據。Web Service提供一個可供Internet 上調用的數據發布方法,發布的數據是以XML序列化的形式傳輸的、便于不同平臺的互相操作。通過傳入ip、表名控制讀取同步的數據此ip應該讀的數據,并且將讀取了的數據主鍵的信息保存到“讀取緩沖表:tReadTemp,如果是在配置表里無配置那么不能讀取數據。讀取步驟:目的方調用Web Service 方法傳入目的IP,要同步的表名。Web Servcie根據傳入的參數,先判斷是否是系統的“合法用戶,如果是合法的身份就先得到本次讀取的編號,此讀取編號是“讀取緩沖表:t

56、ReadTemp表中的“讀取秩序號:ReadNo的最大值加1得到的。供以后同步控制用。然后根據讀取“同步緩沖臨時表:tTemp表中記錄的數據表里的主鍵來讀取數據。讀取的數據是在“讀取狀態表: tReadState表里無本IP記錄的記錄。將上步讀了的數據保存到“ 讀取緩沖表:tReadTemp里,如果在tReadTemp表里存在該信息主鍵就更新這條記錄的讀取時間和讀取秩序號為當前讀取時間和讀取秩序號。驗證模塊驗證模塊應用在源端的同步控制模塊和目的端的數據導入模塊,主要完成控制特定IP來同步數據,提高平安性與性能。沖突檢測處理局部異步復制存在的一個主要問題就是沖突問題,前面已經說明了常見的幾種沖突

57、,在上面的同步局部也通過設計防止了其中的一種沖突,但對于其他沖突還需要采用其他的方法進行解決。沖突檢測和處理局部就是在數據導入過程中檢測各種可能的沖突。代碼實現開發環境開發平臺的選擇:本系統的開發平臺選擇微軟公司的 .NET,開發工具采用ASP.NET。.NET是Microsoft面向XML Web效勞的平臺,由框架、Web效勞、.NET企業效勞器等幾局部組成,提供涉及面較廣、功能較全面的解決方案。XML Web 效勞使應用程序能夠共享數據,可以跨平臺和操作系統。數據庫選擇:根據需求分析選擇了Sql Server 2000+Oracle 9i的組合。關鍵代碼詳解。數據捕獲局部這部份的功能就是動

58、態的捕獲數據表里數據的變化,其主要的實現就是在數據表上定義一個觸發器用于記錄本表的凈變化。此觸發器如下:ALTER TRIGGER tlj_TriggerON dbo.tlj -數據表FOR INSERT, UPDATE, DELETE ASbeginIF EXISTS(select * from deleted) and exists(select * from inserted)begin -更新delete from dbo.tTemp where infoID in(select I from inserted) and TableName=dbo.tljinsert into dbo

59、.tTemp(infoID,TableName,Sign) select I,dbo.tlj,3 from insertedendelse 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 insertedendelse if EXISTS(select * from deleted) and not exists(select * from ins

60、erted)begin -刪除delete from dbo.tTemp where infoID in(select I from deleted) and TableName=dbo.tljinsert into dbo.tTemp(infoID,TableName,Sign) select I,dbo.tlj,2 from deletedendend當更新、刪除數據表時,先根據數據表關鍵字與數據表名稱刪除“同步緩沖臨時表:tTemp里有的記錄,然后將被修改、刪除的數據表關鍵字、表名、修改刪除的標識寫入tTemp表。當向數據表新增加記錄時只要寫入tTemp表即可。同步局部同步控制模塊源端:

溫馨提示

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

評論

0/150

提交評論