本申請涉及計(jì)算機(jī),更具體的說,涉及一種數(shù)據(jù)同步方法、裝置、設(shè)備及存儲介質(zhì)。
背景技術(shù):
1、現(xiàn)有的增量數(shù)據(jù)同步的方法主要有兩種。第一種方法是根據(jù)數(shù)據(jù)庫本身的日志記錄同步數(shù)據(jù),如mysq?l通過開啟b?i?n?l?og日志,并設(shè)置從屬模式將新增、更改的數(shù)據(jù)同步到目標(biāo)數(shù)據(jù)庫;第二種方法是基于數(shù)據(jù)表中的增量字段進(jìn)行同步,如根據(jù)時(shí)間戳或自增主鍵等,每次同步時(shí),記錄已經(jīng)同步的最大時(shí)間或最大主鍵值,下一次同步時(shí),利用同步語句加上對應(yīng)的篩選條件,將新增、更改的數(shù)據(jù)同步到目標(biāo)數(shù)據(jù)庫。但是,如果一個(gè)數(shù)據(jù)庫沒有開啟日志,并且數(shù)據(jù)表中沒有增量字段時(shí),就難以實(shí)現(xiàn)將增量數(shù)據(jù)同步到目標(biāo)數(shù)據(jù)庫。
2、目前,當(dāng)數(shù)據(jù)庫不支持更新日志,且數(shù)據(jù)表沒有增量字段可以使用時(shí),是通過先刪除目標(biāo)數(shù)據(jù)庫的數(shù)據(jù),再將源數(shù)據(jù)庫的全量數(shù)據(jù)同步至目標(biāo)數(shù)據(jù)庫。如此是通過全量數(shù)據(jù)同步來實(shí)現(xiàn)增量數(shù)據(jù)同步,導(dǎo)致每次增量數(shù)據(jù)同步需要消耗較長的時(shí)間,從而導(dǎo)致數(shù)據(jù)同步的效率較低。
技術(shù)實(shí)現(xiàn)思路
1、有鑒于此,本申請實(shí)施例公開一種數(shù)據(jù)同步方法、裝置、設(shè)備及存儲介質(zhì),在數(shù)據(jù)庫本身不支持更新日志,且數(shù)據(jù)表沒有增量字段可以使用的情況下,避免每次增量數(shù)據(jù)同步時(shí)都要進(jìn)行全量數(shù)據(jù)同步,從而能提高數(shù)據(jù)同步的效率。
2、本申請實(shí)施例提供的技術(shù)方案如下:
3、第一方面,本申請實(shí)施例提供了一種數(shù)據(jù)同步方法,所述方法包括:
4、確定源數(shù)據(jù)表中的第一數(shù)據(jù)對應(yīng)的第一區(qū)分字段組合值;所述第一區(qū)分字段組合值為所述第一數(shù)據(jù)的區(qū)分字段組合對應(yīng)的值,所述區(qū)分字段組合由所述源數(shù)據(jù)表中的字段拼接得到;
5、根據(jù)所述第一區(qū)分字段組合值,確定第一哈希值;
6、若多個(gè)第二哈希值中不存在所述第一哈希值,將所述第一數(shù)據(jù)同步至目標(biāo)數(shù)據(jù)表中;所述多個(gè)第二哈希值根據(jù)初始數(shù)據(jù)表得到,所述初始數(shù)據(jù)表的全量數(shù)據(jù)已被同步至所述目標(biāo)數(shù)據(jù)表中。
7、在一種可能的實(shí)現(xiàn)方式中,所述方法還包括:
8、若所述多個(gè)第二哈希值中存在所述第一哈希值,且延期內(nèi)存中不存在所述第一區(qū)分字段組合值,利用所述第一區(qū)分字段組合值更新所述延期內(nèi)存;
9、若所述多個(gè)第二哈希值中存在所述第一哈希值,且所述延期內(nèi)存中第一區(qū)分字段組合值對應(yīng)的延期次數(shù)小于等于延期閾值,將所述延期次數(shù)加一;
10、若所述多個(gè)第二哈希值中存在所述第一哈希值,且所述延期內(nèi)存中第一區(qū)分字段組合值對應(yīng)的延期次數(shù)大于延期閾值,利用所述第一數(shù)據(jù)更新所述目標(biāo)數(shù)據(jù)表。
11、在一種可能的實(shí)現(xiàn)方式中,所述利用所述第一數(shù)據(jù)更新所述目標(biāo)數(shù)據(jù)表,包括:
12、刪除所述目標(biāo)數(shù)據(jù)表中所述第一區(qū)分字段組合值能匹配上的第二數(shù)據(jù);
13、將所述第一數(shù)據(jù)同步至所述目標(biāo)數(shù)據(jù)表中。
14、在一種可能的實(shí)現(xiàn)方式中,所述方法還包括:
15、當(dāng)達(dá)到設(shè)定時(shí)間時(shí),掃描所述目標(biāo)數(shù)據(jù)表,確定所述目標(biāo)數(shù)據(jù)表中更新時(shí)長大于時(shí)間閾值的第三數(shù)據(jù);
16、若所述源數(shù)據(jù)表中不存在所述第三數(shù)據(jù)對應(yīng)的第二區(qū)分字段組合值,刪除所述第三數(shù)據(jù)。
17、在一種可能的實(shí)現(xiàn)方式中,所述方法還包括:
18、確定所述初始數(shù)據(jù)表中的第四數(shù)據(jù)的總數(shù)據(jù)條數(shù);
19、將所述初始數(shù)據(jù)表中各個(gè)字段對應(yīng)的值去重,得到各個(gè)字段對應(yīng)的去重后總量;
20、根據(jù)所述總數(shù)據(jù)條數(shù)和所述去重后總量,確定各個(gè)字段對應(yīng)的區(qū)分度;
21、將大于區(qū)分閾值的區(qū)分度對應(yīng)的字段,確定為區(qū)分字段;
22、對多個(gè)所述區(qū)分字段進(jìn)行拼接,得到所述區(qū)分字段組合。
23、在一種可能的實(shí)現(xiàn)方式中,所述對多個(gè)所述區(qū)分字段進(jìn)行拼接,得到區(qū)分字段組合,包括:
24、根據(jù)所述區(qū)分字段的優(yōu)先級,從多個(gè)所述區(qū)分字段中確定多個(gè)目標(biāo)區(qū)分字段;
25、根據(jù)所述區(qū)分字段的優(yōu)先級和區(qū)分度,對多個(gè)所述目標(biāo)區(qū)分字段進(jìn)行排序,得到排序結(jié)果;
26、根據(jù)所述排序結(jié)果,對多個(gè)所述目標(biāo)區(qū)分字段進(jìn)行拼接,得到所述區(qū)分字段組合。
27、在一種可能的實(shí)現(xiàn)方式中,所述方法還包括:
28、確定所述初始數(shù)據(jù)表中的第四數(shù)據(jù)對應(yīng)的第三區(qū)分字段組合值;
29、根據(jù)所述第三區(qū)分字段組合值,確定第二哈希值;
30、根據(jù)多個(gè)所述第二哈希值設(shè)置所述布隆過濾器;
31、相應(yīng)的,若多個(gè)第二哈希值中不存在所述第一哈希值,將所述第一數(shù)據(jù)同步至目標(biāo)數(shù)據(jù)表中,包括:
32、若所述布隆過濾器中不存在所述第一哈希值,將所述第一數(shù)據(jù)同步至目標(biāo)數(shù)據(jù)表中。
33、第二方面,本申請實(shí)施例提供了一種數(shù)據(jù)同步裝置,所述裝置包括:
34、確定模塊,用于確定源數(shù)據(jù)表中的第一數(shù)據(jù)對應(yīng)的第一區(qū)分字段組合值;所述第一區(qū)分字段組合值為區(qū)分字段組合對應(yīng)的值,所述區(qū)分字段組合由所述源數(shù)據(jù)表中的字段拼接得到;
35、確定模塊,還用于根據(jù)所述第一區(qū)分字段組合的值,確定第一哈希值;
36、同步模塊,用于若多個(gè)第二哈希值中不存在所述第一哈希值,將所述第一數(shù)據(jù)同步至目標(biāo)數(shù)據(jù)表中;所述多個(gè)第二哈希值根據(jù)初始數(shù)據(jù)表得到,所述初始數(shù)據(jù)表的全量數(shù)據(jù)已被同步至所述目標(biāo)數(shù)據(jù)表中。
37、第三方面,本申請實(shí)施例提供了一種數(shù)據(jù)同步設(shè)備,包括:
38、存儲器,用于存儲指令;
39、處理器,用于執(zhí)行所述存儲器中的所述指令以執(zhí)行以上第一方面任一項(xiàng)所述的數(shù)據(jù)同步方法。
40、第四方面,本申請實(shí)施例提供了一種計(jì)算機(jī)可讀存儲介質(zhì),包括指令,當(dāng)其在計(jì)算機(jī)上運(yùn)行時(shí),使得計(jì)算機(jī)執(zhí)行以上第一方面任一項(xiàng)所述的數(shù)據(jù)同步方法。
41、第五方面,本申請實(shí)施例提供一種計(jì)算機(jī)程序產(chǎn)品,所述計(jì)算機(jī)程序產(chǎn)品在終端設(shè)備上運(yùn)行時(shí),使得所述終端設(shè)備執(zhí)行以上第一方面任一項(xiàng)所述的數(shù)據(jù)同步方法。
42、基于上述技術(shù)方案,本申請具有以下有益效果:
43、本申請實(shí)施例公開了一種數(shù)據(jù)同步方法、裝置、設(shè)備及存儲介質(zhì)。其中,該方法包括:確定源數(shù)據(jù)表中的第一數(shù)據(jù)對應(yīng)的第一區(qū)分字段組合值;根據(jù)第一區(qū)分字段組合值,確定第一哈希值;若多個(gè)第二哈希值中不存在第一哈希值,將第一數(shù)據(jù)同步至目標(biāo)數(shù)據(jù)表中??梢?,本申請實(shí)施例中是通過源數(shù)據(jù)表中存在的字段來計(jì)算對應(yīng)的哈希值,并結(jié)合初始數(shù)據(jù)表對應(yīng)的多個(gè)第二哈希值,來確定第一數(shù)據(jù)是否為源數(shù)據(jù)表中新增的數(shù)據(jù),并進(jìn)行相應(yīng)的數(shù)據(jù)同步,如此在數(shù)據(jù)庫本身不支持更新日志,且數(shù)據(jù)表沒有增量字段可以使用的情況下,避免每次增量數(shù)據(jù)同步時(shí)都要進(jìn)行全量數(shù)據(jù)同步,從而能提高數(shù)據(jù)同步的效率。
1.一種數(shù)據(jù)同步方法,其特征在于,所述方法包括:
2.根據(jù)權(quán)利要求1所述的方法,其特征在于,所述方法還包括:
3.根據(jù)權(quán)利要求2所述的方法,其特征在于,所述利用所述第一數(shù)據(jù)更新所述目標(biāo)數(shù)據(jù)表,包括:
4.根據(jù)權(quán)利要求2所述的方法,其特征在于,所述方法還包括:
5.根據(jù)權(quán)利要求1所述的方法,其特征在于,所述方法還包括:
6.根據(jù)權(quán)利要求5所述的方法,其特征在于,所述對多個(gè)所述區(qū)分字段進(jìn)行拼接,得到區(qū)分字段組合,包括:
7.根據(jù)權(quán)利要求1所述的方法,其特征在于,所述方法還包括:
8.一種數(shù)據(jù)同步裝置,其特征在于,所述裝置包括:
9.一種數(shù)據(jù)同步設(shè)備,其特征在于,包括:
10.一種計(jì)算機(jī)可讀存儲介質(zhì),包括指令,當(dāng)其在計(jì)算機(jī)上運(yùn)行時(shí),使得計(jì)算機(jī)執(zhí)行權(quán)利要求1至7任意一項(xiàng)所述的數(shù)據(jù)同步方法。