一種分布式事務(wù)同步的方法及系統(tǒng)的制作方法
【專利摘要】本申請(qǐng)?zhí)峁┮环N分布式事務(wù)同步的方法及系統(tǒng),其中該分布式事務(wù)同步的方法包括:將待同步的分布式事務(wù)的多個(gè)子事務(wù)分別從多個(gè)源數(shù)據(jù)庫向?qū)?yīng)的多個(gè)目標(biāo)數(shù)據(jù)庫同步,并將子事務(wù)標(biāo)識(shí)匯總表從源標(biāo)識(shí)數(shù)據(jù)庫向目標(biāo)標(biāo)識(shí)數(shù)據(jù)庫同步,其中,所述多個(gè)子事務(wù)分別包含所述多個(gè)子事務(wù)的實(shí)體以及與所述多個(gè)子事務(wù)相對(duì)應(yīng)的多個(gè)子事務(wù)標(biāo)識(shí)條目,并且所述子事務(wù)標(biāo)識(shí)匯總表包含所述多個(gè)子事務(wù)標(biāo)識(shí)條目;以及基于所述目標(biāo)標(biāo)識(shí)數(shù)據(jù)庫的所述子事務(wù)標(biāo)識(shí)匯總表,確定所述多個(gè)子事務(wù)在所述多個(gè)目標(biāo)數(shù)據(jù)庫中存在以完成所述分布式事務(wù)同步。通過采用本申請(qǐng)的技術(shù)方案,能夠?qū)Ψ植际绞聞?wù)進(jìn)行同步,并保證所述分布式事務(wù)同步的一致性。
【專利說明】一種分布式事務(wù)同步的方法及系統(tǒng)
【技術(shù)領(lǐng)域】
[0001] 本申請(qǐng)涉及互聯(lián)網(wǎng)領(lǐng)域,尤其涉及一種分布式事務(wù)同步的方法及系統(tǒng)。
【背景技術(shù)】
[0002] 隨著網(wǎng)絡(luò)技術(shù)的發(fā)展,網(wǎng)絡(luò)中不同業(yè)務(wù)系統(tǒng)間存在著越來越多的信息交互,存在 一類事務(wù),要求對(duì)在物理上處于不同數(shù)據(jù)庫中的數(shù)據(jù)的操作需要保證其在同一個(gè)事務(wù)中, 例如,電子商務(wù)、網(wǎng)站賬號(hào)注冊(cè)、微博、論壇發(fā)言等等,采用分布式事務(wù)的解決方案可以保證 這類事務(wù)的相關(guān)操作在同一個(gè)事務(wù)中,例如,用戶通過網(wǎng)絡(luò)購買某種商品,就可能涉及到訂 單系統(tǒng)和支付系統(tǒng),或者更多的業(yè)務(wù)系統(tǒng),可以對(duì)不同系統(tǒng)之間相互關(guān)聯(lián)的事務(wù)要進(jìn)行分 布式事務(wù)處理來完成。但是,如果事務(wù)的相關(guān)數(shù)據(jù)需要同步至其他數(shù)據(jù)服務(wù)器,并且被該數(shù) 據(jù)服務(wù)器的應(yīng)用所使用,就需要這些在物理上分布于不同數(shù)據(jù)庫中的數(shù)據(jù)保證一致性,即, 同一事務(wù)的數(shù)據(jù)需要同時(shí)同步到目標(biāo)數(shù)據(jù)庫,才能被目標(biāo)數(shù)據(jù)服務(wù)器的應(yīng)用所使用。例如, 某地包含多個(gè)數(shù)據(jù)庫的機(jī)房的推廣數(shù)據(jù)需要同步至異地的機(jī)房,并且被該異地機(jī)房中的應(yīng) 用所使用,就需要使這些物理上分布在不同數(shù)據(jù)庫中的分布式事務(wù)的數(shù)據(jù)在異地機(jī)房的數(shù) 據(jù)庫中保證一致性。
[0003] 目前,已有能夠使發(fā)生在同一數(shù)據(jù)庫中的事務(wù)在跨機(jī)房同步過程中仍然保證事務(wù) 一致性的同步技術(shù),例如,單點(diǎn)事務(wù)跨機(jī)房一致性同步,能夠?qū)崿F(xiàn)在物理上發(fā)生在同一個(gè)數(shù) 據(jù)庫中的事務(wù),能夠在跨機(jī)房同步過程中仍然保證事務(wù)的一致性。
[0004] 然而,對(duì)于分布式事務(wù),現(xiàn)有的技術(shù)方案只實(shí)現(xiàn)了對(duì)分布式事務(wù)本身的支持,例 如,用來處理分布式事務(wù)的XA規(guī)范,當(dāng)從數(shù)據(jù)庫中獲取某個(gè)最終的數(shù)據(jù),但是這個(gè)數(shù)據(jù)涉 及多個(gè)數(shù)據(jù)庫,需要采用分布式的方式分別獲得,XA規(guī)范采用兩階段提交解決了這個(gè)問題, 使得跨數(shù)據(jù)庫平臺(tái)或消息中間件的分布式事務(wù)支持成為了可能。但是,現(xiàn)有技術(shù)中并沒有 實(shí)現(xiàn)在物理上跨多臺(tái)數(shù)據(jù)庫服務(wù)器的分布式事務(wù)在同步后的一致性支持。
【發(fā)明內(nèi)容】
[0005] 本申請(qǐng)的主要目的在于提供一種分布式事務(wù)同步的方法及系統(tǒng),以解決現(xiàn)有技 術(shù)存在的分布式事務(wù)的一致性同步的問題,其中:本申請(qǐng)?zhí)峁┑囊环N分布式事務(wù)同步的方 法,包括:將待同步的分布式事務(wù)的多個(gè)子事務(wù)(Τ1,Τ2,···,Τη)分別從多個(gè)源數(shù)據(jù)庫(DB1, DB2,DB3,...,DBn)向?qū)?yīng)的多個(gè)目標(biāo)數(shù)據(jù)庫(DB1',DB2',DB3',...,?Βη')同步,并將 子事務(wù)標(biāo)識(shí)匯總表從源標(biāo)識(shí)數(shù)據(jù)庫向目標(biāo)標(biāo)識(shí)數(shù)據(jù)庫同步,其中,所述多個(gè)子事務(wù)分別包 含所述多個(gè)子事務(wù)的實(shí)體(ΤΒ1,ΤΒ2, "·,ΤΒη)以及與所述多個(gè)子事務(wù)相對(duì)應(yīng)的多個(gè)子事務(wù) 標(biāo)識(shí)條目(Tidl,Tid2,…,Tidn),并且所述子事務(wù)標(biāo)識(shí)匯總表包含所述多個(gè)子事務(wù)標(biāo)識(shí)條 目;以及基于所述目標(biāo)標(biāo)識(shí)數(shù)據(jù)庫的所述子事務(wù)標(biāo)識(shí)匯總表,確定所述多個(gè)子事務(wù)在所述 多個(gè)目標(biāo)數(shù)據(jù)庫中存在以完成所述分布式事務(wù)同步。
[0006] 根據(jù)本申請(qǐng)的實(shí)施例,在該方法中,在所述分布式事務(wù)執(zhí)行過程中,在每個(gè)子事務(wù) 提交到所述源數(shù)據(jù)庫的同時(shí)在子事務(wù)中寫入一條記錄作為子事務(wù)標(biāo)識(shí)條目,同時(shí)將每個(gè)子 事務(wù)標(biāo)識(shí)條目寫入所述源標(biāo)識(shí)數(shù)據(jù)庫的子事務(wù)標(biāo)識(shí)匯總表中。
[0007] 根據(jù)本申請(qǐng)的實(shí)施例,在該方法中,基于所述目標(biāo)標(biāo)識(shí)數(shù)據(jù)庫的所述子事務(wù)標(biāo)識(shí) 匯總表,確定所述多個(gè)子事務(wù)在所述多個(gè)目標(biāo)數(shù)據(jù)庫中存在以完成所述分布式事務(wù)同步, 包括:確定所述目標(biāo)標(biāo)識(shí)數(shù)據(jù)庫的每一子事務(wù)標(biāo)識(shí)條目是否在對(duì)應(yīng)的目標(biāo)數(shù)據(jù)庫存在;當(dāng) 確定所有子事務(wù)標(biāo)識(shí)條目都在對(duì)應(yīng)的目標(biāo)數(shù)據(jù)庫存在時(shí),確定所述分布式事務(wù)同步完成。
[0008] 根據(jù)本申請(qǐng)的實(shí)施例,在該方法中,還包括:當(dāng)確定任一子事務(wù)標(biāo)識(shí)條目在對(duì)應(yīng)的 目標(biāo)數(shù)據(jù)庫中存在時(shí),在所述子事務(wù)標(biāo)識(shí)條目內(nèi)添加同步成功標(biāo)記;確定所述目標(biāo)標(biāo)識(shí)數(shù) 據(jù)庫的每一子事務(wù)標(biāo)識(shí)條目是否帶有所述同步成功標(biāo)記;當(dāng)確定所述目標(biāo)標(biāo)識(shí)數(shù)據(jù)庫的所 有子事務(wù)標(biāo)識(shí)條目都帶有所述同步成功標(biāo)記時(shí),確定所述分布式事務(wù)同步完成。
[0009] 根據(jù)本申請(qǐng)的實(shí)施例,在該方法中,還包括:當(dāng)確定所述目標(biāo)標(biāo)識(shí)數(shù)據(jù)庫中任一子 事務(wù)標(biāo)識(shí)條目未帶有所述同步成功標(biāo)記時(shí),確定所述子事務(wù)標(biāo)識(shí)條目是否在對(duì)應(yīng)的目標(biāo)數(shù) 據(jù)庫中存在;如果所述子事務(wù)標(biāo)識(shí)條目在對(duì)應(yīng)的目標(biāo)數(shù)據(jù)庫中存在,則在所述子事務(wù)標(biāo)識(shí) 條目內(nèi)添加同步成功標(biāo)記。
[0010] 在本申請(qǐng)的另一方面中,提供一種分布式事務(wù)同步的系統(tǒng),包括:多個(gè)源數(shù)據(jù)庫 (DB1,DB2,DB3,...,DBn),源標(biāo)識(shí)數(shù)據(jù)庫、同步裝置、以及多個(gè)目標(biāo)數(shù)據(jù)庫(DB1',DB2', DB3',"·,0Βη'),目標(biāo)標(biāo)識(shí)數(shù)據(jù)庫,其中:所述多個(gè)源數(shù)據(jù)庫,用于存儲(chǔ)待同步的分布式 事務(wù)的多個(gè)子事務(wù)(Tl,Τ2, Τ3,…,Τη),其中所述多個(gè)子事務(wù)分別包含所述多個(gè)子事務(wù)的實(shí) 體(ΤΒ1,ΤΒ2, "·,ΤΒη)以及與所述多個(gè)子事務(wù)相對(duì)應(yīng)的多個(gè)子事務(wù)標(biāo)識(shí)條目(Tidl,Tid2,… ,Tidn);所述標(biāo)識(shí)數(shù)據(jù)庫,用于存儲(chǔ)子事務(wù)標(biāo)識(shí)匯總表,其中所述子事務(wù)標(biāo)識(shí)匯總表包含所 述多個(gè)子事務(wù)標(biāo)識(shí)條目;所述同步裝置,包括同步模塊和檢測模塊,其中:所述同步模塊用 于將所述多個(gè)子事務(wù)從所述源數(shù)據(jù)庫向所述目標(biāo)數(shù)據(jù)庫同步,并將所述子事務(wù)標(biāo)識(shí)匯總表 從所述源標(biāo)識(shí)數(shù)據(jù)庫向目標(biāo)標(biāo)識(shí)數(shù)據(jù)庫同步;并且所述檢測模塊用于基于所述目標(biāo)標(biāo)識(shí)數(shù) 據(jù)庫的所述子事務(wù)標(biāo)識(shí)匯總表,確定所述多個(gè)子事務(wù)在所述多個(gè)目標(biāo)數(shù)據(jù)庫中存在以完成 所述分布式事務(wù)同步。
[0011] 根據(jù)本申請(qǐng)的實(shí)施例,在該系統(tǒng)中,所述檢測模塊還包括:第一確定模塊,用于確 定所述目標(biāo)標(biāo)識(shí)數(shù)據(jù)庫的每一子事務(wù)標(biāo)識(shí)條目是否在對(duì)應(yīng)的目標(biāo)數(shù)據(jù)庫存在;當(dāng)確定所有 子事務(wù)標(biāo)識(shí)條目都在對(duì)應(yīng)的目標(biāo)數(shù)據(jù)庫存在時(shí),確定所述分布式事務(wù)同步完成。
[0012] 根據(jù)本申請(qǐng)的實(shí)施例,在該系統(tǒng)中,所述檢測模塊還包括:標(biāo)記模塊,用于當(dāng)確定 任一子事務(wù)標(biāo)識(shí)條目在對(duì)應(yīng)的目標(biāo)數(shù)據(jù)庫中存在時(shí),在所述子事務(wù)標(biāo)識(shí)條目內(nèi)添加同步成 功標(biāo)記;第二確定模塊,用于確定所述目標(biāo)標(biāo)識(shí)數(shù)據(jù)庫的每一子事務(wù)標(biāo)識(shí)條目是否帶有所 述同步成功標(biāo)記;當(dāng)確定所述目標(biāo)標(biāo)識(shí)數(shù)據(jù)庫的所有子事務(wù)標(biāo)識(shí)條目都帶有所述同步成功 標(biāo)記時(shí),確定所述分布式事務(wù)同步完成。
[0013] 根據(jù)本申請(qǐng)的實(shí)施例,在該系統(tǒng)中,所述第一確定模塊還用于當(dāng)確定所述目標(biāo)標(biāo) 識(shí)數(shù)據(jù)庫中任一子事務(wù)標(biāo)識(shí)條目未帶有所述同步成功標(biāo)記時(shí),確定所述子事務(wù)標(biāo)識(shí)條目是 否在對(duì)應(yīng)的目標(biāo)數(shù)據(jù)庫中存在;所述標(biāo)記模塊進(jìn)一步用于如果所述子事務(wù)標(biāo)識(shí)條目在對(duì)應(yīng) 的目標(biāo)數(shù)據(jù)庫中存在,則在所述子事務(wù)標(biāo)識(shí)條目內(nèi)添加同步成功標(biāo)記。
[0014] 與現(xiàn)有技術(shù)相比,根據(jù)本申請(qǐng)的技術(shù)方案,能夠?qū)Ψ植际绞聞?wù)進(jìn)行同步,并保證所 述分布式事務(wù)同步的一致性。通過在進(jìn)行所述分布式事務(wù)的同步后,確定目標(biāo)標(biāo)識(shí)數(shù)據(jù)庫 中的子事務(wù)標(biāo)識(shí)條目是否在所述子事務(wù)標(biāo)識(shí)條目所對(duì)應(yīng)的子事務(wù)的目標(biāo)數(shù)據(jù)庫中存在,即 保證所述分布式事務(wù)的每個(gè)子事務(wù)都同步成功,以確定所述分布式事務(wù)同步的一致性。
【專利附圖】
【附圖說明】
[0015] 此處所說明的附圖用來提供對(duì)本申請(qǐng)的進(jìn)一步理解,構(gòu)成本申請(qǐng)的一部分,本申 請(qǐng)的示意性實(shí)施例及其說明用于解釋本申請(qǐng),并不構(gòu)成對(duì)本申請(qǐng)的不當(dāng)限定。在附圖中:
[0016] 圖1是本申請(qǐng)實(shí)施例涉及的分布式事務(wù)同步的方法的流程圖;
[0017] 圖2是本申請(qǐng)實(shí)施例的對(duì)分布式事務(wù)進(jìn)行同步的示意圖;
[0018] 圖3是圖1中的步驟S102的具體流程圖;
[0019] 圖4是圖1中的步驟S102的優(yōu)選實(shí)施例的具體流程圖;以及
[0020] 圖5是本申請(qǐng)實(shí)施例涉及的分布式事務(wù)同步系統(tǒng)的框圖。
【具體實(shí)施方式】
[0021] 本申請(qǐng)的主要思想在于,進(jìn)行分布式事務(wù)的同步,并在同步后確定目標(biāo)標(biāo)識(shí)數(shù)據(jù) 庫中的子事務(wù)標(biāo)識(shí)條目是否在所述子事務(wù)標(biāo)識(shí)條目所對(duì)應(yīng)的子事務(wù)的目標(biāo)數(shù)據(jù)庫中存在, 以保證所述分布式事務(wù)同步的一致性。
[0022] 為使本申請(qǐng)的目的、技術(shù)方案和優(yōu)點(diǎn)更加清楚,以下結(jié)合附圖及具體實(shí)施例,對(duì)本 申請(qǐng)作進(jìn)一步地詳細(xì)說明。
[0023] 根據(jù)本申請(qǐng)的實(shí)施例,提供了一種分布式事務(wù)同步的方法。參考圖1,圖1是本 申請(qǐng)實(shí)施例的流程圖,如圖1所示,在步驟S101中,將待同步的分布式事務(wù)的多個(gè)子事務(wù) (T1,T2,…,Τη)分別從多個(gè)源數(shù)據(jù)庫(DB1,DB2, DB3,…,DBn)向?qū)?yīng)的多個(gè)目標(biāo)數(shù)據(jù)庫 (DB1',DB2',DB3',".,DBn')同步,并將子事務(wù)標(biāo)識(shí)匯總表從源標(biāo)識(shí)數(shù)據(jù)庫向目標(biāo)標(biāo) 識(shí)數(shù)據(jù)庫同步,其中,所述多個(gè)子事務(wù)分別包含所述多個(gè)子事務(wù)的實(shí)體(TB1,TB2,…,TBn) 以及與所述多個(gè)子事務(wù)相對(duì)應(yīng)的多個(gè)子事務(wù)標(biāo)識(shí)條目(Tidl,Tid2,…,Tidn),并且所述子 事務(wù)標(biāo)識(shí)匯總表包含所述多個(gè)子事務(wù)標(biāo)識(shí)條目。
[0024] 在步驟S102中,基于所述目標(biāo)標(biāo)識(shí)數(shù)據(jù)庫的所述子事務(wù)標(biāo)識(shí)匯總表,確定所述多 個(gè)子事務(wù)在所述多個(gè)目標(biāo)數(shù)據(jù)庫中存在以完成所述分布式事務(wù)同步。
[0025] 在進(jìn)行分布式事務(wù)的同步之前,還可以包括:在所述分布式事務(wù)執(zhí)行過程中,在每 個(gè)子事務(wù)提交到所述源數(shù)據(jù)庫的同時(shí)在子事務(wù)中寫入一條記錄作為子事務(wù)標(biāo)識(shí)條目,同時(shí) 將每個(gè)子事務(wù)標(biāo)識(shí)條目寫入所述源標(biāo)識(shí)數(shù)據(jù)庫的子事務(wù)標(biāo)識(shí)匯總表中。
[0026] 在這個(gè)過程中,在子事務(wù)中寫入一條記錄作為所述子事務(wù)的標(biāo)識(shí)條目,相當(dāng)于為 每個(gè)子事務(wù)建立了子事務(wù)影像,并且將子事務(wù)標(biāo)識(shí)條目寫入源數(shù)據(jù)庫的子事務(wù)標(biāo)識(shí)匯總表 中,后續(xù)在進(jìn)行了所述分布式事務(wù)的同步后,可以通過對(duì)同步至目標(biāo)標(biāo)識(shí)數(shù)據(jù)庫中的子事 務(wù)標(biāo)識(shí)匯總表中的子事務(wù)標(biāo)識(shí)條目是否在對(duì)應(yīng)的目標(biāo)數(shù)據(jù)庫中存在進(jìn)行確定,已確定所述 子事務(wù)標(biāo)識(shí)條目所對(duì)應(yīng)的子事務(wù)是否同步成功。
[0027] 圖2是本申請(qǐng)實(shí)施例的對(duì)分布式事務(wù)進(jìn)行同步的示意圖,如圖2所示,在實(shí)際應(yīng) 用中,在步驟S101中進(jìn)行分布式事務(wù)同步時(shí),在將所述分布式事務(wù)的多個(gè)子事務(wù)Tl,T2,… ,Tn從源數(shù)據(jù)庫DB1,DB2,DB3,…,DBn同步至目標(biāo)數(shù)據(jù)庫DB1',DB2',DB3',...,?Βη' 的同時(shí),將源標(biāo)識(shí)數(shù)據(jù)庫中的子事務(wù)標(biāo)識(shí)匯總表也同步到目標(biāo)標(biāo)識(shí)數(shù)據(jù)庫中,由于源標(biāo)識(shí) 數(shù)據(jù)庫向目標(biāo)標(biāo)識(shí)數(shù)據(jù)庫的同步為單個(gè)數(shù)據(jù)庫事務(wù)的同步,能夠保證子事務(wù)標(biāo)識(shí)匯總表 在同步前后的一致性,因此,在步驟S102中,在源標(biāo)識(shí)數(shù)據(jù)庫將子事務(wù)標(biāo)識(shí)匯總表同步到 目標(biāo)標(biāo)識(shí)數(shù)據(jù)庫后,檢驗(yàn)?zāi)繕?biāo)標(biāo)識(shí)數(shù)據(jù)庫的子事務(wù)標(biāo)識(shí)匯總表中的多個(gè)子事務(wù)標(biāo)識(shí)條目 Tidl,Tid2,...,Tidn是否在對(duì)應(yīng)的多個(gè)目標(biāo)數(shù)據(jù)庫DBr,DB2<,DB3<,中存 在,如果存在,即可確定該條子事務(wù)同步完畢,當(dāng)確定所有子事務(wù)標(biāo)識(shí)條目都在對(duì)應(yīng)的目標(biāo) 數(shù)據(jù)庫存在時(shí),說明所有子事務(wù)都已經(jīng)從源數(shù)據(jù)庫DB1,DB2,DB3,…,DBn同步至目標(biāo)數(shù)據(jù) 庫DB1',DB2',DB3',...,DBn',即可確定所述分布式事務(wù)同步完成。
[0028] 圖3為圖1中的步驟S102的詳細(xì)流程圖,如圖3所示,在步驟S301處,確定所述 目標(biāo)標(biāo)識(shí)數(shù)據(jù)庫的每一子事務(wù)標(biāo)識(shí)條目是否在對(duì)應(yīng)的目標(biāo)數(shù)據(jù)庫存在。
[0029] 當(dāng)確定任一子事務(wù)標(biāo)識(shí)條目在對(duì)應(yīng)的目標(biāo)數(shù)據(jù)庫中存在時(shí),則可以知曉所述子事 務(wù)標(biāo)識(shí)條目所對(duì)應(yīng)的子事務(wù)已經(jīng)同步成功。
[0030] 可選地,當(dāng)確定任一子事務(wù)標(biāo)識(shí)條目在對(duì)應(yīng)的目標(biāo)數(shù)據(jù)庫中存在時(shí),例如可以在 所述子事務(wù)標(biāo)識(shí)條目內(nèi)添加同步成功標(biāo)記,以標(biāo)記所述子事務(wù)標(biāo)識(shí)條目已經(jīng)確定在對(duì)應(yīng)的 目標(biāo)數(shù)據(jù)庫中存在,也就是標(biāo)記所述子事務(wù)標(biāo)識(shí)條目所對(duì)應(yīng)的子事務(wù)已經(jīng)同步成功。在添 加了同步成功標(biāo)記之后,確定所述目標(biāo)標(biāo)識(shí)數(shù)據(jù)庫的每一子事務(wù)標(biāo)識(shí)條目是否都帶有所述 同步成功標(biāo)記,只需對(duì)未帶有所述同步成功標(biāo)記的子事務(wù)標(biāo)識(shí)條目進(jìn)行檢測,確定其是否 在對(duì)應(yīng)的目標(biāo)數(shù)據(jù)庫中存在,以確定所對(duì)應(yīng)的子事務(wù)是否在對(duì)應(yīng)的目標(biāo)數(shù)據(jù)庫中同步成 功。
[0031] 這里需要指出的是,除了添加標(biāo)記以確定子事務(wù)是否同步完成的這一方式之外, 也可以采用其他方式來確定子事務(wù)同步完成。
[0032] 在步驟S302處,當(dāng)確定所有子事務(wù)標(biāo)識(shí)條目都在對(duì)應(yīng)的目標(biāo)數(shù)據(jù)庫存在時(shí),確定 所述分布式事務(wù)同步完成。具體而言,當(dāng)確定所有子事務(wù)標(biāo)識(shí)條目在對(duì)應(yīng)的目標(biāo)數(shù)據(jù)庫中 存在時(shí),則可以知曉所有子事務(wù)標(biāo)識(shí)條目所對(duì)應(yīng)的所有子事務(wù)都已經(jīng)同步成功,從而可以 確定所述分布式事務(wù)同步完成。
[0033] 圖4為步驟S102的一個(gè)可選詳細(xì)流程圖。如圖4所示,首先,在步驟S401中,確 定所述目標(biāo)標(biāo)識(shí)數(shù)據(jù)庫的每一子事務(wù)標(biāo)識(shí)條目是否在對(duì)應(yīng)的目標(biāo)數(shù)據(jù)庫存在,以確定所述 子事務(wù)標(biāo)識(shí)條目所對(duì)應(yīng)的子事務(wù)是否已經(jīng)成功同步到對(duì)應(yīng)的目標(biāo)數(shù)據(jù)庫中。
[0034] 在步驟S402中,當(dāng)確定任一子事務(wù)標(biāo)識(shí)條目在對(duì)應(yīng)的目標(biāo)數(shù)據(jù)庫中存在時(shí),在所 述子事務(wù)標(biāo)識(shí)條目內(nèi)添加同步成功標(biāo)記,以標(biāo)記所述子事務(wù)標(biāo)識(shí)條目所對(duì)應(yīng)的子事務(wù)已經(jīng) 同步成功。
[0035] 可選地,在確定了所有子事務(wù)標(biāo)識(shí)條目是否在對(duì)應(yīng)的目標(biāo)數(shù)據(jù)庫存在,并且為同 步成功的子事務(wù)添加了所述同步成功標(biāo)記之后,在步驟S403中,確定所述目標(biāo)標(biāo)識(shí)數(shù)據(jù)庫 的每一子事務(wù)標(biāo)識(shí)條目是否帶有所述同步成功標(biāo)記。
[0036] 當(dāng)確定所述目標(biāo)標(biāo)識(shí)數(shù)據(jù)庫中任一子事務(wù)標(biāo)識(shí)條目未帶有所述同步成功標(biāo)記時(shí), 在步驟S404中,確定所述子事務(wù)標(biāo)識(shí)條目是否在對(duì)應(yīng)的目標(biāo)數(shù)據(jù)庫中存在。
[0037] 如果所述子事務(wù)標(biāo)識(shí)條目在對(duì)應(yīng)的目標(biāo)數(shù)據(jù)庫中存在,則步驟S405中,為所述子 事務(wù)標(biāo)識(shí)條目內(nèi)添加同步成功標(biāo)記,標(biāo)記所述子事務(wù)標(biāo)識(shí)條目所對(duì)應(yīng)的子事務(wù)已經(jīng)同步成 功,并返回到步驟S403,確定所述目標(biāo)標(biāo)識(shí)數(shù)據(jù)庫的每一子事務(wù)標(biāo)識(shí)條目是否帶有所述同 步成功標(biāo)記。
[0038] 步驟S406,當(dāng)確定所述目標(biāo)標(biāo)識(shí)數(shù)據(jù)庫的所有子事務(wù)標(biāo)識(shí)條目都帶有所述同步成 功標(biāo)記時(shí),確定所述分布式事務(wù)同步完成。
[0039] 在上述的實(shí)施例中所采取的執(zhí)行方式是,先確定所述目標(biāo)標(biāo)識(shí)數(shù)據(jù)庫的每一子事 務(wù)標(biāo)識(shí)條目是否在對(duì)應(yīng)的目標(biāo)數(shù)據(jù)庫存在,并且為已經(jīng)在對(duì)應(yīng)目標(biāo)數(shù)據(jù)庫中存在(同步成 功)的子事務(wù)標(biāo)識(shí)條目添加同步成功標(biāo)記,當(dāng)目標(biāo)標(biāo)識(shí)數(shù)據(jù)庫中的所有的子事務(wù)標(biāo)識(shí)條目 都進(jìn)行了一次檢測后,再確定所述目標(biāo)標(biāo)識(shí)數(shù)據(jù)庫的每一子事務(wù)標(biāo)識(shí)條目是否帶有所述同 步成功標(biāo)記。
[0040] 當(dāng)然,也可以不執(zhí)行步驟S401與步驟S402,直接進(jìn)行步驟S403?S406, S卩,先在 步驟S403中,確定所述目標(biāo)標(biāo)識(shí)數(shù)據(jù)庫的每一子事務(wù)標(biāo)識(shí)條目是否帶有所述同步成功標(biāo) 記。當(dāng)確定所述目標(biāo)標(biāo)識(shí)數(shù)據(jù)庫中任一子事務(wù)標(biāo)識(shí)條目未帶有所述同步成功標(biāo)記時(shí),在步 驟S404中,確定所述子事務(wù)標(biāo)識(shí)條目是否在對(duì)應(yīng)的目標(biāo)數(shù)據(jù)庫中存在。如果所述子事務(wù)標(biāo) 識(shí)條目在對(duì)應(yīng)的目標(biāo)數(shù)據(jù)庫中存在,則在步驟S405中,為所述子事務(wù)標(biāo)識(shí)條目內(nèi)添加同步 成功標(biāo)記,以標(biāo)記所述子事務(wù)標(biāo)識(shí)條目所對(duì)應(yīng)的子事務(wù)已經(jīng)同步成功。在實(shí)際應(yīng)用中,以這 種方式執(zhí)行,顯然在第一輪的檢測中是沒有帶有同步成功標(biāo)記的子事務(wù)標(biāo)識(shí)條目的,因此 在第一輪的檢測中,每檢測一個(gè)子事務(wù)標(biāo)識(shí)條目,即要對(duì)所述子事務(wù)標(biāo)識(shí)條目是否在對(duì)應(yīng) 的目標(biāo)數(shù)據(jù)庫中存在進(jìn)行一次檢測,并且對(duì)已經(jīng)在對(duì)應(yīng)目標(biāo)數(shù)據(jù)庫中存在的標(biāo)識(shí)條目添加 同步成功標(biāo)記,一輪檢測后,返回到步驟S403,直到確定所述目標(biāo)標(biāo)識(shí)數(shù)據(jù)庫的所有子事務(wù) 標(biāo)識(shí)條目都帶有所述同步成功標(biāo)記時(shí),在步驟S406中確定所述分布式事務(wù)同步完成。采用 這種方式也能實(shí)現(xiàn)與本申請(qǐng)實(shí)施例同樣的效果。
[0041] 當(dāng)然,也可以采取上述兩種執(zhí)行方式之外的其他的順序執(zhí)行,例如同步執(zhí)行步驟 S402和步驟S403,也可以實(shí)現(xiàn)與上述實(shí)施例同樣的效果。
[0042] 圖5是本申請(qǐng)的一種分布式事務(wù)同步系統(tǒng)100的框圖,如圖5所示,所述分布式同 步系統(tǒng)包括:多個(gè)源數(shù)據(jù)庫(DB1,DB2, DB3,…,DBn)、源標(biāo)識(shí)數(shù)據(jù)庫50、同步裝置60、多個(gè) 目標(biāo)數(shù)據(jù)庫(DB1',DB2',DB3',...,DBn')、以及目標(biāo)標(biāo)識(shí)數(shù)據(jù)庫70。
[0043] 多個(gè)源數(shù)據(jù)庫(DB1,DB2,DB3, "·,0Βη)可以用于存儲(chǔ)待同步的分布式事務(wù)的多個(gè) 子事務(wù)(Tl,Τ2, Τ3,…,),其中所述多個(gè)子事務(wù)分別包含所述多個(gè)子事務(wù)的實(shí)體以及與所述 多個(gè)子事務(wù)相對(duì)應(yīng)的多個(gè)子事務(wù)標(biāo)識(shí)條目(Tidl,Tid2,…,Tidn)。
[0044] 源標(biāo)識(shí)數(shù)據(jù)庫50可以用于存儲(chǔ)子事務(wù)標(biāo)識(shí)匯總表51,其中所述子事務(wù)標(biāo)識(shí)匯總 表51包含所述多個(gè)子事務(wù)標(biāo)識(shí)條目。
[0045] 同步裝置60可以包括同步模塊61和檢測模塊62。其中,所述同步模塊61可以用 于將所述多個(gè)子事務(wù)從所述源數(shù)據(jù)庫向所述目標(biāo)數(shù)據(jù)庫同步,并將所述子事務(wù)標(biāo)識(shí)匯總表 從所述源標(biāo)識(shí)數(shù)據(jù)庫50向目標(biāo)標(biāo)識(shí)數(shù)據(jù)庫70同步。所述檢測模塊62可以用于基于所述 目標(biāo)標(biāo)識(shí)數(shù)據(jù)庫70的所述子事務(wù)標(biāo)識(shí)匯總表71,確定所述多個(gè)子事務(wù)在所述多個(gè)目標(biāo)數(shù) 據(jù)庫中存在以完成所述分布式事務(wù)同步。
[0046] 所述檢測模塊62還可以包括第一確定模塊621,該模塊621可以用于確定所述目 標(biāo)標(biāo)識(shí)數(shù)據(jù)庫的每一子事務(wù)標(biāo)識(shí)條目是否在對(duì)應(yīng)的目標(biāo)數(shù)據(jù)庫存在;當(dāng)確定所有子事務(wù)標(biāo) 識(shí)條目都在對(duì)應(yīng)的目標(biāo)數(shù)據(jù)庫存在時(shí),確定所述分布式事務(wù)同步完成。
[0047] 所述檢測模塊62還可以包括標(biāo)記模塊622以及第二確定模塊623。其中,標(biāo)記模 塊622可以用于當(dāng)確定任一子事務(wù)標(biāo)識(shí)條目在對(duì)應(yīng)的目標(biāo)數(shù)據(jù)庫中存在時(shí),在所述子事務(wù) 標(biāo)識(shí)條目內(nèi)添加同步成功標(biāo)記。第二確定模塊623可以用于確定所述目標(biāo)標(biāo)識(shí)數(shù)據(jù)庫的每 一子事務(wù)標(biāo)識(shí)條目是否帶有所述同步成功標(biāo)記;當(dāng)確定所述目標(biāo)標(biāo)識(shí)數(shù)據(jù)庫的所有子事務(wù) 標(biāo)識(shí)條目都帶有所述同步成功標(biāo)記時(shí),確定所述分布式事務(wù)同步完成。
[0048] 所述第一確定模塊621還可以用于當(dāng)確定所述目標(biāo)標(biāo)識(shí)數(shù)據(jù)庫中任一子事務(wù)標(biāo) 識(shí)條目未帶有所述同步成功標(biāo)記時(shí),確定所述子事務(wù)標(biāo)識(shí)條目是否在對(duì)應(yīng)的目標(biāo)數(shù)據(jù)庫中 存在。
[0049] 所述標(biāo)記模塊622可以進(jìn)一步用于如果所述子事務(wù)標(biāo)識(shí)條目在對(duì)應(yīng)的目標(biāo)數(shù)據(jù) 庫中存在,則在所述子事務(wù)標(biāo)識(shí)條目內(nèi)添加同步成功標(biāo)記。
[0050] 本申請(qǐng)的方法的具體實(shí)施與系統(tǒng)100所包括的各個(gè)模塊的具體實(shí)施是相對(duì)應(yīng)的, 可以相互參照,為了不模糊本申請(qǐng),在此省略對(duì)系統(tǒng)100的具體細(xì)節(jié)進(jìn)行描述。
[0051] 應(yīng)當(dāng)注意,盡管在上文描述中提及了系統(tǒng)的若干模塊或子模塊,但是這種劃分并 非強(qiáng)制性的。實(shí)際上,根據(jù)本申請(qǐng)的實(shí)施方式,上文描述的兩個(gè)或更多模塊的特征和功能可 以在一個(gè)模塊中具體化。反之,上文描述的一個(gè)模塊的特征和功能可以進(jìn)一步劃分為由多 個(gè)模塊來具體化。
[0052] 此外,盡管在附圖中以特定順序描述了本申請(qǐng)方法的操作,但是,這并非要求或者 暗示必須按照該特定順序來執(zhí)行這些操作,或是必須執(zhí)行全部所示的操作才能實(shí)現(xiàn)期望的 結(jié)果。
[0053] 本申請(qǐng)可以在由計(jì)算機(jī)執(zhí)行的計(jì)算機(jī)可執(zhí)行指令的一般上下文中描述,例如程序 模塊或單元。一般地,程序模塊或單元可以包括執(zhí)行特定任務(wù)或?qū)崿F(xiàn)特定抽象數(shù)據(jù)類型的 例程、程序、對(duì)象、組件、數(shù)據(jù)結(jié)構(gòu)等等。一般來說,程序模塊或單元可以由軟件、硬件或兩者 的結(jié)合來實(shí)現(xiàn)。也可以在分布式計(jì)算環(huán)境中實(shí)踐本申請(qǐng),在這些分布式計(jì)算環(huán)境中,由通過 通信網(wǎng)絡(luò)而被連接的遠(yuǎn)程處理設(shè)備來執(zhí)行任務(wù)。在分布式計(jì)算環(huán)境中,程序模塊或單元可 以位于包括存儲(chǔ)設(shè)備在內(nèi)的本地和遠(yuǎn)程計(jì)算機(jī)存儲(chǔ)介質(zhì)中。
[0054] 還需要說明的是,術(shù)語"包括"、"包含"或者其任何其他變體意在涵蓋非排他性的 包含,從而使得包括一系列要素的過程、方法、商品或者設(shè)備不僅包括那些要素,而且還包 括沒有明確列出的其他要素,或者是還包括為這種過程、方法、商品或者設(shè)備所固有的要 素。在沒有更多限制的情況下,由語句"包括一個(gè)……"限定的要素,并不排除在包括所述 要素的過程、方法、商品或者設(shè)備中還存在另外的相同要素。
[0055] 本領(lǐng)域內(nèi)的技術(shù)人員應(yīng)明白,本申請(qǐng)的實(shí)施例可提供為方法、系統(tǒng)、或計(jì)算機(jī)程序 產(chǎn)品。因此,本申請(qǐng)可采用完全硬件實(shí)施例、完全軟件實(shí)施例、或結(jié)合軟件和硬件方面的實(shí) 施例的形式。而且,本申請(qǐng)可采用在一個(gè)或多個(gè)其中包含有計(jì)算機(jī)可用程序代碼的計(jì)算機(jī) 可用存儲(chǔ)介質(zhì)(包括但不限于磁盤存儲(chǔ)器、CD-ROM、光學(xué)存儲(chǔ)器等)上實(shí)施的計(jì)算機(jī)程序產(chǎn) 品的形式。
[0056] 本文中應(yīng)用了具體個(gè)例對(duì)本申請(qǐng)的原理及實(shí)施方式進(jìn)行了闡述,以上實(shí)施例的說 明只是用于幫助理解本申請(qǐng)的方法及其主要思想;同時(shí),對(duì)于本領(lǐng)域的一般技術(shù)人員,依據(jù) 本申請(qǐng)的思想,在【具體實(shí)施方式】及應(yīng)用范圍上均會(huì)有改變之處,綜上所述,本說明書內(nèi)容不 應(yīng)理解為對(duì)本申請(qǐng)的限制。
【權(quán)利要求】
1. 一種分布式事務(wù)同步的方法,其特征在于,包括: 將待同步的分布式事務(wù)的多個(gè)子事務(wù)(Tl,T2,…,Τη)分別從多個(gè)源數(shù)據(jù)庫(DB1,DB2, DB3,...,DBn)向?qū)?yīng)的多個(gè)目標(biāo)數(shù)據(jù)庫(DB1',DB2',DB3',...,?Βη')同步,并將子 事務(wù)標(biāo)識(shí)匯總表從源標(biāo)識(shí)數(shù)據(jù)庫向目標(biāo)標(biāo)識(shí)數(shù)據(jù)庫同步,其中,所述多個(gè)子事務(wù)分別包含 所述多個(gè)子事務(wù)的實(shí)體(ΤΒ1,ΤΒ2,…,ΤΒη)以及與所述多個(gè)子事務(wù)相對(duì)應(yīng)的多個(gè)子事務(wù)標(biāo) 識(shí)條目(Tidl,Tid2,…,Tidn),并且所述子事務(wù)標(biāo)識(shí)匯總表包含所述多個(gè)子事務(wù)標(biāo)識(shí)條目; 以及 基于所述目標(biāo)標(biāo)識(shí)數(shù)據(jù)庫的所述子事務(wù)標(biāo)識(shí)匯總表,確定所述多個(gè)子事務(wù)在所述多個(gè) 目標(biāo)數(shù)據(jù)庫中存在以完成所述分布式事務(wù)同步。
2. 根據(jù)權(quán)利要求1所述的方法,其特征在于,在所述分布式事務(wù)執(zhí)行過程中,在每個(gè)子 事務(wù)提交到所述源數(shù)據(jù)庫的同時(shí)在子事務(wù)中寫入一條記錄作為子事務(wù)標(biāo)識(shí)條目,同時(shí)將每 個(gè)子事務(wù)標(biāo)識(shí)條目寫入所述源標(biāo)識(shí)數(shù)據(jù)庫的子事務(wù)標(biāo)識(shí)匯總表中。
3. 根據(jù)權(quán)利要求1或2所述的方法,其特征在于,基于所述目標(biāo)標(biāo)識(shí)數(shù)據(jù)庫的所述子事 務(wù)標(biāo)識(shí)匯總表,確定所述多個(gè)子事務(wù)在所述多個(gè)目標(biāo)數(shù)據(jù)庫中存在以完成所述分布式事務(wù) 同步,包括: 確定所述目標(biāo)標(biāo)識(shí)數(shù)據(jù)庫的每一子事務(wù)標(biāo)識(shí)條目是否在對(duì)應(yīng)的目標(biāo)數(shù)據(jù)庫存在; 當(dāng)確定所有子事務(wù)標(biāo)識(shí)條目都在對(duì)應(yīng)的目標(biāo)數(shù)據(jù)庫存在時(shí),確定所述分布式事務(wù)同步 完成。
4. 根據(jù)權(quán)利要求3所述的方法,其特征在于,還包括: 當(dāng)確定任一子事務(wù)標(biāo)識(shí)條目在對(duì)應(yīng)的目標(biāo)數(shù)據(jù)庫中存在時(shí),在所述子事務(wù)標(biāo)識(shí)條目內(nèi) 添加同步成功標(biāo)記; 確定所述目標(biāo)標(biāo)識(shí)數(shù)據(jù)庫的每一子事務(wù)標(biāo)識(shí)條目是否帶有所述同步成功標(biāo)記; 當(dāng)確定所述目標(biāo)標(biāo)識(shí)數(shù)據(jù)庫的所有子事務(wù)標(biāo)識(shí)條目都帶有所述同步成功標(biāo)記時(shí),確定 所述分布式事務(wù)同步完成。
5. 根據(jù)權(quán)利要求4所述的方法,其特征在于,還包括: 當(dāng)確定所述目標(biāo)標(biāo)識(shí)數(shù)據(jù)庫中任一子事務(wù)標(biāo)識(shí)條目未帶有所述同步成功標(biāo)記時(shí),確定 所述子事務(wù)標(biāo)識(shí)條目是否在對(duì)應(yīng)的目標(biāo)數(shù)據(jù)庫中存在; 如果所述子事務(wù)標(biāo)識(shí)條目在對(duì)應(yīng)的目標(biāo)數(shù)據(jù)庫中存在,則在所述子事務(wù)標(biāo)識(shí)條目內(nèi)添 加同步成功標(biāo)記。
6. -種分布式事務(wù)同步系統(tǒng),其特征在于,包括:多個(gè)源數(shù)據(jù)庫(081,082,083,···, DBn),源標(biāo)識(shí)數(shù)據(jù)庫、同步裝置、以及多個(gè)目標(biāo)數(shù)據(jù)庫(DB1',DB2',DB3',".,DBn'),目 標(biāo)標(biāo)識(shí)數(shù)據(jù)庫,其中 : 所述多個(gè)源數(shù)據(jù)庫,用于存儲(chǔ)待同步的分布式事務(wù)的多個(gè)子事務(wù)(Tl,T2, T3,…,Tn), 其中所述多個(gè)子事務(wù)分別包含所述多個(gè)子事務(wù)的實(shí)體(ΤΒ1,ΤΒ2,…,ΤΒη)以及與所述多個(gè) 子事務(wù)相對(duì)應(yīng)的多個(gè)子事務(wù)標(biāo)識(shí)條目(Tidl,Tid2,…,Tidn); 所述標(biāo)識(shí)數(shù)據(jù)庫,用于存儲(chǔ)子事務(wù)標(biāo)識(shí)匯總表,其中所述子事務(wù)標(biāo)識(shí)匯總表包含所述 多個(gè)子事務(wù)標(biāo)識(shí)條目; 所述同步裝置,包括同步模塊和檢測模塊,其中: 所述同步模塊用于將所述多個(gè)子事務(wù)從所述源數(shù)據(jù)庫向所述目標(biāo)數(shù)據(jù)庫同步,并將所 述子事務(wù)標(biāo)識(shí)匯總表從所述源標(biāo)識(shí)數(shù)據(jù)庫向目標(biāo)標(biāo)識(shí)數(shù)據(jù)庫同步;并且 所述檢測模塊用于基于所述目標(biāo)標(biāo)識(shí)數(shù)據(jù)庫的所述子事務(wù)標(biāo)識(shí)匯總表,確定所述多個(gè) 子事務(wù)在所述多個(gè)目標(biāo)數(shù)據(jù)庫中存在以完成所述分布式事務(wù)同步。
7. 根據(jù)權(quán)利要求6所述的系統(tǒng),其特征在于,所述檢測模塊還包括: 第一確定模塊,用于確定所述目標(biāo)標(biāo)識(shí)數(shù)據(jù)庫的每一子事務(wù)標(biāo)識(shí)條目是否在對(duì)應(yīng)的目 標(biāo)數(shù)據(jù)庫存在;當(dāng)確定所有子事務(wù)標(biāo)識(shí)條目都在對(duì)應(yīng)的目標(biāo)數(shù)據(jù)庫存在時(shí),確定所述分布 式事務(wù)同步完成。
8. 根據(jù)權(quán)利要求7所述的系統(tǒng),其特征在于,所述檢測模塊還包括: 標(biāo)記模塊,用于當(dāng)確定任一子事務(wù)標(biāo)識(shí)條目在對(duì)應(yīng)的目標(biāo)數(shù)據(jù)庫中存在時(shí),在所述子 事務(wù)標(biāo)識(shí)條目內(nèi)添加同步成功標(biāo)記; 第二確定模塊,用于確定所述目標(biāo)標(biāo)識(shí)數(shù)據(jù)庫的每一子事務(wù)標(biāo)識(shí)條目是否帶有所述同 步成功標(biāo)記;當(dāng)確定所述目標(biāo)標(biāo)識(shí)數(shù)據(jù)庫的所有子事務(wù)標(biāo)識(shí)條目都帶有所述同步成功標(biāo)記 時(shí),確定所述分布式事務(wù)同步完成。
9. 根據(jù)權(quán)利要求8所述的系統(tǒng),其特征在于, 所述第一確定模塊還用于當(dāng)確定所述目標(biāo)標(biāo)識(shí)數(shù)據(jù)庫中任一子事務(wù)標(biāo)識(shí)條目未帶有 所述同步成功標(biāo)記時(shí),確定所述子事務(wù)標(biāo)識(shí)條目是否在對(duì)應(yīng)的目標(biāo)數(shù)據(jù)庫中存在; 所述標(biāo)記模塊進(jìn)一步用于如果所述子事務(wù)標(biāo)識(shí)條目在對(duì)應(yīng)的目標(biāo)數(shù)據(jù)庫中存在,則在 所述子事務(wù)標(biāo)識(shí)條目內(nèi)添加同步成功標(biāo)記。
【文檔編號(hào)】G06F17/30GK104111957SQ201310140778
【公開日】2014年10月22日 申請(qǐng)日期:2013年4月22日 優(yōu)先權(quán)日:2013年4月22日
【發(fā)明者】李彥超 申請(qǐng)人:阿里巴巴集團(tuán)控股有限公司