操作。中心客戶端應(yīng)用直接操作中心數(shù)據(jù)庫的業(yè)務(wù)數(shù)據(jù)總表,完成業(yè)務(wù)相關(guān)數(shù)據(jù)的新增、修改和刪除。站點(diǎn)客戶端應(yīng)用直接操作站點(diǎn)數(shù)據(jù)庫的業(yè)務(wù)數(shù)據(jù)分表,完成業(yè)務(wù)相關(guān)數(shù)據(jù)的本地新增、修改和刪除。同時(shí),站點(diǎn)客戶端應(yīng)用通過業(yè)務(wù)數(shù)據(jù)分發(fā)中間件從中心數(shù)據(jù)庫系統(tǒng)中下載指定業(yè)務(wù)數(shù)據(jù)至站點(diǎn)數(shù)據(jù)庫,以及通過業(yè)務(wù)數(shù)據(jù)上傳中間件將站點(diǎn)數(shù)據(jù)庫的本地業(yè)務(wù)數(shù)據(jù)增量更新至中心數(shù)據(jù)庫。在業(yè)務(wù)數(shù)據(jù)分發(fā)和業(yè)務(wù)數(shù)據(jù)上傳過程中,將業(yè)務(wù)數(shù)據(jù)對象在總表與分表中自增量標(biāo)識的對應(yīng)關(guān)系記錄在標(biāo)識變更表中。
[0038]圖2示意性地示出了根據(jù)本發(fā)明優(yōu)選實(shí)施例的帶自增量標(biāo)識的分步式數(shù)據(jù)庫同步方法的流程圖。如圖2所示,根據(jù)本發(fā)明優(yōu)選實(shí)施例的帶自增量標(biāo)識的分步式數(shù)據(jù)庫同步方法可以分為數(shù)據(jù)導(dǎo)出處理和數(shù)據(jù)導(dǎo)入處理兩個(gè)過程。其中,在數(shù)據(jù)分發(fā)處理中,從中心數(shù)據(jù)庫導(dǎo)出業(yè)務(wù)數(shù)據(jù),在站點(diǎn)數(shù)據(jù)庫導(dǎo)入業(yè)務(wù)數(shù)據(jù);而且,在數(shù)據(jù)上傳處理中,從站點(diǎn)數(shù)據(jù)庫導(dǎo)出業(yè)務(wù)數(shù)據(jù),在中心數(shù)據(jù)庫導(dǎo)入業(yè)務(wù)數(shù)據(jù)。數(shù)據(jù)導(dǎo)出處理和數(shù)據(jù)導(dǎo)入處理均可采用圖2所示的流程進(jìn)行。
[0039]如圖2所述,根據(jù)本發(fā)明優(yōu)選實(shí)施例的帶自增量標(biāo)識的分步式數(shù)據(jù)庫同步方法包括:
[0040]第一步驟S1:業(yè)務(wù)數(shù)據(jù)表結(jié)構(gòu)和關(guān)聯(lián)關(guān)系分析
[0041]在通常情況下,數(shù)據(jù)庫中的業(yè)務(wù)數(shù)據(jù)都不是以單表的方式存在的,各表的實(shí)體對象間存在關(guān)聯(lián)關(guān)系,作為某個(gè)表主鍵的自增量標(biāo)識字段,可能以外鍵的形式被其他表所引用。當(dāng)業(yè)務(wù)數(shù)據(jù)對象在中心數(shù)據(jù)庫和站點(diǎn)數(shù)據(jù)庫間迀移時(shí),主表自增量標(biāo)識字段的變更勢必需要連帶更新有關(guān)聯(lián)關(guān)系的從表字段。并且,數(shù)據(jù)的導(dǎo)入導(dǎo)出也需要根據(jù)關(guān)聯(lián)關(guān)系,依次導(dǎo)入導(dǎo)出主表數(shù)據(jù)和從表數(shù)據(jù)。
[0042]業(yè)務(wù)數(shù)據(jù)分發(fā)與上傳流程的第一步驟SI,就是對將要導(dǎo)出第一數(shù)據(jù)庫(中心數(shù)據(jù)庫和站點(diǎn)數(shù)據(jù)庫中的一個(gè))的業(yè)務(wù)數(shù)據(jù)的業(yè)務(wù)數(shù)據(jù)表進(jìn)行表結(jié)構(gòu)和關(guān)聯(lián)關(guān)系分析。
[0043]第二步驟S2:獲取業(yè)務(wù)相關(guān)數(shù)據(jù)集
[0044]在業(yè)務(wù)數(shù)據(jù)分發(fā)和業(yè)務(wù)數(shù)據(jù)上傳過程中,所操作的業(yè)務(wù)對象是一個(gè)相對較小的數(shù)據(jù)集合,可能涉及單個(gè)數(shù)據(jù)表,也可能涉及多個(gè)數(shù)據(jù)表,可能涉及表中的全部數(shù)據(jù),也可能只涉及表中的部分?jǐn)?shù)據(jù)。
[0045]業(yè)務(wù)數(shù)據(jù)分發(fā)與上傳流程的第二步驟S2,就是在第一步驟SI的基礎(chǔ)上,根據(jù)表結(jié)構(gòu)和關(guān)聯(lián)關(guān)系,獲取業(yè)務(wù)相關(guān)數(shù)據(jù)集合,將需要分發(fā)或上傳的業(yè)務(wù)數(shù)據(jù)以一定的數(shù)據(jù)存儲格式分離或標(biāo)識出來。如果業(yè)務(wù)數(shù)據(jù)上傳過程,所獲取的業(yè)務(wù)相關(guān)數(shù)據(jù)集合還應(yīng)當(dāng)包括與業(yè)務(wù)數(shù)據(jù)相關(guān)的總表與分表的自增量標(biāo)識的對應(yīng)關(guān)系。
[0046]第三步驟S3:業(yè)務(wù)數(shù)據(jù)表結(jié)構(gòu)和關(guān)聯(lián)關(guān)系分析
[0047]該步驟與第一步驟SI相同。區(qū)別在于,第一步驟SI是針對數(shù)據(jù)導(dǎo)出數(shù)據(jù)庫進(jìn)行業(yè)務(wù)數(shù)據(jù)表結(jié)構(gòu)和關(guān)聯(lián)關(guān)系分析,第三步驟S3是針對數(shù)據(jù)導(dǎo)入數(shù)據(jù)庫(第二數(shù)據(jù)庫)進(jìn)行業(yè)務(wù)數(shù)據(jù)表結(jié)構(gòu)和關(guān)聯(lián)關(guān)系分析。即,第三步驟S3用于對將要導(dǎo)入第二數(shù)據(jù)庫(中心數(shù)據(jù)庫和站點(diǎn)數(shù)據(jù)庫中的另一個(gè))的業(yè)務(wù)數(shù)據(jù)的業(yè)務(wù)數(shù)據(jù)表進(jìn)行分析以獲取表結(jié)構(gòu)和關(guān)聯(lián)關(guān)系。
[0048]第四步驟S4:業(yè)務(wù)數(shù)據(jù)導(dǎo)入控制
[0049]業(yè)務(wù)數(shù)據(jù)的導(dǎo)入需要根據(jù)業(yè)務(wù)數(shù)據(jù)表的主從關(guān)系,按先后順序依次進(jìn)行導(dǎo)入的,這是一個(gè)循環(huán)往復(fù)的過程。
[0050]業(yè)務(wù)數(shù)據(jù)分發(fā)與上傳流程的第四步驟S4,就是分析第一步驟SI獲取到的業(yè)務(wù)數(shù)據(jù)表結(jié)構(gòu)和關(guān)聯(lián)關(guān)系,以及分析第三步驟S3獲取到的業(yè)務(wù)數(shù)據(jù)表結(jié)構(gòu)和關(guān)聯(lián)關(guān)系,并結(jié)合第二步驟S2獲取到的業(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)入。
[0051]第五步驟S5:業(yè)務(wù)數(shù)據(jù)格式轉(zhuǎn)換
[0052]該第五步驟S5為可選擇步驟。如果中心數(shù)據(jù)庫和站點(diǎn)數(shù)據(jù)庫的業(yè)務(wù)數(shù)據(jù)表結(jié)構(gòu)是同構(gòu)的,則可以跳過該步驟。如果中心數(shù)據(jù)庫和站點(diǎn)數(shù)據(jù)庫的業(yè)務(wù)數(shù)據(jù)表結(jié)構(gòu)是異構(gòu)的,則需要根據(jù)額外配置的中心數(shù)據(jù)庫和站點(diǎn)數(shù)據(jù)庫業(yè)務(wù)數(shù)據(jù)轉(zhuǎn)換表,先將業(yè)務(wù)數(shù)據(jù)按一定的格式要求進(jìn)行轉(zhuǎn)換,如進(jìn)行表空間的轉(zhuǎn)換、字段名稱的轉(zhuǎn)換、數(shù)據(jù)類型的轉(zhuǎn)換等。
[0053]業(yè)務(wù)數(shù)據(jù)分發(fā)與上傳流程的第五步驟S5,就是根據(jù)中心數(shù)據(jù)庫和站點(diǎn)數(shù)據(jù)庫業(yè)務(wù)數(shù)據(jù)轉(zhuǎn)換表,將第四步驟S4確定的業(yè)務(wù)數(shù)據(jù)進(jìn)行格式轉(zhuǎn)換,使其符合導(dǎo)入數(shù)據(jù)庫(第二數(shù)據(jù)庫)的表結(jié)構(gòu)和數(shù)據(jù)類型。
[0054]第六步驟S6:業(yè)務(wù)數(shù)據(jù)入庫,并獲取更新的自增量標(biāo)識
[0055]該步驟是本項(xiàng)技術(shù)的核心之一,解決了帶自增量標(biāo)識的分布式數(shù)據(jù)庫業(yè)務(wù)數(shù)據(jù)的自增量標(biāo)識一致性問題。該步驟,首先分析總表和分表的自增量標(biāo)識對應(yīng)關(guān)系,判斷業(yè)務(wù)數(shù)據(jù)入庫操作是新增操作還是更新操作。根據(jù)總表和分表的自增量標(biāo)識對應(yīng)關(guān)系,如果業(yè)務(wù)數(shù)據(jù)的自增量標(biāo)識已建立且在導(dǎo)入數(shù)據(jù)庫(第二數(shù)據(jù)庫)中已存在,則進(jìn)行更新操作,否則進(jìn)行新增操作。對于按新增操作入庫的業(yè)務(wù)數(shù)據(jù),獲取其新的自增量標(biāo)識。
[0056]業(yè)務(wù)數(shù)據(jù)分發(fā)與上傳流程的第六步驟S6,就是將第五步驟S5的格式化后的業(yè)務(wù)數(shù)據(jù)進(jìn)行入庫,同時(shí)標(biāo)記出以新增操作方式入庫的業(yè)務(wù)數(shù)據(jù)的新的自增量標(biāo)識,以及標(biāo)識出已完成更新操作的所有業(yè)務(wù)數(shù)據(jù)。
[0057]第七步驟S7:建立總表與分表自增量標(biāo)識對應(yīng)關(guān)系
[0058]在業(yè)務(wù)數(shù)據(jù)入庫操作后,需針對入庫的業(yè)務(wù)數(shù)據(jù)自增量標(biāo)識的更新情況,建立入庫后的業(yè)務(wù)數(shù)據(jù)的總表自增量標(biāo)識和分表自增量標(biāo)識的對應(yīng)關(guān)系。
[0059]業(yè)務(wù)數(shù)據(jù)分發(fā)與上傳流程的第七步驟S7,就是針對第六步驟S6標(biāo)記出的以新增操作方式入庫的業(yè)務(wù)數(shù)據(jù)的新的自增量標(biāo)識,建立總表和分表自增量標(biāo)識的對應(yīng)關(guān)系。
[0060]第八步驟S8:業(yè)務(wù)數(shù)據(jù)關(guān)聯(lián)分析及更新
[0061]在第六步中,業(yè)務(wù)數(shù)據(jù)入庫可能存在其自增量標(biāo)識發(fā)生變化,即總表中的自增量標(biāo)識和分表中的自增量標(biāo)識不一致。因此,在數(shù)據(jù)導(dǎo)入時(shí)應(yīng)當(dāng)根據(jù)自增量標(biāo)識的變更情況,對相關(guān)聯(lián)業(yè)務(wù)數(shù)據(jù)所引用的自增量標(biāo)識進(jìn)行相應(yīng)的更新。
[0062]業(yè)務(wù)數(shù)據(jù)分發(fā)與上傳流程的第八步驟S8,就是根據(jù)第七步驟S7建立的總表和分表自增量標(biāo)識對應(yīng)關(guān)系,分析和更新待入庫業(yè)務(wù)數(shù)據(jù)的自增量標(biāo)識的引用。
[0063]第九步驟S9:更新站點(diǎn)數(shù)據(jù)庫的標(biāo)識變更表
[0064]完成一組業(yè)務(wù)數(shù)據(jù)的入庫操作后,會產(chǎn)生新的自增量標(biāo)識對應(yīng)關(guān)系,需要將業(yè)務(wù)數(shù)據(jù)自增量標(biāo)識的更新情況,保存到站點(diǎn)數(shù)據(jù)庫的標(biāo)識變更表中,以便再次進(jìn)行業(yè)務(wù)數(shù)據(jù)分發(fā)與上傳時(shí),判斷業(yè)務(wù)數(shù)據(jù)入庫操作是新增操作還是更新操作。
[0065]業(yè)務(wù)數(shù)據(jù)分發(fā)與上傳流程的第九步驟S9,就是將第七步驟S7建立的總表與分表自增量標(biāo)識對應(yīng)關(guān)系,更新到站點(diǎn)數(shù)據(jù)庫的標(biāo)識變更表中。
[0066]【具體實(shí)例I】
[0067]以一個(gè)進(jìn)行項(xiàng)目管理的分布式數(shù)據(jù)庫為例,業(yè)務(wù)數(shù)據(jù)以項(xiàng)目數(shù)據(jù)表為中心,各業(yè)務(wù)數(shù)據(jù)表均與項(xiàng)目數(shù)據(jù)表存在直接或多表級聯(lián)的關(guān)聯(lián)關(guān)系,中心數(shù)據(jù)庫和站點(diǎn)數(shù)據(jù)庫的各業(yè)務(wù)數(shù)據(jù)表結(jié)構(gòu)相同,其中心數(shù)據(jù)庫向站點(diǎn)數(shù)據(jù)庫進(jìn)行某項(xiàng)目所有業(yè)務(wù)數(shù)據(jù)的分發(fā)流程如圖3所示,具體步驟如下。
[0068]I)獲取中心數(shù)據(jù)庫的基本結(jié)構(gòu)信息。數(shù)據(jù)庫基本結(jié)構(gòu)信息包括數(shù)據(jù)庫類型、表結(jié)構(gòu)、表的列信息、表的主鍵和外鍵等信息。
[0069]2)根據(jù)中心數(shù)據(jù)庫的基本結(jié)構(gòu)信息,建立業(yè)務(wù)數(shù)據(jù)表關(guān)聯(lián)關(guān)系。數(shù)據(jù)表的關(guān)聯(lián)關(guān)系中很重要的內(nèi)容為確定業(yè)務(wù)數(shù)據(jù)表的主從關(guān)系和導(dǎo)出操作順序。
[0070]3)根據(jù)業(yè)務(wù)數(shù)據(jù)表關(guān)聯(lián)關(guān)系,從項(xiàng)目數(shù)據(jù)表開始根據(jù)導(dǎo)出操作順序遍歷數(shù)據(jù)庫所有業(yè)務(wù)數(shù)據(jù)表中與某項(xiàng)目相關(guān)的所有業(yè)務(wù)數(shù)據(jù),并以Xml文檔的格式依次備份有關(guān)業(yè)務(wù)數(shù)據(jù)信息。
[0071]4)將備份好的Xml描述的業(yè)務(wù)數(shù)據(jù)信息文件以離線或在線的方式傳輸?shù)秸军c(diǎn)。
[0072]5)獲取站點(diǎn)數(shù)據(jù)庫的基本結(jié)構(gòu)信息和自定義結(jié)構(gòu)信息。數(shù)據(jù)庫基本結(jié)構(gòu)信息包括數(shù)據(jù)庫類型、表結(jié)構(gòu)、表的列信息、表的主鍵和外鍵等信息。數(shù)據(jù)庫自定義結(jié)構(gòu)信息一般是數(shù)據(jù)庫系統(tǒng)無法顯性標(biāo)識的信息,如:表內(nèi)部的自增量標(biāo)識引用、引用了多個(gè)表的自增量標(biāo)識、多表間循環(huán)引用自增量標(biāo)識。
[0073]6)根據(jù)站點(diǎn)數(shù)據(jù)庫的基本結(jié)構(gòu)信息和自定義結(jié)構(gòu)信息,建立業(yè)務(wù)數(shù)據(jù)表關(guān)