本發明提供了一種數據庫一致性校驗方法,尤其是一種配電自動化跨區數據庫一致性校驗方法。
背景技術:
在某些對系統、數據安全性要求較高的領域,如電網領域,需要按照電網生產影響的緊要程度對網絡進行分區,同時實現各個分區間的物理隔離,保障信息通信安全。但實際情況下,兩個或以上的分區網絡需要對某些數據進行共享的需求十分明顯,例如,配電調度自動化系統的數據庫建立在Ⅰ區,而電網生產管理信息系統建立在Ⅲ區,如果在Ⅲ區配網停電搶修業務需要了解Ⅰ區配電自動化系統中的配網故障情況,那么就需要在Ⅲ區有個實時鏡像庫保持與Ⅰ區配電調度自動化系統數據庫保持一致。為此,在Ⅰ區建立了主數據庫,Ⅲ區建立了鏡像庫,將Ⅰ區數據庫變化如執行的SQL語句腳本文件通過網絡隔離裝置傳送到Ⅲ區,Ⅲ區數據庫根據傳送來的SQL語句腳本文件,同步更新Ⅲ區鏡像數據庫,從而保證Ⅰ、Ⅲ區數據庫在網絡隔離狀態下的數據一致。但在實際運行維護中,經常由于網絡通道丟包、數據處理負載等原因造成同步Ⅰ區傳送命令丟失、未執行或延遲等,造成Ⅰ、Ⅲ區數據庫不一致現象。這些異常通過人工都難以及時發現,往往給Ⅲ區中的電網信息管理工作造成困擾后,才發現問題。因此,如何快速檢測電網分區同步數據庫數據的一致性,是目前困擾調度信息維護人員的一項主要問題。
技術實現要素:
本發明要解決的技術問題是現有的電網分區同步數據庫缺乏有效的數據一致性校驗方法,導致調度信息維護人員工作效率低下。
為了解決上述技術問題,本發明提供了一種配電自動化跨區數據庫一致性校驗方法,包括如下步驟:
步驟1,在鏡像數據庫所在網絡中建立自動觀察窗口,自動觀察窗口用于將數據劃分為靜態數據、動態增量數據以及動態更新數據這三種管理類型,并按照用戶對需要檢測一致性數據的特性和檢測需求將主數據庫組成的數據對象推送到三種管理類型相對應的檢測窗口中;
步驟2,檢測窗口對推送到窗口的數據對象進行一致性校驗,具體為:
檢測窗口在對靜態數據的一致性進行校驗時,首先將主數據庫和鏡像數據庫中的被用戶羅列在自動觀察窗口中的數據表結構和數據存儲到XML文件中,其中,主數據庫生成文件通過物理隔離裝置從主數據庫所在區域傳送到鏡像數據庫所在網絡區域,通過主數據庫和鏡像數據庫雙方文件大小的比較來檢驗靜態數據的一致性;
檢測窗口在對動態增量數據的一致性進行校驗時,分為兩種情況,一種帶有時標的動態增量數據,另一種則不帶有時標,對于帶有時標的動態增量數據一致性檢查,首先鏡像數據庫需要延遲一個時間空隙,查詢出上一次檢測至當前時間內的總記錄數據,通過總記錄數據是否一致來直接進行一致性判定,對于不帶有時標的動態增量數據,則將整體數據中任一主鍵或索引字段倒序排列,以主數據庫文件為準,通過主數據庫和鏡像數據庫中該數據對象記錄數是否一致進行一致性判定;
檢測窗口在對動態更新數據的一致性進行校驗時,需要將整體數據按照索引或主鍵字段排序后,切分成若干區域,利用分布式計算方式,通過多個計算機進程對不同區域進行詳細比較,從而實現對動態更新數據的一致性進行校驗。
采用將數據劃分為靜態數據、動態增量數據以及動態更新數據這三種管理類型,從而有針對性地進行數據一致性校驗,不僅具有較好的校驗效率,而且可適應性采用專用方法進行校驗,提高了校驗的可靠性;采用切分成若干區域對動態更新數據的一致性進行校驗,將大大提高數據一致性問題發掘的效率。
作為本發明的進一步限定方案,步驟2中,在各個檢測窗口對三種管理類型的數據對象進行一致性校驗前,各個檢測窗口需要為推送到窗口中的數據對象設定優先權值,同時記錄每個檢測周期發現問題的數據對象。利用設定優先權值來對校驗數據的先后順序進行限定,不僅使數據校驗有序進行,而且使得校驗工作的效率也較高。
作為本發明的進一步限定方案,步驟2中,自動觀察窗口根據不一致次數*權值/檢查次數的方式計算優先權值,優先權值高的數據對象將自動排在優先的順序進行檢測。
作為本發明的進一步限定方案,步驟1中,靜態數據是指對數據不一致性檢查周期較長或相對檢查周期基本沒有多大變化的數據,動態增量數據是指數據呈現單一增長變化沒有更新的數據,動態更新數據是指數據內容存在有增有減或內容更新的數據。
作為本發明的進一步限定方案,步驟2中,時間空隙為系統要求的傳輸延遲。
本發明的有益效果在于:(1)采用將數據劃分為靜態數據、動態增量數據以及動態更新數據這三種管理類型,從而有針對性地進行數據一致性校驗,不僅具有較好的校驗效率,而且可適應性采用專用方法進行校驗,提高了校驗的可靠性;(2)采用切分成若干區域對動態更新數據的一致性進行校驗,將大大提高數據一致性問題發掘的效率;(3)對主流數據庫產品沒有特殊要求,實現數據一致性判定的方法也無需在數據庫層增加更多的底層細節,可以方便靈活的實現客戶對不同分區數據庫的快速檢測。
附圖說明
圖1為本發明實現方法的具體實施流程圖。
具體實施方式
下面結合附圖和實例對本發明作進一步的說明。
如圖1所示,本發明提供了一種配電自動化跨區數據庫一致性校驗方法,包括以下步驟:
A、用戶維護自動觀察窗口數據對象
用戶在數據自動觀察窗口維護主、鏡像數據庫中需要檢查的靜態的或者動態數據對象。
B、啟動數據觀察窗口工作
完成維護后,通過按鈕啟動數據自動觀察工作。
C、根據發現問題頻率和權值計算優先級并排列數據對象
檢測窗口將根據當前對象發現不一致性歷史累積次數占總檢查次數的百分比乘以用戶設定權值進行優先級排序。
D、讀取一個數據對象
讀取優先級排序形成的數據對象列表中的最靠前數據對象。
E、判定數據觀察窗口數據類型
判定該數據對象所在的窗口類型,如果是靜態數據則轉入步驟F,如果是動態增量數據則轉入步驟J,如果是動態更新數據則轉入步驟P。
F、生成主、鏡像數據庫靜態數據XML文件
主、鏡像數據庫網絡區域中各自生成該靜態數據對象的XML文件。
G、將主數據庫靜態數據文件傳送到鏡像數據庫分區
將主數據庫靜態文件傳送到鏡像數據庫分區中。
H、比較文件大小是否一致
檢測窗口對傳送來的主數據庫靜態數據XML文件與鏡像數據庫的XML文件進行文件大小比較,看是否一致,如果一致,轉入步驟I,如果不一致,轉入步驟O。
I、是否存在下一個數據對象
判斷自動觀察窗口中是否還存在本輪檢查尚未執行的數據對象,如果存在,轉入步驟D,如果不存在,結束本次自動觀察任務流程,等待下一個時間間隔的檢查。
J、推遲一個時間空隙,并記錄下當前時間
首先鏡像數據庫所在網絡分區中的數據觀察窗口記錄下當前時間,并將上次檢查成功的時間及記錄下的當前時間形成臨時文件,通過隔離裝置發送到主數據庫網絡分區中。
K、判定數據對象是否帶有時標
判斷該動態增量數據對象是否是帶有時標的,如果帶有時標,則轉入步驟L,如果不帶有時標,則轉入步驟N。
L、按時標倒序查詢出上一次檢測至記錄下的當前時間內的數據
主數據庫接收到文件后,執行文件中定義的起止時間段時標范圍的數據查詢,返回結果記錄數。
M、比較記錄數是否一致
鏡像數據庫區也按照同樣條件查詢出結果數,通過主數據庫與鏡像數據庫查詢的結果條數進行比較,判斷結果數是否一致,一致則轉入步驟I,不一致則轉入步驟P。
N、按照某個主鍵或索引字段倒序排列
針對不帶時標的動態更新數據,按照主鍵或者索引字段的倒序排列,形成記錄數文件通過隔離裝置從主數據庫區域傳送到鏡像數據庫區域,轉入步驟M判斷。
O、標注該數據對象存在不一致現象
標注分析出不一致數據對象,并記錄到告警日志中,通過郵件或短信形式告知用戶。
P、按照用戶定義的條件優選排列查詢并切分數據
針對動態更新數據,只能按照主鍵或索引倒序排列條件逐個區域范圍進行查詢,例如5千條一個單位對數據10萬進行檢查,若隊列太多,可通過多進程或分布式計算方式。由于動態更新數據,按照用戶維護數據的工作習慣,通常集中在一個段或某個與日常工作相關的條件范圍內,因此,在自動觀察窗口通過設定額外條件,將查詢結果集以文件形式從主數據庫網絡分區傳送到鏡像數據庫網絡分區中再進行切分將大大提高數據一致性問題發掘的效率。
R、數據區是否存在變化
對照結果集文件逐項比較是否存在變化,如果存在則轉入步驟O,如果不存在則轉入步驟I。
以上內容是結合具體實施方式對本發明所作的進一步詳細說明,不能認定本發明的具體實施只局限于這些說明。本發明未涉及部分均與現有技術相同或可采用現有技術加以實現。