本技術(shù)涉及數(shù)據(jù)處理,尤其涉及一種數(shù)據(jù)校驗(yàn)方法、設(shè)備、存儲介質(zhì)以及程序產(chǎn)品。
背景技術(shù):
1、目前,數(shù)據(jù)庫在各行各業(yè)都取得了廣泛的應(yīng)用,通過數(shù)據(jù)庫的管理和存儲,用戶可以更好地使用相關(guān)數(shù)據(jù),便于精準(zhǔn)決策和合理規(guī)劃。在數(shù)據(jù)庫使用過程中,為滿足機(jī)房搬遷、服務(wù)器更換、軟件版本更新和數(shù)據(jù)庫軟件更換等業(yè)務(wù)方面的需要,數(shù)據(jù)遷移是一項(xiàng)時常會遇到的工作。
2、在數(shù)據(jù)遷移的過程中,難免會存在一些異常情況,導(dǎo)致出現(xiàn)遷移前后的數(shù)據(jù)不一致。為了避免異常情況的發(fā)生,不同的校驗(yàn)方法被應(yīng)用在數(shù)據(jù)庫的遷移過程中,旨在保證數(shù)據(jù)的準(zhǔn)確性與一致性,但是面對數(shù)據(jù)遷移量較大的情況,往往在校驗(yàn)效率方面表現(xiàn)很差。
3、因此如何保證在數(shù)據(jù)遷移過程中數(shù)據(jù)的準(zhǔn)確性,同時有效提高數(shù)據(jù)校驗(yàn)效率是一個亟待解決的問題。
4、上述內(nèi)容僅用于輔助理解本技術(shù)的技術(shù)方案,并不代表承認(rèn)上述內(nèi)容是現(xiàn)有技術(shù)。
技術(shù)實(shí)現(xiàn)思路
1、本技術(shù)的主要目的在于提供一種數(shù)據(jù)校驗(yàn)方法、設(shè)備、存儲介質(zhì)以及程序產(chǎn)品,旨在解決如何保證在數(shù)據(jù)遷移過程中數(shù)據(jù)的準(zhǔn)確性,同時有效提高數(shù)據(jù)校驗(yàn)效率的技術(shù)問題。
2、為實(shí)現(xiàn)上述目的,本技術(shù)提出一種數(shù)據(jù)校驗(yàn)方法,所述方法包括:
3、獲取源數(shù)據(jù)庫中的待遷移數(shù)據(jù);
4、將所述待遷移數(shù)據(jù)導(dǎo)入至目標(biāo)數(shù)據(jù)庫,得到待校驗(yàn)數(shù)據(jù);
5、基于自適應(yīng)循環(huán)冗余校驗(yàn)算法,將所述待校驗(yàn)數(shù)據(jù)與所述待遷移數(shù)據(jù)進(jìn)行全量數(shù)據(jù)的校驗(yàn)對比,確認(rèn)所述待校驗(yàn)數(shù)據(jù)是否與所述待遷移數(shù)據(jù)一致。
6、在一實(shí)施例中,所述獲取源數(shù)據(jù)庫中的待遷移數(shù)據(jù)的步驟之后,還包括:
7、將所述待遷移數(shù)據(jù)傳輸至目標(biāo)服務(wù)器,得到傳輸后的待導(dǎo)入數(shù)據(jù);
8、基于預(yù)設(shè)循環(huán)冗余校驗(yàn)算法,分別計(jì)算所述待遷移數(shù)據(jù)與傳輸后的待導(dǎo)入數(shù)據(jù)的循環(huán)冗余校驗(yàn)碼,得到第一循環(huán)冗余校驗(yàn)碼與第二循環(huán)冗余校驗(yàn)碼;
9、對比所述第一循環(huán)冗余校驗(yàn)碼與第二循環(huán)冗余校驗(yàn)碼,確定數(shù)據(jù)傳輸是否成功;
10、當(dāng)數(shù)據(jù)傳輸成功時,將所述傳輸后的待導(dǎo)入數(shù)據(jù)導(dǎo)入至目標(biāo)數(shù)據(jù)庫,得到待校驗(yàn)數(shù)據(jù),并執(zhí)行步驟:基于自適應(yīng)循環(huán)冗余校驗(yàn)算法,將所述待校驗(yàn)數(shù)據(jù)與所述待遷移數(shù)據(jù)進(jìn)行全量數(shù)據(jù)的校驗(yàn)對比,確認(rèn)所述待校驗(yàn)數(shù)據(jù)是否與所述待遷移數(shù)據(jù)一致。
11、在一實(shí)施例中,所述待遷移數(shù)據(jù)包括若干個源數(shù)據(jù)表,所述待校驗(yàn)數(shù)據(jù)包括與所述源數(shù)據(jù)表一一對應(yīng)的目標(biāo)數(shù)據(jù)表,所述基于自適應(yīng)循環(huán)冗余校驗(yàn)算法,將所述待校驗(yàn)數(shù)據(jù)與所述待遷移數(shù)據(jù)進(jìn)行全量數(shù)據(jù)的校驗(yàn)對比,確認(rèn)所述待校驗(yàn)數(shù)據(jù)是否與所述待遷移數(shù)據(jù)一致的步驟,包括:
12、基于自適應(yīng)循環(huán)冗余校驗(yàn)算法,將每個源數(shù)據(jù)表與對應(yīng)的目標(biāo)數(shù)據(jù)表進(jìn)行全量對比,確定所述源數(shù)據(jù)表與對應(yīng)的目標(biāo)數(shù)據(jù)表是否一致。
13、在一實(shí)施例中,所述基于自適應(yīng)循環(huán)冗余校驗(yàn)算法,將每個源數(shù)據(jù)表與對應(yīng)的目標(biāo)數(shù)據(jù)表進(jìn)行全量對比,確定所述源數(shù)據(jù)表與對應(yīng)的目標(biāo)數(shù)據(jù)表是否一致的步驟,包括:
14、針對每個源數(shù)據(jù)表與對應(yīng)的目標(biāo)數(shù)據(jù)表,通過預(yù)設(shè)查詢機(jī)制從所述源數(shù)據(jù)表與對應(yīng)的目標(biāo)數(shù)據(jù)表中分別遍歷獲取預(yù)設(shè)數(shù)量的行數(shù)據(jù),得到第一行數(shù)據(jù)集與第二行數(shù)據(jù)集;
15、基于自適應(yīng)循環(huán)冗余校驗(yàn)算法,計(jì)算得到所述第一行數(shù)據(jù)集與第二行數(shù)據(jù)集對應(yīng)的第一鍵值對集合與第二鍵值對集合;
16、將所述第一鍵值對集合與第二鍵值對集合,分別存儲至第一關(guān)聯(lián)容器與第二關(guān)聯(lián)容器;
17、對比所述第一關(guān)聯(lián)容器與第二關(guān)聯(lián)容器,將所述第一關(guān)聯(lián)容器與第二關(guān)聯(lián)容器中的相同鍵值對刪除;
18、從所述源數(shù)據(jù)表與對應(yīng)的目標(biāo)數(shù)據(jù)表中分別遍歷獲取下一預(yù)設(shè)數(shù)量的行數(shù)據(jù)進(jìn)行處理,直至對所述源數(shù)據(jù)表中的行數(shù)據(jù)遍歷完后,檢查得到所述第一關(guān)聯(lián)容器與第二關(guān)聯(lián)容器中的存儲結(jié)果;
19、根據(jù)所述第一關(guān)聯(lián)容器與第二關(guān)聯(lián)容器中的存儲結(jié)果,確認(rèn)所述源數(shù)據(jù)表與對應(yīng)的目標(biāo)數(shù)據(jù)表是否一致。
20、在一實(shí)施例中,所述源數(shù)據(jù)表與目標(biāo)數(shù)據(jù)表包括主鍵列,所述基于自適應(yīng)循環(huán)冗余校驗(yàn)算法,計(jì)算得到所述第一行數(shù)據(jù)集與第二行數(shù)據(jù)集對應(yīng)的第一鍵值對集合與第二鍵值對集合的步驟,包括:
21、針對所述第一行數(shù)據(jù)集中的每一行數(shù)據(jù),根據(jù)所述行數(shù)據(jù)的主鍵列計(jì)算得到第一字符串,并根據(jù)所述行數(shù)據(jù)中主鍵列之外的其他列計(jì)算得到第二字符串;
22、通過自適應(yīng)循環(huán)冗余校驗(yàn)算法,根據(jù)所述第二字符串的長度,計(jì)算得到對應(yīng)的循環(huán)冗余校驗(yàn)算法的第一位數(shù);
23、根據(jù)所述第一位數(shù)的循環(huán)冗余校驗(yàn)算法,對所述第二字符串進(jìn)行計(jì)算,得到第三循環(huán)冗余校驗(yàn)碼;
24、根據(jù)所述第一字符串與第三循環(huán)冗余校驗(yàn)碼,構(gòu)建所述行數(shù)據(jù)的鍵值對,得到所述第一行數(shù)據(jù)集對應(yīng)的第一鍵值對集合;
25、針對所述第二行數(shù)據(jù)集中的每一行數(shù)據(jù),根據(jù)所述行數(shù)據(jù)的主鍵列計(jì)算得到第三字符串,并根據(jù)所述行數(shù)據(jù)中主鍵列之外的其他列計(jì)算得到第四字符串;
26、通過自適應(yīng)循環(huán)冗余校驗(yàn)算法,根據(jù)所述第四字符串的長度,計(jì)算得到對應(yīng)的循環(huán)冗余校驗(yàn)算法的第二位數(shù);
27、根據(jù)所述第二位數(shù)的循環(huán)冗余校驗(yàn)算法,對所述第四字符串進(jìn)行計(jì)算,得到第四循環(huán)冗余校驗(yàn)碼;
28、根據(jù)所述第三字符串與第四循環(huán)冗余校驗(yàn)碼,構(gòu)建所述行數(shù)據(jù)的鍵值對,得到所述第二行數(shù)據(jù)集對應(yīng)的第二鍵值對集合。
29、在一實(shí)施例中,所述將所述第一鍵值對集合與第二鍵值對集合,分別存儲至第一關(guān)聯(lián)容器與第二關(guān)聯(lián)容器的步驟之后,還包括:
30、在所述第二關(guān)聯(lián)容器中查詢確認(rèn)是否存在與所述第一字符串相同的第三字符串;
31、當(dāng)所述第二關(guān)聯(lián)容器中查詢確認(rèn)存在與所述第一字符串相同的第三字符串,確認(rèn)第一字符串對應(yīng)的第三循環(huán)冗余校驗(yàn)碼,與第三字符串對應(yīng)的第四循環(huán)冗余校驗(yàn)碼是否相同;
32、當(dāng)所述第三循環(huán)冗余校驗(yàn)碼與第四循環(huán)冗余校驗(yàn)碼不相同時,則確認(rèn)所述源數(shù)據(jù)表與對應(yīng)的目標(biāo)數(shù)據(jù)表不一致;
33、當(dāng)所述第三循環(huán)冗余校驗(yàn)碼與第四循環(huán)冗余校驗(yàn)碼相同時,執(zhí)行步驟:將所述第一關(guān)聯(lián)容器與第二關(guān)聯(lián)容器中的相同鍵值對刪除。
34、在一實(shí)施例中,所述根據(jù)所述第一關(guān)聯(lián)容器與第二關(guān)聯(lián)容器中的存儲結(jié)果,確認(rèn)所述源數(shù)據(jù)表與對應(yīng)的目標(biāo)數(shù)據(jù)表是否一致的步驟,包括:
35、當(dāng)所述存儲結(jié)果為空時,確認(rèn)所述源數(shù)據(jù)表與對應(yīng)的目標(biāo)數(shù)據(jù)表一致;
36、當(dāng)所述存儲結(jié)果不為空時,確認(rèn)所述源數(shù)據(jù)表與對應(yīng)的目標(biāo)數(shù)據(jù)表不一致。
37、此外,為實(shí)現(xiàn)上述目的,本技術(shù)還提出一種數(shù)據(jù)校驗(yàn)設(shè)備,所述數(shù)據(jù)校驗(yàn)設(shè)備包括:存儲器、處理器及存儲在所述存儲器上并可在所述處理器上運(yùn)行的計(jì)算機(jī)程序,所述計(jì)算機(jī)程序配置為實(shí)現(xiàn)如上文所述的數(shù)據(jù)校驗(yàn)方法的步驟。
38、此外,為實(shí)現(xiàn)上述目的,本技術(shù)還提出一種存儲介質(zhì),所述存儲介質(zhì)為計(jì)算機(jī)可讀存儲介質(zhì),所述存儲介質(zhì)上存儲有計(jì)算機(jī)程序,所述計(jì)算機(jī)程序被處理器執(zhí)行時實(shí)現(xiàn)如上文所述的數(shù)據(jù)校驗(yàn)方法的步驟。
39、此外,為實(shí)現(xiàn)上述目的,本技術(shù)還提出一種計(jì)算機(jī)程序產(chǎn)品,所述計(jì)算機(jī)程序產(chǎn)品包括計(jì)算機(jī)程序,所述計(jì)算機(jī)程序被處理器執(zhí)行時實(shí)現(xiàn)如上文所述的數(shù)據(jù)校驗(yàn)方法的步驟。
40、本技術(shù)提出的一個或多個技術(shù)方案,至少具有以下技術(shù)效果:
41、本技術(shù)實(shí)施例提出的數(shù)據(jù)校驗(yàn)方法、設(shè)備、存儲介質(zhì)以及程序產(chǎn)品,具體通過獲取源數(shù)據(jù)庫中的待遷移數(shù)據(jù);將所述待遷移數(shù)據(jù)導(dǎo)入至目標(biāo)數(shù)據(jù)庫,得到待校驗(yàn)數(shù)據(jù);基于自適應(yīng)循環(huán)冗余校驗(yàn)算法,將所述待校驗(yàn)數(shù)據(jù)與所述待遷移數(shù)據(jù)進(jìn)行全量數(shù)據(jù)的校驗(yàn)對比,確認(rèn)所述待校驗(yàn)數(shù)據(jù)是否與所述待遷移數(shù)據(jù)一致。
42、本技術(shù)首先獲取源數(shù)據(jù)庫中的待遷移數(shù)據(jù),然后再將待遷移數(shù)據(jù)導(dǎo)入至目標(biāo)數(shù)據(jù)庫,得到待校驗(yàn)數(shù)據(jù),最后利用自適應(yīng)循環(huán)冗余校驗(yàn)算法,全量對比源數(shù)據(jù)庫中的待遷移數(shù)據(jù)與目標(biāo)數(shù)據(jù)庫中的待校驗(yàn)數(shù)據(jù),以確認(rèn)數(shù)據(jù)遷移過程中是否存在數(shù)據(jù)異常發(fā)生,上述方法不僅可以在數(shù)據(jù)遷移過程中校驗(yàn)數(shù)據(jù)的準(zhǔn)確性與一致性,還可以有效提高數(shù)據(jù)校驗(yàn)效率,節(jié)省數(shù)據(jù)校驗(yàn)時間。