本公開涉及數(shù)據(jù)庫技術(shù)領(lǐng)域,尤其涉及一種向數(shù)據(jù)庫插入數(shù)據(jù)的方法及系統(tǒng)。
背景技術(shù):
隨著工業(yè)4.0的發(fā)展,工業(yè)控制網(wǎng)絡(luò)有網(wǎng)絡(luò)化,ip化,智能化的趨勢,這同時也帶來了對工業(yè)控制網(wǎng)絡(luò)安全性的要求,所以越來越多的網(wǎng)絡(luò)審計產(chǎn)品被應(yīng)用于工業(yè)控制網(wǎng)絡(luò)。由于工業(yè)控制網(wǎng)絡(luò)有硬實時性的要求,所以對網(wǎng)絡(luò)審計產(chǎn)品中數(shù)據(jù)庫插入效率的要求非常高。
目前相關(guān)技術(shù)中,提高數(shù)據(jù)庫插入數(shù)據(jù)效率的技術(shù)主要有依靠數(shù)據(jù)庫本身配置值優(yōu)化和sql(structuredquerylanguage,結(jié)構(gòu)化查詢語言)語句級優(yōu)化這兩種方案,這兩種方案分別有各自的使用場景,也存在很大使用限制性。
具體地,關(guān)于第一種方案的實施,各種商業(yè)或開源數(shù)據(jù)庫軟件都提供一系列的優(yōu)化配置選項,可以針對不同的應(yīng)用場景做對應(yīng)的優(yōu)化,而具體的優(yōu)化配置根據(jù)數(shù)據(jù)庫軟件的不同而可能存在差異。由于各種數(shù)據(jù)庫軟件的配置存在差異,導致不同的數(shù)據(jù)庫軟件之間的移植性很差;另外,這種方案通常是資源換時間的優(yōu)化手段,會消耗比較多的系統(tǒng)內(nèi)存,從而有可能導致系統(tǒng)整體的運行效率降低。
關(guān)于第二種方案的實施,由于目前幾乎所有常見的商業(yè)和開源數(shù)據(jù)庫軟件都支持采用sql語句來操作數(shù)據(jù)庫,比如查詢,插入,刪除和編輯等等。對于某種特定的大數(shù)據(jù)量插入場景,可以根據(jù)具體業(yè)務(wù)特點優(yōu)化表結(jié)構(gòu)設(shè)計,優(yōu)化具體的sql語句實現(xiàn),從而可以達到提高數(shù)據(jù)插入效率的目的。雖然,表結(jié)構(gòu)設(shè)計和sql語句對于不同的數(shù)據(jù)庫軟件之間是可以移植的;但是,這種針對特定業(yè)務(wù)場景的表結(jié)構(gòu)設(shè)計和sql語句優(yōu)化,對于其他業(yè)務(wù)場景就不再適用了,此方案針對不同的業(yè)務(wù)場景的通用性也比較差。
技術(shù)實現(xiàn)要素:
為克服相關(guān)技術(shù)中存在的問題,本公開提供一種向數(shù)據(jù)庫插入數(shù)據(jù)的方法及系統(tǒng)。
根據(jù)本公開實施例的第一方面,提供一種向數(shù)據(jù)庫插入數(shù)據(jù)的方法,包括獲取待插入數(shù)據(jù)的數(shù)據(jù)頭信息和功能數(shù)據(jù)信息;判斷獲取到的所述數(shù)據(jù)頭信息是否存在于所述數(shù)據(jù)庫中的數(shù)據(jù)頭表中,其中所述數(shù)據(jù)頭表存儲有數(shù)據(jù)的數(shù)據(jù)頭信息與數(shù)據(jù)序號的對應(yīng)關(guān)系;當獲取到的所述數(shù)據(jù)頭信息存在于所述數(shù)據(jù)頭表中時,在所述數(shù)據(jù)頭表中獲取與所述數(shù)據(jù)頭信息相對應(yīng)的數(shù)據(jù)序號;將所述數(shù)據(jù)序號連同與獲取到的所述數(shù)據(jù)頭信息相對應(yīng)的所述功能數(shù)據(jù)信息插入至所述數(shù)據(jù)信息表,該數(shù)據(jù)信息表中存儲有每條數(shù)據(jù)的數(shù)據(jù)序號與功能數(shù)據(jù)信息的對應(yīng)關(guān)系。
根據(jù)本公開實施例的第二方面,提供一種向數(shù)據(jù)庫插入數(shù)據(jù)的系統(tǒng),包括第一獲取單元,用于獲取待插入數(shù)據(jù)的數(shù)據(jù)頭信息和功能數(shù)據(jù)信息;判斷單元,用于判斷獲取到的所述數(shù)據(jù)頭信息是否存在于所述數(shù)據(jù)庫中的數(shù)據(jù)頭表中,其中所述數(shù)據(jù)頭表存儲有每條數(shù)據(jù)的數(shù)據(jù)頭信息與數(shù)據(jù)序號的對應(yīng)關(guān)系;第二獲取單元,用于當獲取到的所述數(shù)據(jù)頭信息存在于所述數(shù)據(jù)頭表中時,在所述數(shù)據(jù)頭表中獲取與所述數(shù)據(jù)頭信息相對應(yīng)的數(shù)據(jù)序號;插入單元,用于將所述數(shù)據(jù)序號連同與獲取到的所述數(shù)據(jù)頭信息相對應(yīng)的所述功能數(shù)據(jù)信息插入至所述數(shù)據(jù)信息表,該數(shù)據(jù)信息表中存儲有每條數(shù)據(jù)的數(shù)據(jù)序號與功能數(shù)據(jù)信息的對應(yīng)關(guān)系。
本公開的實施例提供的技術(shù)方案可以包括以下有益效果:
基于本發(fā)明實施例技術(shù)方案,使得數(shù)據(jù)庫中的數(shù)據(jù)頭表和數(shù)據(jù)信息表共同存儲數(shù)據(jù),即數(shù)據(jù)頭表用于存儲數(shù)據(jù)的數(shù)據(jù)頭信息以及數(shù)據(jù)信息表存儲數(shù)據(jù)的功能代碼數(shù)據(jù)信息,并由數(shù)據(jù)序號完成同一數(shù)據(jù)的數(shù)據(jù)頭信息和功能代碼數(shù)據(jù)信息的關(guān)聯(lián);由此一方面,本發(fā)明實施例所提供的數(shù)據(jù)庫插入數(shù)據(jù)的技術(shù)方案是針對數(shù)據(jù)庫結(jié)構(gòu)的優(yōu)化,而對于數(shù)據(jù)庫的應(yīng)用場景沒有特殊限定,在應(yīng)用上具有較好的通用性;另一方面,本發(fā)明實施例的實施對系統(tǒng)資源的消耗和占用均較少,能在整體上提升數(shù)據(jù)庫的效率;再一方面,在每次往數(shù)據(jù)庫中插入數(shù)據(jù)時,都只需要去查詢數(shù)據(jù)頭表,相比于傳統(tǒng)的數(shù)據(jù)庫不需要查詢數(shù)據(jù)庫中所存儲的功能代碼數(shù)據(jù)信息部分,提升了數(shù)據(jù)插入數(shù)據(jù)庫的效率。
應(yīng)當理解的是,以上的一般描述和后文的細節(jié)描述僅是示例性和解釋性的,并不能限制本公開。
附圖說明
此處的附圖被并入說明書中并構(gòu)成本說明書的一部分,示出了符合本發(fā)明的實施例,并與說明書一起用于解釋本發(fā)明的原理。
圖1是應(yīng)用本發(fā)明實施例的數(shù)據(jù)庫的結(jié)構(gòu)示意圖;
圖2是根據(jù)一示例性實施例示出的一種向圖1所示數(shù)據(jù)庫中插入數(shù)據(jù)的方法的流程圖;
圖3是根據(jù)另一示例性實施例示出的一種向圖1所示數(shù)據(jù)庫中插入數(shù)據(jù)的方法的流程圖;
圖4是圖3所示的一種向數(shù)據(jù)庫插入數(shù)據(jù)的方法中的步驟202的一種具體執(zhí)行流程圖;
圖5是根據(jù)一示例性實施例示出的一種向數(shù)據(jù)庫插入數(shù)據(jù)的系統(tǒng)的結(jié)構(gòu)框圖;
圖6是根據(jù)一示例性實施例示出的一種向數(shù)據(jù)庫插入數(shù)據(jù)的系統(tǒng)的結(jié)構(gòu)框圖;
圖7是根據(jù)另一示例性實施例示出的一種向數(shù)據(jù)庫插入數(shù)據(jù)的系統(tǒng)的結(jié)構(gòu)框圖;
圖8是根據(jù)再一示例性實施例示出的一種向數(shù)據(jù)庫插入數(shù)據(jù)的系統(tǒng)的結(jié)構(gòu)框圖。
附圖標記
301第一獲取單元302判斷單元
303第二獲取單元304插入單元
3021緩存隊列校驗模塊3022緩存隊列更新模塊
30211hash匹配組件
具體實施方式
這里將詳細地對示例性實施例進行說明,其示例表示在附圖中。下面的描述涉及附圖時,除非另有表示,不同附圖中的相同數(shù)字表示相同或相似的要素。以下示例性實施例中所描述的實施方式并不代表與本發(fā)明相一致的所有實施方式。相反,它們僅是與如所附權(quán)利要求書中所詳述的、本發(fā)明的一些方面相一致的裝置和方法的例子。
實施例一
參見圖1示出的是應(yīng)用本發(fā)明實施例的數(shù)據(jù)庫的結(jié)構(gòu)示意圖,如圖1所示,在數(shù)據(jù)庫中包含有數(shù)據(jù)頭表和數(shù)據(jù)信息表,通過數(shù)據(jù)頭表與數(shù)據(jù)信息表結(jié)合的方式存儲數(shù)據(jù)。其中,在數(shù)據(jù)頭表中記錄有數(shù)據(jù)序號1、數(shù)據(jù)序號2~數(shù)據(jù)序號n的數(shù)據(jù)序號列以及與數(shù)據(jù)序號列相對應(yīng)的數(shù)據(jù)頭信息列;數(shù)據(jù)信息表中則具有數(shù)據(jù)序號列和功能代碼數(shù)據(jù)信息列。數(shù)據(jù)信息表和數(shù)據(jù)頭表之間通過數(shù)據(jù)序號列建立數(shù)據(jù)鏈接,例如:數(shù)據(jù)序號1對應(yīng)的數(shù)據(jù)頭信息和數(shù)據(jù)序號1所對應(yīng)的功能代碼信息1組成數(shù)據(jù)1。
在一種實施方式中,該數(shù)據(jù)庫中存儲有n條數(shù)據(jù),該n條數(shù)據(jù)中的每一條數(shù)據(jù)都被分成兩部分,該兩部分被分別存儲至數(shù)據(jù)頭表和數(shù)據(jù)信息表中,并通過兩個表中的數(shù)據(jù)序號列進行關(guān)聯(lián)。由此可以很直觀地看出,應(yīng)用本發(fā)明實施例的數(shù)據(jù)庫中所存儲的數(shù)據(jù)按照信息內(nèi)容不同分別存儲,并基于數(shù)據(jù)序號進行關(guān)聯(lián)。
本發(fā)明實施例可以應(yīng)用在配置有數(shù)據(jù)庫的任何產(chǎn)品、裝置及服務(wù)器中,以相應(yīng)改善各產(chǎn)品、裝置及服務(wù)器的數(shù)據(jù)庫插入效率。本發(fā)明實施例尤其適用于審計平臺服務(wù)器或裝置中,由此能夠有效改善審計平臺的數(shù)據(jù)插入效率。
參見圖2示出的是根據(jù)一示例性實施例示出的一種向圖1所示數(shù)據(jù)庫中插入數(shù)據(jù)的方法的流程圖,如圖2所示,本實施例實施的方法適于向圖1所示的數(shù)據(jù)庫中插入數(shù)據(jù),即在該待插入數(shù)據(jù)的數(shù)據(jù)庫中至少包含有存儲數(shù)據(jù)的數(shù)據(jù)頭信息與數(shù)據(jù)序號的對應(yīng)關(guān)系的數(shù)據(jù)頭表和存儲數(shù)據(jù)的數(shù)據(jù)序號與功能數(shù)據(jù)信息的對應(yīng)關(guān)系的數(shù)據(jù)信息表。更具體地,該向數(shù)據(jù)庫插入數(shù)據(jù)的方法包括:
步驟101:獲取待插入數(shù)據(jù)的數(shù)據(jù)頭信息和功能數(shù)據(jù)信息;
該數(shù)據(jù)頭信息可以包含數(shù)據(jù)的源ip、目的ip和協(xié)議名,并且同一條數(shù)據(jù)流中的源ip、目的ip和協(xié)議名均相同。
步驟102:判斷獲取到的數(shù)據(jù)頭信息是否存在于數(shù)據(jù)庫中的數(shù)據(jù)頭表中;
若步驟102的判斷結(jié)果為是,即如果獲取到的數(shù)據(jù)頭信息存在于該數(shù)據(jù)頭表中則跳轉(zhuǎn)執(zhí)行步驟1031;以及若步驟102的判斷結(jié)果為否,即如果獲取到的數(shù)據(jù)頭信息不存在于該數(shù)據(jù)頭表中則跳轉(zhuǎn)至步驟1032;
步驟1031:在數(shù)據(jù)頭表中獲取與數(shù)據(jù)頭信息相對應(yīng)的數(shù)據(jù)序號;
步驟1032:將獲取到的數(shù)據(jù)頭信息插入數(shù)據(jù)頭表,并在數(shù)據(jù)頭表中確定以獲取與獲取到的所述數(shù)據(jù)頭信息相對應(yīng)的數(shù)據(jù)序號;
步驟104:將數(shù)據(jù)序號連同與獲取到的數(shù)據(jù)頭信息相對應(yīng)的功能數(shù)據(jù)信息插入至數(shù)據(jù)信息表。
通過在數(shù)據(jù)頭表中獲取對應(yīng)于數(shù)據(jù)的數(shù)據(jù)頭信息的數(shù)據(jù)序號,并通過該數(shù)據(jù)序號該數(shù)據(jù)更新數(shù)據(jù)信息表,該數(shù)據(jù)信息表中所存儲的功能數(shù)據(jù)信息可以就是數(shù)據(jù)的具體信息、例如可以是各種功能代碼,該數(shù)據(jù)頭表和數(shù)據(jù)信息表之間通過數(shù)據(jù)序號映射;在每次往數(shù)據(jù)庫中插入數(shù)據(jù)時,都只需要去查詢數(shù)據(jù)頭表,相比于傳統(tǒng)的數(shù)據(jù)庫,不需要查詢數(shù)據(jù)庫中的功能代碼部分,而只是對數(shù)據(jù)庫結(jié)構(gòu)的改進,并提升了數(shù)據(jù)插入的效率。此外,對于數(shù)據(jù)庫中已經(jīng)存儲的數(shù)據(jù)的查詢可以僅基于數(shù)據(jù)頭表的查詢便可以完成對數(shù)據(jù)序號的定位,然后基于數(shù)據(jù)序號完成對數(shù)據(jù)信息表中所指定的功能代碼數(shù)據(jù)信息的調(diào)用,能夠提升數(shù)據(jù)庫的數(shù)據(jù)查詢效率。
實施例二
實施例二可以看作是實施例一的進一步的優(yōu)化,因在實施例一中,向數(shù)據(jù)庫插入數(shù)據(jù)的實施方式,雖然只需要查詢數(shù)據(jù)庫中的數(shù)據(jù)頭表部分便可以完成對數(shù)據(jù)的插入能夠在一定程度上提高數(shù)據(jù)插入數(shù)據(jù)庫的效率,但仍具有被改進的地方,在此實施例二公開相對于實施例一的更優(yōu)實施例。
在實施例一所示方法中的步驟102中引入通過緩存隊列的方案,也就是該步驟102的執(zhí)行可以包括:
通過緩存有該數(shù)據(jù)頭表中的多個數(shù)據(jù)頭信息的緩存隊列對獲取到的數(shù)據(jù)頭信息執(zhí)行匹配校驗,以確定獲取到的數(shù)據(jù)頭信息是否存在于該數(shù)據(jù)頭表中。
當獲取到的數(shù)據(jù)頭信息存在于緩存隊列中時,確定獲取到的數(shù)據(jù)頭信息存在于該數(shù)據(jù)頭表中;當獲取到的數(shù)據(jù)頭信息不存在于緩存隊列中時,確定獲取到的數(shù)據(jù)頭信息不存在于該數(shù)據(jù)頭表中。
本實施例可以應(yīng)用在配置有數(shù)據(jù)庫的任何產(chǎn)品、裝置及服務(wù)器中,以相應(yīng)改善各產(chǎn)品、裝置及服務(wù)器的數(shù)據(jù)庫插入效率。本發(fā)明實施例尤其適用于審計平臺服務(wù)器或裝置中,由此能夠有效改善審計平臺的數(shù)據(jù)插入效率。
由此,審計平臺服務(wù)器或裝置通過包含多個數(shù)據(jù)頭信息的緩存序列直接對所接收獲取數(shù)據(jù)的數(shù)據(jù)頭執(zhí)行校驗匹配,使得在數(shù)據(jù)的緩存階段就能完成對待插入的數(shù)據(jù)在數(shù)據(jù)庫中定位,加快了數(shù)據(jù)插入數(shù)據(jù)庫的效率。
如果待插入的數(shù)據(jù)頭都能在緩存隊列中被查詢到,那么待插入的數(shù)據(jù)被查找到的效率是最高的;但是緩存隊列的長度都是有限長度的。要使得待插入的數(shù)據(jù)完全都能在緩存隊列中找到屬于一種理想狀況,如果為了保證待插入的數(shù)據(jù)被該緩存隊列中的數(shù)據(jù)頭信息命中幾率提高,那么,相應(yīng)地,數(shù)據(jù)插入數(shù)據(jù)庫的效率也應(yīng)當是越高的。有鑒于此,本發(fā)明實施例在此公開通過一種數(shù)據(jù)熱度算法來更新該緩存隊列的方案,由此保障該緩存隊列的高熱度,提高待插入數(shù)據(jù)被緩存隊列所命中的幾率。更具體地,結(jié)合圖3示出的是本發(fā)明另一示例的向數(shù)據(jù)庫插入數(shù)據(jù)的方法的流程圖,該向數(shù)據(jù)庫插入數(shù)據(jù)的方法具體包括:
步驟201:獲取待插入數(shù)據(jù)的數(shù)據(jù)頭信息和功能數(shù)據(jù)信息;
步驟202:通過緩存有數(shù)據(jù)頭表中的多個數(shù)據(jù)頭信息的緩存隊列對獲取到的數(shù)據(jù)頭信息執(zhí)行匹配校驗,以確定獲取到的數(shù)據(jù)頭信息是否存在于數(shù)據(jù)頭表中;
該匹配校驗的過程就是判定該緩存隊列中的多個數(shù)據(jù)頭信息中是否存在匹配獲取到的數(shù)據(jù)頭信息,當判定結(jié)果為匹配并表明獲取到的數(shù)據(jù)頭信息是存在于數(shù)據(jù)頭表中時,則執(zhí)行步驟206,以及當判定結(jié)果為不匹配并表明獲取到的數(shù)據(jù)頭信息不存在于數(shù)據(jù)頭表中時,則執(zhí)行步驟203。
步驟203:判斷緩存隊列是否已經(jīng)飽和;
當步驟203中的判斷結(jié)果為緩存隊列是已經(jīng)飽和,則執(zhí)行步驟2041,以及當該判斷結(jié)果為緩存隊列未飽和,則執(zhí)行步驟2042;
步驟2041:確定在緩存隊列下的所有數(shù)據(jù)頭信息中數(shù)據(jù)熱度值排名最低的數(shù)據(jù)頭信息,并通過獲取到的數(shù)據(jù)頭信息替換數(shù)據(jù)熱度值排名最低的數(shù)據(jù)頭信息;
步驟2042:向緩存隊列中插入獲取到的數(shù)據(jù)頭信息;
步驟205:在該數(shù)據(jù)頭表中確定所獲取數(shù)據(jù)的數(shù)據(jù)頭信息相對應(yīng)的數(shù)據(jù)序號;
步驟206:將數(shù)據(jù)序號連同與獲取到的數(shù)據(jù)頭信息相對應(yīng)的功能數(shù)據(jù)信息插入至數(shù)據(jù)信息表。
關(guān)于步驟2041中最低熱數(shù)據(jù)的確定的實施方式,例如可以根據(jù)緩存隊列中各數(shù)據(jù)頭信息被匹配的次數(shù)以及最后一次被匹配的時間戳確定該緩存隊列中各數(shù)據(jù)頭信息的數(shù)據(jù)熱度值;根據(jù)該緩存隊列中各數(shù)據(jù)頭信息的數(shù)據(jù)熱度值的排序,以確定在該緩存隊列的所有數(shù)據(jù)頭信息中數(shù)據(jù)熱度值排名最低的數(shù)據(jù)頭信息。作為示例,可以是為最后一次被匹配的時間戳以及數(shù)據(jù)頭信息被匹配的次數(shù)各自所設(shè)定的權(quán)重來確定數(shù)據(jù)熱度,
可以理解的是,與實施例一中所闡述的一樣,該數(shù)據(jù)頭信息可以包含數(shù)據(jù)的源ip、目的ip和協(xié)議名,相對應(yīng)地,該數(shù)據(jù)熱度值排名最低的數(shù)據(jù)頭信息可以指代熱度最低的源ip、目的ip和協(xié)議名,由此將新插入的數(shù)據(jù)頭信息替換緩存隊列中最不常用的信息,由此實現(xiàn)了緩存隊列資源的高效利用率,使得更新后的緩存隊列相對于待插入數(shù)據(jù)具有更高的匹配命中率,進一步提高了數(shù)據(jù)庫的數(shù)據(jù)插入效率。
本發(fā)明實施例可以如實施例一中所闡述一樣,對于數(shù)據(jù)庫的應(yīng)用場景不做限定。但是需在此特別指出的是,當將本發(fā)明實施例實施應(yīng)用于工業(yè)網(wǎng)絡(luò)環(huán)境時,能夠產(chǎn)生更加顯著的上文已經(jīng)闡述的技術(shù)效果;究其原因在于:通過對實際工控網(wǎng)絡(luò)報文的分析發(fā)現(xiàn),絕大多數(shù)工控網(wǎng)絡(luò)中的數(shù)據(jù)流都是長連接的tcp(transmissioncontrolprotocol,傳輸控制協(xié)議)流,數(shù)據(jù)中的數(shù)據(jù)頭基本上很固定維持在一個比較小的范圍內(nèi)變化,由此本發(fā)明實施例所提供的基于數(shù)據(jù)熱度算法的緩存隊列來解決數(shù)據(jù)頭表中數(shù)據(jù)序號及表頭字段查詢的效率問題。
實施例三
實施例三可以看作是實施例二在一定應(yīng)用場景下的更優(yōu)選的實施例,因?qū)嵤├械囊徊糠謨?nèi)容闡述了可以通過熱度算法更新緩存隊列待插入數(shù)據(jù)的提高命中率,以提高數(shù)據(jù)庫的數(shù)據(jù)插入效率的方案。但是,緩存隊列一般是基于先進先出隊列(fifo,firstinputfirstoutput)的方式實現(xiàn)的,但是實施例二中緩存隊列的基于數(shù)據(jù)熱度更新配合fifo的方式更新確定緩存隊列就還存在有待改進的地方,因為fifo的方式極有可能導致數(shù)據(jù)熱度值排名比較靠前的數(shù)據(jù)頭信息被更新掉。有鑒于此,本發(fā)明實施例在此公開另一種實施例三,以替換一般情況下的緩存隊列的先進先出(fifo)的方式。
更具體地,在本實施例中提供針對實施例二中的步驟202的進一步的優(yōu)化的實施方式,該步驟202的實施可以基于hash而確定。參見圖4示出的是圖3所示的向數(shù)據(jù)庫插入數(shù)據(jù)的方法中的步驟202的具體執(zhí)行流程圖,具體可以包括以下子步驟:
步驟2021:確定對應(yīng)于緩存隊列的緩存hash值組,緩存hash值組包含緩存隊列中各數(shù)據(jù)頭信息所對應(yīng)的各hash值;
步驟2022:確定獲取到的數(shù)據(jù)頭信息所對應(yīng)的第一hash值;
步驟2023:通過緩存hash值組對第一hash值執(zhí)行匹配校驗,以確定獲取到的數(shù)據(jù)頭信息是否存在于緩存隊列中。
本實施例可以應(yīng)用在配置有數(shù)據(jù)庫的任何產(chǎn)品、裝置及服務(wù)器中,以相應(yīng)改善各產(chǎn)品、裝置及服務(wù)器的數(shù)據(jù)庫插入效率。本發(fā)明實施例尤其適用于審計平臺服務(wù)器或裝置中,由此能夠有效改善審計平臺的數(shù)據(jù)插入效率。
由此,本發(fā)明實施例采用了hash算法來實現(xiàn)緩存隊列,使得數(shù)據(jù)頭與hash值之間是一一映射的關(guān)系;由此,本發(fā)明實施例的實施一方面基于hash值的查找可以避免整個緩存隊列的查詢,并且省略了每次插入數(shù)據(jù)時必須的數(shù)據(jù)頭表的查詢過程,可以極大的提高數(shù)據(jù)插入效率;另一方面,對于數(shù)據(jù)庫軟件的類型、配置參數(shù)和sql語言都沒有任何特殊要求,所以本發(fā)明實施例的應(yīng)用具有很高的通用性和移植性。
在前述的實施例中,緩存隊列中的各數(shù)據(jù)頭信息所對應(yīng)的各hash值的的確定,可以通過以下的方式實現(xiàn):
例如,包括根據(jù)數(shù)據(jù)頭信息中的源ip、協(xié)議類型、目的ip執(zhí)行hash算法。
α=((sip<<32)^(proto<<56))|(dip^(proto<<24))
其中,α指代64位的hash值,sip指代數(shù)據(jù)的源ip,proto指代數(shù)據(jù)的協(xié)議類型,dip指代數(shù)據(jù)的目的ip。
本發(fā)明實施例可以如實施例一中所闡述一樣,對數(shù)據(jù)庫的應(yīng)用場景不做限定。但是需在此特別指出的是,當將本發(fā)明實施例實施應(yīng)用于工業(yè)網(wǎng)絡(luò)環(huán)境時,能夠產(chǎn)生更加顯著的上文已經(jīng)闡述的技術(shù)效果;如實施例二該的一樣,在工控網(wǎng)絡(luò)中的數(shù)據(jù)流一般為長連接,而且工控網(wǎng)絡(luò)中子網(wǎng)的劃分一般不會很復雜,使得結(jié)合該hash算法能夠保障hash值發(fā)生碰撞的概率很小。
可以理解的是,以上各實施例中具體的描述僅僅作為示例,使得公眾更清楚地理解本發(fā)明的精神,不用做對本發(fā)明保護范圍的限制。例如,實施例三中的用hash算法來實現(xiàn)緩存隊列不是必須的,當對于數(shù)據(jù)流比較少的網(wǎng)絡(luò)場景,可以直接采用遍歷查找的方法。因為當數(shù)據(jù)流比較少時,遍歷次數(shù)也不會很大,可以忽略因緩存隊列的查詢而對數(shù)據(jù)庫查詢效率的影響。
實施例四
圖5是根據(jù)一示例性實施例示出的一種向數(shù)據(jù)庫插入數(shù)據(jù)的系統(tǒng)的結(jié)構(gòu)框圖。如圖5所示,該系統(tǒng)包括第一獲取單元301、判斷單元302、第二獲取單元303以及插入單元304。其中,判斷單元302,用于判斷獲取到的數(shù)據(jù)頭信息是否存在于數(shù)據(jù)庫中的數(shù)據(jù)頭表中,其中數(shù)據(jù)頭表存儲有數(shù)據(jù)的數(shù)據(jù)頭信息與數(shù)據(jù)序號的對應(yīng)關(guān)系;第二獲取單元303,用于當獲取到的數(shù)據(jù)頭信息存在于數(shù)據(jù)頭表中時,在數(shù)據(jù)頭表中獲取與數(shù)據(jù)頭信息相對應(yīng)的數(shù)據(jù)序號;插入單元304,用于將數(shù)據(jù)序號連同與獲取到的數(shù)據(jù)頭信息相對應(yīng)的功能數(shù)據(jù)信息插入至數(shù)據(jù)信息表,該數(shù)據(jù)信息表中存儲有每條數(shù)據(jù)的數(shù)據(jù)序號與功能數(shù)據(jù)信息的對應(yīng)關(guān)系。
本實施例可以應(yīng)用在配置有數(shù)據(jù)庫的任何產(chǎn)品、裝置及服務(wù)器中,以相應(yīng)改善各產(chǎn)品、裝置及服務(wù)器的數(shù)據(jù)庫插入效率。本發(fā)明實施例尤其適用于審計平臺服務(wù)器或裝置中,由此能夠有效改善審計平臺的數(shù)據(jù)插入效率。
在本實施例系統(tǒng)的實施過程中,通過在數(shù)據(jù)頭表中獲取對應(yīng)于數(shù)據(jù)的數(shù)據(jù)頭信息的數(shù)據(jù)序號,并通過該數(shù)據(jù)序號該數(shù)據(jù)更新數(shù)據(jù)信息表,該數(shù)據(jù)信息表中所存儲的功能數(shù)據(jù)信息可以就是數(shù)據(jù)的具體信息、例如可以是各種功能代碼,該數(shù)據(jù)頭表和數(shù)據(jù)信息表之間通過數(shù)據(jù)序號映射;在每次往數(shù)據(jù)庫中插入數(shù)據(jù)時,都只需要去查詢數(shù)據(jù)頭表,相比于傳統(tǒng)的數(shù)據(jù)庫,不需要查詢數(shù)據(jù)庫中的功能代碼部分,而只是對數(shù)據(jù)庫結(jié)構(gòu)的改進,并提升了數(shù)據(jù)插入的效率。此外,對于數(shù)據(jù)庫中已經(jīng)存儲的數(shù)據(jù)的查詢可以僅基于數(shù)據(jù)頭表的查詢便可以完成對數(shù)據(jù)序號的定位,然后基于數(shù)據(jù)序號完成對數(shù)據(jù)信息表中所指定的功能代碼數(shù)據(jù)信息的調(diào)用,能夠提升數(shù)據(jù)庫的數(shù)據(jù)查詢效率。
實施例五
實施例五可以看做是對實施例四的進一步的優(yōu)化,因在實施例四中的向數(shù)據(jù)庫插入數(shù)據(jù)的技術(shù)方案雖然只需要查詢數(shù)據(jù)庫中的數(shù)據(jù)頭表、數(shù)據(jù)序號部分便可以完成對數(shù)據(jù)的調(diào)用,能夠在一定程度上提高數(shù)據(jù)插入數(shù)據(jù)庫的效率,但仍具有被改進的地方,在此實施例五公開相對于實施例四的更優(yōu)實施例。
參見圖6示出的是本發(fā)明一實施例的向數(shù)據(jù)庫插入數(shù)據(jù)的系統(tǒng)的結(jié)構(gòu)框圖,如圖6所示,該向數(shù)據(jù)庫插入數(shù)據(jù)的系統(tǒng)包括第一獲取單元301、判斷單元302、第二獲取單元303以及插入單元304,其中判斷單元302中包含有緩存隊列校驗模塊3021,。關(guān)于第二獲取單元303以及插入單元304的具體相關(guān)技術(shù)特征和技術(shù)效果可以參照圖5所示實施例,相同部分在此不加以贅述。應(yīng)當指出的是,該緩存隊列校驗模塊3021,被配置為通過緩存有該數(shù)據(jù)頭表中的多個數(shù)據(jù)頭信息的緩存隊列對獲取到的數(shù)據(jù)頭信息執(zhí)行匹配校驗,以確定獲取到的數(shù)據(jù)頭信息是否存在于該數(shù)據(jù)頭表中。更具體地,該緩存隊列校驗模塊3021,被配置為當獲取到的數(shù)據(jù)頭信息存在于緩存隊列中時則確定獲取到的數(shù)據(jù)頭信息存在于該數(shù)據(jù)頭表中,當獲取到的數(shù)據(jù)頭信息不存在于緩存隊列中時則確定獲取到的數(shù)據(jù)頭信息不存在于該數(shù)據(jù)頭表中。
本實施例可以應(yīng)用在配置有數(shù)據(jù)庫的任何產(chǎn)品、裝置及服務(wù)器中,以相應(yīng)改善各產(chǎn)品、裝置及服務(wù)器的數(shù)據(jù)庫插入效率。本發(fā)明實施例尤其適用于審計平臺服務(wù)器或裝置中,由此能夠有效改善審計平臺的數(shù)據(jù)插入效率。
由此,通過包含多個數(shù)據(jù)頭信息的緩存序列直接對所接收獲取數(shù)據(jù)的數(shù)據(jù)頭執(zhí)行校驗匹配,使得能在數(shù)據(jù)的緩存階段就能完成對所獲取數(shù)據(jù)在數(shù)據(jù)庫中定位,加快了數(shù)據(jù)插入數(shù)據(jù)庫的效率。
實施例六
實施例六可以是被看做是在實施例五的基礎(chǔ)上對本發(fā)明技術(shù)方案的進一步的公開,如果待插入的數(shù)據(jù)頭都能在緩存隊列中找到,那么查找效率是最高的;但是緩存隊列的長度都是有限長度的。要使得待插入的數(shù)據(jù)完全都能在緩存隊列中找到屬于一種理想狀況,但是如果能夠保證待插入的數(shù)據(jù)被該緩存隊列中的數(shù)據(jù)頭信息所命中幾率越高,相應(yīng)地數(shù)據(jù)插入數(shù)據(jù)庫的效率也應(yīng)當是越高的。有鑒于此,本發(fā)明實施例在此提供一種數(shù)據(jù)熱度算法更新該緩存隊列以保障該緩存隊列的高熱度。
參見圖7示出的是本發(fā)明又一實施例的向數(shù)據(jù)庫插入數(shù)據(jù)的系統(tǒng)的結(jié)構(gòu)示意圖,該實施例較圖6所示的實施例,增設(shè)了包含在判斷單元302中且連接至緩存隊列校驗模塊3021的緩存隊列更新模塊3022。該緩存隊列更新模塊3022被配置為在確定獲取到的數(shù)據(jù)頭信息不存在于該數(shù)據(jù)頭表中之后,判斷緩存隊列是否已經(jīng)飽和;當緩存隊列已經(jīng)飽和時,確定在緩存隊列下的所有數(shù)據(jù)頭信息中數(shù)據(jù)熱度值排名最低的數(shù)據(jù)頭信息,并通過獲取到的數(shù)據(jù)頭信息替換數(shù)據(jù)熱度值排名最低的數(shù)據(jù)頭信息,以及當緩存隊列沒有飽和時,向緩存隊列中插入獲取到的數(shù)據(jù)頭信息。
更優(yōu)選地,該實施例中還包含有連接至該緩存隊列更新模塊的最低熱數(shù)據(jù)確定模塊(未示出),配置為根據(jù)緩存隊列中各數(shù)據(jù)頭信息被匹配的次數(shù)以及最后一次被匹配的時間戳確定該緩存隊列中各數(shù)據(jù)頭信息的數(shù)據(jù)熱度值;根據(jù)該緩存隊列中各數(shù)據(jù)頭信息的數(shù)據(jù)熱度值的排序,以確定在該緩存隊列的所有數(shù)據(jù)頭信息中數(shù)據(jù)熱度值排名最低的數(shù)據(jù)頭信息。作為示例,可以是為最后一次被匹配的時間戳以及數(shù)據(jù)頭信息被匹配的次數(shù)各自所設(shè)定的權(quán)重來確定數(shù)據(jù)熱度。
可以理解的是,該數(shù)據(jù)頭信息可以包含數(shù)據(jù)的源ip、目的ip和協(xié)議名,相對應(yīng)地該數(shù)據(jù)熱度值排名最低的數(shù)據(jù)頭信息可以指代熱度最低的源ip、目的ip和協(xié)議名,由此將新插入的數(shù)據(jù)頭信息替換緩存隊列中最不常用的信息,由此實現(xiàn)了緩存隊列資源的有效和最大化的通過,使得更新后的緩存隊列相對于待插入數(shù)據(jù)具有更高的匹配命中率,進一步提高了數(shù)據(jù)庫的數(shù)據(jù)插入效率。
本發(fā)明實施例可以應(yīng)用在配置有數(shù)據(jù)庫的任何產(chǎn)品、裝置及服務(wù)器中,以相應(yīng)改善各產(chǎn)品、裝置及服務(wù)器的數(shù)據(jù)庫插入效率。本發(fā)明實施例尤其適用于審計平臺服務(wù)器或裝置中,由此能夠有效改善審計平臺的數(shù)據(jù)插入效率。
本發(fā)明實施例可以如實施例四中所闡述一樣,對于數(shù)據(jù)庫的應(yīng)用場景不做限定。但是需在此特別指出的是,當將本發(fā)明實施例實施應(yīng)用于工業(yè)網(wǎng)絡(luò)環(huán)境時,能夠產(chǎn)生更加顯著的上文已經(jīng)闡述的技術(shù)效果;究其原因在于:通過對實際工控網(wǎng)絡(luò)報文的分析發(fā)現(xiàn),絕大多數(shù)工控網(wǎng)絡(luò)中的數(shù)據(jù)流都是長連接的tcp流,數(shù)據(jù)中的數(shù)據(jù)頭基本上很固定維持在一個比較小的范圍內(nèi)變化,由此本發(fā)明實施例所提供的基于數(shù)據(jù)熱度算法的緩存隊列來解決數(shù)據(jù)頭表中數(shù)據(jù)序號及表頭字段查詢的效率問題。
實施例七
實施例七可以被看做是針對實施例五或六對本發(fā)明技術(shù)方案的進一步的公開,實施例七可以看做是實施例五或六在一定應(yīng)用場景下的更優(yōu)選的實施例,因?qū)嵤├寤蛄械囊徊糠置枋龀隽丝梢酝ㄟ^熱度算法更新緩存隊列待插入數(shù)據(jù)的提高命中率,以提高數(shù)據(jù)庫的數(shù)據(jù)插入效率。但是,緩存隊列一般是基于先進先出(fifo)的方式實現(xiàn)的,但是實施例五或六中緩存隊列的基于數(shù)據(jù)熱度更新配合fifo的方式更新確定緩存隊列就還存在有待改進的地方,因為fifo的方式極有可能導致數(shù)據(jù)熱度值排名比較靠前的數(shù)據(jù)頭信息被更新掉。有鑒于此,本發(fā)明實施例在此公開該更優(yōu)選的實施例七,以替換一般情況下的緩存隊列的先進先出(fifo)的方式。
參見圖8示出的是本發(fā)明再一實施例的向數(shù)據(jù)庫插入數(shù)據(jù)系統(tǒng)的框圖,將該圖8所示的向數(shù)據(jù)庫插入數(shù)據(jù)的系統(tǒng)與圖6所示的向數(shù)據(jù)庫插入數(shù)據(jù)的系統(tǒng)相比,該圖8中增設(shè)了位于緩存隊列模塊3021中的hash匹配組件30211,被配置為確定對應(yīng)于緩存隊列的緩存hash值組,緩存hash值組包含緩存隊列中各數(shù)據(jù)頭信息所對應(yīng)的各hash值;確定獲取到的數(shù)據(jù)頭信息所對應(yīng)的第一hash值;通過緩存hash值組對第一hash值執(zhí)行匹配校驗,以確定獲取到的數(shù)據(jù)頭信息是否存在于緩存隊列中。
本發(fā)明實施例可以應(yīng)用在配置有數(shù)據(jù)庫的任何產(chǎn)品、裝置及服務(wù)器中,以相應(yīng)改善各產(chǎn)品、裝置及服務(wù)器的數(shù)據(jù)庫插入效率。本發(fā)明實施例尤其適用于審計平臺服務(wù)器或裝置中,由此能夠有效改善審計平臺的數(shù)據(jù)插入效率。
由此,本發(fā)明實施例采用了hash算法來實現(xiàn)緩存隊列,使得數(shù)據(jù)頭與hash值之間是一一映射的關(guān)系;由此,本發(fā)明實施例的實施一方面基于hash值的查找可以避免整個緩存隊列的查詢,并且省略了每次插入數(shù)據(jù)時必須的數(shù)據(jù)頭表的查詢過程,可以極大的提高數(shù)據(jù)插入效率;另一方面,對于數(shù)據(jù)庫軟件的類型、配置參數(shù)和sql語言都沒有任何特殊要求,所以本發(fā)明實施例的應(yīng)用具有很高的通用性和移植性。
更具體地,本發(fā)明實施例在此繼續(xù)公開hash值的確定,具體可以包括根據(jù)數(shù)據(jù)頭信息中的源ip、協(xié)議類型、目的ip執(zhí)行hash算法。關(guān)于該hash算法具體如下:α=((sip<<32)^(proto<<56))|(dip^(proto<<24))
其中,α指代64位的hash值,sip指代數(shù)據(jù)的源ip,proto指代數(shù)據(jù)的協(xié)議類型,dip指代數(shù)據(jù)的目的ip。
本發(fā)明實施例可以如實施例一中所闡述一樣,對數(shù)據(jù)庫的應(yīng)用場景不做限定。但是需在此特別指出的是,當將本發(fā)明實施例實施應(yīng)用于工業(yè)網(wǎng)絡(luò)環(huán)境時,能夠產(chǎn)生更加顯著的上文已經(jīng)闡述的技術(shù)效果;如實施例二該的一樣,在工控網(wǎng)絡(luò)中的數(shù)據(jù)流一般為長連接,而且工控網(wǎng)絡(luò)中子網(wǎng)的劃分一般不會很復雜,使得結(jié)合該hash算法能夠保障hash值發(fā)生碰撞的概率很小。
可以理解的是,以上各實施例中具體的描述僅僅作為示例,使得公眾更清楚地理解本發(fā)明的精神,不用做對本發(fā)明保護范圍的限制。例如,實施例三中的用hash算法來實現(xiàn)緩存隊列不是必須的,當對于數(shù)據(jù)流比較少的網(wǎng)絡(luò)場景,可以直接采用遍歷查找的方法。因為當數(shù)據(jù)流比較少時,遍歷次數(shù)也不會很大,可以忽略因緩存隊列的查詢而對數(shù)據(jù)庫查詢效率的影響。
關(guān)于上述實施例的系統(tǒng)中的各個模塊、單元及組件的執(zhí)行操作的具體方式中的一部分已經(jīng)在有關(guān)該方法的實施例中進行了詳細描述,針對該重復部分此處將不再詳細贅述。
本領(lǐng)域技術(shù)人員在考慮說明書及實踐這里公開的發(fā)明后,將容易想到本發(fā)明的其它實施方案。本申請旨在涵蓋本發(fā)明的任何變型、用途或者適應(yīng)性變化,這些變型、用途或者適應(yīng)性變化遵循本發(fā)明的一般性原理并包括本公開未公開的本技術(shù)領(lǐng)域中的公知常識或慣用技術(shù)手段。說明書和實施例僅被視為示例性的,本發(fā)明的真正范圍和精神由下面的權(quán)利要求指出。
應(yīng)當理解的是,本發(fā)明并不局限于上面已經(jīng)描述并在附圖中示出的精確結(jié)構(gòu),并且可以在不脫離其范圍進行各種修改和改變。本發(fā)明的范圍僅由所附的權(quán)利要求來限制。