顧倩文,曾獻(xiàn)輝(東華大學(xué) 信息科學(xué)與技術(shù)學(xué)院,上海 201620)
多源異構(gòu)環(huán)境下數(shù)據(jù)同步復(fù)制技術(shù)的研究
顧倩文,曾獻(xiàn)輝
(東華大學(xué) 信息科學(xué)與技術(shù)學(xué)院,上海 201620)
針對(duì)多源異構(gòu)環(huán)境下數(shù)據(jù)的特點(diǎn),提出一種數(shù)據(jù)同步復(fù)制新方案。該方案解決了多源異構(gòu)環(huán)境下數(shù)據(jù)庫(kù)的訪問(wèn),數(shù)據(jù)的獲取與復(fù)制,動(dòng)態(tài)數(shù)據(jù)源的處理以及同步過(guò)程中數(shù)據(jù)沖突與同步的實(shí)時(shí)性等問(wèn)題。最后將所提出的方案應(yīng)用于某省高速公路車輛監(jiān)控系統(tǒng)中,達(dá)到了實(shí)際應(yīng)用要求,表明了該方案的正確性與有效性。
多源異構(gòu);數(shù)據(jù)同步復(fù)制;動(dòng)態(tài)數(shù)據(jù)源;數(shù)據(jù)沖突
隨著計(jì)算機(jī)技術(shù)的不斷發(fā)展,各種不同數(shù)據(jù)結(jié)構(gòu)類型的數(shù)據(jù)庫(kù)深入到不同的應(yīng)用領(lǐng)域,尤其是那些地域上分散而管理上又相對(duì)集中的跨地域集團(tuán)公司或者企業(yè)單位[1]。雖然使用數(shù)據(jù)同步技術(shù)可以提高數(shù)據(jù)信息的集中管理,提高整個(gè)分布式數(shù)據(jù)庫(kù)系統(tǒng)的響應(yīng)速度和可靠性[2],但是由于數(shù)據(jù)的異構(gòu)性和多樣性,數(shù)據(jù)同步復(fù)制仍存在許多問(wèn)題。本文針對(duì)數(shù)據(jù)同步復(fù)制中出現(xiàn)的問(wèn)題,提出了一種多源異構(gòu)數(shù)據(jù)同步復(fù)制的方法,該方法可以解決不同類型數(shù)據(jù)庫(kù)之間的訪問(wèn)、數(shù)據(jù)的實(shí)時(shí)獲取與復(fù)制、同步過(guò)程中數(shù)據(jù)沖突以及實(shí)際應(yīng)用中數(shù)據(jù)源動(dòng)態(tài)產(chǎn)生的處理、系統(tǒng)中斷數(shù)據(jù)丟失等問(wèn)題。
1.1 傳統(tǒng)的數(shù)據(jù)同步復(fù)制技術(shù)
傳統(tǒng)的分布式數(shù)據(jù)同步復(fù)制就是由數(shù)據(jù)庫(kù)自身同構(gòu)復(fù)制技術(shù)實(shí)現(xiàn)的,當(dāng)源表發(fā)生變化時(shí),由數(shù)據(jù)庫(kù)引擎引發(fā)同步事件,把源表中變化的數(shù)據(jù)同步更新到目標(biāo)數(shù)據(jù)庫(kù)中,但是這種復(fù)制技術(shù)只能在同構(gòu)數(shù)據(jù)庫(kù)之間使用[2]。
目前各數(shù)據(jù)庫(kù)開(kāi)發(fā)商在各自的數(shù)據(jù)庫(kù)同構(gòu)復(fù)制的基礎(chǔ)上提出了異構(gòu)數(shù)據(jù)庫(kù)的復(fù)制方案,例如 Microsoft SQL Server提出了出版者/預(yù)訂者同步方案[3-6],Oracle中采用多主復(fù)制和物化視圖的方案來(lái)實(shí)現(xiàn)數(shù)據(jù)同步的功能[4-6],DB使用CCD表來(lái)實(shí)現(xiàn)異構(gòu)數(shù)據(jù)庫(kù)之間的復(fù)制。雖然各廠商研發(fā)出輔助工具更好地完善了數(shù)據(jù)同步復(fù)制的功能,但是復(fù)制方案仍依賴于自己的數(shù)據(jù)庫(kù)管理系統(tǒng)(Database Management System,DBMS)核心技術(shù),不能保證完全與DBMS無(wú)關(guān)。
1.2 多源異構(gòu)數(shù)據(jù)的同步復(fù)制
通常情況下,多源異構(gòu)數(shù)據(jù)所在的分布式網(wǎng)絡(luò)結(jié)構(gòu)如圖1所示。圖中下級(jí)數(shù)據(jù)庫(kù)存在多個(gè)且分布在不同的物理位置上,它們的表結(jié)構(gòu)甚至采用的系統(tǒng)也不一樣。
圖1 數(shù)據(jù)庫(kù)分布的網(wǎng)絡(luò)結(jié)構(gòu)圖
與傳統(tǒng)數(shù)據(jù)同步相比,多源異構(gòu)數(shù)據(jù)的同步復(fù)制存在如下幾個(gè)難點(diǎn):(1)多個(gè)下級(jí)服務(wù)器的數(shù)據(jù)庫(kù)會(huì)因?yàn)槭褂酶鞣N不同的數(shù)據(jù)模型來(lái)表示和存儲(chǔ)數(shù)據(jù),導(dǎo)致數(shù)據(jù)格式的混亂,訪問(wèn)接口獨(dú)立。(2)需同步復(fù)制的下級(jí)數(shù)據(jù)源是動(dòng)態(tài)的,比如下級(jí)數(shù)據(jù)庫(kù)中某些表是按日或月動(dòng)態(tài)生成的。(3)某些情況下,不能對(duì)下級(jí)數(shù)據(jù)庫(kù)的表結(jié)構(gòu)進(jìn)行任何改變。當(dāng)表是動(dòng)態(tài)生成時(shí),無(wú)法修改表結(jié)構(gòu)因此不能利用數(shù)據(jù)庫(kù)本身的復(fù)制功能。(4)同步過(guò)程中能對(duì)重復(fù)的數(shù)據(jù)進(jìn)行過(guò)濾并進(jìn)行沖突處理。
從多源異構(gòu)環(huán)境下的數(shù)據(jù)同步特點(diǎn)可以看出,數(shù)據(jù)同步復(fù)制要解決的問(wèn)題包括:(1)異構(gòu)數(shù)據(jù)庫(kù)的訪問(wèn);(2)數(shù)據(jù)的獲取與復(fù)制;(3)動(dòng)態(tài)數(shù)據(jù)源的處理;(4)數(shù)據(jù)沖突與同步實(shí)時(shí)性。
2.1 異構(gòu)數(shù)據(jù)庫(kù)的訪問(wèn)
當(dāng)前主流的數(shù)據(jù)庫(kù)類型有 SQL Server、Oracle、Mysql、DB2D等。針對(duì)不同類型的數(shù)據(jù)庫(kù),本文采用ADO技術(shù)訪問(wèn)數(shù)據(jù)庫(kù),其連接數(shù)據(jù)庫(kù)的形式為:“Provider= SQLOLEDB.1/SQLNCLI10.1;Data Source=%s;Presist Security Info=False;User ID=%s;Password=%s;Initial Catalog=%s”,其中:Provider針對(duì)數(shù)據(jù)源不同,可選擇SQLOLEDB.1和SQLNCLI10.1兩種驅(qū)動(dòng)方式。
2.2 數(shù)據(jù)的獲取與復(fù)制
數(shù)據(jù)的獲取與復(fù)制指從下級(jí)源數(shù)據(jù)庫(kù)中讀取數(shù)據(jù),然后將所讀取的數(shù)據(jù)復(fù)制到上級(jí)數(shù)據(jù)庫(kù)中并標(biāo)記同步完成的過(guò)程。根據(jù)下級(jí)數(shù)據(jù)源中表結(jié)構(gòu)有可修改與不可修改兩種情況,分別設(shè)計(jì)方案:
(1)表結(jié)構(gòu)可修改時(shí),在下級(jí)數(shù)據(jù)庫(kù)的表中增加新字段int sendok,并設(shè)置字段的默認(rèn)值為0。每同步成功一條數(shù)據(jù),將 sendok字段的值設(shè)置為 1,若沒(méi)有同步成功,仍設(shè)置為0,其流程圖如圖2所示。
(2)表結(jié)構(gòu)不允許修改時(shí),在上級(jí)數(shù)據(jù)庫(kù)中新建輔助表來(lái)記錄下級(jí)數(shù)據(jù)庫(kù)的同步操作過(guò)程。設(shè)置同步跟蹤記錄的表名為Track,表中字段定義如表1所示。
圖2 表結(jié)構(gòu)允許修改的數(shù)據(jù)同步流程圖
表1 同步追蹤表的定義
在同步過(guò)程中,下級(jí)數(shù)據(jù)庫(kù)中的數(shù)據(jù)是不斷更新的,需要設(shè)置定時(shí)同步復(fù)制機(jī)制來(lái)完成同步。首先需要獲取當(dāng)前的系統(tǒng)時(shí)間和最近一次上傳的結(jié)束時(shí)間,若當(dāng)前系統(tǒng)時(shí)間小于上次上傳的結(jié)束時(shí)間,則放棄本次更新,等待下次更新。若當(dāng)前系統(tǒng)時(shí)間大于上次結(jié)束時(shí)間,則進(jìn)行該時(shí)間段內(nèi)新數(shù)據(jù)的同步操作。同步后,判斷此次操作是否成功,成功置1,否則置0,并在追蹤表中記錄操作,流程圖如圖3所示。
圖3 表結(jié)構(gòu)不允許修改的數(shù)據(jù)同步流程圖
2.3 動(dòng)態(tài)數(shù)據(jù)源的處理
在下級(jí)數(shù)據(jù)庫(kù)中,由于不同數(shù)據(jù)庫(kù)中表的創(chuàng)建方式不同,有些下級(jí)是按日或按月來(lái)動(dòng)態(tài)生成新表,會(huì)增加上級(jí)對(duì)下級(jí)數(shù)據(jù)源的查找難度,此時(shí)需根據(jù)表形成的規(guī)律來(lái)查找。例如有些數(shù)據(jù)源中表是以固定字符加年月日作為表名,需獲取表的名稱,再根據(jù)表形成的規(guī)律自動(dòng)拼裝來(lái)獲取日期信息。同步復(fù)制前,系統(tǒng)需要檢測(cè)是否有新表,若存在新表則進(jìn)行數(shù)據(jù)同步的操作,不存在則退出。
2.4 數(shù)據(jù)沖突與同步實(shí)時(shí)性
與傳統(tǒng)數(shù)據(jù)同步復(fù)制不同,多源異構(gòu)下的數(shù)據(jù)沖突主要是由于網(wǎng)絡(luò)異常造成的重復(fù)同步,以及為了保證數(shù)據(jù)一致性而不斷檢查與復(fù)制下級(jí)數(shù)據(jù)源等造成的。因此在設(shè)計(jì)上級(jí)數(shù)據(jù)庫(kù)中表的屬性時(shí),設(shè)定表的主鍵,對(duì)每條數(shù)據(jù)同步時(shí)先檢查相同主鍵的記錄是否存在,如果存在則返回。
同步的實(shí)時(shí)性取決于數(shù)據(jù)上傳的時(shí)間間隔,時(shí)間間隔越短,實(shí)時(shí)性越好,但計(jì)算機(jī)與網(wǎng)絡(luò)負(fù)荷越大;反之,實(shí)時(shí)性差,計(jì)算機(jī)與網(wǎng)絡(luò)負(fù)荷就小。為了解決這個(gè)矛盾,可采用動(dòng)態(tài)緩存機(jī)制提高同步的實(shí)時(shí)性,即將已同步數(shù)據(jù)的主鍵及關(guān)鍵字段信息,動(dòng)態(tài)地保存在內(nèi)存緩存中,從而有效地減少了計(jì)算機(jī)與網(wǎng)絡(luò)的負(fù)擔(dān)。
為了驗(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)了全線無(wú)盲點(diǎn)監(jiān)控,各個(gè)地點(diǎn)的子系統(tǒng)均記錄了所經(jīng)車輛的車牌、時(shí)間、車型等流水信息。為了實(shí)現(xiàn)對(duì)車輛在整個(gè)交通網(wǎng)絡(luò)中運(yùn)行情況的監(jiān)控,首要的任務(wù)就是將這些分散于各子系統(tǒng)的車輛流水?dāng)?shù)據(jù)實(shí)時(shí)同步復(fù)制到一個(gè)中心數(shù)據(jù)庫(kù)中。
3.1 軟件的設(shè)計(jì)
通過(guò)分析,高速公路系統(tǒng)數(shù)據(jù)源可歸納為三類:收費(fèi)站、主線卡口和服務(wù)區(qū),其特點(diǎn)如下:(1)存在的數(shù)據(jù)庫(kù)管理系統(tǒng)有 SQL Server 2000、SQL Server 2008、Oracle 9i;(2)數(shù)據(jù)存放的方式多樣,包括單一表、按月生成表、按日生成表等;(3)有些表結(jié)構(gòu)可修改,有些表結(jié)構(gòu)不能修改,比如按月生成表的情況,因此無(wú)法獲得生成表的源代碼。
為了實(shí)現(xiàn)對(duì)以上情況的靈活處理,軟件以XML格式的方式配置數(shù)據(jù)源的情況,同時(shí)利用多線程技術(shù)實(shí)現(xiàn)對(duì)多個(gè)數(shù)據(jù)源的同時(shí)處理,整個(gè)軟件的總體結(jié)構(gòu)如圖4所示。
圖4 高速公路監(jiān)控系統(tǒng)數(shù)據(jù)同步復(fù)制的軟件結(jié)構(gòu)
3.2 系統(tǒng)實(shí)現(xiàn)
高速公路車輛數(shù)據(jù)采集系統(tǒng)提供對(duì)全線各子系統(tǒng)中的車輛流水?dāng)?shù)據(jù)的實(shí)時(shí)收集功能,即實(shí)現(xiàn)對(duì)各個(gè)分散數(shù)據(jù)源的異構(gòu)數(shù)據(jù)的同步復(fù)制。該軟件系統(tǒng)以 Visual C++語(yǔ)言進(jìn)行開(kāi)發(fā),利用本文提出的多源異構(gòu)下數(shù)據(jù)同步復(fù)制方案,并結(jié)合多線程技術(shù)提升軟件的運(yùn)行效率。整個(gè)系統(tǒng)的運(yùn)行界面如圖5所示。
圖5 高速公路車輛數(shù)據(jù)采集系統(tǒng)主界面
從圖5可以看出,該系統(tǒng)可同時(shí)將多個(gè)下級(jí)數(shù)據(jù)源的數(shù)據(jù)同步復(fù)制到一個(gè)上級(jí)數(shù)據(jù)庫(kù)服務(wù)器中,實(shí)現(xiàn)對(duì)車輛流水?dāng)?shù)據(jù)的集中整合。該系統(tǒng)經(jīng)實(shí)際測(cè)試,已實(shí)現(xiàn)了23 h不間斷運(yùn)行,數(shù)據(jù)同步復(fù)制未發(fā)現(xiàn)多出一條記錄或者少一條記錄,數(shù)據(jù)正確率100%,在系統(tǒng)可靠性與數(shù)據(jù)完整性方面均達(dá)到了數(shù)據(jù)同步復(fù)制的要求。
本文針對(duì)多源異構(gòu)數(shù)據(jù)同步的實(shí)時(shí)性、可靠性、通用性的需求進(jìn)行了研究,提出了一種數(shù)據(jù)同步復(fù)制方案,解決了異構(gòu)環(huán)境下數(shù)據(jù)庫(kù)之間數(shù)據(jù)共享的問(wèn)題,并結(jié)合高速公路監(jiān)控系統(tǒng)的實(shí)際項(xiàng)目進(jìn)行了測(cè)試,驗(yàn)證了該方案具有可實(shí)用性并取得了預(yù)期的效果。
[1]胡金龍,許衛(wèi),房福龍.異構(gòu)數(shù)據(jù)庫(kù)同步復(fù)制技術(shù)研究與實(shí)現(xiàn)[J].長(zhǎng)江科學(xué)院院報(bào),2011,6(28):71-75.
[2]王婉菲,張志浩.分布式數(shù)據(jù)庫(kù)系統(tǒng)的復(fù)制機(jī)制及應(yīng)用[J].計(jì)算機(jī)工程與科學(xué),2003,25(1):88-91.
[3]楊鵬.異構(gòu)數(shù)據(jù)庫(kù)同步中間件技術(shù)的研究與實(shí)現(xiàn)[D].長(zhǎng)沙:國(guó)防科學(xué)技術(shù)大學(xué),2007.
[4]趙中華.基于XML的異地異構(gòu)數(shù)據(jù)庫(kù)的數(shù)據(jù)同步技術(shù)的研究[D].濟(jì)南:山東輕工業(yè)學(xué)院,2009.
[5]譚德才.基于郵件系統(tǒng)的遠(yuǎn)程異構(gòu)數(shù)據(jù)庫(kù)同步的設(shè)計(jì)與實(shí)現(xiàn)[D].廣州:華南理工大學(xué),2010.
[6]姜亦學(xué).分布式數(shù)據(jù)庫(kù)系統(tǒng)同步技術(shù)研究[D].長(zhǎng)春:長(zhǎng)春理工大學(xué),2008.
Research of data synchronous rep lication technology under the multi-source heterogeneous environment
Gu Qianwen,Zeng Xianhui(College of Information Science and Technology,Donghua University,Shanghai 201620,China)
According to the characteristics of the data synchronization under the multi-source heterogeneous environment,this paper proposes a new data synchronous replication resolution.Firstly this resolution can solve the problem of accessing database under the multi-source heterogeneous environment,data obtaining and copying data from the heterogeneous sources.It can also deal with the dynamic data sources,primary key conflicting and data synchronization of real-time problems in the process of the data synchronization.Finally,the proposed solution was applied to the province highway vehicle monitoring system,and the results shows that this solution can meet the actual application requirements and has the validity and effectiveness of the scheme.
multi-source heterogeneous;data synchronous replication;dynamic data sources;data conflicting
TN311
A
1674-7720(2015)22-0022-03
顧倩文,曾獻(xiàn)輝.多源異構(gòu)環(huán)境下數(shù)據(jù)同步復(fù)制技術(shù)的研究[J].微型機(jī)與應(yīng)用,2015,34(22):22-24.
2015-06-24)
顧倩文(1991-),通信作者,女,碩士研究生,主要研究方向:數(shù)據(jù)庫(kù)應(yīng)用技術(shù)、數(shù)據(jù)挖掘與數(shù)據(jù)分析。E-mail:425867297@qq.com。
曾獻(xiàn)輝(1974-),男,博士,副教授,主要研究方向:數(shù)據(jù)挖掘、智能優(yōu)化問(wèn)題、決策與分析。