本申請涉及數(shù)據(jù)庫,尤其涉及一種數(shù)據(jù)庫中sql限流的方法、裝置、電子設(shè)備和存儲(chǔ)介質(zhì)。
背景技術(shù):
1、隨著企業(yè)業(yè)務(wù)規(guī)模的發(fā)展擴(kuò)大,分布式數(shù)據(jù)庫的應(yīng)用越來越廣泛,且用戶對數(shù)據(jù)庫的性能要求也越來越高。在數(shù)據(jù)庫的使用過程中,經(jīng)常會(huì)遇到各種場景問題如異常調(diào)用等使得某類sql并發(fā)急劇上升,這會(huì)使得數(shù)據(jù)庫的性能下降。
2、sql限流功能是指用戶可以根據(jù)問題sql的某些特征來設(shè)置該sql的匹配規(guī)則(一般稱為限流規(guī)則),目前現(xiàn)有的sql限流方式單一,會(huì)影響到數(shù)據(jù)庫的正常安全運(yùn)行。
技術(shù)實(shí)現(xiàn)思路
1、本申請?zhí)峁┝艘环N數(shù)據(jù)庫中sql限流的方法、裝置、電子設(shè)備和存儲(chǔ)介質(zhì),以解決數(shù)據(jù)庫運(yùn)行不夠安全穩(wěn)定的問題。
2、第一方面,本申請?zhí)峁┝艘环N數(shù)據(jù)庫中sql限流的方法,所述方法包括:
3、確定限流配置中的限流方式,其中,所述限流方式包括模板限流、令牌限流以及規(guī)則限流,所述模板限流用于限制sql語句的整體特征,所述令牌限流用于限制sql語句的部分特征,所述規(guī)則限流用于對sql語句的子操作進(jìn)行限制;
4、基于所述限流方式對從客戶端獲取到的目標(biāo)sql語句進(jìn)行匹配,并根據(jù)匹配成功結(jié)果阻止所述目標(biāo)sql語句被數(shù)據(jù)庫執(zhí)行。
5、可選地,基于所述限流方式對從客戶端獲取到的目標(biāo)sql語句進(jìn)行匹配,并根據(jù)匹配成功結(jié)果阻止所述目標(biāo)sql語句被數(shù)據(jù)庫執(zhí)行包括:
6、確定所述模板限流對應(yīng)的模板sql語句、所述令牌限流對應(yīng)的令牌sql語句以及所述規(guī)則限流中的規(guī)則;
7、采用模板匹配方式對所述目標(biāo)sql語句和所述模板sql語句進(jìn)行模板匹配;
8、若模板匹配失敗,則采用令牌匹配方式對所述目標(biāo)sql語句和所述令牌sql語句進(jìn)行令牌匹配;
9、若令牌匹配失敗,則采用所述規(guī)則對所述目標(biāo)sql語句進(jìn)行規(guī)則匹配;
10、若規(guī)則匹配成功,則阻止所述目標(biāo)sql語句被數(shù)據(jù)庫執(zhí)行。
11、可選地,采用模板匹配方式對所述目標(biāo)sql語句和所述模板sql語句進(jìn)行模板匹配包括:
12、對所述模板sql語句進(jìn)行指紋化處理,生成模板sql指紋和模板哈希值;
13、以所述模板哈希值為key,以所述模板sql指紋為value存儲(chǔ)到map數(shù)據(jù)結(jié)構(gòu)中;
14、對所述目標(biāo)sql語句進(jìn)行解析生成目標(biāo)sql指紋和目標(biāo)哈希值,并在所述map數(shù)據(jù)結(jié)構(gòu)中查找所述目標(biāo)哈希值對應(yīng)的目標(biāo)sql指紋;
15、如果能夠查找到則確定模板匹配成功,如果無法查找到則確定模板匹配失敗。
16、可選地,采用令牌匹配方式對所述目標(biāo)sql語句和所述令牌sql語句進(jìn)行令牌匹配包括:
17、對所述目標(biāo)sql語句進(jìn)行解析生成目標(biāo)sql指紋,并根據(jù)所述目標(biāo)sql指紋生成目標(biāo)數(shù)組;
18、對所述令牌sql語句進(jìn)行指紋化處理生成令牌sql指紋,并根據(jù)所述令牌sql指紋生成令牌數(shù)組;
19、若所述目標(biāo)數(shù)組的長度大于所述令牌數(shù)組的長度,則對所述目標(biāo)數(shù)組中的令牌和所述令牌數(shù)組中的令牌進(jìn)行匹配;
20、若所述令牌數(shù)組中的令牌全部匹配成功,則輸出令牌匹配成功;
21、若所述令牌數(shù)組中的令牌未全部匹配成功,則輸出令牌匹配失敗。
22、可選地,所述規(guī)則限流中的規(guī)則包括:禁止全表查詢、禁止翻頁查詢、限制join個(gè)數(shù)、限制刪除表數(shù)據(jù),限制exists表達(dá)式的個(gè)數(shù)。
23、可選地,采用模板匹配方式對所述目標(biāo)sql語句和所述模板sql語句進(jìn)行模板匹配之后,所述方法還包括:
24、若模板匹配成功,則在已有并發(fā)數(shù)的基礎(chǔ)上加一得到實(shí)際并發(fā)數(shù);
25、若所述已有并發(fā)量達(dá)到最大并發(fā)數(shù),則阻止所述目標(biāo)sql語句被數(shù)據(jù)庫執(zhí)行;
26、若所述已有并發(fā)量未達(dá)到最大并發(fā)數(shù),則在已有并發(fā)數(shù)的基礎(chǔ)上加一。
27、可選地,采用令牌匹配方式對所述目標(biāo)sql語句和所述令牌sql語句進(jìn)行令牌匹配之后,所述方法還包括:
28、若令牌匹配成功,則在已有并發(fā)數(shù)的基礎(chǔ)上加一得到實(shí)際并發(fā)數(shù);
29、若所述已有并發(fā)量達(dá)到最大并發(fā)數(shù),則阻止所述目標(biāo)sql語句被數(shù)據(jù)庫執(zhí)行;
30、若所述已有并發(fā)量未達(dá)到最大并發(fā)數(shù),則在已有并發(fā)數(shù)的基礎(chǔ)上加一。
31、第二方面,本申請?zhí)峁┝艘环N數(shù)據(jù)庫中sql限流的裝置,其所述裝置包括:
32、確定模塊,用于確定限流配置中的限流方式,其中,所述限流方式包括模板限流、令牌限流以及規(guī)則限流,所述模板限流用于限制sql語句的整體特征,所述令牌限流用于限制sql語句的部分特征,所述規(guī)則限流用于對sql語句的子操作進(jìn)行限制;
33、匹配模塊,用于基于所述限流方式對從客戶端獲取到的目標(biāo)sql語句進(jìn)行匹配,并根據(jù)匹配成功結(jié)果阻止所述目標(biāo)sql語句被數(shù)據(jù)庫執(zhí)行。
34、第三方面,本申請?zhí)峁┝艘环N電子設(shè)備,包括:至少一個(gè)通信接口;與所述至少一個(gè)通信接口相連接的至少一個(gè)總線;與所述至少一個(gè)總線相連接的至少一個(gè)處理器;與所述至少一個(gè)總線相連接的至少一個(gè)存儲(chǔ)器。
35、第四方面,本申請還提供了一種計(jì)算機(jī)存儲(chǔ)介質(zhì),存儲(chǔ)有計(jì)算機(jī)可執(zhí)行指令,所述計(jì)算機(jī)可執(zhí)行指令用于執(zhí)行本申請上述任一項(xiàng)所述的數(shù)據(jù)庫中sql限流的方法。
36、本申請實(shí)施例提供的上述技術(shù)方案與現(xiàn)有技術(shù)相比具有如下優(yōu)點(diǎn):本申請?zhí)峁┤N限流方式,分別從sql語句的整體特征、部分特征和子操作三個(gè)方面進(jìn)行限制,用戶可以根據(jù)實(shí)際場景自由選擇具體的限流方式,在匹配成功時(shí)阻止該sql語句被數(shù)據(jù)庫執(zhí)行,避免數(shù)據(jù)庫處理量過大,本申請通過擴(kuò)寬sql語句限流方式的范圍,能夠限制多種sql類型,保證數(shù)據(jù)庫的穩(wěn)定和安全運(yùn)行。
1.一種數(shù)據(jù)庫中sql限流的方法,其特征在于,所述方法包括:
2.根據(jù)權(quán)利要求1所述的方法,其特征在于,基于所述限流方式對從客戶端獲取到的目標(biāo)sql語句進(jìn)行匹配,并根據(jù)匹配成功結(jié)果阻止所述目標(biāo)sql語句被數(shù)據(jù)庫執(zhí)行包括:
3.根據(jù)權(quán)利要求2所述的方法,其特征在于,采用模板匹配方式對所述目標(biāo)sql語句和所述模板sql語句進(jìn)行模板匹配包括:
4.根據(jù)權(quán)利要求2所述的方法,其特征在于,采用令牌匹配方式對所述目標(biāo)sql語句和所述令牌sql語句進(jìn)行令牌匹配包括:
5.根據(jù)權(quán)利要求2所述的方法,其特征在于,所述規(guī)則限流中的規(guī)則包括:禁止全表查詢、禁止翻頁查詢、限制join個(gè)數(shù)、限制刪除表數(shù)據(jù),限制exists表達(dá)式的個(gè)數(shù)。
6.根據(jù)權(quán)利要求2所述的方法,其特征在于,采用模板匹配方式對所述目標(biāo)sql語句和所述模板sql語句進(jìn)行模板匹配之后,所述方法還包括:
7.根據(jù)權(quán)利要求2所述的方法,其特征在于,采用令牌匹配方式對所述目標(biāo)sql語句和所述令牌sql語句進(jìn)行令牌匹配之后,所述方法還包括:
8.一種數(shù)據(jù)庫中sql限流的裝置,其特征在于,所述裝置包括:
9.一種電子設(shè)備,其特征在于,包括處理器、通信接口、存儲(chǔ)器和通信總線,其中,處理器,通信接口,存儲(chǔ)器通過通信總線完成相互間的通信;
10.一種計(jì)算機(jī)可讀存儲(chǔ)介質(zhì),其特征在于,所述計(jì)算機(jī)可讀存儲(chǔ)介質(zhì)內(nèi)存儲(chǔ)有計(jì)算機(jī)程序,所述計(jì)算機(jī)程序被處理器執(zhí)行時(shí)實(shí)現(xiàn)權(quán)利要求1-7任一所述的方法。