《電子技術(shù)應(yīng)用》
您所在的位置:首頁 > 嵌入式技術(shù) > 設(shè)計(jì)應(yīng)用 > 多源異構(gòu)環(huán)境下數(shù)據(jù)同步復(fù)制技術(shù)的研究
多源異構(gòu)環(huán)境下數(shù)據(jù)同步復(fù)制技術(shù)的研究
2015年微型機(jī)與應(yīng)用第22期
顧倩文,曾獻(xiàn)輝
(東華大學(xué) 信息科學(xué)與技術(shù)學(xué)院,上海 201620)
摘要: 針對多源異構(gòu)環(huán)境下數(shù)據(jù)的特點(diǎn),提出一種數(shù)據(jù)同步復(fù)制新方案。該方案解決了多源異構(gòu)環(huán)境下數(shù)據(jù)庫的訪問,數(shù)據(jù)的獲取與復(fù)制,動態(tài)數(shù)據(jù)源的處理以及同步過程中數(shù)據(jù)沖突與同步的實(shí)時性等問題。最后將所提出的方案應(yīng)用于某省高速公路車輛監(jiān)控系統(tǒng)中,達(dá)到了實(shí)際應(yīng)用要求,表明了該方案的正確性與有效性。
Abstract:
Key words :

  摘  要: 針對多源異構(gòu)環(huán)境下數(shù)據(jù)的特點(diǎn),提出一種數(shù)據(jù)同步復(fù)制新方案。該方案解決了多源異構(gòu)環(huán)境下數(shù)據(jù)庫的訪問,數(shù)據(jù)的獲取與復(fù)制,動態(tài)數(shù)據(jù)源的處理以及同步過程中數(shù)據(jù)沖突與同步的實(shí)時性等問題。最后將所提出的方案應(yīng)用于某省高速公路車輛監(jiān)控系統(tǒng)中,達(dá)到了實(shí)際應(yīng)用要求,表明了該方案的正確性與有效性。

  關(guān)鍵詞: 多源異構(gòu);數(shù)據(jù)同步復(fù)制;動態(tài)數(shù)據(jù)源;數(shù)據(jù)沖突

0 引言

  隨著計(jì)算機(jī)技術(shù)的不斷發(fā)展,各種不同數(shù)據(jù)結(jié)構(gòu)類型的數(shù)據(jù)庫深入到不同的應(yīng)用領(lǐng)域,尤其是那些地域上分散而管理上又相對集中的跨地域集團(tuán)公司或者企業(yè)單位[1]。雖然使用數(shù)據(jù)同步技術(shù)可以提高數(shù)據(jù)信息的集中管理,提高整個分布式數(shù)據(jù)庫系統(tǒng)的響應(yīng)速度和可靠性[2],但是由于數(shù)據(jù)的異構(gòu)性和多樣性,數(shù)據(jù)同步復(fù)制仍存在許多問題。本文針對數(shù)據(jù)同步復(fù)制中出現(xiàn)的問題,提出了一種多源異構(gòu)數(shù)據(jù)同步復(fù)制的方法,該方法可以解決不同類型數(shù)據(jù)庫之間的訪問、數(shù)據(jù)的實(shí)時獲取與復(fù)制、同步過程中數(shù)據(jù)沖突以及實(shí)際應(yīng)用中數(shù)據(jù)源動態(tài)產(chǎn)生的處理、系統(tǒng)中斷數(shù)據(jù)丟失等問題。

1 多源異構(gòu)數(shù)據(jù)同步復(fù)制技術(shù)

  1.1 傳統(tǒng)的數(shù)據(jù)同步復(fù)制技術(shù)

  傳統(tǒng)的分布式數(shù)據(jù)同步復(fù)制就是由數(shù)據(jù)庫自身同構(gòu)復(fù)制技術(shù)實(shí)現(xiàn)的,當(dāng)源表發(fā)生變化時,由數(shù)據(jù)庫引擎引發(fā)同步事件,把源表中變化的數(shù)據(jù)同步更新到目標(biāo)數(shù)據(jù)庫中,但是這種復(fù)制技術(shù)只能在同構(gòu)數(shù)據(jù)庫之間使用[2]。

  目前各數(shù)據(jù)庫開發(fā)商在各自的數(shù)據(jù)庫同構(gòu)復(fù)制的基礎(chǔ)上提出了異構(gòu)數(shù)據(jù)庫的復(fù)制方案,例如Microsoft SQL Server提出了出版者/預(yù)訂者同步方案[3-6],Oracle中采用多主復(fù)制和物化視圖的方案來實(shí)現(xiàn)數(shù)據(jù)同步的功能[4-6],DB使用CCD表來實(shí)現(xiàn)異構(gòu)數(shù)據(jù)庫之間的復(fù)制。雖然各廠商研發(fā)出輔助工具更好地完善了數(shù)據(jù)同步復(fù)制的功能,但是復(fù)制方案仍依賴于自己的數(shù)據(jù)庫管理系統(tǒng)(Database Management System,DBMS)核心技術(shù),不能保證完全與DBMS無關(guān)。

  1.2 多源異構(gòu)數(shù)據(jù)的同步復(fù)制

001.jpg

  通常情況下,多源異構(gòu)數(shù)據(jù)所在的分布式網(wǎng)絡(luò)結(jié)構(gòu)如圖1所示。圖中下級數(shù)據(jù)庫存在多個且分布在不同的物理位置上,它們的表結(jié)構(gòu)甚至采用的系統(tǒng)也不一樣。

  與傳統(tǒng)數(shù)據(jù)同步相比,多源異構(gòu)數(shù)據(jù)的同步復(fù)制存在如下幾個難點(diǎn):(1)多個下級服務(wù)器的數(shù)據(jù)庫會因?yàn)槭褂酶鞣N不同的數(shù)據(jù)模型來表示和存儲數(shù)據(jù),導(dǎo)致數(shù)據(jù)格式的混亂,訪問接口獨(dú)立。(2)需同步復(fù)制的下級數(shù)據(jù)源是動態(tài)的,比如下級數(shù)據(jù)庫中某些表是按日或月動態(tài)生成的。(3)某些情況下,不能對下級數(shù)據(jù)庫的表結(jié)構(gòu)進(jìn)行任何改變。當(dāng)表是動態(tài)生成時,無法修改表結(jié)構(gòu)因此不能利用數(shù)據(jù)庫本身的復(fù)制功能。(4)同步過程中能對重復(fù)的數(shù)據(jù)進(jìn)行過濾并進(jìn)行沖突處理。

2 多源異構(gòu)數(shù)據(jù)同步復(fù)制方案

  從多源異構(gòu)環(huán)境下的數(shù)據(jù)同步特點(diǎn)可以看出,數(shù)據(jù)同步復(fù)制要解決的問題包括:(1)異構(gòu)數(shù)據(jù)庫的訪問;(2)數(shù)據(jù)的獲取與復(fù)制;(3)動態(tài)數(shù)據(jù)源的處理;(4)數(shù)據(jù)沖突與同步實(shí)時性。

  2.1 異構(gòu)數(shù)據(jù)庫的訪問

  當(dāng)前主流的數(shù)據(jù)庫類型有SQL Server、Oracle、Mysql、DB2D等。針對不同類型的數(shù)據(jù)庫,本文采用ADO技術(shù)訪問數(shù)據(jù)庫,其連接數(shù)據(jù)庫的形式為:“Provider=SQLOLEDB.1/SQLNCLI10.1;Data Source=%s;Presist Security Info=False;User ID=%s;Password=%s;Initial Catalog=%s”,其中:Provider針對數(shù)據(jù)源不同,可選擇SQLOLEDB.1和SQLNCLI10.1兩種驅(qū)動方式。

  2.2 數(shù)據(jù)的獲取與復(fù)制

  數(shù)據(jù)的獲取與復(fù)制指從下級源數(shù)據(jù)庫中讀取數(shù)據(jù),然后將所讀取的數(shù)據(jù)復(fù)制到上級數(shù)據(jù)庫中并標(biāo)記同步完成的過程。根據(jù)下級數(shù)據(jù)源中表結(jié)構(gòu)有可修改與不可修改兩種情況,分別設(shè)計(jì)方案:

 ?。?)表結(jié)構(gòu)可修改時,在下級數(shù)據(jù)庫的表中增加新字段int sendok,并設(shè)置字段的默認(rèn)值為0。每同步成功一條數(shù)據(jù),將sendok字段的值設(shè)置為1,若沒有同步成功,仍設(shè)置為0,其流程圖如圖2所示。

002.jpg

  (2)表結(jié)構(gòu)不允許修改時,在上級數(shù)據(jù)庫中新建輔助表來記錄下級數(shù)據(jù)庫的同步操作過程。設(shè)置同步跟蹤記錄的表名為Track,表中字段定義如表1所示。

006.jpg

  在同步過程中,下級數(shù)據(jù)庫中的數(shù)據(jù)是不斷更新的,需要設(shè)置定時同步復(fù)制機(jī)制來完成同步。首先需要獲取當(dāng)前的系統(tǒng)時間和最近一次上傳的結(jié)束時間,若當(dāng)前系統(tǒng)時間小于上次上傳的結(jié)束時間,則放棄本次更新,等待下次更新。若當(dāng)前系統(tǒng)時間大于上次結(jié)束時間,則進(jìn)行該時間段內(nèi)新數(shù)據(jù)的同步操作。同步后,判斷此次操作是否成功,成功置1,否則置0,并在追蹤表中記錄操作,流程圖如圖3所示。

003.jpg

  2.3 動態(tài)數(shù)據(jù)源的處理

  在下級數(shù)據(jù)庫中,由于不同數(shù)據(jù)庫中表的創(chuàng)建方式不同,有些下級是按日或按月來動態(tài)生成新表,會增加上級對下級數(shù)據(jù)源的查找難度,此時需根據(jù)表形成的規(guī)律來查找。例如有些數(shù)據(jù)源中表是以固定字符加年月日作為表名,需獲取表的名稱,再根據(jù)表形成的規(guī)律自動拼裝來獲取日期信息。同步復(fù)制前,系統(tǒng)需要檢測是否有新表,若存在新表則進(jìn)行數(shù)據(jù)同步的操作,不存在則退出。

  2.4 數(shù)據(jù)沖突與同步實(shí)時性

  與傳統(tǒng)數(shù)據(jù)同步復(fù)制不同,多源異構(gòu)下的數(shù)據(jù)沖突主要是由于網(wǎng)絡(luò)異常造成的重復(fù)同步,以及為了保證數(shù)據(jù)一致性而不斷檢查與復(fù)制下級數(shù)據(jù)源等造成的。因此在設(shè)計(jì)上級數(shù)據(jù)庫中表的屬性時,設(shè)定表的主鍵,對每條數(shù)據(jù)同步時先檢查相同主鍵的記錄是否存在,如果存在則返回。

  同步的實(shí)時性取決于數(shù)據(jù)上傳的時間間隔,時間間隔越短,實(shí)時性越好,但計(jì)算機(jī)與網(wǎng)絡(luò)負(fù)荷越大;反之,實(shí)時性差,計(jì)算機(jī)與網(wǎng)絡(luò)負(fù)荷就小。為了解決這個矛盾,可采用動態(tài)緩存機(jī)制提高同步的實(shí)時性,即將已同步數(shù)據(jù)的主鍵及關(guān)鍵字段信息,動態(tài)地保存在內(nèi)存緩存中,從而有效地減少了計(jì)算機(jī)與網(wǎng)絡(luò)的負(fù)擔(dān)。

3 多源異構(gòu)下數(shù)據(jù)同步復(fù)制技術(shù)的應(yīng)用

  為了驗(yàn)證所提出方案的正確性和有效性,結(jié)合某省高速公路車輛監(jiān)控系統(tǒng)的數(shù)據(jù)同步任務(wù)進(jìn)行實(shí)際應(yīng)用研究。

  在高速公路網(wǎng)絡(luò)系統(tǒng)中,收費(fèi)站出入口以及眾多斷面節(jié)點(diǎn)基本實(shí)現(xiàn)了全線無盲點(diǎn)監(jiān)控,各個地點(diǎn)的子系統(tǒng)均記錄了所經(jīng)車輛的車牌、時間、車型等流水信息。為了實(shí)現(xiàn)對車輛在整個交通網(wǎng)絡(luò)中運(yùn)行情況的監(jiān)控,首要的任務(wù)就是將這些分散于各子系統(tǒng)的車輛流水?dāng)?shù)據(jù)實(shí)時同步復(fù)制到一個中心數(shù)據(jù)庫中。

  3.1 軟件的設(shè)計(jì)

  通過分析,高速公路系統(tǒng)數(shù)據(jù)源可歸納為三類:收費(fèi)站、主線卡口和服務(wù)區(qū),其特點(diǎn)如下:(1)存在的數(shù)據(jù)庫管理系統(tǒng)有SQL Server 2000、SQL Server 2008、Oracle 9i;(2)數(shù)據(jù)存放的方式多樣,包括單一表、按月生成表、按日生成表等;(3)有些表結(jié)構(gòu)可修改,有些表結(jié)構(gòu)不能修改,比如按月生成表的情況,因此無法獲得生成表的源代碼。

  為了實(shí)現(xiàn)對以上情況的靈活處理,軟件以XML格式的方式配置數(shù)據(jù)源的情況,同時利用多線程技術(shù)實(shí)現(xiàn)對多個數(shù)據(jù)源的同時處理,整個軟件的總體結(jié)構(gòu)如圖4所示。

004.jpg

  3.2 系統(tǒng)實(shí)現(xiàn)

  高速公路車輛數(shù)據(jù)采集系統(tǒng)提供對全線各子系統(tǒng)中的車輛流水?dāng)?shù)據(jù)的實(shí)時收集功能,即實(shí)現(xiàn)對各個分散數(shù)據(jù)源的異構(gòu)數(shù)據(jù)的同步復(fù)制。該軟件系統(tǒng)以Visual C++語言進(jìn)行開發(fā),利用本文提出的多源異構(gòu)下數(shù)據(jù)同步復(fù)制方案,并結(jié)合多線程技術(shù)提升軟件的運(yùn)行效率。整個系統(tǒng)的運(yùn)行界面如圖5所示。

005.jpg

  從圖5可以看出,該系統(tǒng)可同時將多個下級數(shù)據(jù)源的數(shù)據(jù)同步復(fù)制到一個上級數(shù)據(jù)庫服務(wù)器中,實(shí)現(xiàn)對車輛流水?dāng)?shù)據(jù)的集中整合。該系統(tǒng)經(jīng)實(shí)際測試,已實(shí)現(xiàn)了23 h不間斷運(yùn)行,數(shù)據(jù)同步復(fù)制未發(fā)現(xiàn)多出一條記錄或者少一條記錄,數(shù)據(jù)正確率100%,在系統(tǒng)可靠性與數(shù)據(jù)完整性方面均達(dá)到了數(shù)據(jù)同步復(fù)制的要求。

4 結(jié)論

  本文針對多源異構(gòu)數(shù)據(jù)同步的實(shí)時性、可靠性、通用性的需求進(jìn)行了研究,提出了一種數(shù)據(jù)同步復(fù)制方案,解決了異構(gòu)環(huán)境下數(shù)據(jù)庫之間數(shù)據(jù)共享的問題,并結(jié)合高速公路監(jiān)控系統(tǒng)的實(shí)際項(xiàng)目進(jìn)行了測試,驗(yàn)證了該方案具有可實(shí)用性并取得了預(yù)期的效果。

  參考文獻(xiàn)

  [1] 胡金龍,許衛(wèi),房福龍.異構(gòu)數(shù)據(jù)庫同步復(fù)制技術(shù)研究與實(shí)現(xiàn)[J].長江科學(xué)院院報,2011,6(28):71-75.

  [2] 王婉菲,張志浩.分布式數(shù)據(jù)庫系統(tǒng)的復(fù)制機(jī)制及應(yīng)用[J].計(jì)算機(jī)工程與科學(xué),2003,25(1):88-91.

  [3] 楊鵬.異構(gòu)數(shù)據(jù)庫同步中間件技術(shù)的研究與實(shí)現(xiàn)[D].長沙:國防科學(xué)技術(shù)大學(xué),2007.

  [4] 趙中華.基于XML的異地異構(gòu)數(shù)據(jù)庫的數(shù)據(jù)同步技術(shù)的研究[D].濟(jì)南:山東輕工業(yè)學(xué)院,2009.

  [5] 譚德才.基于郵件系統(tǒng)的遠(yuǎn)程異構(gòu)數(shù)據(jù)庫同步的設(shè)計(jì)與實(shí)現(xiàn)[D].廣州:華南理工大學(xué),2010.

  [6] 姜亦學(xué).分布式數(shù)據(jù)庫系統(tǒng)同步技術(shù)研究[D].長春:長春理工大學(xué),2008.


此內(nèi)容為AET網(wǎng)站原創(chuàng),未經(jīng)授權(quán)禁止轉(zhuǎn)載。