一種電力系統(tǒng)中數(shù)據(jù)存儲(chǔ)的方法
【專利摘要】本發(fā)明涉及一種電力系統(tǒng)中數(shù)據(jù)存儲(chǔ)的方法,屬于電力系統(tǒng)自動(dòng)化的【技術(shù)領(lǐng)域】。該方法在緩存服務(wù)器上采用Redis進(jìn)行存儲(chǔ),通過周期性地把更新的數(shù)據(jù)寫入磁盤或把修改操作寫入追加的記錄文件,保證了數(shù)據(jù)的持久化,防止在線校核中數(shù)據(jù)的丟失;其Maste-S1ave(主從)同步的方式提供了高可用性和可靠的平臺(tái);同時(shí)由于文件上傳在內(nèi)存中進(jìn)行,大幅度縮短了文件上傳的響應(yīng)時(shí)間,縮短了在線校核整體計(jì)算的時(shí)間。
【專利說明】—種電力系統(tǒng)中數(shù)據(jù)存儲(chǔ)的方法
【技術(shù)領(lǐng)域】
[0001]本發(fā)明屬于電力系統(tǒng)自動(dòng)化的【技術(shù)領(lǐng)域】,具體地涉及一種電力系統(tǒng)中數(shù)據(jù)存儲(chǔ)的方法。
【背景技術(shù)】
[0002]繼電保護(hù)定值在線校核是從智能調(diào)度技術(shù)支持系統(tǒng)(下文記為SG-0SS)導(dǎo)出數(shù)據(jù)進(jìn)行校核,根據(jù)建設(shè)要求,基于SG-OSS平臺(tái)的定值在線校核系統(tǒng)中沒有自身專門數(shù)據(jù)庫,需要采用內(nèi)存的數(shù)據(jù)緩沖層來替代原來的數(shù)據(jù)庫操作,即所謂的NoSQL (Not Only SQL)數(shù)據(jù)存儲(chǔ)。NoSQL不需要固定的表結(jié)構(gòu),通常也不存在連接操作。在大數(shù)據(jù)存取上具備快速和占用內(nèi)存少的優(yōu)勢(shì)。Redis (Remote Dictionary Server)屬于NoSQL 的一種,與Memcache 相似,采用Key-value的存儲(chǔ)模式,加速了鍵值和內(nèi)容的快速定位和排序。但Redis支持更多的數(shù)據(jù)類型,包括字符串(String)、鏈表(List)、集合(set)、有序集合(Zset)、哈希(Hash)等。為了保證效率,Redis數(shù)據(jù)都是緩存在內(nèi)存中,與Memcache只是用來做緩存相比Redis適用的場(chǎng)景更多,并且可以直接用于數(shù)據(jù)存儲(chǔ)服務(wù)。Radis以高效的讀寫效率及其豐富的數(shù)據(jù)類所帶來的快速開發(fā)和作為緩存的安全性得到使用。
[0003]本發(fā)明將Redis數(shù)據(jù)存儲(chǔ)方法用于電力系統(tǒng)的數(shù)據(jù)存儲(chǔ)領(lǐng)域。
【發(fā)明內(nèi)容】
[0004]為了克服上述現(xiàn)有技術(shù)的不足,本發(fā)明提供一種電力系統(tǒng)中數(shù)據(jù)存儲(chǔ)的方法。
[0005]本發(fā)明的技術(shù)解決方案是:基于SG-OSS平臺(tái)的定值在線校核系統(tǒng)中沒有自身專門數(shù)據(jù)庫,需要采用內(nèi)存的數(shù)據(jù)緩沖層來替代原來的數(shù)據(jù)庫操作。由于大量數(shù)據(jù)的處理和在線校核時(shí)間的要求,必須減少查詢數(shù)據(jù)庫的時(shí)間,使得關(guān)系型數(shù)據(jù)庫難以滿足要求,需采用非關(guān)系型數(shù)據(jù)庫。Redis以其高速的讀寫性能,以及支持多種數(shù)據(jù)類型而得到應(yīng)用。并且對(duì)于單表的查詢建立查詢對(duì)象,減少查詢次數(shù)。
[0006]與現(xiàn)有技術(shù)相比,本發(fā)明的有益效果是:在緩存服務(wù)器上采用Redis進(jìn)行存儲(chǔ),通過建立Key-value存儲(chǔ)模式的方法,能夠提高查找的效率,從而提高了計(jì)算機(jī)的運(yùn)算率。同時(shí)通過采用SQL語句按照SqlStringModel的格式建立對(duì)象,為此可以減少查詢次數(shù),提高效率。
【專利附圖】
【附圖說明】
[0007]圖1為根據(jù)本發(fā)明的電力系統(tǒng)中數(shù)據(jù)存儲(chǔ)的方法的流程圖。
[0008]圖2為建立SQL時(shí)以SqlStringModel的格式建立對(duì)象結(jié)構(gòu)圖。
【具體實(shí)施方式】
[0009]如圖1所示,這種電力系統(tǒng)中數(shù)據(jù)存儲(chǔ)的方法,該方法包括以下步驟:
[0010](I)建立Key-value的存儲(chǔ)模式;[0011](2)在數(shù)據(jù)緩沖層獲得到對(duì)應(yīng)在數(shù)據(jù)緩沖層的表;
[0012](3)將SQL語句按照約定的格式建立對(duì)象;
[0013](4)對(duì)獲得數(shù)據(jù)緩沖層的表進(jìn)行查詢,得到返回條件的行數(shù)組;
[0014](5)對(duì)每行數(shù)據(jù)操作,得到要操作的列,并取到該列的值。
[0015]以下詳細(xì)說明本發(fā)明的內(nèi)容。
[0016]Redis的數(shù)據(jù)在內(nèi)存中始終是以key值作為索引,value則使用字符串。所以在電力系統(tǒng)中,首先需要確定的是定義key的值的格式。
[0017]根據(jù)關(guān)系型數(shù)據(jù)庫的表字段定義,我們可以仿照其表名和字段名的方法,用下面的格式來對(duì)key進(jìn)行定義:
[0018]鍵值對(duì)名稱:索引標(biāo)示:value的字段名
[0019]比如一個(gè)鍵值對(duì)的名稱是A,這個(gè)鍵值對(duì)保存所有區(qū)域信息。因此對(duì)于這個(gè)鍵值對(duì)中的索引標(biāo)示就是區(qū)域的ID,如果某個(gè)區(qū)域的ID是區(qū)域A,它有N個(gè)廠站,那這個(gè)鍵值對(duì)的key格式就用
[0020]key=A:“區(qū)域 A”:Area value=所有廠站 ID
[0021]由于ID= “區(qū)域A”是個(gè)唯一的標(biāo)示,所以對(duì)于這個(gè)key也是唯一。
[0022]在一個(gè)電力系統(tǒng)結(jié)構(gòu)中,按照包含關(guān)系可以分為區(qū)域、廠站和廠站內(nèi)元件幾類。
[0023]區(qū)域與廠站關(guān)系鍵值對(duì)A=[key=區(qū)域ID, value=廠站ID],這樣就可以查找一個(gè)區(qū)域內(nèi)的所有廠站,若要查找廠站所屬區(qū)域,將key和value互相顛倒即可。
[0024]這樣設(shè)定的鍵值對(duì)就存在兩種key,可以使用約定的鍵值樣式設(shè)計(jì),如下:
[0025]鍵值對(duì)名稱:索引標(biāo)示:區(qū)域ID
[0026]鍵值對(duì)名稱:索引標(biāo)示:廠站ID
[0027]再比如ID標(biāo)示為區(qū)域B的一個(gè)區(qū)域的擁有一個(gè)ID為廠站B的一個(gè)廠站,那內(nèi)存中就保存如下形式:
[0028][key B:“區(qū)域 B”:StationID, value= “廠站 B,,]
[0029]對(duì)于所有的廠站的詳細(xì)信息,仍然可以通過增加一個(gè)Key-value對(duì)來實(shí)現(xiàn)。
[0030][key C 廠站 C,,:StationID, value=兀件信息]
[0031 ] 其中,元件信息包括線路、變壓器和發(fā)電機(jī)等。
[0032]對(duì)于元件的詳細(xì)信息如節(jié)點(diǎn)、電壓等級(jí)、阻抗信息等。采用NoSQL文檔型數(shù)據(jù)來保存永久值,當(dāng)需要數(shù)據(jù)時(shí),再進(jìn)行查詢和返回信息。
[0033]當(dāng)對(duì)表進(jìn)行多條件查詢時(shí),可以采用將多條件的處理層級(jí)關(guān)系為2層關(guān)系。
[0034]SqlCondition類:對(duì)應(yīng)SQL語句中的小的判斷語句,類中記錄字段、操作符、比較值。
[0035]其中幾個(gè)字段的表示的內(nèi)容如下:
[0036]sFiled (string)對(duì)應(yīng)數(shù)據(jù)庫中的字段名稱;
[0037]sOperatorSign (string)中比較符號(hào):能支持的有〉、〈、>=、〈=、=、like 等;
[0038]sCompareValue (string)為做對(duì)比的值;
[0039]多個(gè)條件存在時(shí),每個(gè)條件對(duì)應(yīng)成一個(gè)SqlCondition類。
[0040]SqlConditionGroup類:SqlCondition的集合類。對(duì)應(yīng)SQL語句中的一組小語句。每個(gè)SqlConditionGroup可以有幾個(gè)SqlCondition組成,并記錄這幾個(gè)SqlCondition的操作符是and或or,當(dāng)SqlConditionGroup中的SqlCondition個(gè)數(shù)是I個(gè)時(shí),操作符沒有意義。
[0041]多個(gè)SqlConditionGroup可以集合為一個(gè)SqlStringModel類,并記錄這幾個(gè)SqlConditionGroup之間的操作符是and或or。
[0042]這樣就可以通過建立對(duì)象的方式查找到負(fù)荷條件的表,然后對(duì)表格進(jìn)行select查詢,獲得行數(shù)組,再得到所要操作的列,及所要查詢的值。
[0043]以查找寧夏.青銅峽站.大銅II線為例,首先采用兩個(gè)Key-value語句
[0044][key= “寧夏”, value= “青銅峽站”]
[0045][key= “青銅峽站”, value= “線路”]
[0046]找到所有符合區(qū)域和廠站信息的線路;
[0047]然后Select*from Table
[0048]Where A= “大銅II線”即可獲得所有有關(guān)大銅II線的信息,通過列定位選取所需信息,為在線校核做好數(shù)據(jù)準(zhǔn)備。
[0049]以上所述,僅是本發(fā)明的較佳實(shí)施例,并非對(duì)本發(fā)明作任何形式上的限制,凡是依據(jù)本發(fā)明的技術(shù)實(shí)質(zhì)對(duì)以上實(shí)施例所作的任何簡(jiǎn)單修改、等同變化與修飾,均仍屬本發(fā)明技術(shù)方案的保護(hù)范圍。
【權(quán)利要求】
1.一種電力系統(tǒng)中數(shù)據(jù)存儲(chǔ)的方法,其特征在于:該方法包括以下步驟: (1)建立Key-Value的存儲(chǔ)模式; (2)在數(shù)據(jù)緩沖層獲得到對(duì)應(yīng)在數(shù)據(jù)緩沖層的表; (3)將SQL語句按照約定的格式建立對(duì)象; (4)對(duì)獲得數(shù)據(jù)緩沖層的表進(jìn)行查詢,得到返回條件的行數(shù)組; (5)對(duì)每行數(shù)據(jù)操作,得到要操作的列,并取到該列的值。
2.根據(jù)權(quán)利要求1所述的一種電力系統(tǒng)中數(shù)據(jù)存儲(chǔ)的方法,其特征在于:建立Key-value存儲(chǔ)模式的方法,具體包括以下步驟: (al)通過區(qū)域查找廠站,key=區(qū)域ID, value=廠站ID ; (a2)通過廠站查找元件,key=廠站ID, value=元件ID。
3.根據(jù)權(quán)利要求1所述的一種電力系統(tǒng)中數(shù)據(jù)存儲(chǔ)的方法,其特征在于:將SQL語句按照SqlStringModel的格式建立對(duì)象,具體包括以下步驟: (al)建立SqlCondition類,包括sFiled對(duì)應(yīng)數(shù)據(jù)庫中的字段名稱;sOperatorSign中比較符號(hào),sCompareValue為做對(duì)比的值; (a2)建立SqlConditionGroup類,由多個(gè)SqlCondition組成,并且記錄這幾個(gè)SqlCondition的操作符是and或or ; (a3)建立SqlStringModel類,由多個(gè)SqlConditionGroup組成,并且記錄這幾個(gè)SqlCondition的操作符是and或or。
【文檔編號(hào)】G06F17/30GK103955492SQ201410152621
【公開日】2014年7月30日 申請(qǐng)日期:2014年4月17日 優(yōu)先權(quán)日:2014年4月17日
【發(fā)明者】王小立, 溫靖華, 羅美玲, 王輝, 于樂, 王康, 夏蕓, 龔仁敏 申請(qǐng)人:國(guó)網(wǎng)寧夏電力公司, 北京中恒博瑞數(shù)字電力科技有限公司