本發(fā)明涉及分布式數(shù)據(jù)庫,更具體地,涉及分布式數(shù)據(jù)庫分片鍵更新方法、裝置、設(shè)備及介質(zhì)。
背景技術(shù):
1、隨著大數(shù)據(jù)技術(shù)的不斷發(fā)展,數(shù)據(jù)量呈現(xiàn)爆發(fā)式增長,采用分布式數(shù)據(jù)庫,尤其是無共享分布式數(shù)據(jù)庫存儲數(shù)據(jù)的場景也越來越多。分布式數(shù)據(jù)庫在進(jìn)行數(shù)據(jù)存儲時,根據(jù)分片鍵值和分片規(guī)則,將數(shù)據(jù)存儲到指定的存儲節(jié)點,從而將數(shù)據(jù)分散存儲在各個數(shù)據(jù)節(jié)點上。
2、由于在更新分片鍵時,與分片鍵對應(yīng)的存儲節(jié)點會發(fā)生變化。因此,如果更新數(shù)據(jù)的分片鍵值,會出現(xiàn)分片鍵值與存儲節(jié)點不匹配的情況。
技術(shù)實現(xiàn)思路
1、有鑒于此,本發(fā)明提供了一種分布式數(shù)據(jù)庫分片鍵更新方法、裝置、設(shè)備、存儲介質(zhì)和程序產(chǎn)品。
2、本發(fā)明的一個方面提供了一種分布式數(shù)據(jù)庫分片鍵更新方法,包括:響應(yīng)于接收到針對目標(biāo)數(shù)據(jù)表的分片鍵更新指令,獲取上述目標(biāo)數(shù)據(jù)表中的目標(biāo)數(shù)據(jù)以及上述目標(biāo)數(shù)據(jù)的第一分片鍵值,并從上述分片鍵更新指令中確定第二分片鍵值,其中,上述第一分片鍵值與分片鍵更新前上述目標(biāo)數(shù)據(jù)的原存儲節(jié)點相關(guān),上述第二分片鍵值與分片鍵值更新后存儲上述目標(biāo)數(shù)據(jù)的目標(biāo)存儲節(jié)點相關(guān);根據(jù)上述原存儲節(jié)點和上述目標(biāo)存儲節(jié)點,生成針對上述目標(biāo)數(shù)據(jù)的操作指示數(shù)據(jù),其中,所述操作指示數(shù)據(jù)包括針對所述目標(biāo)數(shù)據(jù)的待執(zhí)行操作,所述待執(zhí)行操作包括更新操作、刪除操作或插入操作;根據(jù)上述操作指示數(shù)據(jù),生成與所述待執(zhí)行操作相匹配的結(jié)構(gòu)化查詢語句;以及將上述結(jié)構(gòu)化查詢語句發(fā)送至與上述操作指示數(shù)據(jù)相匹配的待操作存儲節(jié)點,以便于上述待操作存儲節(jié)點執(zhí)行上述結(jié)構(gòu)化查詢語句,對上述目標(biāo)數(shù)據(jù)進(jìn)行更新、刪除或插入操作,其中,上述待操作存儲節(jié)點包括上述原存儲節(jié)點或上述目標(biāo)存儲節(jié)點。
3、根據(jù)本發(fā)明的實施例,上述方法還包括:獲取上述目標(biāo)數(shù)據(jù)在上述原存儲節(jié)點中的存儲位置;以及基于上述第一分片鍵值、上述第二分片鍵值、上述目標(biāo)數(shù)據(jù)、上述存儲位置和上述原存儲節(jié)點,生成目標(biāo)掃描數(shù)據(jù)。
4、根據(jù)本發(fā)明的實施例,上述根據(jù)上述原存儲節(jié)點和上述目標(biāo)存儲節(jié)點,生成針對上述目標(biāo)數(shù)據(jù)的操作指示數(shù)據(jù),包括:響應(yīng)于確定上述目標(biāo)存儲節(jié)點與上述原存儲節(jié)點相同的,確定針對上述目標(biāo)數(shù)據(jù)的待執(zhí)行操作為更新操作,其中,上述更新操作用于更新上述目標(biāo)數(shù)據(jù)的分片鍵值;響應(yīng)于確定上述目標(biāo)存儲節(jié)點與上述原存儲節(jié)點不同,確定針對上述目標(biāo)數(shù)據(jù)的待執(zhí)行操作包括刪除操作和插入操作,其中,上述刪除操作用于刪除分片鍵值更新前的目標(biāo)數(shù)據(jù),上述插入操作用于插入分片鍵值更新后的目標(biāo)數(shù)據(jù);以及基于上述待執(zhí)行操作和上述目標(biāo)掃描數(shù)據(jù),生成上述操作指示數(shù)據(jù)。
5、根據(jù)本發(fā)明的實施例,上述操作指示數(shù)據(jù)包括與上述更新操作相關(guān)的第一操作指示數(shù)據(jù),上述基于上述待執(zhí)行操作和上述目標(biāo)掃描數(shù)據(jù),生成上述操作指示數(shù)據(jù),包括:響應(yīng)于確定所述待執(zhí)行操作為更新操作,基于上述更新操作,以及上述目標(biāo)掃描數(shù)據(jù)中的上述第二分片鍵值、上述目標(biāo)數(shù)據(jù)、上述存儲位置以及上述原存儲節(jié)點,生成第一操作指示數(shù)據(jù)。
6、根據(jù)本發(fā)明的實施例,上述操作指示數(shù)據(jù)包括與上述刪除操作相關(guān)的第二操作指示數(shù)據(jù)和與上述插入操作相關(guān)的第三操作指示數(shù)據(jù),上述基于上述待執(zhí)行操作和上述目標(biāo)掃描數(shù)據(jù),生成上述操作指示數(shù)據(jù),包括:響應(yīng)于確定所述待執(zhí)行操作包括上述刪除操作,基于上述刪除操作、以及上述目標(biāo)掃描數(shù)據(jù)中的上述第一分片鍵值、上述目標(biāo)數(shù)據(jù)、上述存儲位置以及上述原存儲節(jié)點,生成上述第二操作指示數(shù)據(jù);響應(yīng)于確定所述待執(zhí)行操作包括上述插入操作,基于上述插入操作、上述目標(biāo)掃描數(shù)據(jù)中的上述第二分片鍵值、上述目標(biāo)數(shù)據(jù)、上述存儲位置以及上述原存儲節(jié)點,生成上述第三操作指示數(shù)據(jù)。
7、根據(jù)本發(fā)明的實施例,上述根據(jù)上述操作指示數(shù)據(jù),生成與上述待執(zhí)行操作相匹配的結(jié)構(gòu)化查詢語句,包括:響應(yīng)于確定上述操作指示數(shù)據(jù)為第一操作指示數(shù)據(jù),基于上述第一操作指示數(shù)據(jù)中的上述更新操作、上述第二分片鍵值、上述目標(biāo)數(shù)據(jù)、上述存儲位置以及上述原存儲節(jié)點,生成用于執(zhí)行上述更新操作的更新語句;響應(yīng)于確定上述操作指示數(shù)據(jù)為第二操作指示數(shù)據(jù),基于上述第二操作指示數(shù)據(jù)中的上述刪除操作、上述存儲位置和上述原存儲節(jié)點,生成用于執(zhí)行上述刪除操作的刪除語句;響應(yīng)于確定上述操作指示數(shù)據(jù)為第三操作指示數(shù)據(jù),基于上述第三操作指示數(shù)據(jù)中的上述插入操作、上述第二分片鍵值和上述目標(biāo)數(shù)據(jù),生成用于執(zhí)行上述插入操作的插入語句。
8、根據(jù)本發(fā)明的實施例,上述將上述結(jié)構(gòu)化查詢語句發(fā)送至與上述操作指示數(shù)據(jù)相匹配的待操作存儲節(jié)點,包括:將上述更新語句或上述刪除語句發(fā)送至上述原存儲節(jié)點;以及將上述插入語句發(fā)送至上述目標(biāo)存儲節(jié)點。
9、本發(fā)明的另一個方面提供了一種分片鍵更新裝置,包括:數(shù)據(jù)獲取模塊,用于響應(yīng)于接收到針對目標(biāo)數(shù)據(jù)表的分片鍵更新指令,獲取上述目標(biāo)數(shù)據(jù)表中的目標(biāo)數(shù)據(jù),并從上述分片鍵更新指令中確定第二分片鍵值,其中,上述第一分片鍵值與分片鍵更新前上述目標(biāo)數(shù)據(jù)的原存儲節(jié)點相關(guān),上述第二分片鍵值與分片鍵值更新后存儲上述目標(biāo)數(shù)據(jù)的目標(biāo)存儲節(jié)點相關(guān);操作生成模塊,用于根據(jù)上述原存儲節(jié)點和上述目標(biāo)存儲節(jié)點,生成針對上述目標(biāo)數(shù)據(jù)的操作指示數(shù)據(jù),其中,上述操作指示數(shù)據(jù)包括針對上述目標(biāo)數(shù)據(jù)的待執(zhí)行操作,上述待執(zhí)行操作包括更新操作、刪除操作或插入操作;語句生成模塊,用于根據(jù)上述操作指示數(shù)據(jù),生成與所述待執(zhí)行操作相匹配的結(jié)構(gòu)化查詢語句;以及語句發(fā)送模塊,用于將上述結(jié)構(gòu)化查詢語句發(fā)送至與上述操作指示數(shù)據(jù)相匹配的待操作存儲節(jié)點,以便于上述待操作存儲節(jié)點執(zhí)行上述結(jié)構(gòu)化查詢語句,對上述目標(biāo)數(shù)據(jù)進(jìn)行更新、刪除或插入操作,其中,上述待操作存儲節(jié)點包括上述原存儲節(jié)點或上述目標(biāo)存儲節(jié)點。
10、本發(fā)明的另一個方面提供了一種電子設(shè)備,包括:一個或多個處理器;存儲器,用于存儲一個或多個程序,其特征在于,當(dāng)上述一個或多個程序被上述一個或多個處理器執(zhí)行時,使得上述一個或多個處理器實現(xiàn)分布式數(shù)據(jù)庫分片鍵更新的方法。
11、本發(fā)明的另一方面提供了一種計算機可讀存儲介質(zhì),存儲有計算機可執(zhí)行指令,其特征在于,上述指令在被執(zhí)行時用于實現(xiàn)分布式數(shù)據(jù)庫分片鍵更新的方法。
12、本發(fā)明的另一方面提供了一種計算機程序產(chǎn)品,上述計算機程序產(chǎn)品包括計算機可執(zhí)行指令,其特征在于,上述指令在被執(zhí)行時用于實現(xiàn)分布式數(shù)據(jù)庫分片鍵更新的方法。
13、根據(jù)本發(fā)明的實施例,基于第一分片鍵值和第二分片鍵值分別確定目標(biāo)數(shù)據(jù)的原存儲節(jié)點和目標(biāo)存儲節(jié)點,在對應(yīng)的待操作存儲節(jié)點進(jìn)行操作,解決了目標(biāo)數(shù)據(jù)在分片鍵更新后的分片鍵值與存儲節(jié)點不匹配的問題,滿足用戶更新分片鍵的需求,并且通過在協(xié)調(diào)節(jié)點中執(zhí)行分片鍵更新方法,節(jié)約存儲節(jié)點的計算資源。
1.一種分布式數(shù)據(jù)庫分片鍵更新方法,其特征在于,所述方法包括:
2.根據(jù)權(quán)利要求1所述的方法,其特征在于,所述方法還包括:
3.根據(jù)權(quán)利要求2所述的方法,所述根據(jù)所述原存儲節(jié)點和所述目標(biāo)存儲節(jié)點,生成針對所述目標(biāo)數(shù)據(jù)的操作指示數(shù)據(jù),包括:
4.根據(jù)權(quán)利要求3所述的方法,其特征在于,所述操作指示數(shù)據(jù)包括與所述更新操作相關(guān)的第一操作指示數(shù)據(jù),所述基于所述待執(zhí)行操作和所述目標(biāo)掃描數(shù)據(jù),生成所述操作指示數(shù)據(jù),包括:
5.根據(jù)權(quán)利要求3所述的方法,其特征在于,所述操作指示數(shù)據(jù)包括與所述刪除操作相關(guān)的第二操作指示數(shù)據(jù)和與所述插入操作相關(guān)的第三操作指示數(shù)據(jù),所述基于所述待執(zhí)行操作和所述目標(biāo)掃描數(shù)據(jù),生成所述操作指示數(shù)據(jù),包括:
6.根據(jù)權(quán)利要求3所述的方法,其特征在于,所述根據(jù)所述操作指示數(shù)據(jù),生成與所述待執(zhí)行操作相匹配的結(jié)構(gòu)化查詢語句,包括:
7.根據(jù)權(quán)利要求6所述的方法,其特征在于,所述將所述結(jié)構(gòu)化查詢語句發(fā)送至與所述操作指示數(shù)據(jù)相匹配的待操作存儲節(jié)點,包括:
8.一種分布式數(shù)據(jù)庫分片鍵更新裝置,其特征在于,所述裝置包括:
9.一種電子設(shè)備,包括:
10.一種計算機可讀存儲介質(zhì),其上存儲有可執(zhí)行指令,其特征在于,該指令被處理器執(zhí)行時使處理器實現(xiàn)權(quán)利要求1至7中任一項所述的方法。