一種適用于電力系統的數據解列及恢復方法、裝置制造方法【專利摘要】本發明公開了一種適用于電力系統的數據解列及恢復方法、裝置,其中方法包括,在電力系統的平臺層中設置第一數據庫和數據恢復單元。其中第一數據庫運行在內存中,由第二數據庫中的電網模型以及靜態參數在內存中的實時映像組成,用于向調度自動化系統提供電網模型以及靜態參數的查詢。數據恢復單元負責所有的與第二數據庫相關的讀寫操作,在有數據寫入時,按照時標特性將歷史數據進行存儲并在第二數據庫正常時寫入第二數據庫。本發明實現了在第二數據庫故障時,電力系統仍能進行電網模型以及靜態參數的查詢,以保證基本功能不受影響,并實現了在第二數據庫恢復正常后,故障期間的歷史數據能夠恢復,保證了數據的連續性和完整性。【專利說明】—種適用于電力系統的數據解列及恢復方法、裝置【
技術領域:
】[0001]本發明涉及電力系統調度自動化【
技術領域:
】,尤其涉及一種適用于電力系統的數據解列及恢復方法、裝置。【
背景技術:
】[0002]早期的電力系統是不使用數據庫(本發明中指商用庫,即關系型數據庫)的,其數據保存都是采用文件的私有格式進行管理,這種數據管理方式的主要問題在于信息檢索比較困難,另外由于沒有開放的接口,信息再利用工作難以展開。隨著數據庫技術的成熟以及調度自動化系統的發展,國內的調度自動化系統開始使用數據庫,數據保存與檢索能力大大提高,然而多了一個環節就多了一個故障點,數據庫數據庫管理系統本身有時會發生故障而不能正常工作。數據庫故障時,既無法提供數據的檢索服務,影響了電力系統的基本SCADA/AGC(四遙:遙信、遙測、遙控、遙調)功能,也無法將實時數據進行存儲以形成歷史數據,影響了歷史信息的連續性和完整性。為此需要提供一種方法以解決上述問題。【
發明內容】[0003]為了實現在電力系統中數據庫故障的有效隔離,使得在數據庫故障的情況下,電力調度自動化系統的基本功能不受影響,同時當數據庫恢復正常以后,故障期間的歷史數據能夠順利恢復,不丟失任何信息,確保歷史信息的連續性和完整性,本發明提供了一種適用于電力系統的數據解列及恢復方法,該方法采用如下技術方案:當數據庫訪問層接收到對電網模型和靜態參數的讀取請求時,調用第一數據庫對應的接口TableOpen和TableGet在第一數據庫中進行查詢,TableOpen的輸入參數為constchar*app_name矛口constinttable_no;TableGet白勺輸人參數為char氺field—name,輸出參數為char**field_buf_ptr和intbufsize;當數據庫訪問層接收到對歷史數據的讀取請求時,調用第二數據庫對應的接口SelectSql通過數據恢復單元DB_SERVICE在第二數據庫中進行查詢,SelectSql的輸入參數為constchar*sql_str,輸出參數為TSelectResultStru_outout_select_result和SEQDBErrorStru_outout_db_error;其中,第一數據庫和數據恢復單元DB_SERVICE設置在電力系統的平臺層中,第一數據庫以及第二數據庫構成系統的整體數據庫環境;第一數據庫運行在內存中,由第二數據庫中的電網模型以及靜態參數在內存中的實時映像組成;第二數據庫中存儲有電網模型、靜態參數和歷史數據;訪問第一數據庫的接口和訪問第二數據庫的接口統一封裝在數據庫訪問層中;數據恢復單元DB_SERVICE負責所有的與第二數據庫相關的讀寫操作:當所述數據恢復單元DB_SERVICE接收到寫入性質的請求時,調用db_Commit服務進程的主線程將每次接收到的帶有時標特性的歷史數據逐一寫到不同文件中,并將這些文件按照時間的順序保存在硬盤文件系統中,形成一組文件序列,同時另外一個線程判斷第二數據庫的狀態,若第二數據庫正常則按照時間順序讀取所述文件序列,解析其內容后寫入第二數據庫,若第二數據庫不正常,則進入循環等待狀態;當數據恢復單元DB_SERVICE接收到第一數據庫的同步請求時,調用同步程序DB_Modify_Server將第一數據庫中的實時數據寫入到第二數據庫中作為歷史數據存儲,當當數據恢復單元DB_SERVICE接收到第二數據庫的同步請求時,調用同步程序DB_Modify_Server讀取第二數據庫中的電網模型和靜態參數來更新第一數據庫;在數據恢復單元DB_SERVICE中,電網模型、靜態參數以及歷史數據的訪問被封裝為不同的服務。[0004]本發明還提供了一種適用于電力系統的數據解列及恢復裝置,該裝置包括:第一數據庫、數據恢復單元DB_SERVICE以及第二數據庫;其中,第一數據庫和數據恢復單元DB_SERVICE設置在電力系統的平臺層中,第一數據庫以及第二數據庫構成系統的整體數據庫環境;第一數據庫運行在內存中,由第二數據庫中的電網模型以及靜態參數在內存中的實時映像組成;第二數據庫中存儲有電網模型、靜態參數和歷史數據;訪問第一數據庫的接口和訪問第二數據庫的接口統一封裝在數據庫訪問層中;第一數據庫,用于在數據庫訪問層接收到對電網模型和靜態參數的讀取請求時,調用第一數據庫對應的接口TableOpen和TableGet進行查詢,TableOpen的輸入參數為constchar*app_name和constinttable_no;TableGet的輸入參數為char*field_name,輸出參數為char林field_buf_ptr和intbufsize;第一數據庫,還用于通過數據恢復單元DB_SERVICE中的同步程序DB_Modify_Server將實時數據寫入到第二數據庫中作為歷史數據存儲;第二數據庫,用于在數據庫訪問層接收到對歷史數據的讀取請求時,調用第二數據庫對應的接口SelectSql通過數據恢復單元DB_SERVICE在進行查詢,SelectSql的輸入參數為constchar*sql_str,輸出參數為TSelectResultStru_outout_select_result和SEQDBErrorStru_outout_db_error;第二數據庫,還用于通過數據恢復單元DB_SERVICE中的同步程序DB_Modify_Server讀取第二數據庫中的電網模型和靜態參數來更新第一數據庫;數據恢復單元DB_SERVICE,用于負責所有的與第二數據庫相關的讀寫操作;數據恢復單元DB_SERVICE將電網模型、靜態參數以及歷史數據的訪問封裝為不同的服務;所述數據恢復單元DB_SERVICE,具體用于在接收到寫入性質的請求時,調用db_commit服務進程的主線程將每次接收到的帶有時標特性的歷史數據逐一寫到不同文件中,并將這些文件按照時間的順序保存在硬盤文件系統中,形成一組文件序列,同時調用另外一個線程在第二數據庫正常時按照時間順序讀取所述文件序列,解析其內容后寫入第二數據庫,在第二數據庫不正常時,進入循環等待狀態。[0005]根據本發明提供的具體實施例,本發明公開了以下技術效果:本發明中,在電力系統的平臺層中設置了存儲有電網模型和靜態參數的第一數據庫,既可以滿足電力系統對模型和靜態參數的高速訪問,也可以實現第二數據庫故障時電力系統依然可通過訪問第一數據庫讀取原先電網模型和靜態參數的要求,保證了電力系統的基本功能。設置數據恢復單元,在有寫入性質請求時,根據時標特性存儲歷史數據,并在第二數據庫正常時,將歷史數據寫入第二數據庫,保證了歷史數據的連續性和完整性。【專利附圖】【附圖說明】[0006]為了更清楚地說明本發明實施例或現有技術中的技術方案,下面將對實施例中所需要使用的附圖作簡單地介紹,顯而易見地,下面描述中的附圖僅僅是本發明的一些實施例,對于本領域普通技術人員來講,在不付出創造性勞動性的前提下,還可以根據這些附圖獲得其他的附圖。[0007]圖1是本發明系統典型數據庫環境圖;圖2是數據恢復單元處理寫入請求的流程圖。【具體實施方式】[0008]下面將結合本發明實施例中的附圖,對本發明實施例中的技術方案進行清楚、完整地描述,顯然,所描述的實施例僅僅是本發明一部分實施例,而不是全部的實施例。基于本發明中的實施例,本領域普通技術人員在沒有做出創造性勞動前提下所獲得的所有其他實施例,都屬于本發明保護的范圍。[0009]為使本發明更加清楚,首先對以下實施例中將要涉及的名詞進行解釋。[0010]第二數據庫,本發明中指商用庫,即電力關系型數據庫,用于提供數據的保存和檢索。其中存儲有電網模型、靜態參數和歷史數據。[0011]電網模型,電力系統中的主要對象及其相關屬性的抽象描述,如變電站、變壓器、母線、斷路器等。[0012]靜態參數,是調度自動化系統正常運行所需要的配置參數,如各個進程的啟停配置、系統數據源地址、系統界面樣式等。[0013]歷史數據,本發明中是指電網運行過程中隨著時間推移而快速增長的采樣數據,從采集裝置采樣到的時候是實時數據,但存到第二數據庫之后即稱為歷史數據,這些數據包括遙測數據、遙信變位信息、系統告警信息等動態數據。[0014]本發明實施例1提供了一種適用于電力系統的第二數據庫故障隔離方法,應用本發明的方法時,需要調度自動化系統對第二數據庫以及第一數據庫混合環境的支持。[0015]在電力系統的平臺層中設置一個第一數據庫。如圖1所示,此時,系統的整體數據庫環境擴展到由第一數據庫和第二數據庫共同構成。具體的,在數據訪問接口層中增加訪問第一數據庫的接口,與原有的數據訪問接口即第二數據庫訪問接口進行統一的封裝,實現系統中數據庫環境對應用的透明。[0016]第一數據庫運行在內存中,由第二數據庫中的電網模型以及靜態參數在內存中的實時映像組成,并由同步程序DB_Modify_Server負責第一數據庫中與第二數據庫中的同步。具體的,同步程序DB_Modify_Server將第一數據庫中的實時數據寫入到第二數據庫中作為歷史數據存儲,并讀取第二數據庫中的電網模型和靜態參數來更新第一數據庫。[0017]在其中一個實施例中,可在第一數據庫首次運行時,通過同步程序將第二數據庫中的電網模型和靜態參數加載到第二數據庫中。在后續的運行中,可周期性的或在第一數據庫需要時進行同步。[0018]本發明中,當訪問接口層接收到數據訪問請求時,若數據類型為電網模型和靜態參數,則調用第一數據庫對應的接口,在第一數據庫中進行檢索查詢。該接口為TableOpen和TableGet,TableOpen的輸入參數為constchar*app_name(應用名稱)和constinttable_no(內存庫表號);TableGet的輸入參數為char*field_name(內存庫表的域名),輸出參數為char**field_buf_ptr(輸出數據內存空間)和intbufsize(內存大小)。可見,該第一數據庫的設置滿足了電力系統的高速訪問需求,也避免了在第二數據庫故障時,無法進行電網模型和靜態參數訪問現象的發生。[0019]在電力系統的平臺層中設置一個數據恢復單元DB_SERVICE。如圖1所示,該服務具體設置于在第二數據庫訪問接口與第二數據庫之間。由其負責所有與第二數據庫相關的讀寫操作。在該服務中,將電網模型、靜態參數以及歷史數據的訪問封裝為不同的服務。[0020]當訪問接口層接收到數據訪問請求時,若數據類型為歷史數據,則調用第二數據庫對應的接口,通過數據恢復單元DB_SERVICE在第二數據庫中進行檢索查詢。該接口具體為SelectSql,其輸入參數為constchar*sql_str(查詢數據的sql語句),輸出參數為TSelectResultStru_outout_select_result(查詢的數據集)和SEQDBErrorStru_outout_db_error(執行結果字符串集合)。[0021]當數據恢復單元DB_SERVICE接收到第一數據庫對電網模型和靜態參數的同步請求時,從第二數據庫中加載對應的數據至第一數據庫。[0022]附圖2描述了數據恢復單元DB_SERVICE處理寫入請求的基本流程。應用程序將歷史數據寫入請求發送給進程名為db_Commit服務進程,該服務進程為多線程工作模式。其中,主線程判斷是否接收到新的請求,在接受到新請求后將請求按照時間順序以相應格式存儲在硬盤文件系統的某個特定目錄(緩存目錄)的文件序列中后返回應用程序;而(*_commit服務的另一線程周期性地判斷第二數據庫的狀態,如果狀態正常,則讀取緩存目錄中的文件,如果有文件則按照時間順序對文件序列進行解析,解析得到的內容直接向第二數據庫提交,提交成功則刪除該文件并進入下一次循環;如果第二數據庫狀態不正常,則直接進入循環等待狀態。[0023]通過數據恢復單元實現了在第二數據庫恢復正常后,故障期間的歷史數據能夠恢復,保證了數據的連續性和完整性。[0024]本發明還提供了一種適用于電力系統的數據解列及恢復裝置,具體包括第一數據庫、數據恢復單元DB_SERVICE以及第二數據庫;其中,第一數據庫和數據恢復單元DB_SERVICE設置在電力系統的平臺層中,第一數據庫以及第二數據庫構成系統的整體數據庫環境;第一數據庫運行在內存中,由第二數據庫中的電網模型以及靜態參數在內存中的實時映像組成;第二數據庫中存儲有電網模型、靜態參數和歷史數據;訪問第一數據庫的接口和訪問第二數據庫的接口統一封裝在數據庫訪問層中;第一數據庫,用于在數據庫訪問層接收到對電網模型和靜態參數的讀取請求時,調用第一數據庫對應的接口TableOpen和TableGet進行查詢,TableOpen的輸入參數為constchar*app_name和constinttable_no;TableGet的輸入參數為char*field_name,輸出參數為char林field_buf_ptr和intbufsize;第一數據庫,還用于通過數據恢復單元DB_SERVICE中的同步程序DB_Modify_Server將實時數據寫入到第二數據庫中作為歷史數據存儲;第二數據庫,用于在數據庫訪問層接收到對歷史數據的讀取請求時,調用第二數據庫對應的接口SelectSql通過數據恢復單元DB_SERVICE在進行查詢,SelectSql的輸入參數為constchar*sql_str,輸出參數為TSelectResultStru_outout_select_result和SEQDBErrorStru_outout_db_error;第二數據庫,還用于通過數據恢復單元DB_SERVICE中的同步程序DB_Modify_Server讀取第二數據庫中的電網模型和靜態參數來更新第一數據庫;數據恢復單元DB_SERVICE,用于負責所有的與第二數據庫相關的讀寫操作;數據恢復單元DB_SERVICE將電網模型、靜態參數以及歷史數據的訪問封裝為不同的服務;所述數據恢復單元DB_SERVICE,具體用于在接收到寫入性質的請求時,調用db_commit服務進程的主線程將每次接收到的帶有時標特性的歷史數據逐一寫到不同文件中,并將這些文件按照時間的順序保存在硬盤文件系統中,形成一組文件序列,同時調用另外一個線程在第二數據庫正常時按照時間順序讀取所述文件序列,解析其內容后寫入第二數據庫,在第二數據庫不正常時,進入循環等待狀態。[0025]以上對本發明所提供的適用于電力系統的數據解列及恢復方法和適用于電力系統的數據解列及恢復裝置,進行了詳細介紹,本文中應用了具體個例對本發明的原理及實施方式進行了闡述,以上實施例的說明只是用于幫助理解本發明的方法及其核心思想;同時,對于本領域的一般技術人員,依據本發明的思想,在【具體實施方式】及應用范圍上均會有改變之處。綜上所述,本說明書內容不應理解為對本發明的限制。【權利要求】1.一種適用于電力系統的數據解列及恢復方法,其特征在于,所述方法包括:當數據庫訪問層接收到對電網模型和靜態參數的讀取請求時,調用第一數據庫對應的接口TableOpen和TableGet在第一數據庫中進行查詢,TableOpen的輸入參數為constchar*app_name矛口constinttable_no;TableGet白勺輸人參數為char氺field—name,輸出參數為char**field_buf_ptr和intbufsize;當數據庫訪問層接收到對歷史數據的讀取請求時,調用第二數據庫對應的接口SelectSql通過數據恢復單元DB_SERVICE在第二數據庫中進行查詢,SelectSql的輸入參數為constchar*sql_str,輸出參數為TSelectResultStru_outout_select_result和SEQDBErrorStru_outout_db_error;其中,第一數據庫和數據恢復單元DB_SERVICE設置在電力系統的平臺層中,第一數據庫以及第二數據庫構成系統的整體數據庫環境;第一數據庫運行在內存中,由第二數據庫中的電網模型以及靜態參數在內存中的實時映像組成;第二數據庫中存儲有電網模型、靜態參數和歷史數據;訪問第一數據庫的接口和訪問第二數據庫的接口統一封裝在數據庫訪問層中;數據恢復單元DB_SERVICE負責所有的與第二數據庫相關的讀寫操作:當所述數據恢復單元DB_SERVICE接收到寫入性質的請求時,調用db_Commit服務進程的主線程將每次接收到的帶有時標特性的歷史數據逐一寫到不同文件中,并將這些文件按照時間的順序保存在硬盤文件系統中,形成一組文件序列,同時另外一個線程判斷第二數據庫的狀態,若第二數據庫正常則按照時間順序讀取所述文件序列,解析其內容后寫入第二數據庫,若第二數據庫不正常,則進入循環等待狀態;當數據恢復單元DB_SERVICE接收到第一數據庫的同步請求時,調用同步程序DB_Modify_Server將第一數據庫中的實時數據寫入到第二數據庫中作為歷史數據存儲,當當數據恢復單元DB_SERVICE接收到第二數據庫的同步請求時,調用同步程序DB_Modify_Server讀取第二數據庫中的電網模型和靜態參數來更新第一數據庫;在數據恢復單元DB_SERVICE中,電網模型、靜態參數以及歷史數據的訪問被封裝為不同的服務。2.一種適用于電力系統的數據解列及恢復裝置,其特征在于,所述裝置包括:第一數據庫、數據恢復單元DB_SERVICE以及第二數據庫;其中,第一數據庫和數據恢復單元DB_SERVICE設置在電力系統的平臺層中,第一數據庫以及第二數據庫構成系統的整體數據庫環境;第一數據庫運行在內存中,由第二數據庫中的電網模型以及靜態參數在內存中的實時映像組成;第二數據庫中存儲有電網模型、靜態參數和歷史數據;訪問第一數據庫的接口和訪問第二數據庫的接口統一封裝在數據庫訪問層中;第一數據庫,用于在數據庫訪問層接收到對電網模型和靜態參數的讀取請求時,調用第一數據庫對應的接口TableOpen和TableGet進行查詢,TableOpen的輸入參數為constchar*app_name和constinttable_no;TableGet的輸入參數為char*field_name,輸出參數為char林field_buf_ptr和intbufsize;第一數據庫,還用于通過數據恢復單元DB_SERVICE中的同步程序DB_Modify_Server將實時數據寫入到第二數據庫中作為歷史數據存儲;第二數據庫,用于在數據庫訪問層接收到對歷史數據的讀取請求時,調用第二數據庫對應的接口SelectSql通過數據恢復單元DB_SERVICE在進行查詢,SelectSql的輸入參數為constchar*sql_str,輸出參數為TSelectResultStru_outout_select_result和SEQDBErrorStru_outout_db_error;第二數據庫,還用于通過數據恢復單元DB_SERVICE中的同步程序DB_Modify_Server讀取第二數據庫中的電網模型和靜態參數來更新第一數據庫;數據恢復單元DB_SERVICE,用于負責所有的與第二數據庫相關的讀寫操作;數據恢復單元DB_SERVICE將電網模型、靜態參數以及歷史數據的訪問封裝為不同的服務;所述數據恢復單元DB_SERVICE,具體用于在接收到寫入性質的請求時,調用db_commit服務進程的主線程將每次接收到的帶有時標特性的歷史數據逐一寫到不同文件中,并將這些文件按照時間的順序保存在硬盤文件系統中,形成一組文件序列,同時調用另外一個線程在第二數據庫正常時按照時間順序讀取所述文件序列,解析其內容后寫入第二數據庫,在第二數據庫不正常時,進入循環等待狀態。【文檔編號】G06F17/30GK104346364SQ201310325319【公開日】2015年2月11日申請日期:2013年7月30日優先權日:2013年7月30日【發明者】趙家慶,趙京虎,蘇大威,張珂珩,李匯群,徐春雷,霍雪松,周宇植,楊洪,李春,呂洋,丁宏恩,錢科軍,唐勝,李佩玨申請人:國家電網公司,江蘇省電力公司蘇州供電公司,江蘇瑞中數據股份有限公司,江蘇省電力公司