本發(fā)明涉及數(shù)據(jù)處理,特別是涉及一種列式數(shù)據(jù)庫(kù)的數(shù)據(jù)寫(xiě)入方法、一種列式數(shù)據(jù)庫(kù)的數(shù)據(jù)寫(xiě)入裝置、一種電子設(shè)備以及一種計(jì)算機(jī)可讀介質(zhì)。
背景技術(shù):
1、現(xiàn)有技術(shù)中,對(duì)于大數(shù)據(jù)分析場(chǎng)景,通??梢赃x用列式數(shù)據(jù)庫(kù)。列式數(shù)據(jù)庫(kù)為以列相關(guān)存儲(chǔ)架構(gòu)進(jìn)行數(shù)據(jù)存儲(chǔ)的數(shù)據(jù)庫(kù),適合于批量數(shù)據(jù)處理和即時(shí)查詢,使其在數(shù)據(jù)分析過(guò)程中可以具有更快的響應(yīng)效率,提高數(shù)據(jù)處理效率。列式數(shù)據(jù)庫(kù)通常可以是clickhouse、hbase等。
2、對(duì)于列式數(shù)據(jù)庫(kù)而言,由于其在數(shù)據(jù)寫(xiě)入過(guò)程中,相同的數(shù)據(jù)在覆蓋更新過(guò)程中,可能被寫(xiě)入不同的節(jié)點(diǎn)中,導(dǎo)致對(duì)于同一數(shù)據(jù)來(lái)說(shuō),不同更新時(shí)間對(duì)應(yīng)的數(shù)據(jù)可能存在于不同節(jié)點(diǎn)。若需要再次覆蓋更新數(shù)據(jù)時(shí),查詢待覆蓋的數(shù)據(jù),返回的結(jié)果不一致,出現(xiàn)數(shù)據(jù)跳變問(wèn)題。該問(wèn)題容易導(dǎo)致后續(xù)數(shù)據(jù)分析過(guò)程中獲取得到錯(cuò)誤的數(shù)據(jù)。
技術(shù)實(shí)現(xiàn)思路
1、本發(fā)明實(shí)施例是提供一種列式數(shù)據(jù)庫(kù)的數(shù)據(jù)寫(xiě)入方法、裝置、電子設(shè)備以及計(jì)算機(jī)可讀存儲(chǔ)介質(zhì),以解決列式數(shù)據(jù)庫(kù)中數(shù)據(jù)跳變的問(wèn)題。
2、本發(fā)明實(shí)施例公開(kāi)了一種列式數(shù)據(jù)庫(kù)的數(shù)據(jù)寫(xiě)入方法,其應(yīng)用于數(shù)據(jù)流執(zhí)行引擎,所述方法包括:
3、建立與列式數(shù)據(jù)庫(kù)中至少一個(gè)節(jié)點(diǎn)的連接;
4、獲取待寫(xiě)入所述列式數(shù)據(jù)庫(kù)的數(shù)據(jù);
5、針對(duì)所述數(shù)據(jù)中預(yù)設(shè)字段的值,采用哈希算法計(jì)算得到哈希值;
6、基于所述哈希值,在所述節(jié)點(diǎn)中選取所述數(shù)據(jù)對(duì)應(yīng)的目標(biāo)節(jié)點(diǎn);
7、將所述數(shù)據(jù)寫(xiě)入所述目標(biāo)節(jié)點(diǎn)中。
8、本發(fā)明實(shí)施例還提供一種列式數(shù)據(jù)庫(kù)的數(shù)據(jù)寫(xiě)入裝置,其應(yīng)用于數(shù)據(jù)流執(zhí)行引擎,所述裝置包括:
9、節(jié)點(diǎn)連接建立模塊,用于建立與列式數(shù)據(jù)庫(kù)中至少一個(gè)節(jié)點(diǎn)的連接;
10、數(shù)據(jù)獲取模塊,用于獲取待寫(xiě)入所述列式數(shù)據(jù)庫(kù)的數(shù)據(jù);
11、哈希計(jì)算模塊,用于針對(duì)所述數(shù)據(jù)中預(yù)設(shè)字段的值,采用哈希算法計(jì)算得到哈希值;
12、目標(biāo)節(jié)點(diǎn)確定模塊,用于基于所述哈希值,在所述節(jié)點(diǎn)中選取所述數(shù)據(jù)對(duì)應(yīng)的目標(biāo)節(jié)點(diǎn);
13、目標(biāo)節(jié)點(diǎn)寫(xiě)入模塊,用于將所述數(shù)據(jù)寫(xiě)入所述目標(biāo)節(jié)點(diǎn)中。
14、本發(fā)明實(shí)施例還公開(kāi)了一種電子設(shè)備,包括處理器、通信接口、存儲(chǔ)器和通信總線,其中,所述處理器、所述通信接口以及所述存儲(chǔ)器通過(guò)所述通信總線完成相互間的通信;
15、所述存儲(chǔ)器,用于存放計(jì)算機(jī)程序;
16、所述處理器,用于執(zhí)行存儲(chǔ)器上所存放的程序時(shí),實(shí)現(xiàn)如本發(fā)明實(shí)施例所述的方法。
17、本發(fā)明實(shí)施例還公開(kāi)了一個(gè)或多個(gè)計(jì)算機(jī)可讀介質(zhì),其上存儲(chǔ)有指令,當(dāng)由一個(gè)或多個(gè)處理器執(zhí)行時(shí),使得所述處理器執(zhí)行如本發(fā)明實(shí)施例所述的方法。
18、本發(fā)明實(shí)施例還公開(kāi)了一種計(jì)算機(jī)程序產(chǎn)品,包括計(jì)算機(jī)程序/指令,所述計(jì)算機(jī)程序/指令被處理器執(zhí)行時(shí)實(shí)現(xiàn)如本發(fā)明實(shí)施例所述方法的步驟。
19、本發(fā)明實(shí)施例包括以下優(yōu)點(diǎn):
20、通過(guò)本發(fā)明實(shí)施例提供的列式數(shù)據(jù)庫(kù)的數(shù)據(jù)寫(xiě)入方法,建立與列式數(shù)據(jù)庫(kù)中至少一個(gè)節(jié)點(diǎn)的連接;獲取待寫(xiě)入所述列式數(shù)據(jù)庫(kù)的數(shù)據(jù);針對(duì)所述數(shù)據(jù)中預(yù)設(shè)字段的值,采用哈希算法計(jì)算得到哈希值;基于所述哈希值,在所述節(jié)點(diǎn)中選取所述數(shù)據(jù)對(duì)應(yīng)的目標(biāo)節(jié)點(diǎn);將所述數(shù)據(jù)寫(xiě)入所述目標(biāo)節(jié)點(diǎn)中。通過(guò)數(shù)據(jù)流執(zhí)行引擎接管列式數(shù)據(jù)庫(kù)的數(shù)據(jù)寫(xiě)入,通過(guò)識(shí)別數(shù)據(jù)中預(yù)設(shè)字段哈希值的方式,快速確定數(shù)據(jù)應(yīng)寫(xiě)入的目標(biāo)節(jié)點(diǎn)。從而預(yù)設(shè)字段相同的數(shù)據(jù)始終寫(xiě)入相同節(jié)點(diǎn),可以有效地避免數(shù)據(jù)跳變的問(wèn)題。
1.一種列式數(shù)據(jù)庫(kù)的數(shù)據(jù)寫(xiě)入方法,其特征在于,其應(yīng)用于數(shù)據(jù)流執(zhí)行引擎,所述方法包括:
2.根據(jù)權(quán)利要求1所述的方法,其特征在于,所述基于所述哈希值,在所述節(jié)點(diǎn)中選取所述數(shù)據(jù)對(duì)應(yīng)的目標(biāo)節(jié)點(diǎn)的步驟,包括:
3.根據(jù)權(quán)利要求2所述的方法,其特征在于,所述對(duì)所述哈希值進(jìn)行取模運(yùn)算,得到節(jié)點(diǎn)關(guān)聯(lián)數(shù)值的步驟,包括:
4.根據(jù)權(quán)利要求1所述的方法,其特征在于,所述將所述數(shù)據(jù)寫(xiě)入所述目標(biāo)節(jié)點(diǎn)中的步驟,包括:
5.根據(jù)權(quán)利要求1所述的方法,其特征在于,所述建立與列式數(shù)據(jù)庫(kù)中至少一個(gè)節(jié)點(diǎn)的連接的步驟包括:
6.根據(jù)權(quán)利要求5所述的方法,其特征在于,所述方法還包括:
7.根據(jù)權(quán)利要求6所述的方法,其特征在于,所述數(shù)據(jù)寫(xiě)入模式包括分片寫(xiě)入模式、平衡模式、隨機(jī)模式、取值模式中的至少一種。
8.一種列式數(shù)據(jù)庫(kù)的數(shù)據(jù)寫(xiě)入裝置,其特征在于,其應(yīng)用于數(shù)據(jù)流執(zhí)行引擎,所述裝置包括:
9.一種電子設(shè)備,其特征在于,包括處理器、通信接口、存儲(chǔ)器和通信總線,其中,所述處理器、所述通信接口以及所述存儲(chǔ)器通過(guò)所述通信總線完成相互間的通信;
10.一個(gè)或多個(gè)計(jì)算機(jī)可讀介質(zhì),其上存儲(chǔ)有指令,當(dāng)由一個(gè)或多個(gè)處理器執(zhí)行時(shí),使得所述處理器執(zhí)行如權(quán)利要求1-7任一項(xiàng)所述的方法。
11.一種計(jì)算機(jī)程序產(chǎn)品,包括計(jì)算機(jī)程序/指令,其特征在于,所述計(jì)算機(jī)程序/指令被處理器執(zhí)行時(shí)實(shí)現(xiàn)權(quán)利要求1-7任一項(xiàng)所述方法的步驟。