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