數(shù)據(jù)庫一致性校驗(yàn)方法及系統(tǒng)、定位數(shù)據(jù)庫差異的方法及系統(tǒng)的制作方法
【技術(shù)領(lǐng)域】
[0001] 本發(fā)明涉及數(shù)據(jù)庫技術(shù),更具體地,涉及數(shù)據(jù)庫一致性校驗(yàn)技術(shù)以及定位數(shù)據(jù)庫 中差異的技術(shù)。
【背景技術(shù)】
[0002] 現(xiàn)有的數(shù)據(jù)庫比較方法首先是對數(shù)據(jù)庫中的表按關(guān)鍵字排序,隨后再以相應(yīng)的算 法比較。這種解決方案占用諸如內(nèi)存、swap空間等大量數(shù)據(jù)庫的資源,這種情況在數(shù)據(jù)量 大的情況下尤其明顯,甚至影響數(shù)據(jù)庫的性能。
[0003] 此外,常規(guī)的數(shù)據(jù)比較方案,一般只能判斷出兩個(gè)數(shù)據(jù)庫是否一致,但不能具體定 位有差異的數(shù)據(jù)。
【發(fā)明內(nèi)容】
[0004] 本發(fā)明提供一種數(shù)據(jù)庫一致性校驗(yàn)方法,其可判斷出數(shù)據(jù)庫之間是否一致,且具 有較小的計(jì)算量以及網(wǎng)絡(luò)數(shù)據(jù)傳輸量。該數(shù)據(jù)庫一致性校驗(yàn)方法包括:a.按照預(yù)定條件 將主數(shù)據(jù)庫與備數(shù)據(jù)庫中的數(shù)據(jù)行分組;b.計(jì)算主數(shù)據(jù)庫每一分組及備數(shù)據(jù)庫每一分組 的md5值;c.將所計(jì)算的主數(shù)據(jù)庫的每一分組的md5值與相應(yīng)的備數(shù)據(jù)庫分組的md5值比 較,如果主數(shù)據(jù)庫所有分組的md5值與相應(yīng)的備數(shù)據(jù)庫分組的md5值一致,則表明主數(shù)據(jù)庫 與備數(shù)據(jù)庫一致。
[0005] 該數(shù)據(jù)庫一致性校驗(yàn)方法中,步驟b包括:bl.計(jì)算主數(shù)據(jù)庫中每一分組內(nèi)每一 行的md5值,計(jì)算備數(shù)據(jù)庫中每一分組內(nèi)每一行的md5值;b2.按照關(guān)鍵字對主數(shù)據(jù)庫中每 一分組的哈希表排序,及按照關(guān)鍵字對備數(shù)據(jù)庫中每一分組的哈希表排序,以獲得主數(shù)據(jù) 庫每一分組的有序哈希表及獲得備數(shù)據(jù)庫每一分組的有序哈希表;b3.計(jì)算主數(shù)據(jù)庫每一 分組的唯一 md5值,計(jì)算備數(shù)據(jù)庫中每一分組的唯一 md5值。優(yōu)選地,步驟b2包括:如果哈 希表排序中存在沖突,則以拉鏈法處理該沖突。優(yōu)選地,步驟a包括:按時(shí)間戳將主數(shù)據(jù)庫 與備數(shù)據(jù)庫中的數(shù)據(jù)行分組。
[0006] 本發(fā)明還提供一種定位數(shù)據(jù)庫差異的方法,該方法包括:a.按照預(yù)定條件將主數(shù) 據(jù)庫與備數(shù)據(jù)庫中的數(shù)據(jù)行分組;b.計(jì)算主數(shù)據(jù)庫中每一分組內(nèi)每一行的md5值,計(jì)算備 數(shù)據(jù)庫中每一分組內(nèi)每一行的md5值;c.按照關(guān)鍵字對主數(shù)據(jù)庫中每一分組的哈希表排 序,及按照關(guān)鍵字對備數(shù)據(jù)庫中每一分組的哈希表排序,以獲得主數(shù)據(jù)庫每一分組的有序 哈希表以及備數(shù)據(jù)庫每一分組的有序哈希表;d.計(jì)算主數(shù)據(jù)庫每一分組的唯一 md5值,計(jì) 算備數(shù)據(jù)庫中每一分組的唯一md5值;e.將所計(jì)算的主數(shù)據(jù)庫的每一分組的md5值與相應(yīng) 的備數(shù)據(jù)庫分組的md5值比較;f.如果主數(shù)據(jù)庫中某分組的md5值與備數(shù)據(jù)庫中相應(yīng)分組 的md5值不同,則獲得在步驟b計(jì)算的主數(shù)據(jù)庫中該分組中每一行的md5值,及備數(shù)據(jù)庫中 該相應(yīng)分組中每一行的md5值;g.按照關(guān)鍵字對主數(shù)據(jù)庫的該分組排序,以及對備數(shù)據(jù)庫 的該相應(yīng)分組排序;h.按照關(guān)鍵字排序后,對于主數(shù)據(jù)庫中該分組中的每一行與備數(shù)據(jù)庫 中該相應(yīng)分組中的每一行,逐行比較它們的md5值,以獲得md5值不同的行。
[0007] 優(yōu)選地,步驟c包括:如果哈希表排序中存在沖突,則以拉鏈法處理該沖突。優(yōu)選 地,步驟a包括:按時(shí)間戳將主數(shù)據(jù)庫與備數(shù)據(jù)庫中的數(shù)據(jù)行分組。
[0008] 根據(jù)本發(fā)明的又一方面,提供一種數(shù)據(jù)庫一致性校驗(yàn)系統(tǒng),該系統(tǒng)包括:分組模 塊,其包括:主分組單元,用于按照預(yù)定條件將主數(shù)據(jù)庫中的數(shù)據(jù)行分組,備分組單元,用于 按照預(yù)定條件將備數(shù)據(jù)庫中的數(shù)據(jù)行分組;計(jì)算模塊,其包括:主計(jì)算單元,用于計(jì)算主數(shù) 據(jù)庫每一分組的md5值,備計(jì)算單元,用于計(jì)算備數(shù)據(jù)庫每一分組的md5值;比較模塊,用于 將所計(jì)算的主數(shù)據(jù)庫的每一分組的md5值與相應(yīng)的備數(shù)據(jù)庫分組的md5值比較,如果主數(shù) 據(jù)庫所有分組的md5值與相應(yīng)的備數(shù)據(jù)庫分組的md5值一致,則確定主數(shù)據(jù)庫與備數(shù)據(jù)庫 一致。
[0009] 該數(shù)據(jù)庫一致性校驗(yàn)系統(tǒng)中,所述主計(jì)算單元設(shè)置成:計(jì)算主數(shù)據(jù)庫中每一分組 內(nèi)每一行的md5值,按照關(guān)鍵字對主數(shù)據(jù)庫中每一分組的哈希表排序,以獲得主數(shù)據(jù)庫每 一分組的有序哈希表,以及計(jì)算主數(shù)據(jù)庫每一分組的唯一 md5值;所述備計(jì)算單元設(shè)置成: 計(jì)算備數(shù)據(jù)庫中每一分組內(nèi)每一行的md5值,按照關(guān)鍵字對備數(shù)據(jù)庫中每一分組的哈希表 排序,以獲得備數(shù)據(jù)庫每一分組的有序哈希表,以及計(jì)算備數(shù)據(jù)庫每一分組的唯一 md5值。 [0010] 優(yōu)選地,該數(shù)據(jù)庫一致性校驗(yàn)系統(tǒng)中,所述主計(jì)算單元與備計(jì)算單元分別設(shè)置成 在哈希表排序存在沖突時(shí),以拉鏈法處理該沖突。選地,該數(shù)據(jù)庫一致性校驗(yàn)系統(tǒng)中,所述 主分組單元與所述備分組單元分別設(shè)置成按時(shí)間戳將主數(shù)據(jù)庫與備數(shù)據(jù)庫中的數(shù)據(jù)行分 組。
[0011] 本發(fā)明還提供一種定位數(shù)據(jù)差異的系統(tǒng),其包括:分組模塊,其包括:主分組單 元,用于按照預(yù)定條件將主數(shù)據(jù)庫中的數(shù)據(jù)行分組,備分組單元,用于按照預(yù)定條件將備數(shù) 據(jù)庫中的數(shù)據(jù)行分組;計(jì)算模塊,其包括:主計(jì)算單元,用于計(jì)算主數(shù)據(jù)庫中每一分組內(nèi)每 一行的md5值,按照關(guān)鍵字對主數(shù)據(jù)庫中每一分組的哈希表排序,以獲得主數(shù)據(jù)庫每一分 組的有序哈希表,以及計(jì)算主數(shù)據(jù)庫每一分組的唯一 md5值,備計(jì)算單元,用于計(jì)算備數(shù)據(jù) 庫中每一分組內(nèi)每一行的md5值,按照關(guān)鍵字對備數(shù)據(jù)庫中每一分組的哈希表排序,以獲 得備數(shù)據(jù)庫每一分組的有序哈希表,以及計(jì)算備數(shù)據(jù)庫每一分組的唯一 md5值;比較模塊, 其包括:組比較單元,用于將所計(jì)算的主數(shù)據(jù)庫的每一分組的md5值與相應(yīng)的備數(shù)據(jù)庫分 組的md5值比較;行比較單元,用于在組比較單元確定如果主數(shù)據(jù)庫中某分組的md5值與備 數(shù)據(jù)庫中相應(yīng)分組的md5值不同時(shí),從主計(jì)算單元獲得主數(shù)據(jù)庫中該分組中每一行的md5 值,從備數(shù)據(jù)庫單元獲得備數(shù)據(jù)庫中該相應(yīng)分組中每一行的md5值,以及按照關(guān)鍵字對主 數(shù)據(jù)庫的該分組排序,以及對備數(shù)據(jù)庫的該相應(yīng)分組排序,并且對于主數(shù)據(jù)庫中該分組中 的每一行與備數(shù)據(jù)庫中該相應(yīng)分組中的每一行,逐行比較它們的md5值,以獲得md5值不同 的行。
[0012] 根據(jù)本發(fā)明的定位數(shù)據(jù)差異的系統(tǒng)中,優(yōu)選地,該主計(jì)算單元與備計(jì)算單元分別 設(shè)置成在哈希表排序存在沖突時(shí),以拉鏈法處理該沖突。根據(jù)本發(fā)明的定位數(shù)據(jù)差異的系 統(tǒng)中,優(yōu)選地,該主分組單元與所述備分組單元分別設(shè)置成按時(shí)間戳將主數(shù)據(jù)庫與備數(shù)據(jù) 庫中的數(shù)據(jù)行分組。
【附圖說明】
[0013] 圖1是根據(jù)本發(fā)明的一個(gè)示例的數(shù)據(jù)庫一致性校驗(yàn)方法的流程圖。
[0014] 圖2示意了實(shí)現(xiàn)步驟102的一個(gè)示例。
[0015] 圖3是根據(jù)本發(fā)明的一個(gè)示例的定位數(shù)據(jù)庫差異的方法的流程圖。
[0016] 圖4是根據(jù)本發(fā)明的示例的數(shù)據(jù)庫一致性校驗(yàn)系統(tǒng)的結(jié)構(gòu)示意圖。
[0017] 圖5是根據(jù)本發(fā)明的示例的定位數(shù)據(jù)差異的系統(tǒng)的結(jié)構(gòu)示意圖。
【具體實(shí)施方式】
[0018] 現(xiàn)在參照附圖描述本發(fā)明的示意性示例,相同的附圖標(biāo)號(hào)表示相同的元件。下文 描述的各實(shí)施例有助于本領(lǐng)域技術(shù)人員透徹理解本發(fā)明,且意在示例而非限制。除非另有 限定,文中使用的術(shù)語(包括科學(xué)、技術(shù)和行業(yè)術(shù)語)具有與本發(fā)明所屬領(lǐng)域的技術(shù)人員普 遍理解的含義相同的含義。
[0019] 圖1是根據(jù)本發(fā)明的一個(gè)示例的數(shù)據(jù)庫一致性校驗(yàn)方法的流程圖。該數(shù)據(jù)庫一致 性校驗(yàn)方法校驗(yàn)主數(shù)據(jù)庫與備數(shù)據(jù)庫之間的一致性,其中,主數(shù)據(jù)庫與備數(shù)據(jù)庫可分別設(shè) 置在不同地域,也可設(shè)置在同一地域,但位于不同的設(shè)備中。
[0020] 按照本發(fā)明所述的方法,在步驟100,按照預(yù)定條件將主數(shù)據(jù)庫與備數(shù)據(jù)庫中的數(shù) 據(jù)行分組。主數(shù)據(jù)庫與備數(shù)據(jù)庫中均含有大量數(shù)據(jù),可按時(shí)間戳分別將主數(shù)據(jù)庫中的數(shù)據(jù) 分成若干組并將備數(shù)據(jù)庫中的數(shù)據(jù)分成若干組,例如每2小時(shí)的數(shù)據(jù)分成一組。主數(shù)據(jù)庫 中的每一分組與備數(shù)據(jù)庫中的每一分組都設(shè)有分組號(hào),按照時(shí)間戳分組的話,對應(yīng)相同時(shí) 間戳的主數(shù)據(jù)庫分組與備數(shù)據(jù)庫分組具有相同的分組號(hào)。本領(lǐng)域技術(shù)人員可以理解到,按 照時(shí)間戳分組的主數(shù)據(jù)庫中的每一分組在備數(shù)據(jù)庫中都有與其在時(shí)間上對應(yīng)的分組。除時(shí) 間戳以外,也可按照其它條件對數(shù)據(jù)分組,例如按照每組包含2000條數(shù)據(jù)來分別對主數(shù)據(jù) 庫與備數(shù)據(jù)庫分組等。
[0021] 在步驟102,計(jì)算主數(shù)據(jù)庫中每一分組及備數(shù)據(jù)庫中每一分組的唯一 md5 (Message-Digest Algorithm 5,信息一摘要算法 5)值。
[0022] 圖2示意了實(shí)現(xiàn)步驟102的一個(gè)示例。如圖2所示,在步驟102a,計(jì)算主數(shù)據(jù)庫 中每一