數(shù)據(jù)同步方法和數(shù)據(jù)同步系統(tǒng)的制作方法
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及數(shù)據(jù)庫領(lǐng)域,具體涉及一種數(shù)據(jù)同步方法和數(shù)據(jù)同步系統(tǒng)。
【背景技術(shù)】
[0002]現(xiàn)如今,跨數(shù)據(jù)庫之間的數(shù)據(jù)同步目前存在兩種問題:
[0003]I)依賴其他中間系統(tǒng),使得同步系統(tǒng)過于復(fù)雜,導(dǎo)致系統(tǒng)不穩(wěn)定。系統(tǒng)出現(xiàn)bug的時候,系統(tǒng)的調(diào)試工程量大,時間效率低;
[0004]2)依賴較為復(fù)雜的技術(shù)保證數(shù)據(jù)的實時性和一致性。技術(shù)過于復(fù)雜,難以優(yōu)化編譯生成高效目標(biāo)代碼。程序執(zhí)行效率低,代碼重構(gòu)時間成本高,整個程序設(shè)計方案并不是經(jīng)濟有效的。
[0005]因此,本領(lǐng)域需要提出一種簡單高效的數(shù)據(jù)同步方法,保證數(shù)據(jù)同步的實時性和一致性,同時也一定程度上減少了數(shù)據(jù)的同步量。
【發(fā)明內(nèi)容】
[0006]本發(fā)明提出一種數(shù)據(jù)同步方法,用于將原始數(shù)據(jù)庫中的數(shù)據(jù)同步至目標(biāo)數(shù)據(jù)庫,所述原始數(shù)據(jù)庫包括至少一個存儲數(shù)據(jù),每一個所述存儲數(shù)據(jù)包括內(nèi)容位,其特征在于,所述數(shù)據(jù)同步方法包括:
[0007]在所述原始數(shù)據(jù)庫中設(shè)置標(biāo)記數(shù)據(jù);
[0008]當(dāng)其中一個存儲數(shù)據(jù)的一個內(nèi)容位被修改時,在對應(yīng)的所述標(biāo)記數(shù)據(jù)中設(shè)置標(biāo)記位;以及
[0009]掃描所述標(biāo)記數(shù)據(jù),當(dāng)掃描出該標(biāo)記位時,根據(jù)該標(biāo)記位將對應(yīng)的該內(nèi)容位的內(nèi)容寫入所述目標(biāo)數(shù)據(jù)庫。
[0010]在一實施例中,所述標(biāo)記數(shù)據(jù)與所述存儲數(shù)據(jù)具有相同的格式,當(dāng)其中一個存儲數(shù)據(jù)的一個內(nèi)容位被修改時,在對應(yīng)的所述標(biāo)記數(shù)據(jù)中設(shè)置標(biāo)記位的步驟進一步包括:
[0011]根據(jù)所修改的內(nèi)容位所在的地址,在所述對應(yīng)的標(biāo)記數(shù)據(jù)的相同地址中設(shè)置標(biāo)記位。
[0012]在一實施例中,所述地址為根據(jù)所述內(nèi)容位的行位和列位確定的數(shù)據(jù)位置。
[0013]在一實施例中,所述原始數(shù)據(jù)庫包括數(shù)據(jù)表格,所述存儲數(shù)據(jù)為存儲列族,在所述原始數(shù)據(jù)庫中設(shè)置標(biāo)記數(shù)據(jù)的步驟包括:
[0014]在每個數(shù)據(jù)表格中新建標(biāo)記列族。
[0015]在一實施例中,當(dāng)其中一個存儲數(shù)據(jù)的一個內(nèi)容位被修改時,在對應(yīng)的所述標(biāo)記數(shù)據(jù)中設(shè)置標(biāo)記位的步驟包括:
[0016]針對所述內(nèi)容位所在的存儲列族的行和列,在所述標(biāo)記列族的相同行及相同列中設(shè)置標(biāo)記位,以標(biāo)記所述內(nèi)容位是否改動。
[0017]在一實施例中,根據(jù)該標(biāo)記位將對應(yīng)的該內(nèi)容位的內(nèi)容寫入所述目標(biāo)數(shù)據(jù)庫的步驟之后,還包括:
[0018]刪除所述內(nèi)容位對應(yīng)的標(biāo)記位。
[0019]在一實施例中,所述原始數(shù)據(jù)庫為HBase數(shù)據(jù)庫,所述目標(biāo)數(shù)據(jù)庫為MongoDB數(shù)據(jù)庫。
[0020]在一實施例中,所述標(biāo)記位為寫入標(biāo)記位和/或刪除標(biāo)記位。
[0021]本發(fā)明一實施例還提出一種數(shù)據(jù)同步系統(tǒng),用于將原始數(shù)據(jù)庫中的數(shù)據(jù)同步至目標(biāo)數(shù)據(jù)庫,所述原始數(shù)據(jù)庫包括至少一個存儲數(shù)據(jù),每一個所述存儲數(shù)據(jù)包括內(nèi)容位,所述數(shù)據(jù)同步系統(tǒng)包括:
[0022]內(nèi)存分配單元,用于在所述原始數(shù)據(jù)庫中設(shè)置用以存儲標(biāo)記數(shù)據(jù)的內(nèi)存;
[0023]寫入單元:用于當(dāng)其中一個存儲數(shù)據(jù)的一個內(nèi)容位被修改時,在對應(yīng)的所述標(biāo)記數(shù)據(jù)中寫入標(biāo)記位;
[0024]掃描發(fā)送單元:用于掃描該內(nèi)存中是否存在標(biāo)記位,并在掃描出所述標(biāo)記位時,根據(jù)該標(biāo)記位將對應(yīng)的該內(nèi)容位的內(nèi)容寫入所述目標(biāo)數(shù)據(jù)庫。
[0025]在一實施例中,還包括:
[0026]刪除單元,用于將同步成功后的內(nèi)容位對應(yīng)的標(biāo)記位刪除。
[0027]在一實施例中,所述標(biāo)記數(shù)據(jù)與所述存儲數(shù)據(jù)具有相同的格式,所述寫入單元根據(jù)所修改的內(nèi)容位所在的地址,在所述對應(yīng)的標(biāo)記數(shù)據(jù)的相同地址中設(shè)置所述標(biāo)記位。
[0028]在一實施例中,所述存儲數(shù)據(jù)為存儲列族,所述內(nèi)存分配單元在所述原始數(shù)據(jù)庫中的一個數(shù)據(jù)表格中新建一個標(biāo)記列族;所述寫入單元還針對所述存儲列族的每行和每列,在所述標(biāo)記列族的相同行及相同列中設(shè)置所述標(biāo)記位,以標(biāo)記所述內(nèi)容位是否改動。
[0029]在一實施例中,所述標(biāo)記位為寫入標(biāo)記位和/或刪除標(biāo)記位。
[0030]本發(fā)明一實施例還提出一種數(shù)據(jù)同步系統(tǒng),用于將原始數(shù)據(jù)庫中的數(shù)據(jù)同步至目標(biāo)數(shù)據(jù)庫,所述原始數(shù)據(jù)庫包括至少一個存儲數(shù)據(jù),每一個所述存儲數(shù)據(jù)包括內(nèi)容位,一內(nèi)存分配單元用于在所述原始數(shù)據(jù)庫中設(shè)置用以存儲標(biāo)記數(shù)據(jù)的內(nèi)存;一寫入單元用于當(dāng)其中一個存儲數(shù)據(jù)的一個內(nèi)容位被修改時,在對應(yīng)的所述標(biāo)記數(shù)據(jù)中寫入標(biāo)記位,其特征在于,該數(shù)據(jù)同步系統(tǒng)包括:
[0031]掃描發(fā)送單元:用于掃描該內(nèi)存中是否存在標(biāo)記位,并在掃描出所述標(biāo)記位時,根據(jù)該標(biāo)記位將對應(yīng)的該內(nèi)容位的內(nèi)容寫入所述目標(biāo)數(shù)據(jù)庫;以及
[0032]刪除單元,用于將同步成功后的內(nèi)容位對應(yīng)的標(biāo)記位刪除。
[0033]通過上述描述可知,相比于現(xiàn)有技術(shù),本發(fā)明至少具有如下優(yōu)點:
[0034]I)使用標(biāo)記位對數(shù)據(jù)庫中修改后的存儲數(shù)據(jù)進行標(biāo)記,方法簡單,替代了比較復(fù)雜的技術(shù)方案,提高了數(shù)據(jù)同步的效率。
[0035]2)標(biāo)記位所占內(nèi)存可以忽略不計,以極小的內(nèi)存換取數(shù)據(jù)同步的實時性和一致性,性價比高。
[0036]3)由于在數(shù)據(jù)庫中每個修改操作的標(biāo)記位可以只維護一份,同時對相同內(nèi)容位的進行多次修改時,以最后一次修改操作為準(zhǔn)而對數(shù)據(jù)進行一次同步,減少了數(shù)據(jù)同步量,提高了同步效率。
[0037]4)當(dāng)標(biāo)記位對應(yīng)的內(nèi)容位的數(shù)據(jù)成功同步到目標(biāo)數(shù)據(jù)庫時,刪除該標(biāo)記位;當(dāng)同步失敗時,對該標(biāo)記位不做任何處理,直至數(shù)據(jù)同步成功才將該標(biāo)記位刪除。此方法提高了系統(tǒng)同步準(zhǔn)確率。
[0038]5)不依賴其他中間系統(tǒng),適用范圍更廣。
【附圖說明】
[0039]圖1所示為本發(fā)明一實施例的數(shù)據(jù)同步方法的流程圖。
[0040]圖2所示為本發(fā)明一實施例的原始數(shù)據(jù)庫中存儲的至少一個存儲數(shù)據(jù)的數(shù)據(jù)格式圖。
[0041]圖3所示為對應(yīng)于圖2的存儲數(shù)據(jù)的標(biāo)記數(shù)據(jù)的數(shù)據(jù)格式圖。
[0042]圖4所示為本發(fā)明一實施例的數(shù)據(jù)同步方法的步驟流程圖。
[0043]圖5所示為本發(fā)明一實施例的數(shù)據(jù)同步系統(tǒng)的模塊圖。
【具體實施方式】
[0044]這里將詳細地對示例性實施例進行說明,其示例表示在附圖中。下面的描述涉及附圖時,除非另有表示,不同附圖中的相同數(shù)字表示相同或相似的要素。以下示例性實施例中所描述的實施方式并不代表與本申請相一致的所有實施方式。相反,它們僅是與如所附權(quán)利要求書中所詳述的、本申請的一些方面相一致的設(shè)備和方法的部分例子。
[0045]圖1所示為本發(fā)明一實施例的數(shù)據(jù)同步方法的示意圖。本發(fā)明所要解決的問題是跨數(shù)據(jù)庫的數(shù)據(jù)同步問題,具體說來,在原始數(shù)據(jù)庫和目標(biāo)數(shù)據(jù)庫之間建立同步的途徑。這一方法不僅簡單高效,不僅能夠保證數(shù)據(jù)同步的實時性和一致性,同時也一定程度上減少了數(shù)據(jù)的同步量。
[0046]本發(fā)明一實施例提出的數(shù)據(jù)同步方法用于將原始數(shù)據(jù)庫中的數(shù)據(jù)同步到目標(biāo)數(shù)據(jù)庫,其中該原始數(shù)據(jù)庫包括至少一個存儲數(shù)據(jù),每一個存儲數(shù)據(jù)包括內(nèi)容位,該同步方法包括如下流程:
[0047]步驟I,在原始數(shù)據(jù)庫中設(shè)置標(biāo)記數(shù)據(jù);
[0048]步驟2,當(dāng)其中一個存儲數(shù)據(jù)的一個內(nèi)容位被修改時,在對應(yīng)的所述標(biāo)記數(shù)據(jù)中設(shè)置標(biāo)記位;以及
[0049]步驟3,掃描所述標(biāo)記數(shù)據(jù),根據(jù)該標(biāo)記位將對應(yīng)的該內(nèi)容位的內(nèi)容寫入所述目標(biāo)數(shù)據(jù)庫。
[0050]對應(yīng)地,本發(fā)明一實施例提出一種數(shù)據(jù)同步系統(tǒng),用于將原始數(shù)據(jù)庫中的數(shù)據(jù)同步至目標(biāo)數(shù)據(jù)庫,所述原始數(shù)據(jù)庫包括至少一個存儲數(shù)據(jù),每一個所述存儲數(shù)據(jù)包括內(nèi)容位,所述數(shù)據(jù)同步系統(tǒng)包括:
[0051]內(nèi)存分配單元,用于在所述原始數(shù)據(jù)庫中設(shè)置用以存儲標(biāo)記數(shù)據(jù)的內(nèi)存;
[0052]寫入單元:用于當(dāng)其中一個存儲數(shù)據(jù)的一個內(nèi)容位被修改時,在對應(yīng)的所述標(biāo)記數(shù)據(jù)中寫入標(biāo)記位;
[0053]掃描發(fā)送單元:用于掃描該內(nèi)存中是否存在標(biāo)記位,并在掃描出所述標(biāo)記位時,根據(jù)該標(biāo)記位將對應(yīng)的該內(nèi)容位的內(nèi)容寫入所述目標(biāo)數(shù)據(jù)庫。
[0054]以下結(jié)合附圖和具體實施例,對本發(fā)明的方案進行具體說明。
[0055]圖2所示為本發(fā)明一實施例的原