




已閱讀5頁(yè),還剩32頁(yè)未讀, 繼續(xù)免費(fèi)閱讀
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
本科畢業(yè)論文本科畢業(yè)論文(科研訓(xùn)練、畢業(yè)設(shè)計(jì))題題 目:目:基于數(shù)據(jù)庫(kù)復(fù)制技術(shù)的數(shù)據(jù)轉(zhuǎn)移方案設(shè)計(jì)與實(shí)現(xiàn)姓 名:學(xué) 院:軟件學(xué)院系:專 業(yè):軟件工程年 級(jí):級(jí)二學(xué)位學(xué) 號(hào):指導(dǎo)教師(校內(nèi)): 職稱:教授指導(dǎo)教師(校外): 職稱:2005 年 05 月 31 日基于數(shù)據(jù)庫(kù)復(fù)制技術(shù)的數(shù)據(jù)轉(zhuǎn)移方案設(shè)計(jì)與實(shí)現(xiàn)基于數(shù)據(jù)庫(kù)復(fù)制技術(shù)的數(shù)據(jù)轉(zhuǎn)移方案設(shè)計(jì)與實(shí)現(xiàn)摘要 數(shù)據(jù)庫(kù)復(fù)制是分布式環(huán)境中的一項(xiàng)關(guān)鍵技術(shù)。同時(shí)在分布式環(huán)境中,數(shù)據(jù)庫(kù)異構(gòu)現(xiàn)象越來(lái)越普遍,研究異構(gòu)數(shù)據(jù)庫(kù)復(fù)制無(wú)論在理論上還是在實(shí)際運(yùn)用中上都具有非常重要的意義。作為全部工作的基礎(chǔ),本文從數(shù)據(jù)庫(kù)復(fù)制技術(shù)的發(fā)展與現(xiàn)狀,數(shù)據(jù)庫(kù)復(fù)制技術(shù)的主要步驟等方面對(duì)數(shù)據(jù)庫(kù)復(fù)制實(shí)現(xiàn)的關(guān)鍵方法和技術(shù)做了分析和歸納。基于前面的分析總結(jié),根據(jù)實(shí)際項(xiàng)目的特點(diǎn),本文提出一種與數(shù)據(jù)庫(kù)系統(tǒng)無(wú)關(guān),完全異構(gòu),具有一定通用性的數(shù)據(jù)庫(kù)復(fù)制技術(shù)基于 SQL 的復(fù)制技術(shù),并在此基礎(chǔ)上提出數(shù)據(jù)轉(zhuǎn)移方案。本文重點(diǎn)介紹了基于SQL 的數(shù)據(jù)庫(kù)復(fù)制技術(shù)的數(shù)據(jù)轉(zhuǎn)移方案,包括設(shè)計(jì)思路、技術(shù)特點(diǎn)及存在問題等。基于這些內(nèi)容的研究,開發(fā)了 Transbuilder 數(shù)據(jù)轉(zhuǎn)移工具,對(duì)基于 SQL 的數(shù)據(jù)庫(kù)復(fù)制技術(shù)進(jìn)行了實(shí)驗(yàn)。最后,本文總結(jié)了課題的研究成果,概述了要進(jìn)一步研究和實(shí)踐的工作。關(guān)鍵詞 數(shù)據(jù)庫(kù)復(fù)制 異構(gòu)數(shù)據(jù)庫(kù) 數(shù)據(jù)轉(zhuǎn)移 數(shù)據(jù)轉(zhuǎn)換基于數(shù)據(jù)庫(kù)復(fù)制技術(shù)的數(shù)據(jù)轉(zhuǎn)移方案設(shè)計(jì)與實(shí)現(xiàn)Design and Implementation of Data Integration Based on Database ReplicationAbstract Database replication is one of the key techniques in distributed environment. However, Heterogeneity is one of the important features in distributed environment. The development of heterogeneous database address concerns in the research on heterogeneous database replication system. Firstly, this thesis introduces database replication technique and its current application, and analyzes several replication solution provided by diffident database corporations. It is found that in some extents those solutions lack of low compatibility and generality. Based on the study on data replication, the thesis advances a fully heterogeneous database replication method, a replication method based on SQL. This thesis also sums up the advantages and disadvantage of this technique. The author integrates this technique with practice in Xiamen University data integration project. The result proved that this technique is feasible. It would benefits for many fields. At last, this thesis sums up the productions of this subject and plans the future analysis. Key Words Database Replication; Heterogeneous Database; Data Integration; Data Transform基于數(shù)據(jù)庫(kù)復(fù)制技術(shù)的數(shù)據(jù)轉(zhuǎn)移方案設(shè)計(jì)與實(shí)現(xiàn)目錄第 1 章 引言.11.1課題背景.11.2課題研究的理論的實(shí)際意義.11.3相關(guān)領(lǐng)域的研究進(jìn)展和成果.11.4課題研究?jī)?nèi)容.21.5本文的組織.2第 2 章 數(shù)據(jù)庫(kù)復(fù)制技術(shù).32.1相關(guān)概念.32.2數(shù)據(jù)庫(kù)復(fù)制技術(shù).42.3主要環(huán)節(jié).72.4發(fā)展與現(xiàn)狀.92.5本章小結(jié).10第 3 章 現(xiàn)有異構(gòu)數(shù)據(jù)庫(kù)復(fù)制方案.113.1ORACLE的轉(zhuǎn)換器方案 .113.2SYBASE 復(fù)制服務(wù)器方案 .113.3IBM DB2 信息集成解決方案 .123.4MICROSOFT的出版者/訂閱者方案 .123.5本章小結(jié).13第 4 章 基于數(shù)據(jù)庫(kù)復(fù)制技術(shù)的數(shù)據(jù)轉(zhuǎn)移方案.144.1基礎(chǔ)概念.144.2設(shè)計(jì)思路.154.3技術(shù)特點(diǎn).174.4可能存在問題.184.5本章小結(jié).18第 5 章 技術(shù)實(shí)現(xiàn).195.1實(shí)驗(yàn)環(huán)境.195.2應(yīng)用背景.195.3設(shè)計(jì)與功能分析.215.4原型實(shí)現(xiàn).235.5本章小結(jié).30第 6 章 結(jié)論.31基于數(shù)據(jù)庫(kù)復(fù)制技術(shù)的數(shù)據(jù)轉(zhuǎn)移方案設(shè)計(jì)與實(shí)現(xiàn) 1第 1 章引言引言1.1 課題背景信息化是當(dāng)今世界經(jīng)濟(jì)和社會(huì)發(fā)展的大趨勢(shì),以信息技術(shù)為達(dá)標(biāo)的科學(xué)技術(shù)的迅猛發(fā)展,對(duì)人類的生產(chǎn)方式、思維方式以及學(xué)習(xí)方式等都產(chǎn)生了重大的影響。信息時(shí)代的學(xué)習(xí)與以多媒體和網(wǎng)絡(luò)技術(shù)為核心的信息技術(shù)的發(fā)展密切相關(guān)。那么我國(guó)的高等教育如何迎接信息化所提出的挑戰(zhàn)?如何充分利用新技術(shù)所提供的巨大潛力構(gòu)件二十一世紀(jì)的高等教育模式?數(shù)字化校園正是在這樣的環(huán)境和形勢(shì)下被高校作為了自身不斷發(fā)展的必要性建設(shè)。然而,由于學(xué)校各個(gè)部門學(xué)院在數(shù)字化校園建設(shè)前都普遍存有自己的系統(tǒng),出現(xiàn)了一個(gè)現(xiàn)象單獨(dú)的部門系統(tǒng)建設(shè)比較強(qiáng),互聯(lián)互通苦難。如何有效整合現(xiàn)有系統(tǒng)及數(shù)據(jù)是數(shù)字校園建設(shè)的一個(gè)重要問題。數(shù)據(jù)整合是信息化建設(shè)過程經(jīng)常遇到的一個(gè)現(xiàn)實(shí)問題。這也是制約高校信息化建設(shè)和數(shù)據(jù)共享程度的一個(gè)重要因素。數(shù)據(jù)整合包括數(shù)據(jù)轉(zhuǎn)換和數(shù)據(jù)遷移,也就是本文所提到的數(shù)據(jù)轉(zhuǎn)移。根據(jù)實(shí)際項(xiàng)目及一些理論研究,作者提出了基于異構(gòu)數(shù)據(jù)庫(kù)復(fù)制技術(shù)的數(shù)據(jù)轉(zhuǎn)移方案。1.2 課題研究的理論和實(shí)際意義由于經(jīng)濟(jì)、技術(shù)、人為等因素的影響,高校信息化建設(shè)中的各個(gè)子系統(tǒng)數(shù)據(jù)庫(kù)間存在著很大的異構(gòu)性,這又給數(shù)據(jù)整合帶來(lái)了更大的挑戰(zhàn)。異構(gòu)數(shù)據(jù)庫(kù)復(fù)制技術(shù)可以有效地解決這一問題。異構(gòu)數(shù)據(jù)庫(kù)復(fù)制就是異構(gòu)數(shù)據(jù)庫(kù)與數(shù)據(jù)庫(kù)復(fù)制的結(jié)合。異構(gòu)數(shù)據(jù)庫(kù)復(fù)制技術(shù)是一種與數(shù)據(jù)庫(kù)系統(tǒng)無(wú)關(guān),完全異構(gòu)的復(fù)制技術(shù),可以保證數(shù)據(jù)遷移的完整性和準(zhǔn)確性,也可以保證數(shù)據(jù)整合項(xiàng)目的順利進(jìn)行。1.3 相關(guān)領(lǐng)域的研究進(jìn)展和成果目前在這個(gè)數(shù)據(jù)轉(zhuǎn)移領(lǐng)域已經(jīng)有了一些研究。大多數(shù)數(shù)據(jù)庫(kù)生產(chǎn)廠商對(duì)數(shù)據(jù)轉(zhuǎn)移均提出相應(yīng)方案并且開發(fā)相關(guān)工具,比如 Microsoft DTS 轉(zhuǎn)換工具、ORACLE 的移植工作臺(tái)、Informix 的 InfoMover 等。這些工具都在一定范圍內(nèi)解決了數(shù)據(jù)的提取和轉(zhuǎn)換等工作。但這些工具基本都不能自動(dòng)完成數(shù)據(jù)的抽取,用戶還需利用這些工具編寫適當(dāng)?shù)霓D(zhuǎn)換程序1。這些工具都可以從多個(gè)不同的業(yè)務(wù)系統(tǒng),多個(gè)平臺(tái)的數(shù)據(jù)源中抽取數(shù)據(jù),完成轉(zhuǎn)換和清洗等。但是這些方案,一般形式單一,且都基于廠商的實(shí)際利益出發(fā),希望用戶把其他數(shù)據(jù)庫(kù)都移植到自己的產(chǎn)品上來(lái),而且一般價(jià)格昂貴,這給用戶帶來(lái)很大的不便。在第三方產(chǎn)品中,Ascential Software 公司的 DataStage 是一套相對(duì)比較完善的產(chǎn)品. DataStage 可以從多個(gè)不同的業(yè)務(wù)系統(tǒng)中,從多個(gè)平臺(tái)的數(shù)據(jù)源中抽取數(shù)據(jù),完成轉(zhuǎn)換和清洗,裝載到各種系統(tǒng)里面。其中每步都可以在圖形化工具里完成,同樣可以靈活的被外部系統(tǒng)調(diào)度,提供專門的設(shè)計(jì)工具來(lái)設(shè)計(jì)轉(zhuǎn)換規(guī)則和清洗規(guī)則等,實(shí)現(xiàn)了增量抽取、任務(wù)調(diào)度等基于數(shù)據(jù)庫(kù)復(fù)制技術(shù)的數(shù)據(jù)轉(zhuǎn)移方案設(shè)計(jì)與實(shí)現(xiàn)多種復(fù)雜而實(shí)用的功能。2005 年 4 月日立數(shù)據(jù)推出首款動(dòng)態(tài)多維數(shù)據(jù)遷移解決方案具有較大的突破性。這個(gè)方案可根據(jù)訪問形式的變化來(lái)管理數(shù)據(jù)的遷移,為需要不同類型數(shù)據(jù)管理的應(yīng)用提供信息訪問。1.4 課題研究?jī)?nèi)容作者有幸參加了廈門大學(xué)信息化建設(shè)項(xiàng)目,項(xiàng)目組成立于 2004 年 5 月。作者所在的科研管理系統(tǒng)開發(fā)小組由七位開發(fā)人員組成,其組織如下圖 1-1 所示。圖 1-1 科研管理系統(tǒng)開發(fā)團(tuán)隊(duì)協(xié)作圖作者在項(xiàng)目中負(fù)責(zé)數(shù)據(jù)轉(zhuǎn)換移植工具開發(fā),在本文,其主要研究?jī)?nèi)容包括兩個(gè)方面:1. 數(shù)據(jù)庫(kù)復(fù)制實(shí)現(xiàn)方法和技術(shù)的歸納和總結(jié)。作為整個(gè)論文工作的基礎(chǔ),本文首先介紹了數(shù)據(jù)庫(kù)復(fù)制技術(shù)的基本概念,然后分析討論了數(shù)據(jù)庫(kù)復(fù)制的主要環(huán)節(jié)及發(fā)展與現(xiàn)狀,并且分析比較目前多數(shù)數(shù)據(jù)庫(kù)廠商提出并實(shí)現(xiàn)了異構(gòu)數(shù)據(jù)庫(kù)復(fù)制方案。2. 基于異構(gòu)數(shù)據(jù)庫(kù)復(fù)制技術(shù)的數(shù)據(jù)轉(zhuǎn)移方案的提出、設(shè)計(jì)與實(shí)現(xiàn)。從項(xiàng)目背景、需求分析、系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn)詳細(xì)介紹了對(duì)基于異構(gòu)數(shù)據(jù)庫(kù)復(fù)制技術(shù)的數(shù)據(jù)轉(zhuǎn)移方案,并分析其技術(shù)特點(diǎn)及不足。1.5 本文的組織本文共分六章。文章的結(jié)構(gòu)安排如下:第1章引言,闡明了本研究課題的產(chǎn)生背景、研究的理論與實(shí)際意義、相關(guān)領(lǐng)域的研究進(jìn)展和成果及主要研究?jī)?nèi)容。第2章對(duì)數(shù)據(jù)庫(kù)復(fù)制的相關(guān)概念做了簡(jiǎn)單介紹,對(duì)復(fù)制技術(shù)實(shí)現(xiàn)的關(guān)鍵方法和技術(shù)進(jìn)行了歸納和總結(jié),最后對(duì)現(xiàn)有異構(gòu)數(shù)據(jù)庫(kù)復(fù)制技術(shù)做了介紹。第3章分析并總結(jié)了目前最常用的四種異構(gòu)數(shù)據(jù)庫(kù)復(fù)制方案。第4章詳細(xì)介紹了基于SQL的異構(gòu)數(shù)據(jù)庫(kù)復(fù)制技術(shù)的數(shù)據(jù)轉(zhuǎn)移方案,提出了設(shè)計(jì)思路、技術(shù)特點(diǎn)等。第5章介紹了技術(shù)的原型實(shí)現(xiàn):Transbuilder系統(tǒng),總結(jié)了系統(tǒng)的優(yōu)點(diǎn)與不足。最后,對(duì)本課題研究的結(jié)論進(jìn)行了總結(jié),并談了對(duì)進(jìn)一步工作的構(gòu)想?;跀?shù)據(jù)庫(kù)復(fù)制技術(shù)的數(shù)據(jù)轉(zhuǎn)移方案設(shè)計(jì)與實(shí)現(xiàn)第 2 章數(shù)據(jù)庫(kù)復(fù)制技術(shù)針對(duì)數(shù)據(jù)庫(kù)復(fù)制,研究界和產(chǎn)業(yè)界多年來(lái)進(jìn)行了深入的研究,取得了許多成果。本章在分析研究這些成果的基礎(chǔ)上,對(duì)其中的關(guān)鍵方法和技術(shù)進(jìn)行了總結(jié)歸納,以此作為全文工作的基礎(chǔ),內(nèi)容主要包括數(shù)據(jù)庫(kù)復(fù)制的發(fā)展和現(xiàn)狀,以及數(shù)據(jù)庫(kù)復(fù)制的兩個(gè)組成環(huán)節(jié):變化捕獲與數(shù)據(jù)分發(fā)。2.1 相關(guān)概念本節(jié)對(duì)數(shù)據(jù)庫(kù)復(fù)制的一些相關(guān)概念做簡(jiǎn)單介紹。2.1.1分布式數(shù)據(jù)庫(kù)系統(tǒng) 分布式數(shù)據(jù)庫(kù)系統(tǒng)是由若干個(gè)站集合而成。這些站又稱為節(jié)點(diǎn),它們?cè)谕ㄓ嵕W(wǎng)絡(luò)中聯(lián)接在一起,每個(gè)節(jié)點(diǎn)都是一個(gè)獨(dú)立的數(shù)據(jù)庫(kù)系統(tǒng),它們都擁有各自的數(shù)據(jù)庫(kù)、中央處理機(jī)、終端,以及各自的局部數(shù)據(jù)庫(kù)管理系統(tǒng)。因此分布式數(shù)據(jù)庫(kù)系統(tǒng)可以看作是一系列集中式數(shù)據(jù)庫(kù)系統(tǒng)的聯(lián)合。它們?cè)谶壿嬌蠈儆谕幌到y(tǒng),但在物理結(jié)構(gòu)上是分布式的。2.1.2異構(gòu)數(shù)據(jù)庫(kù)由于不同的數(shù)據(jù)庫(kù)系統(tǒng)是由不同的生產(chǎn)廠商生產(chǎn)的,為了保證各自的應(yīng)用特性、完整性控制和安全性控制,各個(gè)數(shù)據(jù)庫(kù)系統(tǒng)間往往表現(xiàn)出很大的異構(gòu)性。異構(gòu)數(shù)據(jù)庫(kù)系統(tǒng)的異構(gòu)性主要體現(xiàn)在以下幾個(gè)方面: 1. 計(jì)算機(jī)體系結(jié)構(gòu)的異構(gòu)。各個(gè)參與的數(shù)據(jù)庫(kù)可以分別運(yùn)行在大型機(jī)、小型機(jī)、工作站、個(gè)人計(jì)算機(jī)或嵌入式系統(tǒng)中。 2. 基礎(chǔ)操作系統(tǒng)的異構(gòu)。各個(gè)數(shù)據(jù)庫(kù)系統(tǒng)的基礎(chǔ)操作系統(tǒng)可以是 Unix、Windows NT、Linux 等。3. 數(shù)據(jù)庫(kù)系統(tǒng)本身的異構(gòu)。數(shù)據(jù)庫(kù)系統(tǒng)可以是同為關(guān)系型數(shù)據(jù)庫(kù)系統(tǒng)的Oracle、Microsoft SQL Server 等,也可以是不同數(shù)據(jù)模型的數(shù)據(jù)庫(kù),如關(guān)系、模式、層次、網(wǎng)絡(luò)、面向?qū)ο?、函?shù)型數(shù)據(jù)庫(kù)等共同組成一個(gè)異構(gòu)數(shù)據(jù)庫(kù)系統(tǒng)。2.1.3數(shù)據(jù)庫(kù)復(fù)制數(shù)據(jù)庫(kù)復(fù)制是將一組數(shù)據(jù)從一個(gè)數(shù)據(jù)源拷貝到多個(gè)數(shù)據(jù)源的技術(shù),是將一份數(shù)據(jù)發(fā)布到多個(gè)存儲(chǔ)站點(diǎn)上的有效方式。使用復(fù)制技術(shù),用戶可以將一份數(shù)據(jù)發(fā)布到多臺(tái)服務(wù)器上,從而使不同的服務(wù)器用戶都可以在權(quán)限的許可的范圍內(nèi)共享這份數(shù)據(jù)。復(fù)制技術(shù)可以確保分布在不同地點(diǎn)的數(shù)據(jù)自動(dòng)同步更新,從而保證數(shù)據(jù)的一致性?;跀?shù)據(jù)庫(kù)復(fù)制技術(shù)的數(shù)據(jù)轉(zhuǎn)移方案設(shè)計(jì)與實(shí)現(xiàn)2.1.4事務(wù)事務(wù)就是一個(gè)單元的工作,包括一系列的操作這些操作要么全部成功,要么全部失敗。事務(wù)必須滿足 ACID 屬性。ACID 的含義就是原子性(Atomic)、一致性(Consistent)、隔離性(Isolated)、和持久性(Durable)等屬性。2.1.5主節(jié)點(diǎn)與從節(jié)點(diǎn)節(jié)點(diǎn):在復(fù)制系統(tǒng)中,每臺(tái)數(shù)據(jù)庫(kù)服務(wù)器稱為一個(gè)節(jié)點(diǎn)。主節(jié)點(diǎn):運(yùn)行主數(shù)據(jù)庫(kù)的節(jié)點(diǎn)。從節(jié)點(diǎn):運(yùn)行從數(shù)據(jù)庫(kù)的節(jié)點(diǎn)。2.1.6主數(shù)據(jù)庫(kù)與從數(shù)據(jù)庫(kù)主數(shù)據(jù)庫(kù):具有自主數(shù)據(jù)表和相應(yīng)支持對(duì)象、對(duì)客戶端提供數(shù)據(jù)服務(wù)的數(shù)據(jù)庫(kù)服務(wù)器。從數(shù)據(jù)庫(kù):沒有自主數(shù)據(jù)表,而是通過建立數(shù)據(jù)庫(kù)連接與主數(shù)據(jù)庫(kù)建立聯(lián)系,存放主數(shù)據(jù)庫(kù)的部分或全部數(shù)據(jù)的副本的數(shù)據(jù)庫(kù),也稱為復(fù)制數(shù)據(jù)庫(kù)。2.2 數(shù)據(jù)庫(kù)復(fù)制技術(shù)本節(jié)首先從復(fù)制分類和體系結(jié)構(gòu)等方面對(duì)數(shù)據(jù)庫(kù)復(fù)制技術(shù)做一個(gè)大概的介紹。2.2.1復(fù)制分類數(shù)據(jù)庫(kù)復(fù)制通常可被劃分為兩種類型:同步復(fù)制和異步復(fù)制。1. 同步復(fù)制(Synchronous Replication)同步復(fù)制采用同步分發(fā)數(shù)據(jù)庫(kù)技術(shù),復(fù)制數(shù)據(jù)在任何時(shí)間、任何復(fù)制節(jié)點(diǎn)均保持一致。如果復(fù)制環(huán)境中的任何一個(gè)節(jié)點(diǎn)的復(fù)制數(shù)據(jù)發(fā)生了更新操作,這種變化會(huì)立刻反映到其它所有復(fù)制節(jié)點(diǎn)。為了保證源數(shù)據(jù)和目標(biāo)數(shù)據(jù)的一致性,在復(fù)制過程中采用了兩階段提交協(xié)議;若目標(biāo)數(shù)據(jù)庫(kù)有多個(gè),則只有當(dāng)相互連接的每個(gè)目標(biāo)數(shù)據(jù)庫(kù)都同意接受該更新事務(wù)時(shí),作用在源數(shù)據(jù)上的修改事務(wù)和作用在各目標(biāo)數(shù)據(jù)庫(kù)的修改事務(wù)才算提交成功,否則,均回滾。同步復(fù)制可以保證復(fù)制環(huán)境中沒有數(shù)據(jù)沖突的存在。但由于在同步復(fù)制環(huán)境中,要求硬件設(shè)備和網(wǎng)絡(luò)要隨時(shí)可用,否則,一旦網(wǎng)絡(luò)不穩(wěn)定或硬件設(shè)備出現(xiàn)故障,則對(duì)源數(shù)據(jù)的修改和對(duì)目的數(shù)據(jù)的復(fù)制均會(huì)失敗。因此同步復(fù)制要耗費(fèi)更多的硬件和網(wǎng)絡(luò)資源?;跀?shù)據(jù)庫(kù)復(fù)制技術(shù)的數(shù)據(jù)轉(zhuǎn)移方案設(shè)計(jì)與實(shí)現(xiàn)2. 異步復(fù)制(Asynchronous Replication)異步復(fù)制,對(duì)執(zhí)行時(shí)間的要求就相對(duì)要比較松一些。異步復(fù)制采用異步分發(fā)數(shù)據(jù)庫(kù)技術(shù),也稱為存儲(chǔ)轉(zhuǎn)發(fā)復(fù)制,所有復(fù)制節(jié)點(diǎn)的數(shù)據(jù)在一定時(shí)間內(nèi)是不同步的。如果復(fù)制環(huán)境中的其中的一個(gè)節(jié)點(diǎn)的復(fù)制數(shù)據(jù)發(fā)生了更新操作,這種改變將在不同的事務(wù)中被傳播和應(yīng)用到其它所有復(fù)制節(jié)點(diǎn)。這些不同的事務(wù)間可以間隔幾秒,幾分鐘,幾小時(shí),也可以是幾天。復(fù)制節(jié)點(diǎn)之間的數(shù)據(jù)臨時(shí)是不同步的,但傳播最終將保證所有復(fù)制節(jié)點(diǎn)間的數(shù)據(jù)一致。在異步復(fù)制環(huán)境中,對(duì)任何一個(gè)復(fù)制節(jié)點(diǎn)上復(fù)制數(shù)據(jù)的更新將會(huì)在本地被捕捉到,生成一個(gè)延遲事務(wù)放入延遲事務(wù)隊(duì)列。在預(yù)定的時(shí)間間隔或是根據(jù)需要,延遲事務(wù)隊(duì)列中的延遲事務(wù)被傳播到其它復(fù)制節(jié)點(diǎn),并在節(jié)點(diǎn)上執(zhí)行。如果事務(wù)在一個(gè)復(fù)制節(jié)點(diǎn)執(zhí)行不成功,只有該節(jié)點(diǎn)的事務(wù)被回滾,復(fù)制數(shù)據(jù)不進(jìn)行更新,不會(huì)影響到其它的復(fù)制節(jié)點(diǎn)。異步復(fù)制環(huán)境相對(duì)于同步復(fù)制環(huán)境而言,要求比較少的網(wǎng)絡(luò)和硬件資源,并且提供了更好的可用性和性能。一個(gè)復(fù)制節(jié)點(diǎn)的失效不會(huì)影響到整個(gè)系統(tǒng)的正常運(yùn)行,應(yīng)用可以從其它的復(fù)制節(jié)點(diǎn)獲取數(shù)據(jù)。異步復(fù)制環(huán)境中,由于事務(wù)的延遲提交會(huì)導(dǎo)致系統(tǒng)中復(fù)制數(shù)據(jù)的暫時(shí)不一致,甚至有時(shí)候會(huì)產(chǎn)生沖突,如何處理沖突是設(shè)計(jì)異步復(fù)制方案時(shí)要考慮的問題。這兩種復(fù)制類型的差別是:同步復(fù)制是指在事務(wù)提交之前,更新操作在所有副本完成,它的優(yōu)點(diǎn)是可以保障副本之間的一致性及較強(qiáng)的容錯(cuò)性,但它也帶來(lái)一系列問題,其中包括:死鎖、通信量增加、節(jié)點(diǎn)規(guī)模的限制及事務(wù)響應(yīng)時(shí)間延長(zhǎng);而異步復(fù)制是在事務(wù)提交之后,更新操作才被傳播到其它節(jié)點(diǎn),它的優(yōu)點(diǎn)是降低了通信量且縮短了響應(yīng)時(shí)間,因而采用這種方法可提高系統(tǒng)效率,但是它最大的缺點(diǎn)是:先提交,后更改,有可能在不同節(jié)點(diǎn)的副本之間存在不一致性。2.2.2體系結(jié)構(gòu)數(shù)據(jù)庫(kù)復(fù)制技術(shù)的體系結(jié)構(gòu)體現(xiàn)了數(shù)據(jù)復(fù)制過程中數(shù)據(jù)源和數(shù)據(jù)目的之間的關(guān)系,有以下三種基本的體系結(jié)構(gòu),2,3,4 。1. 主/從結(jié)構(gòu)(Master-slaver Model)主/從結(jié)構(gòu)是數(shù)據(jù)只能從主數(shù)據(jù)庫(kù)中復(fù)制到復(fù)制數(shù)據(jù)庫(kù)中,如圖 2-1。更新數(shù)據(jù)的操作只能在主節(jié)點(diǎn)進(jìn)行,從節(jié)點(diǎn)僅供用戶讀取數(shù)據(jù)。但當(dāng)主節(jié)點(diǎn)出現(xiàn)故障時(shí),更新數(shù)據(jù)的應(yīng)用可以轉(zhuǎn)到其中一個(gè)從節(jié)點(diǎn)上去。這種復(fù)制方式實(shí)現(xiàn)起來(lái)比較簡(jiǎn)單,易于維護(hù)數(shù)據(jù)一致性。這是一種最簡(jiǎn)單的結(jié)構(gòu)?;跀?shù)據(jù)庫(kù)復(fù)制技術(shù)的數(shù)據(jù)轉(zhuǎn)移方案設(shè)計(jì)與實(shí)現(xiàn)圖 2-1 主從結(jié)構(gòu)2. 對(duì)等結(jié)構(gòu)(Peer to peer Model)對(duì)等結(jié)構(gòu)就是各個(gè)節(jié)點(diǎn)的地位是平等的,可以互相復(fù)制數(shù)據(jù),如圖 2-2。用戶可以在任何節(jié)點(diǎn)讀取和更新全局?jǐn)?shù)據(jù),在某一節(jié)點(diǎn)更新全局?jǐn)?shù)據(jù)時(shí),數(shù)據(jù)庫(kù)會(huì)將數(shù)據(jù)傳送到所有其它復(fù)制節(jié)點(diǎn)。圖 2-2 對(duì)等結(jié)構(gòu)這種復(fù)制的體系結(jié)構(gòu)一般會(huì)出現(xiàn)兩種情況,一是需要復(fù)制的源數(shù)據(jù)分布在多個(gè)數(shù)據(jù)庫(kù)中,但對(duì)每個(gè)數(shù)據(jù)而言,全系統(tǒng)只有一個(gè)主數(shù)據(jù)庫(kù),每個(gè)主數(shù)據(jù)庫(kù)有自己的數(shù)據(jù),主數(shù)據(jù)庫(kù)更新自己的數(shù)據(jù),然后按約定復(fù)制到其它各復(fù)制數(shù)據(jù)庫(kù);二是需要復(fù)制更新的源數(shù)據(jù)分布在系統(tǒng)的多個(gè)數(shù)據(jù)庫(kù)中,每個(gè)需要復(fù)制的數(shù)據(jù)在本地更新,本地?cái)?shù)據(jù)庫(kù)就是主數(shù)據(jù)庫(kù),然后按約定復(fù)制到其它復(fù)制數(shù)據(jù)庫(kù)。在這種結(jié)構(gòu)中會(huì)產(chǎn)生更新沖突,應(yīng)用程序必須有辦法解決更新沖突。3. 聯(lián)接結(jié)構(gòu)(Cascade Model)級(jí)聯(lián)結(jié)構(gòu)是主/從結(jié)構(gòu)的一個(gè)擴(kuò)展,從主節(jié)點(diǎn)復(fù)制過來(lái)的數(shù)據(jù)又從該節(jié)點(diǎn)再次復(fù)制到其它復(fù)制節(jié)點(diǎn),即A節(jié)點(diǎn)把數(shù)據(jù)復(fù)制到B節(jié)點(diǎn),B節(jié)點(diǎn)又把這些數(shù)據(jù)或其中的部分?jǐn)?shù)據(jù)基于數(shù)據(jù)庫(kù)復(fù)制技術(shù)的數(shù)據(jù)轉(zhuǎn)移方案設(shè)計(jì)與實(shí)現(xiàn)再?gòu)?fù)制到其它節(jié)點(diǎn),如圖2-3所示。這種結(jié)構(gòu)可以平衡當(dāng)前各種數(shù)據(jù)需求對(duì)網(wǎng)絡(luò)通信的壓力。圖 2-3 聯(lián)接結(jié)構(gòu)比較上述三種結(jié)構(gòu),主/從結(jié)構(gòu)在管理上最簡(jiǎn)便,數(shù)據(jù)只能從主數(shù)據(jù)庫(kù)中復(fù)制到復(fù)制數(shù)據(jù)庫(kù)中。更新數(shù)據(jù)只能在主節(jié)點(diǎn)上進(jìn)行,從節(jié)點(diǎn)供用戶讀取數(shù)據(jù)。這種結(jié)構(gòu)實(shí)現(xiàn)起來(lái)比較簡(jiǎn)單,易于維護(hù)數(shù)據(jù)一致性,但由于數(shù)據(jù)只能在主數(shù)據(jù)庫(kù)進(jìn)行更新,降低了整個(gè)大系統(tǒng)的自治性。對(duì)等結(jié)構(gòu)是最靈活的一種結(jié)構(gòu),它充分體現(xiàn)了分布式數(shù)據(jù)庫(kù)的分布特性,各節(jié)點(diǎn)高度自治,可用性好,但它必須在解決修改沖突后才能使復(fù)制有效,然而解決修改沖突的難度較大、算法復(fù)雜、系統(tǒng)開銷大,因而其管理的代價(jià)也很高。聯(lián)接結(jié)構(gòu)在復(fù)制過程中能降低網(wǎng)絡(luò)開銷,但在復(fù)制鏈上的任一環(huán)節(jié)的問題都會(huì)引起復(fù)制失敗,使其后的所有節(jié)點(diǎn)都無(wú)法獲得復(fù)制數(shù)據(jù)。這種結(jié)構(gòu)通常與其它兩種結(jié)構(gòu)混合使用。2.3 主要環(huán)節(jié)數(shù)據(jù)庫(kù)復(fù)制就是通過將源數(shù)據(jù)庫(kù)中指定的數(shù)據(jù)復(fù)制到目標(biāo)數(shù)據(jù)庫(kù)中,以保持源數(shù)據(jù)庫(kù)與目標(biāo)數(shù)據(jù)庫(kù)中指定數(shù)據(jù)的同步,一般包括對(duì)源節(jié)點(diǎn)的變化捕獲及數(shù)據(jù)分發(fā)兩個(gè)主要環(huán)節(jié)。 2.3.1變化捕獲變化捕獲是數(shù)據(jù)庫(kù)復(fù)制的基礎(chǔ),它直接決定了數(shù)據(jù)庫(kù)復(fù)制的更新方式和選時(shí)方式。變化捕獲要獲得復(fù)制對(duì)象的變化序列。通過對(duì)當(dāng)前使用的變化捕獲方法的綜合分析,本文總結(jié)出五種基本變化捕獲形式,分別是基于快照法、基于觸發(fā)器法、基于日志法、基于時(shí)間戳和基于 API 法4。1. 基于快照法基于快照法是最簡(jiǎn)單的變化捕獲方法,可以在任何數(shù)據(jù)庫(kù)甚至是其他結(jié)構(gòu)化和半結(jié)構(gòu)化的數(shù)據(jù)源上實(shí)現(xiàn)。它不需要以來(lái)特別的機(jī)制,不占用額外的系統(tǒng)資源,管理和操作也非常容易,而且在復(fù)制初始化和崩潰恢復(fù)時(shí)是必須的。但由于無(wú)法區(qū)分復(fù)制對(duì)象中哪些記錄具體發(fā)生改變,因此效率很低。Oracle 和 Microsoft SQL Server 提供了基于快照的捕獲方法?;跀?shù)據(jù)庫(kù)復(fù)制技術(shù)的數(shù)據(jù)轉(zhuǎn)移方案設(shè)計(jì)與實(shí)現(xiàn)2. 基于觸發(fā)器法在源數(shù)據(jù)庫(kù)為復(fù)制對(duì)象創(chuàng)建相應(yīng)的觸發(fā)器,當(dāng)對(duì)復(fù)制對(duì)象進(jìn)行修改、插入和刪除等DML 命令時(shí),觸發(fā)器被喚醒,將變化傳播到目標(biāo)數(shù)據(jù)庫(kù)?;谟|發(fā)器法克服了基于快照法的主要缺點(diǎn),極大提高了效率,可用于同步復(fù)制、增量復(fù)制,但是觸發(fā)器捕獲法占用系統(tǒng)資源較多。Oracle 和 IBM DB2 都提供了基于觸發(fā)器的捕獲方法。3. 基于日志法數(shù)據(jù)庫(kù)事物日志是維護(hù)數(shù)據(jù)完整性和數(shù)據(jù)庫(kù)恢復(fù)的重要工具,其中包含了全部成功提交的數(shù)據(jù)庫(kù)操作記錄信息,基于日志法就是通過分析數(shù)據(jù)庫(kù)事務(wù)日志的信息來(lái)捕獲復(fù)制對(duì)象的變化序列。因?yàn)榇蠖鄶?shù)數(shù)據(jù)庫(kù)都有事務(wù)日志,利用日志方便,也不會(huì)站用太多額外的系統(tǒng)資源,該方法對(duì)任何類型的復(fù)制都使用, ;利用事務(wù)日志,復(fù)制對(duì)象的變化很容易在其他節(jié)點(diǎn)再現(xiàn),這能提高效率和保證數(shù)據(jù)的完整性;但基于日志法也存在一些缺點(diǎn),首先一些數(shù)據(jù)庫(kù)系統(tǒng)不公開日志的格式,除非廠家提供響應(yīng)的日志分析工具或借口,否則要開發(fā)一個(gè)基于日志的變化捕獲程序非常困難;其次,盡管都是利用數(shù)據(jù)庫(kù)事務(wù)日記捕獲變化,但不同數(shù)據(jù)庫(kù)系統(tǒng)在具體細(xì)節(jié)上還是存在很大差異,這給異構(gòu)數(shù)據(jù)庫(kù)復(fù)制帶來(lái)了新的麻煩。在實(shí)際運(yùn)用中,基于日志法是最普遍的變化捕獲方法。Microsoft SQL Server、Sybase、IBM DB2 都提供了基于日志法的捕獲方法。4. 基于時(shí)間戳法基于時(shí)間戳法需要相關(guān)應(yīng)用系統(tǒng)中的每個(gè)表中都有一個(gè)時(shí)間戳字段,以記錄每個(gè)表的修改時(shí)間。這種方法不影響原有應(yīng)用的運(yùn)行效率,但卻需要對(duì)原有系統(tǒng)做較大的調(diào)整,而且不能捕獲到那些并非通過應(yīng)用系統(tǒng)引起的操作數(shù)據(jù)變化。5. 基于 API 法一些小型數(shù)據(jù)庫(kù)和非關(guān)系型數(shù)據(jù)庫(kù)沒有觸發(fā)器和日志機(jī)制,還有另一些數(shù)據(jù)則因?yàn)槟承┰虿荒苁褂蒙仙鲜龅牟东@方法,此時(shí)還可以在應(yīng)用程序和數(shù)據(jù)庫(kù)間引入一類中間件,由它提供一系列 API(包括 ODBC 驅(qū)動(dòng)程序) ,這些中間件在完成應(yīng)用程序?qū)?shù)據(jù)庫(kù)修改的同時(shí)也把復(fù)制對(duì)象的變化序列記錄下來(lái),從而達(dá)到變化捕獲的目的。在某種意義上基于 API 法可以看承是基于日志法的一個(gè)變種,它能夠?qū)崿F(xiàn)基于日記法的大多數(shù)優(yōu)點(diǎn),而且給異構(gòu)數(shù)據(jù)庫(kù)復(fù)制帶來(lái)便利。但它存在著兩個(gè)嚴(yán)重的缺點(diǎn),一是對(duì)那些不經(jīng)過 API 的操作,如在控制臺(tái)命令行方式下執(zhí)行的 update、delete、insert等語(yǔ)句,所引起的變化是無(wú)法被 API 捕獲的;二是應(yīng)用程序的可移植性差,當(dāng)從一種運(yùn)行環(huán)境移植到另一種運(yùn)行環(huán)境時(shí),往往需要重新編寫應(yīng)用程序,甚至改變數(shù)據(jù)庫(kù)模式,尤其當(dāng) API 不是 ODBC 驅(qū)動(dòng)程序的時(shí)候。表 31 是對(duì)上述五種變化捕獲方法,從更新方式、適用范圍、占用資源、依賴機(jī)制、同步復(fù)制、異步復(fù)制及可移植性進(jìn)行對(duì)比。表 21 五種變化捕獲方法比較5捕獲方法更新方式適用范圍占用資源依賴機(jī)制同步復(fù)制異構(gòu)復(fù)制可移植性基于快照完整拷貝廣少無(wú)否是高基于觸發(fā)器增量修改一般多觸發(fā)器是困難低基于日志法增量修改一般一般日志是困難低基于時(shí)間戳法增量修改一般少時(shí)間戳困難苦難低基于 API 法增量修改窄一般中間件是是低基于數(shù)據(jù)庫(kù)復(fù)制技術(shù)的數(shù)據(jù)轉(zhuǎn)移方案設(shè)計(jì)與實(shí)現(xiàn)2.3.2數(shù)據(jù)分發(fā)分發(fā)有時(shí)也稱傳播(Propagate),負(fù)責(zé)節(jié)點(diǎn)之間數(shù)據(jù)的發(fā)送和接收。一般情況下,它把副本的更新信息從源節(jié)點(diǎn)傳輸?shù)侥繕?biāo)節(jié)點(diǎn),分發(fā)器在不同場(chǎng)合還有一些其它作用,例如在同步復(fù)制時(shí)分發(fā)器要承擔(dān)協(xié)調(diào)者的任務(wù),對(duì)等復(fù)制時(shí)如果發(fā)現(xiàn)復(fù)制沖突,分發(fā)器還負(fù)責(zé)傳遞控制信息和仲裁結(jié)果。由于數(shù)據(jù)分發(fā)是通過網(wǎng)絡(luò)來(lái)進(jìn)行的,網(wǎng)絡(luò)連接方式的不一樣直接影響了數(shù)據(jù)分發(fā)。就網(wǎng)絡(luò)連接方式而言,有基于消息(message-based)式和基于會(huì)話(session-based)式兩種?;谙⒌倪B接,又稱為消息隊(duì)列(message queuing)式或保存并轉(zhuǎn)發(fā)(store-and-forward)連接,是早期的數(shù)據(jù)庫(kù)復(fù)制方案廣泛采用的連接方式。源節(jié)點(diǎn)事先把要分發(fā)的數(shù)據(jù)保存在本地的歷史文件(如日志)中,到時(shí)再按照發(fā)送和接收消息包的方式來(lái)傳遞數(shù)據(jù)。傳遞消息包通過源節(jié)點(diǎn)和目標(biāo)節(jié)點(diǎn)的出/入(Outbound/Inbound)消息隊(duì)列來(lái)完成,在對(duì)等復(fù)制時(shí)還需要再提供一對(duì)反方向的出/入消息隊(duì)列。這種方式一般對(duì)網(wǎng)絡(luò)要求較高,有時(shí)必須管理傳輸路徑和復(fù)制的拓?fù)浣Y(jié)構(gòu)?;跁?huì)話的連接也稱點(diǎn)對(duì)點(diǎn)(point-to-point)連接,這種方式不需要事先準(zhǔn)備分發(fā)數(shù)據(jù),因此可以在分發(fā)時(shí)才捕獲變化。節(jié)點(diǎn)之間的數(shù)據(jù)傳播以會(huì)話的方式進(jìn)行,每個(gè)節(jié)點(diǎn)都可以同時(shí)發(fā)送和接受數(shù)據(jù)?;跁?huì)話的連接方式對(duì)網(wǎng)絡(luò)環(huán)境沒有特別要求,適用于各種拓?fù)浣Y(jié)構(gòu),基于會(huì)話式連接在可靠性、效率及可標(biāo)量性等方面具有優(yōu)勢(shì),從發(fā)展前景看,它有逐漸取代基于消息式連接的趨勢(shì),不過在同步復(fù)制時(shí)它不如基于消息式連接可靠。5分發(fā)工作由不同的節(jié)點(diǎn)承擔(dān)會(huì)形成不同的分發(fā)模型,從而影響復(fù)制的組織形式和效率。如果由源節(jié)點(diǎn)承擔(dān)分發(fā)任務(wù),表現(xiàn)為數(shù)據(jù)由源節(jié)點(diǎn)主動(dòng)地發(fā)送給目標(biāo)節(jié)點(diǎn),這就是“推出”模型(Push Model) ,如圖 24;而如果由目標(biāo)節(jié)點(diǎn)承擔(dān)分發(fā)任務(wù),表現(xiàn)為由目標(biāo)節(jié)點(diǎn)向源節(jié)點(diǎn)申請(qǐng)而得到數(shù)據(jù),這就是“拉回”模型(Pull Model),如圖 25。兩種模型都有其利弊,只有由源節(jié)點(diǎn)擔(dān)任分發(fā)工作的“推出”模型,主動(dòng)分發(fā)數(shù)據(jù),無(wú)視目標(biāo)節(jié)點(diǎn)是否可以接受,而目標(biāo)則會(huì)處于被動(dòng)等待狀態(tài),什么時(shí)候會(huì)有數(shù)據(jù)分發(fā)不得而知;“拉回”模型雖然使得目標(biāo)服務(wù)器有主動(dòng)申請(qǐng)的權(quán)利,但是要等待源服務(wù)器的響應(yīng)。如果能很好地讓兩種模型結(jié)合起來(lái),將可以大大提供數(shù)據(jù)分發(fā)的效率。目前大多數(shù)復(fù)制方案都同時(shí)支持這兩種模型,稱為“推-拉”模型, 如圖 26。圖 2-4 推出模型圖 2-5 拉回模型基于數(shù)據(jù)庫(kù)復(fù)制技術(shù)的數(shù)據(jù)轉(zhuǎn)移方案設(shè)計(jì)與實(shí)現(xiàn)圖 2-6 推-拉模型2.4 發(fā)展與現(xiàn)狀幾家大型數(shù)據(jù)庫(kù)廠商在其主流數(shù)據(jù)庫(kù)產(chǎn)品同構(gòu)復(fù)制的基礎(chǔ)上,進(jìn)一步地提出了各自的異構(gòu)數(shù)據(jù)庫(kù)復(fù)制方案,其中包括 Oracle 主張通過數(shù)據(jù)庫(kù)轉(zhuǎn)換器,Sybase 利用 LTM (日志傳輸器),IBM 使用數(shù)據(jù)變化表(Consistent-Change Data Table) ,微軟則提出出版者/訂閱者方案等。這些方案各有所長(zhǎng),但在一定程度上還存在著局限性。各個(gè)數(shù)據(jù)庫(kù)廠商由于要體現(xiàn)自己產(chǎn)品的特點(diǎn)及其他一些原因,由他們各自提出的方案都采用與數(shù)據(jù)庫(kù)系統(tǒng)核心關(guān)系緊密的實(shí)現(xiàn)技術(shù),因此不一定適用于其它數(shù)據(jù)庫(kù)系統(tǒng),彼此之間的兼容性較差。再者,各方案普遍存在著符合某種體系結(jié)構(gòu)或標(biāo)準(zhǔn)的前提,因此導(dǎo)致對(duì)系統(tǒng)資源的要求較高而應(yīng)用范圍卻受到限制??傮w說來(lái)目前的狀況是不能讓用戶滿意的。國(guó)內(nèi)對(duì)數(shù)據(jù)庫(kù)復(fù)制的研究與國(guó)際上相比還存在一定的差距,對(duì)異構(gòu)數(shù)據(jù)庫(kù)復(fù)制的研究則更少。作者只在一些文獻(xiàn)中發(fā)現(xiàn)部分相關(guān)內(nèi)容,其中比較系統(tǒng)的有中國(guó)人民大學(xué)的移動(dòng)數(shù)據(jù)庫(kù)系統(tǒng)金倉(cāng)系統(tǒng)(KingBase)、東南大學(xué)的 Galaxy 系統(tǒng)及國(guó)防科技大學(xué)的李霖等提出面向移動(dòng)領(lǐng)域的 TTR(三級(jí)復(fù)制體系結(jié)構(gòu),Three-Tier Replication Architecture)。2.5 本章小結(jié)作為后面工作的基礎(chǔ),本章通過分析研究數(shù)據(jù)庫(kù)復(fù)制技術(shù),對(duì)數(shù)據(jù)庫(kù)復(fù)制技術(shù)的主要步驟的變化捕獲,數(shù)據(jù)分發(fā)等方面進(jìn)行了總結(jié)歸納,最后簡(jiǎn)單介紹異構(gòu)數(shù)據(jù)庫(kù)的復(fù)制技術(shù)的發(fā)展現(xiàn)狀。基于數(shù)據(jù)庫(kù)復(fù)制技術(shù)的數(shù)據(jù)轉(zhuǎn)移方案設(shè)計(jì)與實(shí)現(xiàn)第 3 章現(xiàn)有異構(gòu)數(shù)據(jù)庫(kù)復(fù)制方案目前已有多數(shù)數(shù)據(jù)庫(kù)廠商提出并實(shí)現(xiàn)了異構(gòu)數(shù)據(jù)庫(kù)復(fù)制方案。本文重點(diǎn)關(guān)注數(shù)據(jù)庫(kù)復(fù)制方案包括Oracle的轉(zhuǎn)換器方案、Sybase的復(fù)制服務(wù)器方案、IBM DB2信息集成解決方案和微軟的出版者/訂閱者方案。3.1 Oracle 的轉(zhuǎn)換器方案Oracle 主張通過數(shù)據(jù)庫(kù)轉(zhuǎn)換器來(lái)實(shí)現(xiàn)異構(gòu)數(shù)據(jù)庫(kù)復(fù)制。如圖 3-1 所示。復(fù)制是對(duì)稱的方向.可以是 Oracle 數(shù)據(jù)庫(kù)到非 Oracle 數(shù)據(jù)庫(kù),也可以是非 Oracle 數(shù)據(jù)庫(kù)到 Oracle 數(shù)據(jù)庫(kù)。圖 3-1 Oracle 轉(zhuǎn)化器方案 實(shí)現(xiàn)簡(jiǎn)單和整體性程度高是轉(zhuǎn)換器方案的主要優(yōu)點(diǎn)。其缺點(diǎn)是在 UNIX 系統(tǒng)下 Oracle 與 SQL Server 間的數(shù)據(jù)復(fù)制無(wú)法實(shí)現(xiàn),需要另一臺(tái) Windows 下的 Oracle 9i 來(lái)做透明網(wǎng)關(guān)服務(wù)器。因?yàn)?SQL Server 本身不支持 UNIX,所以 Oracle 也無(wú)法直接在 UNIX 下訪問 SQL Server。再者,由于數(shù)據(jù)庫(kù)透明網(wǎng)關(guān)/轉(zhuǎn)換器的復(fù)雜性,這種方案的運(yùn)行性能受到限制,而且成本高。3.2 SYBASE 復(fù)制服務(wù)器方案6Sybase 的復(fù)制方案是基于日志的,它的系列服務(wù)器產(chǎn)品中包含了專用于復(fù)制的復(fù)制服務(wù)器。 Sybase 復(fù)制方案的關(guān)鍵成分是 LTM (Log Transfer Manager 日志傳輸管理器),它是一個(gè)在源節(jié)點(diǎn)檢測(cè)數(shù)據(jù)庫(kù)日志的進(jìn)程或線程,一旦 LTM 發(fā)現(xiàn)源數(shù)據(jù)發(fā)生變化,就立即通知本地的復(fù)制服務(wù)器,將變化序列盡快地分發(fā)給遠(yuǎn)程節(jié)點(diǎn),那里的復(fù)制服務(wù)器接收到以后,同步目標(biāo)數(shù)據(jù)庫(kù)而完成復(fù)制過程,如圖 32?;跀?shù)據(jù)庫(kù)復(fù)制技術(shù)的數(shù)據(jù)轉(zhuǎn)移方案設(shè)計(jì)與實(shí)現(xiàn)圖 3-2 SYBASE 的 LTM 方案LTM 進(jìn)程,是一個(gè)由 SYBASE Open Server/Open Client 編寫的應(yīng)用程序,這個(gè)進(jìn)程可以駐留在單獨(dú)的機(jī)器上。正是原因 SYBASE 復(fù)制服務(wù)器才使用戶將復(fù)制系統(tǒng)對(duì)主數(shù)據(jù)庫(kù)施加的負(fù)擔(dān)降低到最小限度。又因?yàn)?Sybase 提供了 RCL(復(fù)制命令語(yǔ)言),所以 LTM 方案的適用范圍廣而且易于移植。然而,它的主要缺點(diǎn)在于受 C/S 體系的限制,LTM 方案一般只支持主從式復(fù)制;再者,LTM 方案的傳播只支持 ASAP (as soon as possible)方式,缺乏選時(shí)、調(diào)度等方面的選擇;還有當(dāng)通過 WAN 復(fù)制時(shí),需要事先人工規(guī)劃網(wǎng)絡(luò)路徑,同時(shí)對(duì)網(wǎng)絡(luò)質(zhì)量的要求也比較高 5 。3.3 IBM DB2 信息集成解決方案IBM 的異構(gòu)復(fù)制方式是基于觸發(fā)器的,通過觸發(fā)器捕獲復(fù)制源的變化信息并存入變化數(shù)據(jù)表(Consistent-Change Data Table)7;實(shí)施程序根據(jù)復(fù)制周期從變化數(shù)據(jù)表讀取內(nèi)容并根據(jù)它們來(lái)修改目標(biāo)數(shù)據(jù)庫(kù)。IBM 的變化數(shù)據(jù)表方案的優(yōu)點(diǎn)在于,IBM 的數(shù)據(jù)庫(kù)家族龐大及 IBM 開發(fā)了一系列的輔助工具,因此它的支持面廣;再者,由于提供的復(fù)制數(shù)據(jù)字典非常完善,變化數(shù)據(jù)表方案的數(shù)據(jù)庫(kù)模式轉(zhuǎn)換功能優(yōu)于其它數(shù)據(jù)庫(kù)廠商的方案。不過變化數(shù)據(jù)表方案也有一些缺點(diǎn),比如變化數(shù)據(jù)表要占用較多的系統(tǒng)資源,如存儲(chǔ)空間、進(jìn)程等。3.4 Microsoft 的出版者/訂閱者方案Microsoft SQL Server 的復(fù)制方案稱為“出版者/訂閱者”方案7,其中有三個(gè)主要角色:出版者、訂閱者和分發(fā)者。源數(shù)據(jù)所在的服務(wù)器是出版者,負(fù)責(zé)發(fā)表數(shù)據(jù)。出版服務(wù)器把要發(fā)表的數(shù)據(jù)的所有改變情況的拷貝復(fù)制到分發(fā)服務(wù)器,分發(fā)服務(wù)器包含有一個(gè)分發(fā)數(shù)據(jù)庫(kù),可接收數(shù)據(jù)的所有改變,并保存這些改變,再把這些改變分發(fā)給訂閱服務(wù)器。出版者/訂閱者方案建立在 ODBC 或 OLE DB 標(biāo)準(zhǔn)上,要實(shí)現(xiàn) SQL Server 數(shù)據(jù)庫(kù)到非 SQL Server 數(shù)據(jù)庫(kù)的復(fù)制或從非 SQL server 到 SQL server 的復(fù)制,但是必須是在由 SQL Server 擔(dān)任分發(fā)者的前提下,為非 SQL Server 數(shù)據(jù)庫(kù)創(chuàng)建相應(yīng)的角色和代理。 “出版者/訂閱者”方案的優(yōu)點(diǎn)主要表現(xiàn)在,復(fù)制方式最全面,不僅提供了異步復(fù)制,還有用于同步復(fù)制的選項(xiàng);框架和構(gòu)造規(guī)范且明確,方便使用?;跀?shù)據(jù)庫(kù)復(fù)制技術(shù)的數(shù)據(jù)轉(zhuǎn)移方案設(shè)計(jì)與實(shí)現(xiàn)不過該方案也有一些缺點(diǎn)妨礙了它的進(jìn)一步應(yīng)用,比如必須由 SQL Server 服務(wù)器擔(dān)任分發(fā)器角色;還有 Microsoft SQL Server 只能運(yùn)行 windows 平臺(tái)。3.5 本章小結(jié)本章通過對(duì)現(xiàn)有成功的異構(gòu)數(shù)據(jù)庫(kù)復(fù)制方案的研究,得出結(jié)論,這些異構(gòu)數(shù)據(jù)庫(kù)復(fù)制方案優(yōu)勢(shì)突出,但同時(shí)也存在問題。數(shù)據(jù)庫(kù)廠商提供的復(fù)制方案依賴于廠商自己的數(shù)據(jù)庫(kù)系統(tǒng)核心關(guān)系緊密的實(shí)現(xiàn)技術(shù),不一定適用于其它數(shù)據(jù)庫(kù)系統(tǒng),復(fù)制方案不是完全異構(gòu)的?;跀?shù)據(jù)庫(kù)復(fù)制技術(shù)的數(shù)據(jù)轉(zhuǎn)移方案設(shè)計(jì)與實(shí)現(xiàn)第 4 章基于數(shù)據(jù)庫(kù)復(fù)制技術(shù)的數(shù)據(jù)轉(zhuǎn)移方案前面通過對(duì)現(xiàn)有成功的數(shù)據(jù)庫(kù)復(fù)制方案的研究及分析得到的結(jié)論表明,這些異構(gòu)數(shù)據(jù)庫(kù)復(fù)制方案優(yōu)勢(shì)突出,比如在運(yùn)行性能和整體性方面都有著明顯的優(yōu)勢(shì),而且產(chǎn)商大多提供了一些輔助工具可以協(xié)助用戶更好地完成復(fù)制任務(wù)等;但同時(shí)也存在問題,數(shù)據(jù)庫(kù)產(chǎn)商提供的復(fù)制方案依賴于產(chǎn)商自己的數(shù)據(jù)庫(kù)系統(tǒng)核心關(guān)系緊密的實(shí)現(xiàn)技術(shù),不一定適用于其它數(shù)據(jù)庫(kù)系統(tǒng),也就是說復(fù)制方案不是完全異構(gòu)的。作者結(jié)合自己參與項(xiàng)目的實(shí)際情況,為解決完全異構(gòu)及數(shù)據(jù)轉(zhuǎn)移問題,提出了基于 SQL的據(jù)庫(kù)復(fù)制技術(shù)的數(shù)據(jù)轉(zhuǎn)移方案,其核心思想是通過 SQL 語(yǔ)句取得源數(shù)據(jù)庫(kù)中的復(fù)制對(duì)象(源表或視圖),根據(jù)中央數(shù)據(jù)庫(kù)規(guī)范進(jìn)行轉(zhuǎn)化,設(shè)置復(fù)制周期,定時(shí)復(fù)制到目標(biāo)數(shù)據(jù)庫(kù),即中央數(shù)據(jù)庫(kù)。本章將從工作原理、設(shè)計(jì)思路、技術(shù)特點(diǎn)以及存在問題的解決方案等幾個(gè)方面介紹作者的思想。4.1 基礎(chǔ)概念4.1.1復(fù)制源一個(gè)復(fù)制源就是一張用戶欲從中拷貝數(shù)據(jù)的表或視圖,當(dāng)定義一個(gè)復(fù)制源時(shí),可以指定要復(fù)制的列和行。4.1.2任務(wù)集任務(wù)集:一個(gè)任務(wù)集定義復(fù)制源數(shù)據(jù)庫(kù)與目標(biāo)數(shù)據(jù)庫(kù)之間的關(guān)系及復(fù)制源與目標(biāo)的數(shù)據(jù)庫(kù)連接信息。4.1.3源服務(wù)器、目標(biāo)服務(wù)器與實(shí)施服務(wù)器源服務(wù)器是駐留變化將要被捕捉的表的數(shù)據(jù)庫(kù)服務(wù)器。目標(biāo)服務(wù)器是從數(shù)據(jù)源復(fù)制過來(lái)的數(shù)據(jù)將要駐留的數(shù)據(jù)庫(kù)服務(wù)器。實(shí)施服務(wù)器是分發(fā)控制數(shù)據(jù)駐留的數(shù)據(jù)庫(kù)服務(wù)器。實(shí)施服務(wù)器可以是源服務(wù)器、目標(biāo)服務(wù)器或網(wǎng)絡(luò)上的其它服務(wù)器。但是,為了性能考慮,通常實(shí)施服務(wù)器與目標(biāo)服務(wù)器相同,數(shù)據(jù)可以通過網(wǎng)絡(luò)“拉回”目標(biāo)數(shù)據(jù)庫(kù)。4.1.4源列與目標(biāo)列源列是復(fù)制源表中要復(fù)制的列。基于數(shù)據(jù)庫(kù)復(fù)制技術(shù)的數(shù)據(jù)轉(zhuǎn)移方案設(shè)計(jì)與實(shí)現(xiàn)目標(biāo)列是要插入的目標(biāo)數(shù)據(jù)庫(kù)列。4.1.5轉(zhuǎn)化轉(zhuǎn)化,是把所有數(shù)據(jù)按中央數(shù)據(jù)庫(kù)規(guī)范轉(zhuǎn)化。4.2 設(shè)計(jì)思路4.2.1工作原理1. 數(shù)據(jù)轉(zhuǎn)換數(shù)據(jù)轉(zhuǎn)換,根據(jù)目標(biāo)數(shù)據(jù)庫(kù)的規(guī)范,對(duì)源數(shù)據(jù)進(jìn)行數(shù)據(jù)格式及數(shù)據(jù)內(nèi)容標(biāo)準(zhǔn)化轉(zhuǎn)換。2. 數(shù)據(jù)復(fù)制數(shù)據(jù)復(fù)制根據(jù) 2.3 節(jié)提到可以分為變化捕獲和數(shù)據(jù)分發(fā)。變化捕獲是捕獲源表的變化序列的過程。本文的基于 SQL 的異構(gòu)數(shù)據(jù)庫(kù)復(fù)制技術(shù)的變化捕獲思想是為多個(gè)相關(guān)源表(極端的情況可能是一張?jiān)幢砘蛘麄€(gè)數(shù)據(jù)庫(kù)的所有表)創(chuàng)建相應(yīng)的 SQL 語(yǔ)句存放在實(shí)施服務(wù)器上,根據(jù)用戶所設(shè)定的任務(wù)調(diào)度時(shí)間適時(shí)進(jìn)行數(shù)據(jù)分發(fā)。數(shù)據(jù)分發(fā)是指將源表的變化信息實(shí)施到相應(yīng)的目標(biāo)表中的過程?;跀?shù)據(jù)庫(kù)復(fù)制技術(shù)的數(shù)據(jù)轉(zhuǎn)移方案的數(shù)據(jù)分發(fā)模型是“拉回”模型,因?yàn)楦鶕?jù)實(shí)際項(xiàng)目的特點(diǎn),實(shí)施服務(wù)器及目標(biāo)服務(wù)器對(duì)源數(shù)據(jù)只有只讀權(quán)限。4.2.2設(shè)計(jì)思想本文提出的方案的設(shè)計(jì)思想是由用戶根據(jù)需要?jiǎng)?chuàng)建任務(wù),并設(shè)置執(zhí)行周期,定期執(zhí)行任務(wù),以表的形式存放相關(guān)任務(wù)信息。任務(wù)創(chuàng)建包括取得復(fù)制源、取得目標(biāo)、數(shù)據(jù)轉(zhuǎn)換、任務(wù)保存等環(huán)節(jié)。任務(wù)執(zhí)行則就是數(shù)據(jù)庫(kù)復(fù)制過程。1. 取得復(fù)制源及取得目標(biāo)取得復(fù)制源及取得目標(biāo)要取得數(shù)據(jù)庫(kù)連接信息及所有要復(fù)制的列。取得復(fù)制源及目標(biāo)時(shí)要保證實(shí)施服務(wù)器正確連接到源服務(wù)器和目標(biāo)服務(wù)器。這主要是由使用者提供連接數(shù)據(jù)庫(kù)的信息,系統(tǒng)進(jìn)行連接測(cè)試。如果可以正確連接,保存連接信息包括數(shù)據(jù)庫(kù)類型、服務(wù)器名、用戶名、密碼及用戶模式。取得所有要復(fù)制的列,由用戶根據(jù)實(shí)際選擇要復(fù)制的源列和目標(biāo)列。系統(tǒng)保存源列集合和目標(biāo)列集合。2. 數(shù)據(jù)轉(zhuǎn)換數(shù)據(jù)轉(zhuǎn)換是任務(wù)創(chuàng)建中的最主要的環(huán)節(jié)。各個(gè)數(shù)據(jù)庫(kù)設(shè)計(jì)都有自己的相應(yīng)規(guī)范,數(shù)據(jù)庫(kù)與數(shù)據(jù)庫(kù)間卻存在的一定的規(guī)范性差異。各個(gè)數(shù)據(jù)庫(kù)根據(jù)自己對(duì)應(yīng)的字典表對(duì)表名、列名及字段內(nèi)容進(jìn)行一定的標(biāo)準(zhǔn)化。因此,這要求在進(jìn)行數(shù)據(jù)轉(zhuǎn)移過程中必須對(duì)數(shù)據(jù)進(jìn)行有效的轉(zhuǎn)化。源列的編碼必須根據(jù)源數(shù)據(jù)庫(kù)的字典表轉(zhuǎn)化為真實(shí)數(shù)據(jù),而當(dāng)復(fù)制到目標(biāo)數(shù)據(jù)庫(kù)的時(shí)候,則需要把真實(shí)數(shù)據(jù)根據(jù)目標(biāo)數(shù)據(jù)庫(kù)的字典表轉(zhuǎn)換成規(guī)范編碼。在本文基于數(shù)據(jù)庫(kù)復(fù)制技術(shù)的數(shù)據(jù)轉(zhuǎn)移方案設(shè)計(jì)與實(shí)現(xiàn)所提到的方案中,采用列映射信息表存放列轉(zhuǎn)化規(guī)則,映射信息表存于實(shí)施服務(wù)器上。在實(shí)際轉(zhuǎn)化過程中,由取得的表字段信息,組成 SQL 語(yǔ)句對(duì)其進(jìn)行數(shù)據(jù)轉(zhuǎn)換。由于各個(gè)數(shù)據(jù)庫(kù)的映射庫(kù),代碼庫(kù)設(shè)計(jì)不一致,本文提出的方案基于兩個(gè)可能存在的情況,設(shè)置映射信息表。一種是必須根據(jù)映射表及代碼表才能進(jìn)行代碼與真實(shí)數(shù)據(jù)間的轉(zhuǎn)換,如圖 4-1;另一種則是只需要代碼表就能進(jìn)行轉(zhuǎn)換,如圖 4-2。因此映射信息表字段包括列名、字典表名、字典表列字段名、代碼編號(hào)、代碼表名、代碼列名、真實(shí)數(shù)據(jù)列名等。列名(column_name):要進(jìn)行轉(zhuǎn)換的列的名稱。字典表名(dic_tablename):列對(duì)應(yīng)的字典表名稱。列字段名(dic_fieldname):字典表中存放表字段的列的名稱。代碼編號(hào)(codeid):字典表中對(duì)應(yīng)的代碼信息列。代碼表名(dm_tablename):列對(duì)應(yīng)的代碼表名。代碼列名(dm_code_column):代碼表中代碼所在列的列名稱。真實(shí)數(shù)據(jù)列名(dm_description):代碼表中真實(shí)數(shù)據(jù)所在列的列名稱。圖 4-1 映射表-代碼表聯(lián)合型圖 4-2 代碼表型每個(gè)任務(wù)創(chuàng)建時(shí)應(yīng)分別創(chuàng)建一張?jiān)戳杏成湫畔⒈砑耙粡埬繕?biāo)列映射信息表。源列映射信息表表名命名規(guī)則為 RULE+_源表名 1+_源表名 2+_源表 3+_.。目標(biāo)列映射信息表表名命名規(guī)則則是 RULE+_目標(biāo)表名。比如,從源表集合RSC.C001A001,RSC.C001A007復(fù)制到目標(biāo)表 RSC.RSC_RYXX.對(duì)應(yīng)的源列映射信息表表名是RULE_RSCC001A001_RSCC001A007,目標(biāo)列映射信息表表名則為 RULE_RSCRSC_RYXX。3. 任務(wù)保存任務(wù)保存是以任務(wù)信息表的形式把相關(guān)信息保存于實(shí)施服務(wù)器上。任務(wù)信息表字段包括任務(wù)號(hào)、源表集合、源列集合、目標(biāo)表、目標(biāo)列集合、復(fù)制源數(shù)據(jù)庫(kù)連接信息、目標(biāo)數(shù)據(jù)庫(kù)連接信息、源列映射信息表名、目標(biāo)列映射信息表名、數(shù)據(jù)類型映射信息及執(zhí)行周期。任務(wù)號(hào)(taskid):應(yīng)用程序在每個(gè)任務(wù)創(chuàng)建時(shí),根據(jù)創(chuàng)建時(shí)間,給每個(gè)任務(wù)分配基于數(shù)據(jù)庫(kù)復(fù)制技術(shù)的數(shù)據(jù)轉(zhuǎn)移方案設(shè)計(jì)與實(shí)現(xiàn)一個(gè)任務(wù)號(hào),用來(lái)表示任務(wù)。源表集合(srcSet):記錄所有復(fù)制源表名。源列集合(srcColSet):記錄所有要復(fù)制的列。目標(biāo)表(dstTable):記錄目標(biāo)表名。目標(biāo)列集合(srcColSet):記錄相對(duì)應(yīng)的目標(biāo)列。復(fù)制源數(shù)據(jù)庫(kù)信息(srcDBConnectInfo):連接復(fù)制源數(shù)據(jù)庫(kù)的所有信息,包括復(fù)制源數(shù)據(jù)庫(kù)類型、服務(wù)器名、用戶名、密碼及數(shù)據(jù)庫(kù)名。目標(biāo)數(shù)據(jù)庫(kù)信息(dstDBConnectInfo):連接目標(biāo)數(shù)據(jù)庫(kù)的所有信息,包括目標(biāo)數(shù)據(jù)庫(kù)類型、服務(wù)器名、用戶名、密碼及數(shù)據(jù)庫(kù)名。源列映射信息表名(srcMapInfo):包括源實(shí)體表與源代碼表之間的映射信息。目標(biāo)列映射信息表名(dstMapInfo):包括目標(biāo)實(shí)體表與目標(biāo)代碼表之間的映射信息。數(shù)據(jù)類型映射信息(dataMapInfo):記錄兩個(gè)數(shù)據(jù)庫(kù)間數(shù)據(jù)類型的映射信息。執(zhí)行周期(executrPeriod):記錄運(yùn)行周期。4. 數(shù)據(jù)庫(kù)復(fù)制數(shù)據(jù)庫(kù)復(fù)制思想就是從任務(wù)信息表讀取相關(guān)任務(wù)信息,根據(jù)數(shù)據(jù)庫(kù)連接信息、源表集合、源列集合、目標(biāo)表集合、目標(biāo)列集合等字段信息,根據(jù) SQL 語(yǔ)句取得復(fù)制源,根據(jù)列映射信息表進(jìn)行轉(zhuǎn)換,然后又根據(jù)數(shù)據(jù)類型映射表進(jìn)行數(shù)據(jù)類型映射,最后根據(jù)SQL 語(yǔ)句把源插入到目標(biāo)數(shù)據(jù)庫(kù)。4.3 技術(shù)特點(diǎn)4.3.1完全異構(gòu)完全異構(gòu)意味著復(fù)制能夠在所有數(shù)據(jù)庫(kù)至少是所有關(guān)系數(shù)據(jù)庫(kù)兼容的數(shù)據(jù)庫(kù)之間進(jìn)行。基于SQL的數(shù)據(jù)庫(kù)復(fù)制技術(shù)通過ODBC,OLE DB及PowerBuilder提供專用數(shù)據(jù)庫(kù)可連接各種數(shù)據(jù)庫(kù)。因此,此技術(shù)是完全異構(gòu)的。4.3.2數(shù)據(jù)庫(kù)系統(tǒng)無(wú)關(guān)目前的許多復(fù)制方案,特別是數(shù)據(jù)庫(kù)產(chǎn)商提供的數(shù)據(jù)復(fù)制方案,都依賴于與產(chǎn)商自己的數(shù)據(jù)庫(kù)系統(tǒng)核心關(guān)系緊密的實(shí)現(xiàn)技術(shù),而基于 SQL 的數(shù)據(jù)庫(kù)復(fù)制技術(shù)采用 PowerBuilder 技術(shù)開發(fā),使用 PowerBuilder 提供的數(shù)據(jù)庫(kù)專用接口及 ODBC、OLEDB 連接各種數(shù)據(jù)庫(kù),這樣利用這些接口,就不用考慮太多底層的數(shù)據(jù)庫(kù)系統(tǒng)的特性,可以透明地操作各種數(shù)據(jù)庫(kù)系統(tǒng)。對(duì)不同類型的數(shù)據(jù)庫(kù)的連接、訪問、執(zhí)行過程、查詢等等,對(duì)于應(yīng)用來(lái)說都是一樣的,所以可以做到數(shù)據(jù)庫(kù)系統(tǒng)無(wú)關(guān)。因此,此技術(shù)是與數(shù)據(jù)庫(kù)系統(tǒng)無(wú)關(guān)的。4.3.3通用性基于 SQL 的數(shù)據(jù)庫(kù)復(fù)制技術(shù)是以 SQL 語(yǔ)句形式出現(xiàn)的,可以給任何數(shù)據(jù)庫(kù)做復(fù)制。此技術(shù)的實(shí)施程序從任務(wù)集里讀取相關(guān)信息形成 SQL 語(yǔ)句對(duì)復(fù)制源數(shù)據(jù)庫(kù)進(jìn)行讀取,在目標(biāo)數(shù)據(jù)基于數(shù)據(jù)庫(kù)復(fù)制技術(shù)的數(shù)據(jù)轉(zhuǎn)移方案設(shè)計(jì)與實(shí)現(xiàn)庫(kù)執(zhí)行相對(duì)應(yīng) SQL 語(yǔ)句,進(jìn)行復(fù)制。4.3.4可配置基于 SQL 的數(shù)據(jù)庫(kù)復(fù)制數(shù)據(jù)轉(zhuǎn)移方案是可以配置的,根據(jù)用戶需要進(jìn)行配置。4.4 可能存在問題4.4.1效率問題由于使用的變化捕獲方法是完全捕獲,而不是通過監(jiān)視變化進(jìn)行的增量復(fù)制,這使得復(fù)制效率稍低。采取完全捕獲是由于作者根據(jù)實(shí)際實(shí)現(xiàn)項(xiàng)目的特殊性,對(duì)實(shí)時(shí)要求并不是特別高及數(shù)據(jù)源記錄數(shù)并不大及對(duì)信息完整性的要求較高等因素。然而,這個(gè)仍然有待進(jìn)一步改進(jìn)。4.4.2數(shù)據(jù)弱一致性由于使用定時(shí)復(fù)制技術(shù),所以在進(jìn)行兩次復(fù)制之間的這段時(shí)間內(nèi),不能保證多個(gè)數(shù)據(jù)副本之間的數(shù)據(jù)一致性,稱這種一致性為弱一致性; 基于SQL的數(shù)據(jù)庫(kù)復(fù)制技術(shù),提供手動(dòng)進(jìn)行復(fù)制,在獲知復(fù)制源數(shù)據(jù)已經(jīng)發(fā)生改變,但復(fù)制周期還未到的時(shí)候,可以啟動(dòng)手動(dòng)復(fù)制。4.4.3處理時(shí)間滯后由于是定時(shí)復(fù)制技術(shù),所以在主數(shù)據(jù)庫(kù)中新增加或修改的信息不能立即反映到從數(shù)據(jù)庫(kù)中,數(shù)據(jù)傳送的滯后就會(huì)造成事務(wù)處理時(shí)間的滯后。這種由定時(shí)進(jìn)行數(shù)據(jù)復(fù)制引起的事務(wù)處理時(shí)間的滯后,在多大程度上可以讓使用者接受,這是設(shè)置復(fù)制操作周期的重要依據(jù)。4.5 本章小結(jié)本章根據(jù)全面對(duì)數(shù)據(jù)庫(kù)復(fù)制技術(shù)的分析與研究,提出了基于 SQL 數(shù)據(jù)庫(kù)復(fù)制技術(shù)的數(shù)據(jù)轉(zhuǎn)移方案,并分析其技術(shù)特點(diǎn)及可能存在問題。基于數(shù)據(jù)庫(kù)復(fù)制技術(shù)的數(shù)據(jù)轉(zhuǎn)移方案設(shè)計(jì)與實(shí)現(xiàn)第 5 章技術(shù)實(shí)現(xiàn)為了基于 SQL 復(fù)制技術(shù)的可行性及技術(shù)特點(diǎn),作者與茅曉白同學(xué)共同開發(fā)了Transbuilder 數(shù)據(jù)移植工具,本章將進(jìn)行詳細(xì)介紹。5.1 實(shí)驗(yàn)環(huán)境實(shí)驗(yàn)環(huán)境如下:數(shù)據(jù)庫(kù)系統(tǒng): ORACLE9i, Microsoft SQL server 2000操作系統(tǒng): Windows server 2000, Windows server 網(wǎng)絡(luò):局域網(wǎng)(TCP/IP 100Mbps)硬件:PC 機(jī)(Pentium4 2.4G, 1G RAM, 80GHD), PC 機(jī)(Pentium4 2.4G,512M RAM, 80GHD), PC 機(jī)(Pentium4 2.4G, 256M RAM, 80GHD)開發(fā)平臺(tái):Sybase PowerBuilder 9.05.2 應(yīng)用背景在進(jìn)行課程研究的過程中,作者參與廈門大學(xué)信息化建設(shè)中心的數(shù)據(jù)轉(zhuǎn)移項(xiàng)目。根據(jù)各個(gè)部門學(xué)院的工作職能,各個(gè)部門學(xué)院共享基本數(shù)據(jù),保留私有數(shù)據(jù)。共享數(shù)據(jù)存放于中央數(shù)據(jù)庫(kù),各個(gè)部門學(xué)院擁有自己的數(shù)據(jù)庫(kù),如圖 5-1 所示。圖 5-1 數(shù)據(jù)庫(kù)系統(tǒng)結(jié)構(gòu)基于數(shù)據(jù)庫(kù)復(fù)制技術(shù)的數(shù)據(jù)轉(zhuǎn)移方案設(shè)計(jì)與實(shí)現(xiàn)項(xiàng)目第一期工作是將各個(gè)部門學(xué)院的共享數(shù)據(jù)抽取出來(lái)放于中央數(shù)據(jù)庫(kù)。第一階段任務(wù)是將人事處的人員基本信息復(fù)制到校園中央數(shù)據(jù)庫(kù),供其他相關(guān)部門共享。因此復(fù)制源為人事處數(shù)據(jù)庫(kù)的人員基本信息,目標(biāo)數(shù)據(jù)庫(kù)為中央數(shù)據(jù)庫(kù)。人事處數(shù)據(jù)庫(kù)是 Microsoft SQL server2000,中央數(shù)據(jù)庫(kù)則是 Oracle9i,數(shù)據(jù)庫(kù)間存在著異構(gòu)。再者,由于現(xiàn)有的源數(shù)據(jù)庫(kù)及目標(biāo)數(shù)據(jù)庫(kù)的設(shè)計(jì)不一樣,其中表結(jié)構(gòu)和字典表等的不一致性,給復(fù)制工作帶來(lái)了更大的挑戰(zhàn)。中央數(shù)據(jù)庫(kù)含有映射代碼庫(kù)、實(shí)體表庫(kù)、私有代碼庫(kù)及其他代碼庫(kù),如框架圖52 所示;人事處數(shù)據(jù)庫(kù)經(jīng)研究分析如圖 53 所示拓?fù)鋱D。因此,在復(fù)制過程要根據(jù)源數(shù)據(jù)庫(kù)的字典表對(duì)源數(shù)據(jù)進(jìn)行代碼與真實(shí)數(shù)據(jù)間的轉(zhuǎn)化,在復(fù)制到目標(biāo)數(shù)據(jù)庫(kù)時(shí)要根據(jù)目標(biāo)數(shù)據(jù)庫(kù)的字典表對(duì)數(shù)據(jù)進(jìn)行真實(shí)數(shù)據(jù)與代碼間的轉(zhuǎn)化。研研究究生生院院現(xiàn)現(xiàn)存存數(shù)數(shù)據(jù)據(jù)庫(kù)庫(kù)教教務(wù)務(wù)處處現(xiàn)現(xiàn)存存數(shù)數(shù)據(jù)據(jù)庫(kù)庫(kù)人人事事處處現(xiàn)現(xiàn)存存數(shù)數(shù)據(jù)據(jù)庫(kù)庫(kù)財(cái)財(cái)務(wù)務(wù)處處現(xiàn)現(xiàn)存存數(shù)數(shù)據(jù)據(jù)庫(kù)庫(kù)_DESCRIPTIONPKRSC_TABLENAME RSC_DESC_RYXX JZ010001 JZ010004 JZ010008 JZ010009 JZ010010 JZ010029 JZ200003 JZ030002映映射射代代碼碼庫(kù)庫(kù)X部部門門實(shí)實(shí)體體表表庫(kù)庫(kù)共共享享代代碼碼庫(kù)庫(kù)X部部門門私私有有代代碼碼庫(kù)庫(kù).表表名名 / / 字字段段名名 字字段段內(nèi)內(nèi)容容其其他他代代碼碼庫(kù)庫(kù)字字段段內(nèi)內(nèi)容容_DESCRIPTI
溫馨提示
- 1. 本站所有資源如無(wú)特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 山西衛(wèi)生健康職業(yè)學(xué)院《金融風(fēng)險(xiǎn)分析師(FRM)專題(雙語(yǔ))》2023-2024學(xué)年第二學(xué)期期末試卷
- 浙江金融職業(yè)學(xué)院《供變電系統(tǒng)項(xiàng)目設(shè)計(jì)》2023-2024學(xué)年第二學(xué)期期末試卷
- 廈門工學(xué)院《計(jì)算機(jī)在林業(yè)中的應(yīng)用》2023-2024學(xué)年第二學(xué)期期末試卷
- 湖南鐵道職業(yè)技術(shù)學(xué)院《生物化學(xué)實(shí)驗(yàn)A》2023-2024學(xué)年第二學(xué)期期末試卷
- 華北理工大學(xué)輕工學(xué)院《科研寫作》2023-2024學(xué)年第二學(xué)期期末試卷
- 齊魯醫(yī)藥學(xué)院《中外文化比較專題》2023-2024學(xué)年第二學(xué)期期末試卷
- 重慶對(duì)外經(jīng)貿(mào)學(xué)院《包裝材料及應(yīng)用》2023-2024學(xué)年第二學(xué)期期末試卷
- 醫(yī)院科室年度工作總結(jié)
- 母親六十歲生日宴會(huì)主持詞(7篇)
- 公司前臺(tái)的工作總結(jié)
- GB 4706.20-2004家用和類似用途電器的安全滾筒式干衣機(jī)的特殊要求
- 血管“斑塊”的風(fēng)險(xiǎn)課件
- mks spectra介紹殘余氣體分析儀
- 腹腔鏡下闌尾切除術(shù)護(hù)理課件
- 《抖音生活服務(wù)服務(wù)商合作手冊(cè)》
- 語(yǔ)文教學(xué)設(shè)計(jì)(教案目標(biāo))
- 中山大學(xué)抬頭信紙中山大學(xué)橫式便箋紙推薦信模板a
- 無(wú)形資產(chǎn)評(píng)估完整版課件
- 常暗之廂(7規(guī)則-簡(jiǎn)體修正)
- 制冷系統(tǒng)方案的設(shè)計(jì)pptx課件
- 修心七要原文
評(píng)論
0/150
提交評(píng)論