本申請涉及計算機技術(shù)領(lǐng)域,尤其涉及一種數(shù)據(jù)校驗方法和設(shè)備。
背景技術(shù):
在分布式數(shù)據(jù)存儲系統(tǒng)中,一個數(shù)據(jù)庫作為主數(shù)據(jù)庫,另一個數(shù)據(jù)庫作為備份數(shù)據(jù)庫,主數(shù)據(jù)庫可以對外提供數(shù)據(jù)讀寫服務(wù),備份數(shù)據(jù)庫保持與主數(shù)據(jù)庫之間的數(shù)據(jù)同步,并在主數(shù)據(jù)庫出現(xiàn)故障時,備份數(shù)據(jù)庫可以對外提供數(shù)據(jù)讀寫服務(wù)。
通常,主數(shù)據(jù)庫在接收到數(shù)據(jù)并將數(shù)據(jù)進(jìn)行存儲時,可以將存儲的數(shù)據(jù)同步存儲至備份數(shù)據(jù)庫中,這樣,可以保證主數(shù)據(jù)庫與備份數(shù)據(jù)庫之間數(shù)據(jù)的一致。但是,在實際應(yīng)用中,由于主數(shù)據(jù)庫和備份數(shù)據(jù)庫之間的數(shù)據(jù)同步操作存在延時性,或者某些原因(例如,數(shù)據(jù)庫之間通信異常、備份數(shù)據(jù)庫的硬件故障或軟件故障)導(dǎo)致的備份數(shù)據(jù)庫中的部分?jǐn)?shù)據(jù)丟失或損壞,使得主數(shù)據(jù)庫中的數(shù)據(jù)與備份數(shù)據(jù)庫中的數(shù)據(jù)不一致。
在現(xiàn)有技術(shù)中,可以通過校驗主數(shù)據(jù)庫與備份數(shù)據(jù)庫之間的數(shù)據(jù)一致性,解決主數(shù)據(jù)庫和備份數(shù)據(jù)庫之間數(shù)據(jù)不一致的問題。具體地,首先,可以將主數(shù)據(jù)庫中存儲的全部數(shù)據(jù)以及備份數(shù)據(jù)庫中存儲的全部數(shù)據(jù)進(jìn)行對比;其次,確定備份數(shù)據(jù)庫中丟失的數(shù)據(jù);最后,將丟失的數(shù)據(jù)更新至備份數(shù)據(jù)庫中。這樣,可以保證主數(shù)據(jù)庫中的數(shù)據(jù)與備份數(shù)據(jù)庫中的數(shù)據(jù)一致。
但是,在實際應(yīng)用中,由于主數(shù)據(jù)庫(或備份數(shù)據(jù)庫)中存儲的數(shù)據(jù)比較多,因此,在將主數(shù)據(jù)庫中存儲的全部數(shù)據(jù)與備份數(shù)據(jù)庫中存儲的全部數(shù)據(jù)進(jìn)行對比時,需要消耗大量的時間,導(dǎo)致在校驗主數(shù)據(jù)庫與備份數(shù)據(jù)庫之間的數(shù)據(jù)一致性時效率比較低。
技術(shù)實現(xiàn)要素:
本申請實施例提供一種數(shù)據(jù)校驗方法和設(shè)備,用于解決現(xiàn)有的在校驗主數(shù)據(jù)庫中的數(shù)據(jù)與備份數(shù)據(jù)庫中的數(shù)據(jù)是否一致時效率比較低的問題。
本申請實施例提供一種數(shù)據(jù)校驗方法,所述方法應(yīng)用于分布式數(shù)據(jù)存儲系統(tǒng),所述方法包括:
獲取第一數(shù)據(jù)庫在設(shè)定時間內(nèi)發(fā)生更新的第一數(shù)據(jù),并確定所述第一數(shù)據(jù)的更新時間;
從第二數(shù)據(jù)庫中查找是否存在與所述第一數(shù)據(jù)中包含的數(shù)據(jù)項相同的第二數(shù)據(jù);
根據(jù)查找結(jié)果和所述第一數(shù)據(jù)的更新時間,校驗所述第一數(shù)據(jù)庫中的數(shù)據(jù)與所述第二數(shù)據(jù)庫中的數(shù)據(jù)是否一致。
本申請實施例提供一種數(shù)據(jù)校驗設(shè)備,所述設(shè)備應(yīng)用于分布式數(shù)據(jù)存儲系統(tǒng),所述設(shè)備包括:
獲取單元,獲取第一數(shù)據(jù)庫在設(shè)定時間內(nèi)發(fā)生更新的第一數(shù)據(jù),并確定所述第一數(shù)據(jù)的更新時間;
查找單元,從第二數(shù)據(jù)庫中查找是否存在與所述第一數(shù)據(jù)中包含的數(shù)據(jù)項相同的第二數(shù)據(jù);
校驗單元,根據(jù)所述查找單元的查找結(jié)果和所述第一數(shù)據(jù)的更新時間,校驗所述第一數(shù)據(jù)庫中的數(shù)據(jù)與所述第二數(shù)據(jù)庫中的數(shù)據(jù)是否一致。
本申請實施例采用的上述技術(shù)方案能夠達(dá)到以下有益效果:
本申請實施例提供的技術(shù)方案,在校驗兩個數(shù)據(jù)庫中的數(shù)據(jù)是否一致時,可以獲取一個數(shù)據(jù)庫在設(shè)定時間內(nèi)發(fā)生更新的數(shù)據(jù)以及該數(shù)據(jù)的更新時間,并在另一個數(shù)據(jù)庫中查找是否存在該數(shù)據(jù),以便于確定另一個數(shù)據(jù)庫是否在相同時間更新該數(shù)據(jù),進(jìn)而校驗兩個數(shù)據(jù)庫中的數(shù)據(jù)是否一致。相對于現(xiàn)有技術(shù)中,根據(jù)數(shù)據(jù)庫中的全部數(shù)據(jù)校驗不同數(shù)據(jù)庫中的數(shù)據(jù)是否一致,本申請實施例提供的技術(shù)方案,根據(jù)數(shù)據(jù)庫中發(fā)生更新的數(shù)據(jù)校驗不同數(shù)據(jù)庫中的數(shù)據(jù)是否一致,使得校驗過程中消耗的時間比較少,效率比較高。
附圖說明
此處所說明的附圖用來提供對本申請的進(jìn)一步理解,構(gòu)成本申請的一部分,本申請的示意性實施例及其說明用于解釋本申請,并不構(gòu)成對本申請的不當(dāng)限定。在附圖中:
圖1為本申請實施例提供的一種數(shù)據(jù)校驗方法的流程示意圖;
圖2為本申請實施例提供的一種數(shù)據(jù)校驗方法的流程示意圖;
圖3(a)為本申請實施例提供的一種數(shù)據(jù)校驗方法的示意圖;
圖3(b)為本申請實施例提供的一種數(shù)據(jù)校驗方法的示意圖;
圖3(c)為本申請實施例提供的一種數(shù)據(jù)校驗方法的示意圖;
圖4為本申請實施例提供的一種數(shù)據(jù)校驗設(shè)備的結(jié)構(gòu)示意圖。
具體實施方式
為了實現(xiàn)本申請的目的,本申請實施例中提供了一種數(shù)據(jù)校驗方法和設(shè)備,獲取第一數(shù)據(jù)庫在設(shè)定時間內(nèi)發(fā)生更新的第一數(shù)據(jù),并確定所述第一數(shù)據(jù)的更新時間;從第二數(shù)據(jù)庫中查找是否存在與所述第一數(shù)據(jù)中包含的數(shù)據(jù)項相同的第二數(shù)據(jù);根據(jù)查找結(jié)果和所述第一數(shù)據(jù)的更新時間,校驗所述第一數(shù)據(jù)庫中的數(shù)據(jù)與所述第二數(shù)據(jù)庫中的數(shù)據(jù)是否一致。
在校驗兩個數(shù)據(jù)庫中的數(shù)據(jù)是否一致時,可以獲取一個數(shù)據(jù)庫在設(shè)定時間內(nèi)發(fā)生更新的數(shù)據(jù)以及該數(shù)據(jù)的更新時間,并在另一個數(shù)據(jù)庫中查找是否存在該數(shù)據(jù),以便于確定另一個數(shù)據(jù)庫是否在相同時間更新該數(shù)據(jù),進(jìn)而校驗兩個數(shù)據(jù)庫中的數(shù)據(jù)是否一致。相對于現(xiàn)有技術(shù)中,根據(jù)數(shù)據(jù)庫中的全部數(shù)據(jù)校驗不同數(shù)據(jù)庫中的數(shù)據(jù)是否一致,本申請實施例提供的技術(shù)方案,根據(jù)數(shù)據(jù)庫中發(fā)生更新的數(shù)據(jù)校驗不同數(shù)據(jù)庫中的數(shù)據(jù)是否一致,使得校驗過程中消耗的時間比較少,效率比較高。
本申請實施例提供的技術(shù)方案,可以應(yīng)用于分布式數(shù)據(jù)存儲系統(tǒng),在所述分布式數(shù)據(jù)存儲系統(tǒng)中,包含一個主數(shù)據(jù)庫以及至少一個備份數(shù)據(jù)庫,其中,主數(shù)據(jù)庫可以對外提供數(shù)據(jù)讀寫服務(wù),在主數(shù)據(jù)庫出現(xiàn)故障時,備份數(shù)據(jù)庫可以對外提供數(shù)據(jù)讀寫服務(wù),本申請實施例提供的技術(shù)方案,可以校驗每一個備份數(shù)據(jù)庫中的數(shù)據(jù)與主數(shù)據(jù)庫中的數(shù)據(jù)是否一致。
在實際應(yīng)用中,由于所述主數(shù)據(jù)庫用于對外提供數(shù)據(jù)讀寫服務(wù),備份數(shù)據(jù)庫對所述主數(shù)據(jù)庫中存儲的數(shù)據(jù)進(jìn)行備份,因此,在校驗所述主數(shù)據(jù)庫與所述備份數(shù)據(jù)庫之間的數(shù)據(jù)一致性時,可以以主數(shù)據(jù)庫中的數(shù)據(jù)為依據(jù),校驗備份數(shù)據(jù)庫中的數(shù)據(jù)與主數(shù)據(jù)庫中的數(shù)據(jù)是否一致。
除此之外,在本申請實施例中,還可以以備份數(shù)據(jù)庫中的數(shù)據(jù)為依據(jù),校驗主數(shù)據(jù)庫中的數(shù)據(jù)與備份數(shù)據(jù)庫中的數(shù)據(jù)是否一致。
在本申請?zhí)峁┑募夹g(shù)方案中,所述第一數(shù)據(jù)庫可以是主數(shù)據(jù)庫,也可以是備份數(shù)據(jù)庫,所述第二數(shù)據(jù)庫是與所述第一數(shù)據(jù)庫不同的數(shù)據(jù)庫,在本申請實施例中,可以以所述第一數(shù)據(jù)庫為主數(shù)據(jù)庫,所述第二數(shù)據(jù)庫為備份數(shù)據(jù)庫為例進(jìn)行說明。
需要說明的是,在本申請實施例中,可以按照設(shè)定的時間,循環(huán)校驗所述第一數(shù)據(jù)庫中的數(shù)據(jù)與所述第二數(shù)據(jù)庫中的數(shù)據(jù)是否一致,這樣,在所述設(shè)定時間之前,可以確定所述第一數(shù)據(jù)庫中的數(shù)據(jù)與所述第二數(shù)據(jù)庫中的數(shù)據(jù)一致,在所述設(shè)定時間內(nèi),可以根據(jù)在所述設(shè)定時間內(nèi)所述第一數(shù)據(jù)庫發(fā)生更新的數(shù)據(jù)與所述第二數(shù)據(jù)庫發(fā)生更新的數(shù)據(jù)是否一致,校驗所述第一數(shù)據(jù)庫中的數(shù)據(jù)與所述第二數(shù)據(jù)庫中的數(shù)據(jù)是否一致。
下面結(jié)合本申請具體實施例及相應(yīng)的附圖對本申請技術(shù)方案進(jìn)行清楚、完整地描述。顯然,所描述的實施例僅是本申請一部分實施例,而不是全部的實施例?;诒旧暾堉械膶嵤├?,本領(lǐng)域普通技術(shù)人員在沒有做出創(chuàng)造性勞動前提下所獲得的所有其他實施例,都屬于本申請保護(hù)的范圍。
以下結(jié)合附圖,詳細(xì)說明本申請各實施例提供的技術(shù)方案。
實施例1
步驟101:獲取第一數(shù)據(jù)庫在設(shè)定時間內(nèi)發(fā)生更新的第一數(shù)據(jù),并確定所述第一數(shù)據(jù)的更新時間。
在步驟101中,在校驗第一數(shù)據(jù)庫中的數(shù)據(jù)與第二數(shù)據(jù)庫中的數(shù)據(jù)是否一致時,可以獲取所述第一數(shù)據(jù)庫在設(shè)定時間內(nèi)發(fā)生更新的數(shù)據(jù),并確定所述第一數(shù)據(jù)庫更新所述第一數(shù)據(jù)的時間。
所述第一數(shù)據(jù)庫可以是主數(shù)據(jù)庫,在本申請實施例中,可以以所述第一數(shù)據(jù)庫中的數(shù)據(jù)為依據(jù),校驗所述第二數(shù)據(jù)庫中的數(shù)據(jù)與所述第一數(shù)據(jù)庫中的數(shù)據(jù)是否一致。
在校驗所述第一數(shù)據(jù)庫中的數(shù)據(jù)與所述第二數(shù)據(jù)庫中的數(shù)據(jù)是否一致時,可以獲取所述第一數(shù)據(jù)庫在設(shè)定時間內(nèi)發(fā)生更新的第一數(shù)據(jù)。在本申請實施例中,所述設(shè)定時間可以是一個時間點,也可以是一個時間段,不做具體限定,例如,所述設(shè)定時間是一個時間點,那么,可以獲取所述第一數(shù)據(jù)庫在某一設(shè)定時間點發(fā)生更新的第一數(shù)據(jù),如果所述設(shè)定時間是一個時間段,那么,可以獲取所述第一數(shù)據(jù)庫在某一時間段內(nèi)發(fā)生更新的第一數(shù)據(jù)。
所述設(shè)定時間可以根據(jù)所述第一數(shù)據(jù)庫中數(shù)據(jù)的更新頻率確定,例如,所述第一數(shù)據(jù)庫中數(shù)據(jù)的更新頻率比較快,那么,可以確定所述設(shè)定時間為某一較短的時間段,除此之外,所述設(shè)定時間還可以根據(jù)實際需要確定,這里也不做具體限定。
需要說明的是,本申請實施例中,由于獲取的是所述第一數(shù)據(jù)庫在設(shè)定時間內(nèi)發(fā)生更新的第一數(shù)據(jù),因此,獲取的所述第一數(shù)據(jù)的數(shù)據(jù)量遠(yuǎn)小于所述第一數(shù)據(jù)庫中存儲的全部數(shù)據(jù)的數(shù)據(jù)量,例如,所述第一數(shù)據(jù)庫在1個小時內(nèi)發(fā)生更新的數(shù)據(jù)量比較大,那么,可以確定設(shè)定時間為一分鐘,獲取的所述第一數(shù)據(jù)為所述第一數(shù)據(jù)庫在一分鐘內(nèi)發(fā)生更新的數(shù)據(jù),這樣,獲取的數(shù)據(jù)量遠(yuǎn)小于所述第一數(shù)據(jù)庫中存儲的全部數(shù)據(jù)的數(shù)據(jù)量。
在實際應(yīng)用中,在判斷所述第一數(shù)據(jù)庫中的數(shù)據(jù)與所述第二數(shù)據(jù)庫中的數(shù)據(jù)是否一致時,判斷的依據(jù)可以是所述第一數(shù)據(jù)庫在設(shè)定時間內(nèi)更新的數(shù)據(jù)項以及數(shù)據(jù)項中包含的數(shù)據(jù)內(nèi)容,也可以是數(shù)據(jù)的更新時間,因此,本申請實施例中,在獲取所述第一數(shù)據(jù)庫在設(shè)定時間內(nèi)更新的第一數(shù)據(jù)后,還可以確定所述第一數(shù)據(jù)的更新時間。
具體地,所述第一數(shù)據(jù)庫在更新所述第一數(shù)據(jù)時,可以記錄所述第一數(shù)據(jù)的更新時間,并將所述第一數(shù)據(jù)的更新時間與所述第一數(shù)據(jù)對應(yīng)存儲至所述第一數(shù)據(jù)庫中,這樣,在獲取到所述第一數(shù)據(jù)時,可以根據(jù)所述第一數(shù)據(jù),從所述第一數(shù)據(jù)庫中確定所述第一數(shù)據(jù)的更新時間。
在記錄所述第一數(shù)據(jù)的更新時間時,所述第一數(shù)據(jù)的更新時間的精度要小于所述第一數(shù)據(jù)庫的更新頻率,例如,所述第一數(shù)據(jù)庫每隔1s更新一次數(shù)據(jù),那么所述第一數(shù)據(jù)的更新時間的精度要小于1s,這樣,可以區(qū)分不同數(shù)據(jù)的更新時間,保證數(shù)據(jù)校驗的準(zhǔn)確性。通常情況下,數(shù)據(jù)的更新時間的精度越高,數(shù)據(jù)校驗的準(zhǔn)確性越高。
步驟102:從第二數(shù)據(jù)庫中查找是否存在與所述第一數(shù)據(jù)中包含的數(shù)據(jù)項相同的第二數(shù)據(jù)。
在步驟102中,在獲取到所述第一數(shù)據(jù)庫在設(shè)定時間內(nèi)發(fā)生更新的第一數(shù)據(jù)后,可以根據(jù)獲取的所述第一數(shù)據(jù),從第二數(shù)據(jù)庫中查找是否存在與所述第一數(shù)據(jù)中包含的數(shù)據(jù)項相同的第二數(shù)據(jù),以便于確定所述第二數(shù)據(jù)庫是否更新所述第一數(shù)據(jù)。
在本申請實施例中,所述第一數(shù)據(jù)中可以包含多個數(shù)據(jù)項,這里的數(shù)據(jù)項指的是所述第一數(shù)據(jù)中包含的不同的數(shù)據(jù)類別,例如,所述數(shù)據(jù)項可以是用戶名,用戶密碼,等等,每一個數(shù)據(jù)項包含數(shù)據(jù)內(nèi)容,例如,用戶名中包含的用戶使用的用戶名a,用戶密碼中包含用戶使用的密碼b。
具體地,在從所述第二數(shù)據(jù)庫中查找是否存在與所述第一數(shù)據(jù)中包含的數(shù)據(jù)項相同的第二數(shù)據(jù)時,可以將所述第一數(shù)據(jù)中包含的數(shù)據(jù)項與所述第二數(shù)據(jù)庫中包含的數(shù)據(jù)項進(jìn)行匹配,并根據(jù)匹配結(jié)果確定所述第二數(shù)據(jù)庫中是否存在與所述第一數(shù)據(jù)中包含的數(shù)據(jù)項相同的第二數(shù)據(jù)。
除此之外,在實際應(yīng)用中,還可以通過其他方法從所述第二數(shù)據(jù)庫中查找是否存在與所述第一數(shù)據(jù)中包含的數(shù)據(jù)項相同的第二數(shù)據(jù),這里不作具體限定。
在從所述第二數(shù)據(jù)庫中查找是否存在與所述第一數(shù)據(jù)中包含的數(shù)據(jù)項相同的第二數(shù)據(jù)時,查找結(jié)果至少包含以下幾種:
第一種結(jié)果:所述第二數(shù)據(jù)庫中不存在與所述第一數(shù)據(jù)中包含的數(shù)據(jù)項相同的第二數(shù)據(jù);
第二種結(jié)果:所述第二數(shù)據(jù)庫中存在與所述第一數(shù)據(jù)中包含的數(shù)據(jù)項相同的第二數(shù)據(jù)。
針對上述第一種結(jié)果,所述第二數(shù)據(jù)庫中不存在與所述第一數(shù)據(jù)中包含的數(shù)據(jù)項相同的第二數(shù)據(jù),可以是所述第二數(shù)據(jù)庫中不存在與所述第一數(shù)據(jù)中包含的任意一個數(shù)據(jù)項相同的第二數(shù)據(jù),也可以是所述第二數(shù)據(jù)庫中存在與所述第一數(shù)據(jù)中包含的若干個(小于所述第一數(shù)據(jù)包含的數(shù)據(jù)項的個數(shù))數(shù)據(jù)項相同的第二數(shù)據(jù)。
例如,所述第一數(shù)據(jù)中包含的數(shù)據(jù)項為A、B、C和D,如果所述第二數(shù)據(jù)庫中不存在數(shù)據(jù)項A、B、C和D,那么,可以確定所述第二數(shù)據(jù)庫中不存在與所述第一數(shù)據(jù)中包含的數(shù)據(jù)項相同的第二數(shù)據(jù);如果所述第二數(shù)據(jù)庫中只存在數(shù)據(jù)項A、B和C,那么,可以確定所述第二數(shù)據(jù)庫中不存在與所述第一數(shù)據(jù)中包含的數(shù)據(jù)項相同的第二數(shù)據(jù)。
針對上述第二種結(jié)果,所述第二數(shù)據(jù)庫中存在與所述第一數(shù)據(jù)中包含的數(shù)據(jù)項相同的第二數(shù)據(jù),指的是所述第二數(shù)據(jù)庫中存在與所述第一數(shù)據(jù)中包含的每一個數(shù)據(jù)項相同的第二數(shù)據(jù)。
仍以上述所述第一數(shù)據(jù)中包含的數(shù)據(jù)項為A、B、C和D為例,如果所述第二數(shù)據(jù)庫存在數(shù)據(jù)項A、B、C和D,那么,可以確定所述第二數(shù)據(jù)庫中存在與所述第一數(shù)據(jù)中包含的數(shù)據(jù)項相同的第二數(shù)據(jù)。
從所述第二數(shù)據(jù)庫中查找是否存在與所述第一數(shù)據(jù)中包含的數(shù)據(jù)項相同的第二數(shù)據(jù)后,可以根據(jù)查找結(jié)果,校驗所述第一數(shù)據(jù)庫中的數(shù)據(jù)與所述第二數(shù)據(jù)庫中的數(shù)據(jù)是否一致。
步驟103:根據(jù)查找結(jié)果和所述第一數(shù)據(jù)的更新時間,校驗所述第一數(shù)據(jù)庫中的數(shù)據(jù)與所述第二數(shù)據(jù)庫中的數(shù)據(jù)是否一致。
在步驟103中,可以根據(jù)上述步驟102中記載的查找結(jié)果以及所述第一數(shù)據(jù)庫中所述第一數(shù)據(jù)的更新時間,校驗所述第一數(shù)據(jù)庫中的數(shù)據(jù)與所述第二數(shù)據(jù)庫中的數(shù)據(jù)是否一致。
具體地,可以分別針對步驟102中記載的兩種查找結(jié)果,校驗所述第一數(shù)據(jù)庫中的數(shù)據(jù)與所述第二數(shù)據(jù)庫中的數(shù)據(jù)是否一致。
針對第一種結(jié)果:
當(dāng)查找結(jié)果為所述第二數(shù)據(jù)庫中不存在與所述第一數(shù)據(jù)中包含的數(shù)據(jù)項相同的第二數(shù)據(jù)時,確定所述第一數(shù)據(jù)庫中的數(shù)據(jù)與所述第二數(shù)據(jù)庫中的數(shù)據(jù)不一致。
從所述第二數(shù)據(jù)庫中沒有查找到與所述第一數(shù)據(jù)中包含的數(shù)據(jù)項相同的第二數(shù)據(jù),可以確定所述第二數(shù)據(jù)庫中的數(shù)據(jù)與所述第一數(shù)據(jù)庫中的數(shù)據(jù)不一致。
針對第二種結(jié)果:
根據(jù)查找結(jié)果和所述第一數(shù)據(jù)的更新時間,校驗所述第一數(shù)據(jù)庫中的數(shù)據(jù)與所述第二數(shù)據(jù)庫中的數(shù)據(jù)是否一致,包括:
當(dāng)查找結(jié)果為所述第二數(shù)據(jù)庫中存在與所述第一數(shù)據(jù)中包含的數(shù)據(jù)項相同的第二數(shù)據(jù)時,確定所述第二數(shù)據(jù)的更新時間;
在確定所述第一數(shù)據(jù)的更新時間與所述第二數(shù)據(jù)的更新時間不一致時,確定所述第一數(shù)據(jù)庫中的數(shù)據(jù)與所述第二數(shù)據(jù)庫中的數(shù)據(jù)不一致。
從所述第二數(shù)據(jù)庫中查找到與所述第一數(shù)據(jù)中包含的數(shù)據(jù)項相同的第二數(shù)據(jù),可以說明,所述第二數(shù)據(jù)庫中包含所述第一數(shù)據(jù)中的數(shù)據(jù)項,此時,為了校驗所述第一數(shù)據(jù)庫中的數(shù)據(jù)與所述第二數(shù)據(jù)庫中的數(shù)據(jù)是否一致,可以進(jìn)一步確定所述第二數(shù)據(jù)的更新時間。
具體地,所述第二數(shù)據(jù)庫在更新所述第二數(shù)據(jù)時,可以記錄所述第二數(shù)據(jù)的更新時間,并將所述第二數(shù)據(jù)以及所述第二數(shù)據(jù)的更新時間對應(yīng)存儲至所述第二數(shù)據(jù)庫中,這樣,在查找到所述第二數(shù)據(jù)后,可以根據(jù)所述第二數(shù)據(jù),從所述第二數(shù)據(jù)庫中確定所述第二數(shù)據(jù)的更新時間。
在確定所述第二數(shù)據(jù)的更新時間后,可以將所述第二數(shù)據(jù)的更新時間與所述第一數(shù)據(jù)的更新時間進(jìn)行比較,以便于確定所述第一數(shù)據(jù)庫中的數(shù)據(jù)是否與所述第二數(shù)據(jù)庫中的數(shù)據(jù)是否一致。
在本申請實施例中,在將所述第一數(shù)據(jù)的更新時間與所述第二數(shù)據(jù)的更新時間進(jìn)行比較時,比較結(jié)果至少包含以下幾種情況:
第一種情況:所述第一數(shù)據(jù)的更新時間與所述第二數(shù)據(jù)的更新時間一致;
第二種情況:所述第一數(shù)據(jù)的更新時間與所述第二數(shù)據(jù)的更新時間不一致。
針對第一種情況:
所述第一數(shù)據(jù)的更新時間與所述第二數(shù)據(jù)的更新時間一致,指的是所述第一數(shù)據(jù)中包含的數(shù)據(jù)項的更新時間與所述第二數(shù)據(jù)中包含的對應(yīng)的數(shù)據(jù)項的更新時間一致。
例如,所述第一數(shù)據(jù)中包含的數(shù)據(jù)項為A、B、C和D,A、B、C和D的更新時間分別是t1、t2、t3、和t4,所述第二數(shù)據(jù)中包含的數(shù)據(jù)項也為A、B、C和D,如果確定在第二數(shù)據(jù)庫中A、B、C和D的更新時間分別也是t1、t2、t3、和t4,那么,可以確定所述第一數(shù)據(jù)的更新時間與所述第二數(shù)據(jù)的更新時間一致。
此時,由于所述第二數(shù)據(jù)庫中存在與所述第一數(shù)據(jù)中包含的數(shù)據(jù)項相同的第二數(shù)據(jù),且所述第二數(shù)據(jù)的更新時間與所述第一數(shù)據(jù)的更新時間一致,可以說明,所述第二數(shù)據(jù)庫和所述第一數(shù)據(jù)庫在相同的時間更新所述第二數(shù)據(jù)(即所述第一數(shù)據(jù)),因此,可以確定所述第一數(shù)據(jù)庫中的數(shù)據(jù)與所述第二數(shù)據(jù)庫中的數(shù)據(jù)一致。
針對第二種情況:
所述第一數(shù)據(jù)的更新時間與所述第二數(shù)據(jù)的更新時間不一致,可以是所述第二數(shù)據(jù)中包含的每一個數(shù)據(jù)項的更新時間與所述第一數(shù)據(jù)中包含的對應(yīng)的數(shù)據(jù)項的更新時間均不一致,也可以是所述第二數(shù)據(jù)中包含的若干個(小于所述第二數(shù)據(jù)包含的數(shù)據(jù)項的個數(shù))數(shù)據(jù)項的更新時間與所述第一數(shù)據(jù)中包含的對應(yīng)的數(shù)據(jù)項的更新時間不一致。
仍以上述所述第一數(shù)據(jù)中包含的數(shù)據(jù)項A、B、C和D的更新時間是t1、t2、t3和t4為例,如果所述第二數(shù)據(jù)中的A、B、C和D的更新時間分別是t11、t21、t31、和t41,那么,可以確定所述第一數(shù)據(jù)的更新時間與所述第二數(shù)據(jù)的更新時間不一致;如果所述第二數(shù)據(jù)中的A、B、C和D的更新時間分別是t1、t2、t31、和t41,那么,也可以確定所述第一數(shù)據(jù)的更新時間與所述第二數(shù)據(jù)的更新時間不一致。
此時,雖然所述第二數(shù)據(jù)庫中存在與所述第一數(shù)據(jù)中包含的數(shù)據(jù)項相同的第二數(shù)據(jù),但是,所述第二數(shù)據(jù)的更新時間與所述第一數(shù)據(jù)的更新時間不一致,可以說明,所述第二數(shù)據(jù)庫沒有及時更新所述第二數(shù)據(jù),因此,可以確定所述第一數(shù)據(jù)庫中的數(shù)據(jù)與所述第二數(shù)據(jù)庫中的數(shù)據(jù)不一致。
例如,所述第一數(shù)據(jù)包含的數(shù)據(jù)項為用戶密碼,在用戶更新用戶密碼之前,所述第一數(shù)據(jù)庫和所述第二數(shù)據(jù)庫中存儲的用戶密碼是一致的,在用戶更新用戶密碼后,所述第一數(shù)據(jù)庫更新用戶密碼,所述第二數(shù)據(jù)庫沒有更新用戶密碼,此時,雖然所述第二數(shù)據(jù)庫中存在用戶密碼這一數(shù)據(jù)項,但是,由于所述第二數(shù)據(jù)庫中沒有更新用戶密碼,即所述第二數(shù)據(jù)庫中用戶密碼的更新時間與所述第一數(shù)據(jù)庫中用戶密碼的更新時間不一致,因此,可以確定所述第一數(shù)據(jù)庫中的數(shù)據(jù)與所述第二數(shù)據(jù)庫中的數(shù)據(jù)不一致。
在確定所述第一數(shù)據(jù)庫中的數(shù)據(jù)與所述第二數(shù)據(jù)庫中的數(shù)據(jù)不一致時,為了使得所述第二數(shù)據(jù)庫中的數(shù)據(jù)與所述第一數(shù)據(jù)庫中的數(shù)據(jù)一致,可以更新所述第二數(shù)據(jù)庫。
可選地,在確定所述第一數(shù)據(jù)庫中的數(shù)據(jù)與所述第二數(shù)據(jù)庫中的數(shù)據(jù)不一致時,所述方法還包括:
利用所述第一數(shù)據(jù)以及所述第一數(shù)據(jù)的更新時間,更新所述第二數(shù)據(jù)庫,使得所述第一數(shù)據(jù)庫中的數(shù)據(jù)與所述第二數(shù)據(jù)庫中的數(shù)據(jù)一致。
具體地,根據(jù)上述記載的內(nèi)容,可以在以下兩種情況下確定所述第一數(shù)據(jù)中的數(shù)據(jù)與所述第二數(shù)據(jù)庫中的數(shù)據(jù)不一致,包括:
第一種情況:所述第二數(shù)據(jù)庫中不存在與所述第一數(shù)據(jù)中包含的數(shù)據(jù)項相同的第二數(shù)據(jù);
第二種情況:所述第二數(shù)據(jù)庫中存在與所述第一數(shù)據(jù)中包含的數(shù)據(jù)項相同的第二數(shù)據(jù),但是,所述第一數(shù)據(jù)的更新時間與所述第二數(shù)據(jù)的更新時間不一致。
下面分別針對上述兩種情況,說明如何更新所述第二數(shù)據(jù)庫。
針對第一種情況:
在確定所述第二數(shù)據(jù)庫中不存在與所述第一數(shù)據(jù)中包含的數(shù)據(jù)項相同的第二數(shù)據(jù)時,可以將所述第一數(shù)據(jù)更新至所述第二數(shù)據(jù)庫中,補全所述第二數(shù)據(jù)庫的數(shù)據(jù)。
在將所述第一數(shù)據(jù)更新至所述第二數(shù)據(jù)庫后,所述第二數(shù)據(jù)庫中存在與所述第一數(shù)據(jù)中包含的數(shù)據(jù)項相同的第二數(shù)據(jù),此時,為了保證所述第二數(shù)據(jù)庫中的數(shù)據(jù)中的數(shù)據(jù)與所述第一數(shù)據(jù)庫中的數(shù)據(jù)一致,可以根據(jù)所述第一數(shù)據(jù)的更新時間,更新所述第二數(shù)據(jù)的更新時間,即根據(jù)所述第一數(shù)據(jù)的更新時間,確定所述第二數(shù)據(jù)的更新時間,使得所述第二數(shù)據(jù)的更新時間與所述第一數(shù)據(jù)的更新時間一致。
針對第二種情況:
所述第二數(shù)據(jù)庫沒有更新所述第二數(shù)據(jù),此時,可以根據(jù)所述第一數(shù)據(jù),更新所述第二數(shù)據(jù)中沒有及時更新的數(shù)據(jù)。
在更新所述第二數(shù)據(jù)后,為了保證所述第二數(shù)據(jù)庫中的數(shù)據(jù)與所述第一數(shù)據(jù)庫中的數(shù)據(jù)一致,可以根據(jù)所述第一數(shù)據(jù)的更新時間,更新所述第二數(shù)據(jù)的更新時間,保證更新后的所述第二數(shù)據(jù)的更新時間與所述第一數(shù)據(jù)的更新時間一致,進(jìn)而使得所述第一數(shù)據(jù)庫中的數(shù)據(jù)與所述第二數(shù)據(jù)庫中的數(shù)據(jù)一致。
需要說明的是,在實際應(yīng)用中,可以使用本申請實施例提供的技術(shù)方案,按照設(shè)定周期校驗兩個數(shù)據(jù)庫中的數(shù)據(jù)是否一致,也可以根據(jù)實際情況,不定期地校驗兩個數(shù)據(jù)庫中的數(shù)據(jù)是否一致,這里不做具體限定。
本申請實施例提供的技術(shù)方案,在校驗兩個數(shù)據(jù)庫中的數(shù)據(jù)是否一致時,可以獲取一個數(shù)據(jù)庫在設(shè)定時間內(nèi)發(fā)生更新的數(shù)據(jù)以及該數(shù)據(jù)的更新時間,并在另一個數(shù)據(jù)庫中查找是否存在該數(shù)據(jù),以便于確定另一個數(shù)據(jù)庫是否在相同時間更新該數(shù)據(jù),進(jìn)而校驗兩個數(shù)據(jù)庫中的數(shù)據(jù)是否一致。相對于現(xiàn)有技術(shù)中,根據(jù)數(shù)據(jù)庫中的全部數(shù)據(jù)校驗不同數(shù)據(jù)庫中的數(shù)據(jù)是否一致,本申請實施例提供的技術(shù)方案,根據(jù)數(shù)據(jù)庫中發(fā)生更新的數(shù)據(jù)校驗不同數(shù)據(jù)庫中的數(shù)據(jù)是否一致,使得校驗過程中消耗的時間比較少,效率比較高。
實施例2
圖2為本申請實施例提供的一種數(shù)據(jù)校驗方法的流程示意圖。所述方法如下所述。
步驟201:獲取所述第一數(shù)據(jù)庫在設(shè)定時間內(nèi)發(fā)生更新的第一數(shù)據(jù),并確定所述第一數(shù)據(jù)的更新時間。
所述設(shè)定時間可以根據(jù)實際情況確定。
在獲取所述第一數(shù)據(jù)后,可以根據(jù)上述實施例1中記載的方法,確定所述第一數(shù)據(jù)的更新時間,這里不再重復(fù)描述。
步驟202:從第二數(shù)據(jù)庫中查找是否存在與所述第一數(shù)據(jù)中包含的數(shù)據(jù)項相同的第二數(shù)據(jù)。
具體地,可以通過上述實施例1中記載的方法,從所述第二數(shù)據(jù)庫中查找是否存在與所述第一數(shù)據(jù)中包含的數(shù)據(jù)項相同的第二數(shù)據(jù)。
如果查找結(jié)果為所述第二數(shù)據(jù)庫中存在與所述第一數(shù)據(jù)中包含的數(shù)據(jù)項相同的第二數(shù)據(jù)時,執(zhí)行步驟203;如果查找結(jié)果為所述第二數(shù)據(jù)庫中不存在與所述第一數(shù)據(jù)中包含的數(shù)據(jù)項相同的第二數(shù)據(jù)時,執(zhí)行步驟205。
步驟203:確定所述第二數(shù)據(jù)的更新時間。
具體地,可以根據(jù)上述實施例1中記載的方法確定所述第二數(shù)據(jù)的更新時間,這里不再重復(fù)描述。
步驟204:判斷所述第二數(shù)據(jù)的更新時間是否與所述第一數(shù)據(jù)的更新時間一致。
在確定所述第二數(shù)據(jù)的更新時間后,可以進(jìn)一步判斷所述第二數(shù)據(jù)的更新時間是否與所述第一數(shù)據(jù)的更新時間一致。
在確定所述第二數(shù)據(jù)的更新時間與所述第一數(shù)據(jù)的更新時間不一致時,執(zhí)行步驟205;在確定所述第二數(shù)據(jù)的更新時間與所述第一數(shù)據(jù)的更新時間一致時,執(zhí)行步驟206。
步驟205:利用所述第一數(shù)據(jù)以及所述第一數(shù)據(jù)的更新時間,更新所述第二數(shù)據(jù)庫。
具體地,可以根據(jù)上述實施例1中記載的方法,利用所述第一數(shù)據(jù)以及所述第一數(shù)據(jù)的更新時間,更新所述第二數(shù)據(jù)庫,這里不再重復(fù)描述。
在更新所述第二數(shù)據(jù)庫后,可以使得所述第一數(shù)據(jù)庫中的數(shù)據(jù)與所述第二數(shù)據(jù)庫中的數(shù)據(jù)一致。
步驟206:確定所述第一數(shù)據(jù)庫中的數(shù)據(jù)與所述第二數(shù)據(jù)庫中的數(shù)據(jù)一致。
實施例3
圖3(a)為本申請實施例提供的一種數(shù)據(jù)校驗的示意圖。
圖3(a)中,根據(jù)主數(shù)據(jù)庫在設(shè)定時間內(nèi)更新的第一數(shù)據(jù),從備份數(shù)據(jù)庫中查找與第一數(shù)據(jù)中包含的數(shù)據(jù)項相同的第二數(shù)據(jù),當(dāng)備份數(shù)據(jù)庫中不存在所述第二數(shù)據(jù)時,根據(jù)主數(shù)據(jù)庫中的第一數(shù)據(jù)以及第一數(shù)據(jù)的更新時間更新備份數(shù)據(jù)庫。
圖3(b)為本申請實施例提供的一種數(shù)據(jù)校驗的示意圖。
圖3(b)中,根據(jù)主數(shù)據(jù)庫在設(shè)定時間內(nèi)更新的第一數(shù)據(jù),從備份數(shù)據(jù)庫中查找與第一數(shù)據(jù)中包含的數(shù)據(jù)項相同的第二數(shù)據(jù),當(dāng)備份數(shù)據(jù)庫中存在所述第二數(shù)據(jù),但第二數(shù)據(jù)的更新時間與第一數(shù)據(jù)的更新時間不一致時,根據(jù)第一數(shù)據(jù)以及第一數(shù)據(jù)的更新時間更新備份數(shù)據(jù)庫。
圖3(c)為本申請實施例提供的一種數(shù)據(jù)校驗的示意圖。
圖3(c)中,根據(jù)主數(shù)據(jù)庫在設(shè)定時間內(nèi)更新的第一數(shù)據(jù),從備份數(shù)據(jù)庫中查找與第一數(shù)據(jù)中包含的數(shù)據(jù)項相同的第二數(shù)據(jù),當(dāng)備份數(shù)據(jù)庫中存在所述第二數(shù)據(jù),且第二數(shù)據(jù)的更新時間與第一數(shù)據(jù)的更新時間一致時,可以確定主數(shù)據(jù)庫中的數(shù)據(jù)與備份數(shù)據(jù)庫中的數(shù)據(jù)一致。
實施例4
圖4為本申請實施例提供的一種數(shù)據(jù)校驗設(shè)備的結(jié)構(gòu)示意圖。所述數(shù)據(jù)校驗設(shè)備應(yīng)用于分布式數(shù)據(jù)存儲系統(tǒng),所述數(shù)據(jù)校驗設(shè)備包括:獲取單元41、查找單元42和校驗單元43,其中:
獲取單元41,獲取第一數(shù)據(jù)庫在設(shè)定時間內(nèi)發(fā)生更新的第一數(shù)據(jù),并確定所述第一數(shù)據(jù)的更新時間;
查找單元42,從第二數(shù)據(jù)庫中查找是否存在與所述第一數(shù)據(jù)中包含的數(shù)據(jù)項相同的第二數(shù)據(jù);
校驗單元43,根據(jù)所述查找單元42的查找結(jié)果和所述第一數(shù)據(jù)的更新時間,校驗所述第一數(shù)據(jù)庫中的數(shù)據(jù)與所述第二數(shù)據(jù)庫中的數(shù)據(jù)是否一致。
所述校驗單元43根據(jù)所述查找單元42的查找結(jié)果和所述第一數(shù)據(jù)的更新時間,校驗所述第一數(shù)據(jù)庫中的數(shù)據(jù)與所述第二數(shù)據(jù)庫中的數(shù)據(jù)是否一致,包括:
當(dāng)所述查找單元42的查找結(jié)果為所述第二數(shù)據(jù)庫中存在與所述第一數(shù)據(jù)中包含的數(shù)據(jù)項相同的第二數(shù)據(jù)時,確定所述第二數(shù)據(jù)的更新時間;
在確定所述第一數(shù)據(jù)的更新時間與所述第二數(shù)據(jù)的更新時間不一致時,確定所述第一數(shù)據(jù)庫中的數(shù)據(jù)與所述第二數(shù)據(jù)庫中的數(shù)據(jù)不一致。
可選地,所述校驗單元43,當(dāng)所述查找單元42的查找結(jié)果為所述第二數(shù)據(jù)庫中不存在與所述第一數(shù)據(jù)中包含的數(shù)據(jù)項相同的第二數(shù)據(jù)時,確定所述第一數(shù)據(jù)庫中的數(shù)據(jù)與所述第二數(shù)據(jù)庫中的數(shù)據(jù)不一致。
可選地,所述數(shù)據(jù)校驗設(shè)備還包括:更新單元44,其中:
所述更新單元44,在所述校驗單元43確定所述第一數(shù)據(jù)庫中的數(shù)據(jù)與所述第二數(shù)據(jù)庫中的數(shù)據(jù)不一致時,利用所述第一數(shù)據(jù)以及所述第一數(shù)據(jù)的更新時間,更新所述第二數(shù)據(jù)庫,使得所述第一數(shù)據(jù)庫中的數(shù)據(jù)與所述第二數(shù)據(jù)庫中的數(shù)據(jù)一致。
可選地,所述校驗單元43,在確定所述第一數(shù)據(jù)的更新時間與所述第二數(shù)據(jù)的更新時間一致時,確定所述第一數(shù)據(jù)庫中的數(shù)據(jù)與所述第二數(shù)據(jù)庫中的數(shù)據(jù)一致。
需要說明的是,本申請實施例提供的數(shù)據(jù)校驗設(shè)備可以通過硬件方式實現(xiàn),也可以通過軟件方式實現(xiàn),這里不做限定。
本領(lǐng)域內(nèi)的技術(shù)人員應(yīng)明白,本申請的實施例可提供為方法、系統(tǒng)、或計算機程序產(chǎn)品。因此,本申請可采用完全硬件實施例、完全軟件實施例、或結(jié)合軟件和硬件方面的實施例的形式。而且,本申請可采用在一個或多個其中包含有計算機可用程序代碼的計算機可用存儲介質(zhì)(包括但不限于磁盤存儲器、CD-ROM、光學(xué)存儲器等)上實施的計算機程序產(chǎn)品的形式。
本申請是參照根據(jù)本申請實施例的方法、設(shè)備(系統(tǒng))、和計算機程序產(chǎn)品的流程圖和/或方框圖來描述的。應(yīng)理解可由計算機程序指令實現(xiàn)流程圖和/或方框圖中的每一流程和/或方框、以及流程圖和/或方框圖中的流程和/或方框的結(jié)合。可提供這些計算機程序指令到通用計算機、專用計算機、嵌入式處理機或其他可編程數(shù)據(jù)處理設(shè)備的處理器以產(chǎn)生一個機器,使得通過計算機或其他可編程數(shù)據(jù)處理設(shè)備的處理器執(zhí)行的指令產(chǎn)生用于實現(xiàn)在流程圖一個流程或多個流程和/或方框圖一個方框或多個方框中指定的功能的裝置。
這些計算機程序指令也可存儲在能引導(dǎo)計算機或其他可編程數(shù)據(jù)處理設(shè)備以特定方式工作的計算機可讀存儲器中,使得存儲在該計算機可讀存儲器中的指令產(chǎn)生包括指令裝置的制造品,該指令裝置實現(xiàn)在流程圖一個流程或多個流程和/或方框圖一個方框或多個方框中指定的功能。
這些計算機程序指令也可裝載到計算機或其他可編程數(shù)據(jù)處理設(shè)備上,使得在計算機或其他可編程設(shè)備上執(zhí)行一系列操作步驟以產(chǎn)生計算機實現(xiàn)的處理,從而在計算機或其他可編程設(shè)備上執(zhí)行的指令提供用于實現(xiàn)在流程圖一個流程或多個流程和/或方框圖一個方框或多個方框中指定的功能的步驟。
在一個典型的配置中,計算設(shè)備包括一個或多個處理器(CPU)、輸入/輸出接口、網(wǎng)絡(luò)接口和內(nèi)存。
內(nèi)存可能包括計算機可讀介質(zhì)中的非永久性存儲器,隨機存取存儲器(RAM)和/或非易失性內(nèi)存等形式,如只讀存儲器(ROM)或閃存(flash RAM)。內(nèi)存是計算機可讀介質(zhì)的示例。
計算機可讀介質(zhì)包括永久性和非永久性、可移動和非可移動媒體可以由任何方法或技術(shù)來實現(xiàn)信息存儲。信息可以是計算機可讀指令、數(shù)據(jù)結(jié)構(gòu)、程序的模塊或其他數(shù)據(jù)。計算機的存儲介質(zhì)的例子包括,但不限于相變內(nèi)存(PRAM)、靜態(tài)隨機存取存儲器(SRAM)、動態(tài)隨機存取存儲器(DRAM)、其他類型的隨機存取存儲器(RAM)、只讀存儲器(ROM)、電可擦除可編程只讀存儲器(EEPROM)、快閃記憶體或其他內(nèi)存技術(shù)、只讀光盤只讀存儲器(CD-ROM)、數(shù)字多功能光盤(DVD)或其他光學(xué)存儲、磁盒式磁帶,磁帶磁磁盤存儲或其他磁性存儲設(shè)備或任何其他非傳輸介質(zhì),可用于存儲可以被計算設(shè)備訪問的信息。按照本文中的界定,計算機可讀介質(zhì)不包括暫存電腦可讀媒體(transitory media),如調(diào)制的數(shù)據(jù)信號和載波。
還需要說明的是,術(shù)語“包括”、“包含”或者其任何其他變體意在涵蓋非排他性的包含,從而使得包括一系列要素的過程、方法、商品或者設(shè)備不僅包括那些要素,而且還包括沒有明確列出的其他要素,或者是還包括為這種過程、方法、商品或者設(shè)備所固有的要素。在沒有更多限制的情況下,由語句“包括一個……”限定的要素,并不排除在包括所述要素的過程、方法、商品或者設(shè)備中還存在另外的相同要素。
本領(lǐng)域技術(shù)人員應(yīng)明白,本申請的實施例可提供為方法、系統(tǒng)或計算機程序產(chǎn)品。因此,本申請可采用完全硬件實施例、完全軟件實施例或結(jié)合軟件和硬件方面的實施例的形式。而且,本申請可采用在一個或多個其中包含有計算機可用程序代碼的計算機可用存儲介質(zhì)(包括但不限于磁盤存儲器、CD-ROM、光學(xué)存儲器等)上實施的計算機程序產(chǎn)品的形式。
以上所述僅為本申請的實施例而已,并不用于限制本申請。對于本領(lǐng)域技術(shù)人員來說,本申請可以有各種更改和變化。凡在本申請的精神和原理之內(nèi)所作的任何修改、等同替換、改進(jìn)等,均應(yīng)包含在本申請的權(quán)利要求范圍之內(nèi)。