一種分步式數(shù)據(jù)庫數(shù)據(jù)分發(fā)上傳同步方法
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及一種分步式數(shù)據(jù)庫數(shù)據(jù)分發(fā)上傳同步方法。
【背景技術(shù)】
[0002]隨著信息系統(tǒng)的日趨規(guī)模化、區(qū)域化,分布式數(shù)據(jù)庫在信息系統(tǒng)中所承擔(dān)的數(shù)據(jù)橋梁作用越來越重要,分布式數(shù)據(jù)庫的設(shè)計在系統(tǒng)中的應(yīng)用日漸廣泛。然而,由于系統(tǒng)的自身特點以及對系統(tǒng)的不同要求,在設(shè)計分布式數(shù)據(jù)庫系統(tǒng)的過程中,仍有許多需要研宄和解決的問題。其中最重要的問題之一就是如何保證分布式數(shù)據(jù)庫的數(shù)據(jù)同步,以確保整個系統(tǒng)數(shù)據(jù)的一致性和安全性。
[0003]在分布式數(shù)據(jù)庫系統(tǒng)中,廣泛使用了數(shù)據(jù)復(fù)制技術(shù)進行數(shù)據(jù)復(fù)制和傳輸,從而達到數(shù)據(jù)同步的目的。幾乎所有的大型數(shù)據(jù)庫系統(tǒng)都提供了自己的數(shù)據(jù)復(fù)制解決方案和數(shù)據(jù)復(fù)制組件,如基于發(fā)布/訂閱模型的數(shù)據(jù)復(fù)制技術(shù)。按數(shù)據(jù)復(fù)制的內(nèi)容方法分類,可以分為表復(fù)制、事務(wù)復(fù)制等等。進行復(fù)制的基本條件都需要有一定的網(wǎng)絡(luò)資源,要求有可靠的網(wǎng)絡(luò)傳輸。如果是表復(fù)制等需要復(fù)制較多數(shù)據(jù)時,還要求有較高的傳輸速度。
[0004]除通過數(shù)據(jù)復(fù)制進行數(shù)據(jù)同步外,還有基于Oracle行級安全策略的數(shù)據(jù)同步更新機制、基于Oracle只讀實體化視圖的數(shù)據(jù)異步更新機制、基于Oracle可更新實體化視圖的數(shù)據(jù)同步更新機制、基于代理的數(shù)據(jù)庫遠程數(shù)據(jù)同步解決方案。
[0005]上述方案中,分布式數(shù)據(jù)庫的同步更新對網(wǎng)絡(luò)和數(shù)據(jù)庫的安全性要求較高,高度依賴于系統(tǒng)和網(wǎng)絡(luò)的可用性。如果網(wǎng)絡(luò)和系統(tǒng)出現(xiàn)故障,則任何更新都不能執(zhí)行且不能進行異構(gòu)數(shù)據(jù)庫的數(shù)據(jù)同步。而基于Oracle只讀實體化視圖等異步更新方法又會存在一系列數(shù)據(jù)沖突問題。相比較于集中式數(shù)據(jù)庫系統(tǒng),很多常見的解決數(shù)據(jù)沖突的技術(shù),難以在分布式數(shù)據(jù)庫系統(tǒng)中應(yīng)用。
[0006]自增量標(biāo)識一致性問題:在集中式數(shù)據(jù)庫系統(tǒng)中經(jīng)常會利用自增量標(biāo)識來構(gòu)建表的主鍵,這樣應(yīng)用程序不用考慮標(biāo)識的唯一性維護問題,數(shù)據(jù)庫會根據(jù)規(guī)則自動維護各個表的標(biāo)識號。但在分布式數(shù)據(jù)庫系統(tǒng)中就無法利用該方法來構(gòu)建唯一標(biāo)識了,各站點數(shù)據(jù)庫按各自的自增規(guī)則產(chǎn)生的標(biāo)識肯定會重復(fù)。
[0007]表的唯一性約束問題:在集中式數(shù)據(jù)庫系統(tǒng)中經(jīng)常會基于一個或多個字段構(gòu)建表的唯一性約束條件,這樣可以簡化應(yīng)用程序的唯一性判別流程,數(shù)據(jù)庫會根據(jù)規(guī)則在插入數(shù)據(jù)前自動判別數(shù)據(jù)是否滿足唯一性約束條件。同樣的,在分布式數(shù)據(jù)庫系統(tǒng)中也無法利用該方法來進行唯一性判別,雖然數(shù)據(jù)在站點數(shù)據(jù)庫中是可以保證唯一性的,但在中心數(shù)據(jù)庫中合并時就有可能引發(fā)沖突。
[0008]多源數(shù)據(jù)更新問題:在集中式數(shù)據(jù)庫系統(tǒng)中,數(shù)據(jù)信息實時更新,均為用戶提交的最新信息。在分布式數(shù)據(jù)庫離線同步過程中,如果遇到多個站點對同一個數(shù)據(jù)源進行更新,采用哪個站點數(shù)據(jù)更新中心數(shù)據(jù)庫,則需要制定相應(yīng)的規(guī)則。
[0009]當(dāng)然為解決自增量標(biāo)識一致性問題,可以棄用數(shù)據(jù)庫自增量標(biāo)識,在中心數(shù)據(jù)庫中定義一個專門用于維護所有表的自增量標(biāo)識的表,由該表用來存放所有需要唯一標(biāo)識的表名稱和當(dāng)前所使用的ID值。然后寫一個存儲過程,專門用來從該表中取ID值。但此方法也存在相應(yīng)的缺陷:①效率低,每次取ID值都需要調(diào)用存儲過程從數(shù)據(jù)庫中檢索一次。②并發(fā)訪問存在風(fēng)險,多條數(shù)據(jù)同時存儲時無法保證標(biāo)識唯一。
【發(fā)明內(nèi)容】
[0010]本發(fā)明所要解決的技術(shù)問題是針對現(xiàn)有技術(shù)中存在上述缺陷,提供一種帶自增量標(biāo)識的分步式數(shù)據(jù)庫同步技術(shù),解決在分步式數(shù)據(jù)庫異步更新過程中遇到的自增量標(biāo)識一致性問題、表的唯一性約束問題和多源數(shù)據(jù)更新問題。
[0011]根據(jù)本發(fā)明,提供了一種分步式數(shù)據(jù)庫數(shù)據(jù)分發(fā)上傳同步方法,其中分布式數(shù)據(jù)庫系統(tǒng)由中心數(shù)據(jù)庫和多個站點數(shù)據(jù)庫組成,包括數(shù)據(jù)分發(fā)處理和數(shù)據(jù)上傳處理;其中,在數(shù)據(jù)分發(fā)處理中,從中心數(shù)據(jù)庫導(dǎo)出業(yè)務(wù)數(shù)據(jù),在站點數(shù)據(jù)庫導(dǎo)入業(yè)務(wù)數(shù)據(jù);而且,在數(shù)據(jù)上傳處理中,從站點數(shù)據(jù)庫導(dǎo)出業(yè)務(wù)數(shù)據(jù),在中心數(shù)據(jù)庫導(dǎo)入業(yè)務(wù)數(shù)據(jù)。
[0012]優(yōu)選地,所述分步式數(shù)據(jù)庫數(shù)據(jù)分發(fā)上傳同步方法包括:
[0013]第一步驟,用于對將要導(dǎo)出第一數(shù)據(jù)庫的業(yè)務(wù)數(shù)據(jù)的業(yè)務(wù)數(shù)據(jù)表進行分析以獲取表結(jié)構(gòu)和關(guān)聯(lián)關(guān)系;
[0014]第二步驟,用于根據(jù)第一步驟獲取的表結(jié)構(gòu)和關(guān)聯(lián)關(guān)系,獲取業(yè)務(wù)相關(guān)數(shù)據(jù)集合,將需要分發(fā)或上傳的業(yè)務(wù)數(shù)據(jù)以預(yù)定數(shù)據(jù)存儲格式分離或標(biāo)識出來;
[0015]第三步驟,用于對將要導(dǎo)入第二數(shù)據(jù)庫的業(yè)務(wù)數(shù)據(jù)的業(yè)務(wù)數(shù)據(jù)表進行分析以獲取表結(jié)構(gòu)和關(guān)聯(lián)關(guān)系;
[0016]第四步驟,用于分析第一步驟獲取到的業(yè)務(wù)數(shù)據(jù)表結(jié)構(gòu)和關(guān)聯(lián)關(guān)系,以及分析第三步驟獲取到的業(yè)務(wù)數(shù)據(jù)表結(jié)構(gòu)和關(guān)聯(lián)關(guān)系,并結(jié)合第二步驟獲取到的業(yè)務(wù)相關(guān)數(shù)據(jù)集,確定業(yè)務(wù)數(shù)據(jù)的導(dǎo)入順序,并根據(jù)業(yè)務(wù)數(shù)據(jù)的導(dǎo)入順序控制業(yè)務(wù)數(shù)據(jù)的依次導(dǎo)入。
[0017]優(yōu)選地,,第二步驟獲取的業(yè)務(wù)相關(guān)數(shù)據(jù)集合包括與業(yè)務(wù)數(shù)據(jù)相關(guān)的總表與分表的自增量標(biāo)識的對應(yīng)關(guān)系。
[0018]優(yōu)選地,所述的分步式數(shù)據(jù)庫數(shù)據(jù)分發(fā)上傳同步方法還包括:第五步驟,用于在第一數(shù)據(jù)庫和第二數(shù)據(jù)庫的業(yè)務(wù)數(shù)據(jù)表結(jié)構(gòu)異構(gòu)的情況下,根據(jù)將業(yè)務(wù)數(shù)據(jù)按預(yù)定格式要求進行轉(zhuǎn)換。
[0019]優(yōu)選地,第一數(shù)據(jù)庫是中心數(shù)據(jù)庫和站點數(shù)據(jù)庫中的一個。
[0020]優(yōu)選地,第二數(shù)據(jù)庫是中心數(shù)據(jù)庫和站點數(shù)據(jù)庫中的另一個。
[0021]優(yōu)選地,所述的分步式數(shù)據(jù)庫數(shù)據(jù)分發(fā)上傳同步方法還包括:
[0022]第六步驟,用于分析總表和分表的自增量標(biāo)識的對應(yīng)關(guān)系,判斷業(yè)務(wù)數(shù)據(jù)入庫操作是新增操作還是更新操作,并且在業(yè)務(wù)數(shù)據(jù)的自增量標(biāo)識已建立且在第二數(shù)據(jù)庫中已存在的情況下進行更新操作,否則進行新增操作,而且對于按新增操作入庫的業(yè)務(wù)數(shù)據(jù),獲取其新的自增量標(biāo)識。
[0023]第七步驟,用于針對第六步驟標(biāo)記出的以新增操作方式入庫的業(yè)務(wù)數(shù)據(jù)的新的自增量標(biāo)識,建立總表和分表自增量標(biāo)識的對應(yīng)關(guān)系。
[0024]第八步驟,用于根據(jù)第七步驟建立的總表和分表自增量標(biāo)識對應(yīng)關(guān)系,分析和更新待入庫業(yè)務(wù)數(shù)據(jù)的自增量標(biāo)識的引用。
[0025]第九步驟,用于將第七步驟建立的總表與分表自增量標(biāo)識對應(yīng)關(guān)系,更新到站點數(shù)據(jù)庫的標(biāo)識變更表中。
[0026]優(yōu)選地,在數(shù)據(jù)上傳處理中,在第六步驟中,監(jiān)測數(shù)據(jù)庫的唯一性約束沖突,根據(jù)唯一性約束沖突解決策略,對業(yè)務(wù)數(shù)據(jù)進行變更和標(biāo)識,并給出業(yè)務(wù)數(shù)據(jù)的變更列表,然后根據(jù)變更列表針對唯一性約束值進行一次業(yè)務(wù)數(shù)據(jù)分發(fā),保證中心數(shù)據(jù)庫和站點數(shù)據(jù)庫的數(shù)據(jù)一致性。
[0027]優(yōu)選地,在數(shù)據(jù)分發(fā)處理和數(shù)據(jù)上傳處理中,在第二步驟中,添加業(yè)務(wù)數(shù)據(jù)相關(guān)操作的時間戳信息;然后在數(shù)據(jù)上傳處理中,在第六步驟中,比對業(yè)務(wù)數(shù)據(jù)的時間戳,根據(jù)多源更新沖突解決策略,對業(yè)務(wù)數(shù)據(jù)進行更新和標(biāo)識,并給出業(yè)務(wù)數(shù)據(jù)的未更新列表;最后根據(jù)未更新列表的業(yè)務(wù)數(shù)據(jù)進行一次業(yè)務(wù)數(shù)據(jù)上傳或分發(fā),保證中心數(shù)據(jù)庫和站點數(shù)據(jù)庫的數(shù)據(jù)一致性。
【附圖說明】
[0028]結(jié)合附圖,并通過參考下面的詳細描述,將會更容易地對本發(fā)明有更完整的理解并且更容易地理解其伴隨的優(yōu)點和特征,其中:
[0029]圖1示意性地示出了根據(jù)本發(fā)明優(yōu)選實施例采用的帶自增量標(biāo)識的分布式數(shù)據(jù)庫的不意圖。
[0030]圖2示意性地示出了根據(jù)本發(fā)明優(yōu)選實施例的分步式數(shù)據(jù)庫數(shù)據(jù)分發(fā)上傳同步方法的流程圖。
[0031]圖3示意性地示出了根據(jù)本發(fā)明優(yōu)選實施例的業(yè)務(wù)數(shù)據(jù)分發(fā)流程圖。
[0032]圖4示意性地示出了根據(jù)本發(fā)明優(yōu)選實施例的業(yè)務(wù)數(shù)據(jù)上傳流程圖。
[0033]圖5示意性地示出了根據(jù)本發(fā)明優(yōu)選實施例的業(yè)務(wù)數(shù)據(jù)分發(fā)單表數(shù)據(jù)導(dǎo)入流程圖。
[0034]圖6示意性地示出了根據(jù)本發(fā)明優(yōu)選實施例的業(yè)務(wù)數(shù)據(jù)上傳單表數(shù)據(jù)導(dǎo)入流程圖。
[0035]圖7示意性地示出了根據(jù)本發(fā)明優(yōu)選實施例的業(yè)務(wù)數(shù)據(jù)從表自增量標(biāo)識更新流程圖。
[0036]圖8示意性地示出了根據(jù)本發(fā)明優(yōu)選實施例的總表業(yè)務(wù)數(shù)據(jù)自增量標(biāo)識的分發(fā)流程圖。
[0037]需要說明的是,附圖用于說明本發(fā)明,而非限制本發(fā)明。注意,表示結(jié)構(gòu)的附圖可能并非按比例繪制。并且,附圖中,相同或者類似的元件標(biāo)有相同或者類似的標(biāo)號。
【具體實施方式】
[0038]為了使本發(fā)明的內(nèi)容更加清楚和易懂,下面結(jié)合具體實施例和附圖對本發(fā)明的內(nèi)容進行詳細描述。
[0039]在基于分布式數(shù)據(jù)庫系統(tǒng)構(gòu)建的信息系統(tǒng)中,從中心數(shù)據(jù)庫業(yè)務(wù)數(shù)據(jù)總表到各站點數(shù)據(jù)庫業(yè)務(wù)數(shù)據(jù)分表,以及業(yè)務(wù)數(shù)據(jù)