国产精品1024永久观看,大尺度欧美暖暖视频在线观看,亚洲宅男精品一区在线观看,欧美日韩一区二区三区视频,2021中文字幕在线观看

  • <option id="fbvk0"></option>
    1. <rt id="fbvk0"><tr id="fbvk0"></tr></rt>
      <center id="fbvk0"><optgroup id="fbvk0"></optgroup></center>
      <center id="fbvk0"></center>

      <li id="fbvk0"><abbr id="fbvk0"><dl id="fbvk0"></dl></abbr></li>

      一種適用于電力系統(tǒng)的數(shù)據(jù)解列及恢復(fù)方法、裝置制造方法

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