本申請(qǐng)涉及大數(shù)據(jù),尤其涉及一種數(shù)據(jù)同步方法、裝置、設(shè)備及可讀存儲(chǔ)介質(zhì)。
背景技術(shù):
1、在企業(yè)內(nèi),數(shù)據(jù)通常持久化存儲(chǔ)在各業(yè)務(wù)系統(tǒng)的mysql數(shù)據(jù)庫(kù)中。鑒于mysql在處理特定應(yīng)用場(chǎng)景時(shí)的局限性,通常需將mysql數(shù)據(jù)實(shí)時(shí)同步至如hive、tidb、kudu、hbase、es等其他數(shù)據(jù)庫(kù)系統(tǒng),以滿足多樣化的業(yè)務(wù)需求。
2、阿里巴巴開(kāi)源的canal中間件,通過(guò)偽裝成mysql的從庫(kù)slave,巧妙地利用了mysql的主從復(fù)制replicate機(jī)制。該機(jī)制能夠捕獲mysql主庫(kù)的數(shù)據(jù)變更日志binlog,并將這些變更數(shù)據(jù)實(shí)時(shí)發(fā)送至消息隊(duì)列mq。隨后,這些變更數(shù)據(jù)被分發(fā)至各下游數(shù)據(jù)庫(kù)系統(tǒng),實(shí)現(xiàn)數(shù)據(jù)的實(shí)時(shí)同步,這一過(guò)程的數(shù)據(jù)同步耗時(shí)可以達(dá)到毫秒甚至亞秒級(jí)。
3、然而,canal組件目前并不支持多對(duì)一的數(shù)據(jù)映射功能,即無(wú)法直接將多個(gè)來(lái)源表的數(shù)據(jù)映射到單一目標(biāo)表中。這在處理在線事務(wù)處理oltp表向在線分析處理olap表轉(zhuǎn)換時(shí)尤為不便,因?yàn)閛lap表的設(shè)計(jì)往往需要將多張相關(guān)聯(lián)的窄表合并成一張寬表。
4、目前,為了解決這一問(wèn)題,一種可行的方案是先進(jìn)行多張表的一對(duì)一映射,然后在目標(biāo)數(shù)據(jù)庫(kù)系統(tǒng)中進(jìn)行多表關(guān)聯(lián)查詢。但這種方法存在顯著的性能瓶頸,尤其是在實(shí)時(shí)數(shù)據(jù)同步的場(chǎng)景下。由于業(yè)務(wù)對(duì)數(shù)據(jù)延遲的容忍度通常在毫秒級(jí),而多表關(guān)聯(lián)查詢可能會(huì)消耗數(shù)秒甚至數(shù)分鐘的時(shí)間,這顯然是不可接受的。例如,假設(shè)a、b、c三張表各有100萬(wàn)條記錄,且每日均有約10條每秒的變更數(shù)據(jù)。雖然canal能夠?qū)⑦@些變更數(shù)據(jù)以亞秒級(jí)的速度同步到目標(biāo)系統(tǒng),但隨后在目標(biāo)系統(tǒng)中對(duì)這三張百萬(wàn)級(jí)記錄的表進(jìn)行關(guān)聯(lián)查詢,可能會(huì)耗費(fèi)數(shù)十秒的時(shí)間,嚴(yán)重違背了實(shí)時(shí)性的要求。
5、因此,如何提高多對(duì)一映射下的數(shù)據(jù)同步速率成為了亟需解決的技術(shù)問(wèn)題。
技術(shù)實(shí)現(xiàn)思路
1、有鑒于此,本申請(qǐng)的主要目的在于提供一種時(shí)間同步方法、裝置、設(shè)備及可讀存儲(chǔ)介質(zhì),目的在于提高數(shù)據(jù)同步速率。
2、本申請(qǐng)第一方面提供了一種數(shù)據(jù)同步方法,該方法包括:
3、創(chuàng)建可擴(kuò)展標(biāo)記語(yǔ)言xml文件,xml文件用于建立目標(biāo)表與至少兩張來(lái)源表的表映射關(guān)系、以及建立目標(biāo)表與至少兩張來(lái)源表的字段映射關(guān)系;
4、將xml文件配置到cana?l組件中,以使cana?l組件基于來(lái)源表的增刪改操作對(duì)目標(biāo)表進(jìn)行相應(yīng)的增刪改操作。
5、在本申請(qǐng)第一方面的一些實(shí)現(xiàn)方式中,來(lái)源表包括如下類型:主表和輔助表。
6、在本申請(qǐng)第一方面的一些實(shí)現(xiàn)方式中,該方法包括:
7、響應(yīng)于來(lái)源表中字段的刪除,判斷來(lái)源表的類型;
8、當(dāng)來(lái)源表為主表時(shí),根據(jù)目標(biāo)表字段與來(lái)源表全部字段的映射關(guān)系,在目標(biāo)表中確定與主表所刪除字段對(duì)應(yīng)的映射字段,并刪除與主表所刪除字段對(duì)應(yīng)的映射字段。
9、當(dāng)來(lái)源表為輔助表時(shí),根據(jù)目標(biāo)表字段與來(lái)源表全部字段的映射關(guān)系,在目標(biāo)表中確定與輔助表所刪除字段對(duì)應(yīng)的映射字段,并將與輔助表所刪除字段對(duì)應(yīng)的映射字段的值修改為空值。
10、在本申請(qǐng)第一方面的一些實(shí)現(xiàn)方式中,該方法還包括:
11、響應(yīng)于來(lái)源表中字段的插入,判斷來(lái)源表的類型;
12、當(dāng)來(lái)源表為主表時(shí),根據(jù)目標(biāo)表字段與來(lái)源表全部字段的映射關(guān)系,在目標(biāo)表中確定與主表所插入字段對(duì)應(yīng)的映射字段,并在與主表所插入字段對(duì)應(yīng)的映射字段中,插入主表所插入字段的插入值;
13、當(dāng)來(lái)源表為輔助表時(shí),根據(jù)目標(biāo)表字段與來(lái)源表全部字段的映射關(guān)系,在目標(biāo)表中確定與輔助表所插入字段對(duì)應(yīng)的映射字段,并將與輔助表所插入字段對(duì)應(yīng)的映射字段的值,修改為輔助表所插入字段的插入值。
14、在本申請(qǐng)第一方面的一些實(shí)現(xiàn)方式中,該方法還包括:
15、響應(yīng)于來(lái)源表中字段的修改,根據(jù)目標(biāo)表字段與來(lái)源表全部字段的映射關(guān)系,在目標(biāo)表中確定與來(lái)源表所修改字段對(duì)應(yīng)的映射字段,并將與輔助表所修改字段對(duì)應(yīng)的映射字段的值,修改為來(lái)源表所修改字段的值。
16、在本申請(qǐng)第一方面的一些實(shí)現(xiàn)方式中,xml文件包括如下變量:來(lái)源數(shù)據(jù)庫(kù)源、目標(biāo)數(shù)據(jù)庫(kù)源、來(lái)源數(shù)據(jù)庫(kù)表、目標(biāo)數(shù)據(jù)庫(kù)表、目標(biāo)表字段與來(lái)源表的主鍵字段映射、目標(biāo)表字段與來(lái)源表全部字段的映射。
17、在本申請(qǐng)第一方面的一些實(shí)現(xiàn)方式中,基于來(lái)源表的增刪改操作對(duì)目標(biāo)表進(jìn)行相應(yīng)的增刪改操作,包括:
18、基于來(lái)源表的增刪改操作,組裝相應(yīng)的結(jié)構(gòu)化查詢語(yǔ)句,并在目標(biāo)表所屬的數(shù)據(jù)庫(kù)中執(zhí)行結(jié)構(gòu)化查詢語(yǔ)句。
19、本申請(qǐng)第二方面提供了一種數(shù)據(jù)同步裝置,該裝置包括:
20、文件創(chuàng)建模塊,用于創(chuàng)建可擴(kuò)展標(biāo)記語(yǔ)言xml文件,xml文件用于建立目標(biāo)表與至少兩張來(lái)源表的表映射關(guān)系、以及建立目標(biāo)表與至少兩張來(lái)源表的字段映射關(guān)系;
21、文件配置模塊,用于將xml文件配置到cana?l組件中,以使cana?l組件基于來(lái)源表的增刪改操作對(duì)目標(biāo)表進(jìn)行相應(yīng)的增刪改操作。
22、本申請(qǐng)第三方面提供了一種數(shù)據(jù)同步設(shè)備,該設(shè)備包括存儲(chǔ)器和處理器,處理器用于執(zhí)行存儲(chǔ)器中存儲(chǔ)的程序,運(yùn)行如本申請(qǐng)第一方面所提供的任一項(xiàng)數(shù)據(jù)同步方法。
23、本申請(qǐng)第四方面提供了一種可讀存儲(chǔ)介質(zhì),其上存儲(chǔ)有計(jì)算機(jī)程序,其特征在于,計(jì)算機(jī)程序被處理器執(zhí)行時(shí),實(shí)現(xiàn)如本申請(qǐng)第一方面所提供的任一項(xiàng)數(shù)據(jù)同步方法的各個(gè)步驟。
24、本申請(qǐng)所提供的技術(shù)方案具有如下有益效果:
25、在本申請(qǐng)所提供的技術(shù)方案中,首先,創(chuàng)建可擴(kuò)展標(biāo)記語(yǔ)言xml文件,該xml1文件用于建立目標(biāo)表與至少兩張來(lái)源表的表映射關(guān)系、以及建立目標(biāo)表與至少兩張來(lái)源表的字段映射關(guān)系;然后,將xml文件配置到cana?l組件中,賦予了cana?l組件一張目標(biāo)表對(duì)應(yīng)多張來(lái)源表的映射能力,進(jìn)而使得cana?l組件能夠直接根據(jù)多張來(lái)源表中發(fā)生的增、刪、改操作,對(duì)目標(biāo)表執(zhí)行相應(yīng)的增刪改操作。由此可見(jiàn),本技術(shù)方案有效規(guī)避了先通過(guò)一對(duì)一映射將多張表數(shù)據(jù)分別同步至目標(biāo)系統(tǒng),隨后在目標(biāo)數(shù)據(jù)庫(kù)中進(jìn)行多表關(guān)聯(lián)查詢,所存在的同步時(shí)間隨著數(shù)據(jù)量的增長(zhǎng)而增長(zhǎng)的問(wèn)題,具備更高的數(shù)據(jù)同步速率,降低了同步延遲。
1.一種數(shù)據(jù)同步方法,其特征在于,所述方法包括:
2.根據(jù)權(quán)利要求1所述的方法,其特征在于,所述來(lái)源表包括如下類型:主表和輔助表。
3.根據(jù)權(quán)利要求2所述的方法,其特征在于,所述方法包括:
4.根據(jù)權(quán)利要求2所述的方法,其特征在于,所述方法還包括:
5.根據(jù)權(quán)利要求1所述的方法,其特征在于,所述方法還包括:
6.根據(jù)權(quán)利要求1所述的方法,其特征在于,所述xml文件包括如下變量:來(lái)源數(shù)據(jù)庫(kù)源、目標(biāo)數(shù)據(jù)庫(kù)源、來(lái)源數(shù)據(jù)庫(kù)表、目標(biāo)數(shù)據(jù)庫(kù)表、目標(biāo)表字段與來(lái)源表的主鍵字段映射、目標(biāo)表字段與來(lái)源表全部字段的映射。
7.根據(jù)權(quán)利要求1所述的方法,其特征在于,所述基于所述來(lái)源表的增刪改操作對(duì)所述目標(biāo)表進(jìn)行相應(yīng)的增刪改操作,包括:
8.一種數(shù)據(jù)同步裝置,其特征在于,所述裝置包括:
9.一種數(shù)據(jù)同步設(shè)備,其特征在于,所述設(shè)備包括存儲(chǔ)器和處理器,所述處理器用于執(zhí)行所述存儲(chǔ)器中存儲(chǔ)的程序,運(yùn)行如權(quán)利要求1至7任一項(xiàng)所述的數(shù)據(jù)同步方法。
10.一種可讀存儲(chǔ)介質(zhì),其上存儲(chǔ)有計(jì)算機(jī)程序,其特征在于,所述計(jì)算機(jī)程序被處理器執(zhí)行時(shí),實(shí)現(xiàn)如權(quán)利要求1至7中任一項(xiàng)所述的數(shù)據(jù)同步方法的各個(gè)步驟。