本發(fā)明涉及電網(wǎng)信息通信技術(shù)領(lǐng)域,尤其涉及一種電網(wǎng)歷史數(shù)據(jù)管理方法及其系統(tǒng)。
背景技術(shù):
目前大部分的業(yè)務(wù)需要對電網(wǎng)的分析都是對運(yùn)行態(tài)的電網(wǎng)資源做實(shí)時分析。人們對于電網(wǎng)的理解也是基于生產(chǎn)環(huán)境中的現(xiàn)有運(yùn)行電網(wǎng)。在電網(wǎng)GIS平臺中,電網(wǎng)資源的存儲也僅僅是現(xiàn)有運(yùn)行態(tài)的電網(wǎng)資源,不具有處理數(shù)據(jù)的時間動態(tài)性,它只是描述數(shù)據(jù)的瞬時狀態(tài)。當(dāng)數(shù)據(jù)發(fā)生變化時,用新數(shù)據(jù)代替舊數(shù)據(jù),系統(tǒng)成為另一個瞬態(tài),舊數(shù)據(jù)不復(fù)存在。在如今的大數(shù)據(jù)時代,這些舊數(shù)據(jù)的丟棄無疑是電網(wǎng)信息系統(tǒng)的一種損失。
技術(shù)實(shí)現(xiàn)要素:
本發(fā)明所要解決的技術(shù)問題是:提出一種電網(wǎng)歷史數(shù)據(jù)管理方法及其系統(tǒng),可快速查詢到任何時間點(diǎn)下的歷史斷面數(shù)據(jù)。
為了解決上述技術(shù)問題,本發(fā)明采用的技術(shù)方案為:一種電網(wǎng)歷史數(shù)據(jù)管理方法,包括:
創(chuàng)建基版數(shù)據(jù)表及其對應(yīng)的歷史數(shù)據(jù)表;
在所述基版數(shù)據(jù)表中增加第一時間字段,在所述歷史數(shù)據(jù)表中增加第二時間字段和消亡字段,所述第一時間字段用于記錄最新一次編輯的時間;
若對基版數(shù)據(jù)表中的一數(shù)據(jù)進(jìn)行編輯操作,則將編輯前的所述一數(shù)據(jù)記錄到所述基版數(shù)據(jù)表對應(yīng)的歷史數(shù)據(jù)表中,將編輯前所述一數(shù)據(jù)的第一時間字段中記錄的時間記錄到所述歷史數(shù)據(jù)表中所述一數(shù)據(jù)對應(yīng)的第二時間字段中,將所述編輯操作的編輯時間寫入對應(yīng)的消亡字段中;
若要查詢一時間點(diǎn)時對應(yīng)的基版數(shù)據(jù)表,則從基版數(shù)據(jù)表中獲取第一時間字段中記錄的時間早于等于所述一時間點(diǎn)的數(shù)據(jù);
從歷史數(shù)據(jù)表中獲取第二時間字段中記錄的時間早于等于所述一時間點(diǎn)且消亡字段中記錄的時間晚于所述一時間點(diǎn)的數(shù)據(jù);
合并從基版數(shù)據(jù)表獲取的數(shù)據(jù)和從歷史數(shù)據(jù)表中獲取的數(shù)據(jù)。
本發(fā)明還涉及一種電網(wǎng)歷史數(shù)據(jù)管理系統(tǒng),包括:
第一創(chuàng)建模塊,用于創(chuàng)建基版數(shù)據(jù)表及其對應(yīng)的歷史數(shù)據(jù)表;
增加模塊,用于在所述基版數(shù)據(jù)表中增加第一時間字段,在所述歷史數(shù)據(jù)表中增加第二時間字段和消亡字段,所述第一時間字段用于記錄最新一次編輯的時間;
記錄模塊,用于若對基版數(shù)據(jù)表中的一數(shù)據(jù)進(jìn)行編輯操作,則將編輯前的所述一數(shù)據(jù)記錄到所述基版數(shù)據(jù)表對應(yīng)的歷史數(shù)據(jù)表中,將編輯前所述一數(shù)據(jù)的第一時間字段中記錄的時間記錄到所述歷史數(shù)據(jù)表中所述一數(shù)據(jù)對應(yīng)的第二時間字段中,將所述編輯操作的編輯時間寫入對應(yīng)的消亡字段中;
第一獲取模塊,用于若要查詢一時間點(diǎn)時對應(yīng)的基版數(shù)據(jù)表,則從基版數(shù)據(jù)表中獲取第一時間字段中記錄的時間早于等于所述一時間點(diǎn)的數(shù)據(jù);
第二獲取模塊,用于從歷史數(shù)據(jù)表中獲取第二時間字段中記錄的時間早于等于所述一時間點(diǎn)且消亡字段中記錄的時間晚于所述一時間點(diǎn)的數(shù)據(jù);
合并模塊,用于合并從基版數(shù)據(jù)表獲取的數(shù)據(jù)和從歷史數(shù)據(jù)表中獲取的數(shù)據(jù)。
本發(fā)明的有益效果在于:只將基版數(shù)據(jù)表中被刪除和被修改的數(shù)據(jù)存入歷史數(shù)據(jù)表,可減少歷史數(shù)據(jù)表的數(shù)據(jù)量,節(jié)約歷史數(shù)據(jù)表的存儲空間;通過在基版數(shù)據(jù)表中記錄最新編輯時間,在歷史數(shù)據(jù)表中記錄被編輯的數(shù)據(jù)的上一次編輯時間以及最后編輯時間,并基于基版數(shù)據(jù)表和歷史數(shù)據(jù)表的數(shù)據(jù)疊加方式來管理歷史數(shù)據(jù),可準(zhǔn)確提取指定時間點(diǎn)的歷史數(shù)據(jù),從而實(shí)現(xiàn)歷史數(shù)據(jù)的有效保留。
附圖說明
圖1為本發(fā)明一種電網(wǎng)歷史數(shù)據(jù)管理方法的流程圖;
圖2為本發(fā)明實(shí)施例一的電網(wǎng)數(shù)據(jù)流轉(zhuǎn)示意圖;
圖3為本發(fā)明實(shí)施例一的方法流程圖;
圖4為本發(fā)明實(shí)施例二的方法流程圖;
圖5為本發(fā)明一種電網(wǎng)歷史數(shù)據(jù)管理系統(tǒng)的結(jié)構(gòu)示意圖;
圖6為本發(fā)明實(shí)施例四的系統(tǒng)結(jié)構(gòu)示意圖。
標(biāo)號說明:
1、第一創(chuàng)建模塊;2、增加模塊;3、記錄模塊;4、第一獲取模塊;
5、第二獲取模塊;6、合并模塊;7、第二創(chuàng)建模塊;8、關(guān)聯(lián)模塊;
31、第一記錄單元;32、第二記錄單元;33、寫入單元;
41、第一獲取單元;42、第二獲取單元;43、第三獲取單元。
具體實(shí)施方式
為詳細(xì)說明本發(fā)明的技術(shù)內(nèi)容、所實(shí)現(xiàn)目的及效果,以下結(jié)合實(shí)施方式并配合附圖詳予說明。
本發(fā)明最關(guān)鍵的構(gòu)思在于:基于基版數(shù)據(jù)表和歷史數(shù)據(jù)表的數(shù)據(jù)疊加方式來管理歷史數(shù)據(jù)。
請參閱圖1,一種電網(wǎng)歷史數(shù)據(jù)管理方法,包括:
創(chuàng)建基版數(shù)據(jù)表及其對應(yīng)的歷史數(shù)據(jù)表;
在所述基版數(shù)據(jù)表中增加第一時間字段,在所述歷史數(shù)據(jù)表中增加第二時間字段和消亡字段,所述第一時間字段用于記錄最新一次編輯的時間;
若對基版數(shù)據(jù)表中的一數(shù)據(jù)進(jìn)行編輯操作,則將編輯前的所述一數(shù)據(jù)記錄到所述基版數(shù)據(jù)表對應(yīng)的歷史數(shù)據(jù)表中,將編輯前所述一數(shù)據(jù)的第一時間字段中記錄的時間記錄到所述歷史數(shù)據(jù)表中所述一數(shù)據(jù)對應(yīng)的第二時間字段中,將所述編輯操作的編輯時間寫入對應(yīng)的消亡字段中;
若要查詢一時間點(diǎn)時對應(yīng)的基版數(shù)據(jù)表,則從基版數(shù)據(jù)表中獲取第一時間字段中記錄的時間早于等于所述一時間點(diǎn)的數(shù)據(jù);
從歷史數(shù)據(jù)表中獲取第二時間字段中記錄的時間早于等于所述一時間點(diǎn)且消亡字段中記錄的時間晚于所述一時間點(diǎn)的數(shù)據(jù);
合并從基版數(shù)據(jù)表獲取的數(shù)據(jù)和從歷史數(shù)據(jù)表中獲取的數(shù)據(jù)。
從上述描述可知,本發(fā)明的有益效果在于:可減少歷史數(shù)據(jù)表的數(shù)據(jù)量,節(jié)約歷史數(shù)據(jù)表的存儲空間,且可快速查詢到任何時間點(diǎn)下的歷史斷面數(shù)據(jù)。
進(jìn)一步地,所述“創(chuàng)建基版數(shù)據(jù)表及其對應(yīng)的歷史數(shù)據(jù)表”之前,進(jìn)一步包括:
創(chuàng)建批次號序列,所述批次號序列中的批次號從小到大依次排序。
進(jìn)一步地,所述“在所述基版數(shù)據(jù)表中增加第一時間字段”之后,進(jìn)一步包括:
根據(jù)編輯操作的時間先后順序,將第一時間字段下的時間與批次號序列中依次取出的批次號進(jìn)行關(guān)聯(lián)。
進(jìn)一步地,所述“若對基版數(shù)據(jù)表中的一數(shù)據(jù)進(jìn)行編輯操作,則將編輯前的所述一數(shù)據(jù)記錄到所述基版數(shù)據(jù)表對應(yīng)的歷史數(shù)據(jù)表中,將編輯前所述一數(shù)據(jù)的第一時間字段中記錄的時間記錄到所述歷史數(shù)據(jù)表中所述一數(shù)據(jù)對應(yīng)的第二時間字段中,將所述編輯操作的編輯時間寫入對應(yīng)的消亡字段中”具體為:
若對基版數(shù)據(jù)表中的一數(shù)據(jù)進(jìn)行編輯操作,則將編輯前的所述一數(shù)據(jù)記錄到所述基版數(shù)據(jù)表對應(yīng)的歷史數(shù)據(jù)表中;
將編輯前所述一數(shù)據(jù)的第一時間字段中記錄的批次號記錄到所述歷史數(shù)據(jù)表中所述一數(shù)據(jù)對應(yīng)的第二時間字段中;
將所述編輯操作的編輯時間對應(yīng)的批次號寫入對應(yīng)的消亡字段中。
進(jìn)一步地,所述“若要查詢一時間點(diǎn)時對應(yīng)的基版數(shù)據(jù)表,則從基版數(shù)據(jù)表中獲取第一時間字段中記錄的時間早于等于所述一時間點(diǎn)的數(shù)據(jù);從歷史數(shù)據(jù)表中獲取第二時間字段中記錄的時間早于等于所述一時間點(diǎn)且消亡字段中記錄的時間晚于所述一時間點(diǎn)的數(shù)據(jù)”具體為:
若要查詢一時間點(diǎn)時對應(yīng)的基版數(shù)據(jù)表,則獲取所述一時間點(diǎn)對應(yīng)的批次號;
從基版數(shù)據(jù)表中獲取第一時間字段中記錄的批次號小于等于所述一時間點(diǎn)對應(yīng)的批次號的數(shù)據(jù);
從歷史數(shù)據(jù)表中獲取第二時間字段中記錄的批次號小于等于所述一時間點(diǎn)對應(yīng)的批次號且消亡字段中記錄的批次號大于所述一時間點(diǎn)對應(yīng)的批次號的數(shù)據(jù)。
進(jìn)一步地,所述“獲取所述一時間點(diǎn)對應(yīng)的批次號”之后,進(jìn)一步包括:
若所述一時間點(diǎn)無對應(yīng)的批次號,則在編輯時間與批次號的關(guān)聯(lián)關(guān)系中獲取與所述一時間點(diǎn)相鄰且早于所述一時間點(diǎn)的編輯時間對應(yīng)的批次號,作為所述一時間點(diǎn)對應(yīng)的批次號。
由上述描述可知,通過用從小到大排序的批次號來替代編輯時間,進(jìn)一步節(jié)約了存儲空間,且可使電網(wǎng)管理人員直觀地了解編輯的先后順序。
請參照圖5,本發(fā)明還提出一種電網(wǎng)歷史數(shù)據(jù)管理系統(tǒng),包括:
第一創(chuàng)建模塊,用于創(chuàng)建基版數(shù)據(jù)表及其對應(yīng)的歷史數(shù)據(jù)表;
增加模塊,用于在所述基版數(shù)據(jù)表中增加第一時間字段,在所述歷史數(shù)據(jù)表中增加第二時間字段和消亡字段,所述第一時間字段用于記錄最新一次編輯的時間;
記錄模塊,用于若對基版數(shù)據(jù)表中的一數(shù)據(jù)進(jìn)行編輯操作,則將編輯前的所述一數(shù)據(jù)記錄到所述基版數(shù)據(jù)表對應(yīng)的歷史數(shù)據(jù)表中,將編輯前所述一數(shù)據(jù)的第一時間字段中記錄的時間記錄到所述歷史數(shù)據(jù)表中所述一數(shù)據(jù)對應(yīng)的第二時間字段中,將所述編輯操作的編輯時間寫入對應(yīng)的消亡字段中;
第一獲取模塊,用于若要查詢一時間點(diǎn)時對應(yīng)的基版數(shù)據(jù)表,則從基版數(shù)據(jù)表中獲取第一時間字段中記錄的時間早于等于所述一時間點(diǎn)的數(shù)據(jù);
第二獲取模塊,用于從歷史數(shù)據(jù)表中獲取第二時間字段中記錄的時間早于等于所述一時間點(diǎn)且消亡字段中記錄的時間晚于所述一時間點(diǎn)的數(shù)據(jù);
合并模塊,用于合并從基版數(shù)據(jù)表獲取的數(shù)據(jù)和從歷史數(shù)據(jù)表中獲取的數(shù)據(jù)。
進(jìn)一步地,還包括:
第二創(chuàng)建模塊,用于創(chuàng)建批次號序列,所述批次號序列中的批次號從小到大依次排序。
進(jìn)一步地,還包括:
關(guān)聯(lián)模塊,用于根據(jù)編輯操作的時間先后順序,將第一時間字段下的時間與批次號序列中依次取出的批次號進(jìn)行關(guān)聯(lián)。
進(jìn)一步地,所述記錄模塊包括:
第一記錄單元,用于若對基版數(shù)據(jù)表中的一數(shù)據(jù)進(jìn)行編輯操作,則將編輯前的所述一數(shù)據(jù)記錄到所述基版數(shù)據(jù)表對應(yīng)的歷史數(shù)據(jù)表中;
第二記錄單元,用于將編輯前所述一數(shù)據(jù)的第一時間字段中記錄的批次號記錄到所述歷史數(shù)據(jù)表中所述一數(shù)據(jù)對應(yīng)的第二時間字段中;
寫入單元,用于將所述編輯操作的編輯時間對應(yīng)的批次號寫入對應(yīng)的消亡字段中。
進(jìn)一步地,所述第一獲取模塊包括:
第一獲取單元,用于若要查詢一時間點(diǎn)時對應(yīng)的基版數(shù)據(jù)表,則獲取所述一時間點(diǎn)對應(yīng)的批次號;
第二獲取單元,用于從基版數(shù)據(jù)表中獲取第一時間字段中記錄的批次號小于等于所述一時間點(diǎn)對應(yīng)的批次號的數(shù)據(jù);
所述第二獲取模塊,具體用于從歷史數(shù)據(jù)表中獲取第二時間字段中記錄的批次號小于等于所述一時間點(diǎn)對應(yīng)的批次號且消亡字段中記錄的批次號大于所述一時間點(diǎn)對應(yīng)的批次號的數(shù)據(jù)。
進(jìn)一步地,所述第一獲取模塊還包括:
第三獲取單元,用于若所述一時間點(diǎn)無對應(yīng)的批次號,則在編輯時間與批次號的關(guān)聯(lián)關(guān)系中獲取與所述一時間點(diǎn)相鄰且早于所述一時間點(diǎn)的編輯時間對應(yīng)的批次號,作為所述一時間點(diǎn)對應(yīng)的批次號。
實(shí)施例一
本發(fā)明的實(shí)施例一為:一種電網(wǎng)歷史數(shù)據(jù)管理方法;在本發(fā)明中,將電網(wǎng)資源數(shù)據(jù)(包括圖形數(shù)據(jù)和設(shè)備臺賬數(shù)據(jù))分運(yùn)行態(tài)、編輯態(tài)和歷史態(tài)三種狀態(tài)進(jìn)行數(shù)據(jù)存儲和管理。電網(wǎng)資源數(shù)據(jù)的運(yùn)行態(tài)、編輯態(tài)和歷史態(tài)三種狀態(tài)以三套數(shù)據(jù)表來存儲,分別為基版數(shù)據(jù)表、版本數(shù)據(jù)表和歷史數(shù)據(jù)表。
運(yùn)行態(tài):當(dāng)前的電網(wǎng)網(wǎng)架數(shù)據(jù),以及所有設(shè)備的臺賬數(shù)據(jù),包括在運(yùn)、退運(yùn)以及現(xiàn)場留用的設(shè)備。
編輯態(tài):通過任務(wù)管理機(jī)制對圖形和設(shè)備臺賬的修改過程進(jìn)行管理,編輯態(tài)存儲任務(wù)中修改的圖形和設(shè)備臺賬數(shù)據(jù),在任務(wù)發(fā)布后數(shù)據(jù)的修改才能影響運(yùn)行態(tài)數(shù)據(jù)。編輯態(tài)起到與運(yùn)行態(tài)隔離的作用,保證運(yùn)行態(tài)資源數(shù)據(jù)的變動過程的可控,有序,安全。
歷史態(tài):存儲電網(wǎng)和設(shè)備臺賬的歷史狀態(tài)數(shù)據(jù),記錄電網(wǎng)和設(shè)備臺賬數(shù)據(jù)完整的變動修改過程,從而實(shí)現(xiàn)電網(wǎng)GIS多時態(tài)版本和設(shè)備臺賬斷面功能,實(shí)現(xiàn)歷史電網(wǎng)網(wǎng)架和設(shè)備臺賬的瀏覽查看。
電網(wǎng)數(shù)據(jù)流轉(zhuǎn)示意圖如圖2所示。電網(wǎng)經(jīng)過規(guī)劃、建設(shè)過程添加或變更設(shè)備,可以在GIS的編輯態(tài)下通過圖形建??蛻舳藖砭庉嬙O(shè)備。設(shè)備的變化進(jìn)入時空電網(wǎng)模型的版本數(shù)據(jù)表,經(jīng)審核再發(fā)布,就從版本數(shù)據(jù)表轉(zhuǎn)移到基版數(shù)據(jù)表?;鏀?shù)據(jù)表存儲的就是運(yùn)行態(tài)電網(wǎng)數(shù)據(jù)。在運(yùn)行態(tài),調(diào)度、營銷、通信等專業(yè)可以直接修改設(shè)備狀態(tài),即改變基版數(shù)據(jù)表的數(shù)據(jù)?;鏀?shù)據(jù)表上發(fā)生的任何數(shù)據(jù)變化,都會將變化前的數(shù)據(jù)存檔到歷史數(shù)據(jù)表,以后可以查詢、統(tǒng)計(jì)歷史數(shù)據(jù)。查詢、統(tǒng)計(jì)某一個歷史時間點(diǎn)的所有設(shè)備數(shù)據(jù)時,一部分?jǐn)?shù)據(jù)至今始終沒有變化——在現(xiàn)在的基版數(shù)據(jù)表中,另一部分已經(jīng)發(fā)生變化——過去的數(shù)據(jù)保存在歷史數(shù)據(jù)表中,兩部分合并才能得到該歷史時間點(diǎn)所有數(shù)據(jù)。
如圖3所示,所述方法包括如下步驟:
S1:創(chuàng)建基版數(shù)據(jù)表及其對應(yīng)的歷史數(shù)據(jù)表。
S2:在所述基版數(shù)據(jù)表中增加第一時間字段,在所述歷史數(shù)據(jù)表中增加第二時間字段和消亡字段;所述第一時間字段用于記錄最新一次編輯的時間?;鏀?shù)據(jù)表結(jié)構(gòu)如表1所示,歷史數(shù)據(jù)表結(jié)構(gòu)如表2所示。
表1
表2
S3:若對基版數(shù)據(jù)表中的一數(shù)據(jù)進(jìn)行編輯操作,則將編輯前的所述一數(shù)據(jù)記錄到所述基版數(shù)據(jù)表對應(yīng)的歷史數(shù)據(jù)表中。可以看出,歷史數(shù)據(jù)表只記錄基版數(shù)據(jù)表中被刪除和被修改的數(shù)據(jù),在基版數(shù)據(jù)表中新增數(shù)據(jù)時,歷史數(shù)據(jù)表不做記錄。
S4:將編輯前所述一數(shù)據(jù)的第一時間字段中記錄的時間記錄到所述歷史數(shù)據(jù)表中所述一數(shù)據(jù)對應(yīng)的第二時間字段中,將所述編輯操作的編輯時間寫入對應(yīng)的消亡字段中。也就是說,歷史數(shù)據(jù)表中的第二時間字段記錄的是所述一數(shù)據(jù)上一次編輯的時間,消亡字段記錄的是當(dāng)前編輯的時間,也即最新一次編輯的時間。若對基版數(shù)據(jù)表中的一數(shù)據(jù)進(jìn)行多次編輯,則在歷史數(shù)據(jù)表中記錄多條記錄。
S5:若要查詢一時間點(diǎn)時對應(yīng)的基版數(shù)據(jù)表,則從基版數(shù)據(jù)表中獲取第一時間字段中記錄的時間早于等于所述一時間點(diǎn)的數(shù)據(jù)。
S6:從歷史數(shù)據(jù)表中獲取第二時間字段中記錄的時間早于等于所述一時間點(diǎn)且消亡字段中記錄的時間晚于所述一時間點(diǎn)的數(shù)據(jù)。
S7:合并從基版數(shù)據(jù)表獲取的數(shù)據(jù)和從歷史數(shù)據(jù)表中獲取的數(shù)據(jù),即可得到所述一時間點(diǎn)時對應(yīng)的基版數(shù)據(jù)表,即所述一時間點(diǎn)的歷史斷面數(shù)據(jù)。
本實(shí)施例只將基版數(shù)據(jù)表中被刪除和被修改的數(shù)據(jù)存入歷史數(shù)據(jù)表,可減少歷史數(shù)據(jù)表的數(shù)據(jù)量,節(jié)約歷史數(shù)據(jù)表的存儲空間;通過在基版數(shù)據(jù)表中記錄最新編輯時間,在歷史數(shù)據(jù)表中記錄被編輯的數(shù)據(jù)的上一次編輯時間以及最后編輯時間,并基于基版數(shù)據(jù)表和歷史數(shù)據(jù)表的數(shù)據(jù)疊加方式來管理歷史數(shù)據(jù),可準(zhǔn)確提取指定時間點(diǎn)的歷史數(shù)據(jù),從而實(shí)現(xiàn)歷史數(shù)據(jù)的有效保留。
實(shí)施例二
請參照圖4,本實(shí)施例是實(shí)施例一的進(jìn)一步拓展。由于若直接記錄時間,則記錄的數(shù)據(jù)過長,需要占用較大的存儲空間,且對于電網(wǎng)數(shù)據(jù)來說,需要頻繁編輯數(shù)據(jù),進(jìn)一步增加了空間占用量,因此,采用從小到大排序的批次號來替代編輯時間,具體如下所述。
所述步驟S1之前還包括:
S11:創(chuàng)建批次號序列,所述批次號序列中的批次號從小到大依次排序。優(yōu)選地,所述批次號序列可以為遞增的自然數(shù)序列,如0,1,2……
所述步驟S2之后還包括:
S22:根據(jù)編輯操作的時間先后順序,將第一時間字段下的時間與批次號序列中依次取出的批次號進(jìn)行關(guān)聯(lián),并將第一時間字段下記錄的時間替換為對應(yīng)的批次號;也就是說,當(dāng)進(jìn)行編輯時,先將編輯時間與依次取出的批次號進(jìn)行關(guān)聯(lián),存入關(guān)聯(lián)關(guān)系中,然后將批次號寫入第一時間字段中。
所述步驟S4具體為:
S44:將編輯前所述一數(shù)據(jù)的第一時間字段中記錄的批次號記錄到所述歷史數(shù)據(jù)表中所述一數(shù)據(jù)對應(yīng)的第二時間字段中;將所述編輯操作的編輯時間對應(yīng)的批次號寫入對應(yīng)的消亡字段中。
所述步驟S5-S6具體為:
S551:若要查詢一時間點(diǎn)時對應(yīng)的基版數(shù)據(jù)表,則獲取所述一時間點(diǎn)對應(yīng)的批次號。進(jìn)一步地,若所述一時間點(diǎn)無對應(yīng)的批次號,則在編輯時間與批次號的關(guān)聯(lián)關(guān)系中獲取與所述一時間點(diǎn)相鄰且早于所述一時間點(diǎn)的編輯時間對應(yīng)的批次號,作為所述一時間點(diǎn)對應(yīng)的批次號。
S552:從基版數(shù)據(jù)表中獲取第一時間字段中記錄的批次號小于等于所述一時間點(diǎn)對應(yīng)的批次號的數(shù)據(jù)。
S66:從歷史數(shù)據(jù)表中獲取第二時間字段中記錄的批次號小于等于所述一時間點(diǎn)對應(yīng)的批次號且消亡字段中記錄的批次號大于所述一時間點(diǎn)對應(yīng)的批次號的數(shù)據(jù)。
本實(shí)施例通過用從小到大排序的批次號來替代編輯時間,進(jìn)一步節(jié)約了存儲空間,且可使電網(wǎng)管理人員直觀地了解編輯的先后順序。
實(shí)施例三
本實(shí)施例是對應(yīng)上述實(shí)施例的一具體應(yīng)用場景。
假設(shè)現(xiàn)有一基版數(shù)據(jù)表A,新增六條數(shù)據(jù)后如表3所示,其對應(yīng)的歷史數(shù)據(jù)表A_HIS如表4所示。
表3
表4
若之后修改ID=3的數(shù)據(jù),將Fld1修改為Fld1’,在基版數(shù)據(jù)表A修改前,先將ID=3的數(shù)據(jù)拷貝至歷史數(shù)據(jù)表A_HIS,第二時間字段即記錄修改前的第一時間字段的數(shù)據(jù),然后將修改時間對應(yīng)的批次號寫入至消亡字段ENDTIMEID中;拷貝完成后,修改基版數(shù)據(jù)表A中ID=3的數(shù)據(jù)。修改完成后,基版數(shù)據(jù)表如表5所示,歷史數(shù)據(jù)表如表6所示。
表5
表6
若之后刪除ID=3和ID=4的數(shù)據(jù),在基版數(shù)據(jù)表A刪除前,先將ID=3和ID=4的數(shù)據(jù)拷貝至歷史數(shù)據(jù)表A_HIS,并將刪除時間對應(yīng)的批次號寫入消亡字段ENDTIMEID中;拷貝完成后,刪除基版數(shù)據(jù)表A中ID=3和ID=4的數(shù)據(jù)。刪除完成后,基版數(shù)據(jù)表如表7所示,歷史數(shù)據(jù)表如表8所示。
表7
表8
此時,若要查詢對應(yīng)的批次號為101的時間點(diǎn)時的數(shù)據(jù),則在基版數(shù)據(jù)表中查詢TIMEID1≤101的數(shù)據(jù),在歷史數(shù)據(jù)表中查詢TIMEID2≤101且ENDTIMEID>101的數(shù)據(jù),并將兩份數(shù)據(jù)進(jìn)行疊加合并,即可得到該時間點(diǎn)時刻的數(shù)據(jù)。
具體地SQL語句可為:select id,name,fldname1,…,timeid,…from A where timeid1<=101union all select id,name,fldname1,…,stated,…from A_HIS where timeid2<=101and endtimeid>101
實(shí)施例四
請參照圖6,本實(shí)施例是對應(yīng)上述實(shí)施例的一種電網(wǎng)歷史數(shù)據(jù)管理系統(tǒng),包括:
第一創(chuàng)建模塊1,用于創(chuàng)建基版數(shù)據(jù)表及其對應(yīng)的歷史數(shù)據(jù)表;
增加模塊2,用于在所述基版數(shù)據(jù)表中增加第一時間字段,在所述歷史數(shù)據(jù)表中增加第二時間字段和消亡字段,所述第一時間字段用于記錄最新一次編輯的時間;
記錄模塊3,用于若對基版數(shù)據(jù)表中的一數(shù)據(jù)進(jìn)行編輯操作,則將編輯前的所述一數(shù)據(jù)記錄到所述基版數(shù)據(jù)表對應(yīng)的歷史數(shù)據(jù)表中,將編輯前所述一數(shù)據(jù)的第一時間字段中記錄的時間記錄到所述歷史數(shù)據(jù)表中所述一數(shù)據(jù)對應(yīng)的第二時間字段中,將所述編輯操作的編輯時間寫入對應(yīng)的消亡字段中;
第一獲取模塊4,用于若要查詢一時間點(diǎn)時對應(yīng)的基版數(shù)據(jù)表,則從基版數(shù)據(jù)表中獲取第一時間字段中記錄的時間早于等于所述一時間點(diǎn)的數(shù)據(jù);
第二獲取模塊5,用于從歷史數(shù)據(jù)表中獲取第二時間字段中記錄的時間早于等于所述一時間點(diǎn)且消亡字段中記錄的時間晚于所述一時間點(diǎn)的數(shù)據(jù);
合并模塊6,用于合并從基版數(shù)據(jù)表獲取的數(shù)據(jù)和從歷史數(shù)據(jù)表中獲取的數(shù)據(jù)。
進(jìn)一步地,還包括:
第二創(chuàng)建模塊7,用于創(chuàng)建批次號序列,所述批次號序列中的批次號從小到大依次排序。
進(jìn)一步地,還包括:
關(guān)聯(lián)模塊8,用于根據(jù)編輯操作的時間先后順序,將第一時間字段下的時間與批次號序列中依次取出的批次號進(jìn)行關(guān)聯(lián)。
進(jìn)一步地,所述記錄模塊3包括:
第一記錄單元31,用于若對基版數(shù)據(jù)表中的一數(shù)據(jù)進(jìn)行編輯操作,則將編輯前的所述一數(shù)據(jù)記錄到所述基版數(shù)據(jù)表對應(yīng)的歷史數(shù)據(jù)表中;
第二記錄單元32,用于將編輯前所述一數(shù)據(jù)的第一時間字段中記錄的批次號記錄到所述歷史數(shù)據(jù)表中所述一數(shù)據(jù)對應(yīng)的第二時間字段中;
寫入單元33,用于將所述編輯操作的編輯時間對應(yīng)的批次號寫入對應(yīng)的消亡字段中。
進(jìn)一步地,所述第一獲取模塊4包括:
第一獲取單元41,用于若要查詢一時間點(diǎn)時對應(yīng)的基版數(shù)據(jù)表,則獲取所述一時間點(diǎn)對應(yīng)的批次號;
第二獲取單元42,用于從基版數(shù)據(jù)表中獲取第一時間字段中記錄的批次號小于等于所述一時間點(diǎn)對應(yīng)的批次號的數(shù)據(jù);
所述第二獲取模塊5,具體用于從歷史數(shù)據(jù)表中獲取第二時間字段中記錄的批次號小于等于所述一時間點(diǎn)對應(yīng)的批次號且消亡字段中記錄的批次號大于所述一時間點(diǎn)對應(yīng)的批次號的數(shù)據(jù)。
進(jìn)一步地,所述第一獲取模塊4還包括:
第三獲取單元43,用于若所述一時間點(diǎn)無對應(yīng)的批次號,則在編輯時間與批次號的關(guān)聯(lián)關(guān)系中獲取與所述一時間點(diǎn)相鄰且早于所述一時間點(diǎn)的編輯時間對應(yīng)的批次號,作為所述一時間點(diǎn)對應(yīng)的批次號。
綜上所述,本發(fā)明提供的一種電網(wǎng)歷史數(shù)據(jù)管理方法及其系統(tǒng),只將基版數(shù)據(jù)表中被刪除和被修改的數(shù)據(jù)存入歷史數(shù)據(jù)表,可減少歷史數(shù)據(jù)表的數(shù)據(jù)量,節(jié)約歷史數(shù)據(jù)表的存儲空間;通過在基版數(shù)據(jù)表中記錄最新編輯時間,在歷史數(shù)據(jù)表中記錄被編輯的數(shù)據(jù)的上一次編輯時間以及最后編輯時間,并基于基版數(shù)據(jù)表和歷史數(shù)據(jù)表的數(shù)據(jù)疊加方式來管理歷史數(shù)據(jù),可準(zhǔn)確提取指定時間點(diǎn)的歷史數(shù)據(jù),從而實(shí)現(xiàn)歷史數(shù)據(jù)的有效保留。通過用從小到大排序的批次號來替代編輯時間,進(jìn)一步節(jié)約了存儲空間,且可使電網(wǎng)管理人員直觀地了解編輯的先后順序。
以上所述僅為本發(fā)明的實(shí)施例,并非因此限制本發(fā)明的專利范圍,凡是利用本發(fā)明說明書及附圖內(nèi)容所作的等同變換,或直接或間接運(yùn)用在相關(guān)的技術(shù)領(lǐng)域,均同理包括在本發(fā)明的專利保護(hù)范圍內(nèi)。