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