一種電力業(yè)務系統(tǒng)sql訪問日志壓縮方法
【技術領域】
[0001 ] 本發(fā)明涉及一種日志壓縮方法,具體涉及一種電力業(yè)務系統(tǒng)SQL訪問日志壓縮方法。
【背景技術】
[0002]隨著智能電網(wǎng)信息化技術和SG-ERP的互動化應用開展,電力業(yè)務數(shù)據(jù)大集中的趨勢越來越明顯,數(shù)據(jù)庫系統(tǒng)也變得尤為重要,如大數(shù)據(jù)、云計算等先進技術都是在數(shù)據(jù)庫的基礎上實現(xiàn)的。數(shù)據(jù)庫系統(tǒng)作為數(shù)據(jù)信息的匯聚點和重點保護對象,保證數(shù)據(jù)庫的安全是信息化建設平穩(wěn)發(fā)展的前提。為了能夠及時監(jiān)控和有效地監(jiān)督信息外網(wǎng)用戶對信息內(nèi)網(wǎng)的各種訪問行為,通過對日志的收集、預處理、分析和挖掘,可以發(fā)現(xiàn)內(nèi)外網(wǎng)用戶的異常行為,并及時提醒審計人員對各種違規(guī)行為進行審計、追蹤和預警。
[0003]數(shù)據(jù)庫審計系統(tǒng)可對業(yè)界主流的數(shù)據(jù)庫系統(tǒng)進行詳細的審計、監(jiān)控、保護,其功能非常切合電網(wǎng)信息系統(tǒng)中數(shù)據(jù)庫安全的各種安全需求,可推廣應用到電網(wǎng)企業(yè)發(fā)電、變電、輸電、配電、通信和農(nóng)電等各個業(yè)務領域的基于物聯(lián)網(wǎng)的智能電網(wǎng)信息安全建設工作中去。數(shù)據(jù)庫審計過程中涉及的相關技術研究,對智能電網(wǎng)信息安全建設方面有很好的推動作用。
[0004]目前,公司信息內(nèi)外網(wǎng)邊界的信息交互中,穿透信息內(nèi)外網(wǎng)邊界的數(shù)據(jù)庫訪問行為是重要的分析和審計對象,數(shù)據(jù)庫保存著電力業(yè)務系統(tǒng)的重要信息,例如:用戶用電信息、營銷業(yè)務數(shù)據(jù)等機密、敏感數(shù)據(jù)。因此,數(shù)據(jù)庫對于黑客和不法人員有著很強的吸引力。數(shù)據(jù)庫建立后會被頻繁的使用,頻繁的進行插入、修改、刪除等操作行為,并且數(shù)據(jù)庫的使用不受時間和地點的限制。因此,數(shù)據(jù)庫的安全性異常重要。由于電力業(yè)務系統(tǒng)數(shù)據(jù)庫SQL語句操作日志的數(shù)據(jù)量十分龐大,存儲分析存在很大難度。為了更好的對數(shù)據(jù)庫行為繼續(xù)審計,對電力業(yè)務系統(tǒng)SQL訪問語句進行壓縮十分必要。
【發(fā)明內(nèi)容】
[0005]為了克服上述現(xiàn)有技術的不足,本發(fā)明提供一種電力業(yè)務系統(tǒng)SQL訪問日志壓縮方法,本發(fā)明有效的對電力業(yè)務系統(tǒng)SQL訪問日志進行壓縮,便于從中提取有用的信息,提高資源的利用率,而不損失原數(shù)據(jù)的內(nèi)在信息。
[0006]為了實現(xiàn)上述發(fā)明目的,本發(fā)明采取如下技術方案:
[0007]一種電力業(yè)務系統(tǒng)SQL訪問日志壓縮方法,所述方法包括如下步驟:
[0008](1)對存儲一段連續(xù)緩沖區(qū)的SQL語句進行分解,分解為詞性和內(nèi)容的單詞結(jié)構體鏈表;
[0009](2)將所述單詞鏈表中的用戶輸入部分進行替換,創(chuàng)建SQL模式語句;
[0010](3)將新的SQL模式語句加入到SQL模式庫中,構建SQL模式匹配引擎。
[0011]優(yōu)選的,所述步驟(1)中,包括如下步驟:
[0012]步驟1-1、遍歷SQL語句包含的每一個字符,以空白符作為每個word的開始和結(jié)束,解析出所述SQL語句所包含的各個word,通過類型匹配的方式識別各個word的類型;
[0013]步驟1-2、根據(jù)解析的結(jié)果,將所述SQL語句的每個word分別存儲到單詞結(jié)構體的相關域中;
[0014]步驟1-3、將所述SQL語句對應的所有單詞結(jié)構體按照順序鏈接成一個單詞結(jié)構體鏈表。
[0015]優(yōu)選的,所述步驟(2)中,包括如下步驟:
[0016]步驟2-1、掃描所述單詞結(jié)構體鏈表,分離出用戶輸入部分和SQL主干語句;
[0017]步驟2-2、將所述用戶輸入部分提取出來用通配符進行替代,將多條結(jié)構相似的SQL語句抽象為一條SQL語句,形成SQL模式語句。
[0018]優(yōu)選的,所述步驟(3)中,包括如下步驟:
[0019]步驟3-1、通過迭代計算SQL語句的單詞結(jié)構體鏈表中所有的類型TYPE得到HASH值,計算公式:Hash = Hash〈〈8+Type,Hash初始化為0,Type為語句詞法解析后的word類型;
[0020]步驟3-2、根據(jù)同一業(yè)務SQL語句模式具有模式性的特點,SQL模式庫按照不同的業(yè)務應用ID,以數(shù)組的形式存儲;
[0021]步驟3-3、通過Hash值查找SQL模式庫中Hash數(shù)組的對應項,檢查是否有完全相同的詞法鏈,若有則執(zhí)行步驟3-4,否則執(zhí)行步驟3-5 ;
[0022]步驟3-4、SQL模式已經(jīng)存在,僅保存SQL模式序號到SQL日志表中;
[0023]步驟3-5、SQL模式不存在,將新的模式更新到SQL模式庫,再保存SQL模式序號到SQL日志表中;
[0024]優(yōu)選的,所述步驟(3)中還包括:在SQL模式匹配的過程中,記錄SQL模式語句的生成時間,并增加對模式匹配的計數(shù),每匹配一次則加一。
[0025]優(yōu)選的,所述步驟(3)后還包括:掃描SQL模式庫,對生存時長超過四十八小時,且匹配次數(shù)小于十次的SQL模式語句進行刪除。
[0026]與現(xiàn)有技術相比,本發(fā)明的有益效果在于:
[0027]本發(fā)明根據(jù)SQL語句進行詞法解析后,分咼出用戶輸入和SQL主干語句,將用戶輸入部分提取出來用某個特定的通配符進行替代,可以將多條結(jié)構相似的SQL語句抽象為一條SQL語句;
[0028]本發(fā)明通過SQL模式匹配的方式,不斷學習將新的SQL模式加入到SQL模式庫中,對于匹配成功的SQL語句僅將得到模式庫的序號寫入SQL日志數(shù)據(jù)庫表中,達到SQL訪問日志壓縮的目的;
[0029]本發(fā)明通過HASH值的計算進行檢索,加快SQL模式匹配速度,提高了檢索的效率。對SQL模式庫進行維護,定時將無效的SQL模式語句進行刪除,保持SQL模式庫的有效性。
【附圖說明】
[0030]圖1是本發(fā)明提供的一種電力業(yè)務系統(tǒng)SQL訪問日志壓縮方法流程圖
[0031]圖2是本發(fā)明提供的單詞結(jié)構體鏈表結(jié)構示意圖
[0032]圖3是本發(fā)明提供的SQL模式庫的結(jié)構示意圖
【具體實施方式】
[0033]下面結(jié)合附圖對本發(fā)明作進一步詳細說明。
[0034]本發(fā)明實施例就是提供一種電力業(yè)務系統(tǒng)SQL訪問日志壓縮方法,主要用于解決力業(yè)務系統(tǒng)數(shù)據(jù)庫SQL語句操作日志的數(shù)據(jù)量十分龐大,存儲分析困難的問題,通過本方法可以有效的對電力業(yè)務系統(tǒng)SQL訪問日志進行壓縮,便于從中提取有用的信息,提高資源的利用率,而不損失原數(shù)據(jù)的內(nèi)在信息。
[0035]電力業(yè)務系統(tǒng)SQL訪問日志壓縮方法包括:
[0036]根據(jù)SQL語句進行詞法解析后,分咼出用戶輸入和SQL主干語句,將用戶輸入部分提取出來用某個特定的通配符進行替代,這樣就可以將多條結(jié)構相似的SQL語句抽象為一條SQL語句;通過SQL模式匹配的方式,不斷學習將新的SQL模式加入到SQL模式庫中,構建SQL模式匹配引擎,對于沒有匹配成功的SQL語句則將SQL語句的模式增加到SQL模式庫中,并將模式的序號寫入SQL日志數(shù)據(jù)庫表中,對于匹配成功的SQL語句僅將得到模式庫的序號寫入SQL日志數(shù)據(jù)庫表中即可,達到SQL訪問日志壓縮的目的JtSQL模式庫進行維護,定時將無效的SQL模式語句進行刪除,保持SQL模式庫的有效性。
[0037]所述方法的詞法解析SQL日志包括:遍歷SQL語句包含的每一個字符,以空白符作為每個word的開始和結(jié)束,解析出SQL語句所包含的各個word,同時識別各個word的類型。目前,規(guī)定的word類型分為如下:關鍵字、標識符、數(shù)字、數(shù)字通配符、字符串通配符、運算操作符、邏輯操作符、分隔符、函數(shù)、操作對象、其它。將這些word存儲進單詞結(jié)構體中,多個單詞結(jié)構體鏈接成一個鏈表。同時根據(jù)解析的結(jié)