基于WEB SERVICE的數(shù)據(jù)庫同步系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)—免費(fèi)畢業(yè)設(shè)計(jì)論文_第1頁
基于WEB SERVICE的數(shù)據(jù)庫同步系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)—免費(fèi)畢業(yè)設(shè)計(jì)論文_第2頁
基于WEB SERVICE的數(shù)據(jù)庫同步系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)—免費(fèi)畢業(yè)設(shè)計(jì)論文_第3頁
基于WEB SERVICE的數(shù)據(jù)庫同步系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)—免費(fèi)畢業(yè)設(shè)計(jì)論文_第4頁
基于WEB SERVICE的數(shù)據(jù)庫同步系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)—免費(fèi)畢業(yè)設(shè)計(jì)論文_第5頁
已閱讀5頁,還剩31頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)

文檔簡介

1、畢業(yè)設(shè)計(jì)(論文)基于Web Service的數(shù)據(jù)庫同步系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)論文作者姓名:申請學(xué)位專業(yè):申請學(xué)位類別:指導(dǎo)教師姓名職稱:論文提交日期:基于Web Service的數(shù)據(jù)庫同步系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)摘 要結(jié)合當(dāng)前流行的Web Service和ADO.NET技術(shù)構(gòu)造了一個不受平臺限制的異構(gòu)數(shù)據(jù)庫同步系統(tǒng)。實(shí)現(xiàn)了處于Internet上的Sql Server2000向Oracle 的單向同步功能,能夠基于IP的平安身份驗(yàn)證功能,多個IP實(shí)現(xiàn)了凈量數(shù)據(jù)的傳輸。對同步的配置信息采用XML存儲,采用Windows應(yīng)用程序界面化配置,操作方便、易懂。因?yàn)橥江h(huán)境是對處于Internet上的異構(gòu)數(shù)據(jù)庫的實(shí)時同

2、步;在設(shè)計(jì)與開發(fā)中,重點(diǎn)關(guān)注異構(gòu)數(shù)據(jù)庫的同步以及數(shù)據(jù)傳輸?shù)目煽啃裕惶接懩軐?shí)現(xiàn)可靠數(shù)據(jù)的同步,以及傳輸?shù)母咝浴=榻B了實(shí)現(xiàn)系統(tǒng)的思路以及所需的關(guān)鍵技術(shù)。系統(tǒng)用到的相關(guān)技術(shù)有捕獲技術(shù)Windows 托盤效勞、多線程處理、以及網(wǎng)絡(luò)消息機(jī)制、多IP同步、同步IP權(quán)限驗(yàn)證、同步表名及字段以及字段類型的可配置、異構(gòu)數(shù)據(jù)類型的轉(zhuǎn)換、Web Service等。關(guān)鍵詞:Web Service;異構(gòu)數(shù)據(jù)庫;同步;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;目 錄論文總頁數(shù):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國內(nèi)外研究現(xiàn)狀 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數(shù)據(jù)庫同步原理 PAGEREF _T

8、oc172959942 h 3 HYPERLINK l _Toc172959943 2.1Web Service構(gòu)成與特點(diǎn) PAGEREF _Toc172959943 h 3 HYPERLINK l _Toc172959944 2.1.1Web Servcie的結(jié)構(gòu) PAGEREF _Toc172959944 h 3 HYPERLINK l _Toc172959945 2.1.2Web Servcie的關(guān)鍵技術(shù)協(xié)議 PAGEREF _Toc172959945 h 3 HYPERLINK l _Toc172959946 2.1.3Web Servcie的特點(diǎn) PAGEREF _Toc172959

9、946 h 4 HYPERLINK l _Toc172959947 2.1.4Web Servcie平安 PAGEREF _Toc172959947 h 5 HYPERLINK l _Toc172959948 2.2數(shù)據(jù)庫復(fù)制的分類 PAGEREF _Toc172959948 h 5 HYPERLINK l _Toc172959949 2.3復(fù)制數(shù)據(jù)的類型 PAGEREF _Toc172959949 h 6 HYPERLINK l _Toc172959950 2.4數(shù)據(jù)捕獲技術(shù) 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同步環(huán)境 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運(yùn)行需求 PAGEREF _Toc172959957 h 10 HYPERLINK l _Toc172959958 4方案設(shè)計(jì) PAGEREF _Toc172959958 h 11 HYPERLINK l _Toc172959959 4.1數(shù)據(jù)庫同步復(fù)制模型 PAGEREF _Toc172959959 h 11 HYPERLINK l _Toc172959960 4.2數(shù)據(jù)庫設(shè)計(jì) PAGEREF _Toc172959960 h 11 HYPERLINK l _Toc172959

12、961 4.2.1源結(jié)點(diǎn)Sql Server 2000表設(shè)計(jì) PAGEREF _Toc172959961 h 11 HYPERLINK l _Toc172959962 4.2.2目的結(jié)點(diǎn)Oracle表設(shè)計(jì) PAGEREF _Toc172959962 h 12 HYPERLINK l _Toc172959963 4.3模塊設(shè)計(jì) PAGEREF _Toc172959963 h 13 HYPERLINK l _Toc172959964 4.3.1數(shù)據(jù)捕獲局部 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代碼實(shí)現(xiàn) PAGEREF _Toc172959967 h 16 HYPERLINK l _Toc172959968 5.1開發(fā)環(huán)境 PAGEREF _Toc172959968 h 16 HYPERLINK l _Toc172959969 5.2關(guān)鍵代碼詳解。 PAGEREF _Toc172959969 h 16 HYPERLINK l _Toc172959970 5.2.

14、1數(shù)據(jù)捕獲局部 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 結(jié) 論 PAGEREF _Toc172959975 h 21 HYPERLINK l _Toc172959976 參考文獻(xiàn) PAGEREF _Toc172959976 h 21 HYPERLINK l _Toc172959977 致 謝 PAGEREF _Toc172959977 h 23 HYPERLINK l _Toc172959978 聲 明 PAGEREF _Toc172959978 h 24引言 課題背景隨著信息化建設(shè)的深入,企業(yè)和政府如何將己有的“信息孤島連通起來,實(shí)現(xiàn)信息的集成與共享是當(dāng)前需要解決的一個關(guān)鍵問題。特別是企業(yè)和政府部門多數(shù)采用層次管理摸式,各個部門、分支機(jī)構(gòu)可

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

17、容易實(shí)現(xiàn),因?yàn)樗且环N完全的無語言相關(guān)性、無平臺相關(guān)性、無對象相關(guān)性的模型。非常適合于Internet上的數(shù)據(jù)集成。 國內(nèi)外研究現(xiàn)狀國外對數(shù)據(jù)集成的研究比擬早,許多數(shù)據(jù)庫系統(tǒng)提供了專門的數(shù)據(jù)轉(zhuǎn)換集成工具。如SQL Server 2000的DTS, Oracle的SQL* Loader, IBM的Visual Warehouse等。另外,還有一些第三方軟件開發(fā)商也推出一些產(chǎn)品,例如:Ascential Software公司的DataStage, Applied Database Technology公司的DataMapper, Dataflux公司的SmartScurb和Data Junctio

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

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

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

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

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

23、同步了的數(shù)據(jù)。先實(shí)現(xiàn)Sql Server 2000同步到 Oracle,設(shè)計(jì)時考慮到多個IP,多個不同異構(gòu)數(shù)據(jù)的情況。 Web Service數(shù)據(jù)庫同步原理 Web Service構(gòu)成與特點(diǎn)Web Servcie的結(jié)構(gòu)效勞提供者效勞注冊中心效勞請求者效勞效勞描述效勞描述Web Service由效勞提供者、效勞注冊中心和效勞請求者三角色以及發(fā)布、查找和綁定三個操作組成。三個角色的交互完成效勞。交互涉及發(fā)布、查找和綁定操作。圖1描述了角色調(diào)用操作完成效勞的結(jié)構(gòu)。效勞提供者管理可以通過網(wǎng)絡(luò)訪問Web Service的一個實(shí)例。效勞提供者定義Web Service的效勞描述,并把它發(fā)布到效勞請求或效勞

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

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

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

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

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

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

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

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

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

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

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

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

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

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

38、ange)法就是創(chuàng)立一張包含復(fù)制源表的主鍵字段和一些控制信息字段的控制表,當(dāng)復(fù)制表中的記錄發(fā)生變化時,那么修改控制表中相應(yīng)關(guān)鍵字的記錄,在控制信息字段中記錄變化的情況,這一過程可以通過觸發(fā)器,中間件來實(shí)現(xiàn),復(fù)制數(shù)據(jù)可以根據(jù)控制表中記錄的變化情況生成。通過控制表變化法得到的復(fù)制數(shù)據(jù)是數(shù)據(jù)庫的凈變化,效率較高,由于只保存了主鍵信息和局部控制信息,所以在空間占用方面也較小。控制表變化法可適用于除同步復(fù)制以外的各種復(fù)制形式。上述的幾種數(shù)據(jù)捕獲方法各有優(yōu)缺點(diǎn),需要結(jié)合你的具體應(yīng)用具體的選擇。沖突檢測數(shù)據(jù)庫復(fù)制采用不同的復(fù)制方式,復(fù)制不同類型的數(shù)據(jù)都會在復(fù)制中產(chǎn)生各種不同的沖突。下面是幾種常見的沖突。表間

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

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

41、 與的同步,需要考慮其它數(shù)據(jù)庫的情況比方my Sql等。同步數(shù)據(jù)需要可靠的傳輸,保證數(shù)據(jù)能夠準(zhǔn)確、完全的傳輸?shù)奖煌降囊环?。同步需要一定平安性,能夠按照進(jìn)行同步IP或那么物理地址來驗(yàn)證同步身份。由于數(shù)據(jù)在Internet上傳輸,必須保證同步數(shù)據(jù)的傳輸開銷小,平安等。能夠?qū)崿F(xiàn)不同主機(jī)的多個數(shù)據(jù)庫同時同步功能。對實(shí)時性同步、定期同步可配置,既可以選擇實(shí)時同步、手動同步或那么按需要同步的數(shù)據(jù)量來同步。同步信息可以配置性。同步信息包括:同步的字段、字段類型、同步的表、分配了權(quán)限的同步主機(jī)等。同步的數(shù)據(jù)類型能夠是不同的類型,比方數(shù)值型向字符型的同步等。能夠?qū)ν降哪硞€字段做特殊的處理后再同步。既是能夠?qū)?/p>

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

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

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

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

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

47、ULLYesNo自增加讀取ipIPtinyintnullNoNo與tIPConfig.I 關(guān)聯(lián)同步緩沖表編號InfoIdintNot nullnoNo同步緩沖表編號讀取時間CreateDateDatetimeNot nullNoNo讀取秩序號ReadNointNot nullNoNo目的結(jié)點(diǎn)Oracle表設(shè)計(jì)表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模塊設(shè)計(jì)該模型按照功能劃分為三個局部,一是數(shù)據(jù)捕獲部份,二是同步部份,三是沖突檢測處理部份(如圖7)。沖突檢測捕獲同步圖 7 模塊圖數(shù)據(jù)捕獲局部包含數(shù)據(jù)捕獲模塊和控制變化表兩個局部。數(shù)據(jù)捕獲模塊采用基于觸發(fā)器的方式進(jìn)行數(shù)據(jù)的捕獲??刂票碛脕肀4鏀?shù)據(jù)庫操作的歷史記錄,其根本思想來源于控制表變化法,即在這些表中記錄每次更新記錄的主鍵信息、表名等,這種數(shù)據(jù)捕獲方

49、式獲得的是復(fù)制數(shù)據(jù)的凈變化,可以大大的降低網(wǎng)絡(luò)傳輸量,提高復(fù)制性能??刂谱兓淼母袷饺缟显唇Y(jié)點(diǎn)Sql Server 2000表設(shè)計(jì)。同步緩沖臨時表tTemp:用于記錄數(shù)據(jù)表記錄主鍵、數(shù)據(jù)表記錄表名,記錄寫入時間等。當(dāng)數(shù)據(jù)表有被修改、添加、刪除時觸發(fā)器就向此表寫入更新記錄id等信息。如果是更新sign字段的值為3 ,刪除時sign值為2,插入時sign值為1,當(dāng)某條記錄在某一時間段內(nèi)被重復(fù)操作了屢次時sign字段的值始終保存追后一次的操作。同步局部包括定時器、同步控制模塊、數(shù)據(jù)導(dǎo)入、Web Servcie、驗(yàn)證模塊。定時器定時器包含于一個Windows 效勞中,每隔一定的時間檢測IP配置表里被開

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

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

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

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

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

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

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

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

58、態(tài)的捕獲數(shù)據(jù)表里數(shù)據(jù)的變化,其主要的實(shí)現(xiàn)就是在數(shù)據(jù)表上定義一個觸發(fā)器用于記錄本表的凈變化。此觸發(fā)器如下:ALTER TRIGGER tlj_TriggerON dbo.tlj -數(shù)據(jù)表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當(dāng)更新、刪除數(shù)據(jù)表時,先根據(jù)數(shù)據(jù)表關(guān)鍵字與數(shù)據(jù)表名稱刪除“同步緩沖臨時表:tTemp里有的記錄,然后將被修改、刪除的數(shù)據(jù)表關(guān)鍵字、表名、修改刪除的標(biāo)識寫入tTemp表。當(dāng)向數(shù)據(jù)表新增加記錄時只要寫入tTemp表即可。同步局部同步控制模塊源端:

溫馨提示

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

評論

0/150

提交評論