曹敏,尹福榮,張玉龍
(1.云南電網(wǎng)有限責(zé)任公司電力科學(xué)研究院,昆明 650217;2.昆明能訊科技有限責(zé)任公司,昆明 650051)
當(dāng)前我國(guó)電力工業(yè)體制正面臨著重大的改革,建立發(fā)電側(cè)電力市場(chǎng)的工作正在向縱深推進(jìn)。電力企業(yè)作為“電力”這種特殊商品的提供者,要實(shí)現(xiàn)自身的經(jīng)濟(jì)效益必須要保證電力企業(yè)的安全、可靠和穩(wěn)定運(yùn)行,而實(shí)現(xiàn)這一目標(biāo),電力系統(tǒng)的實(shí)時(shí)數(shù)據(jù)則是生產(chǎn)管理者最關(guān)心的對(duì)象[1]。
電力實(shí)時(shí)數(shù)據(jù)包含了豐富的電力系統(tǒng)運(yùn)行狀況信息,它不僅能夠反應(yīng)系統(tǒng)當(dāng)前的生產(chǎn)狀況和設(shè)備運(yùn)行狀況,而且通過(guò)對(duì)生產(chǎn)實(shí)時(shí)數(shù)據(jù)的分析處理,可以預(yù)知事故的發(fā)生和設(shè)備的健康狀態(tài),為設(shè)備的預(yù)測(cè)性維修和管理決策提供依據(jù),從而達(dá)到提高設(shè)備可靠性,減少維修總費(fèi)用,降低電力企業(yè)運(yùn)營(yíng)成本,提高經(jīng)濟(jì)效益的目的[2]。
本文在分析了電力系統(tǒng)中實(shí)時(shí)數(shù)據(jù)的重要性和對(duì)比分析當(dāng)前主流的內(nèi)存數(shù)據(jù)庫(kù)引擎的基礎(chǔ)上,選取符合電力系統(tǒng)實(shí)時(shí)數(shù)據(jù)需求的最優(yōu)內(nèi)存數(shù)據(jù)庫(kù)技術(shù),對(duì)實(shí)時(shí)數(shù)據(jù)服務(wù)平臺(tái)架構(gòu)、實(shí)時(shí)數(shù)據(jù)的接收/處理方式、數(shù)據(jù)存儲(chǔ)/檢索方式、數(shù)據(jù)訂閱/查詢(xún)方式和不同實(shí)時(shí)數(shù)據(jù)的接入方式進(jìn)行研究,得出一個(gè)可行的易于構(gòu)建實(shí)施的面向上層應(yīng)用系統(tǒng)的實(shí)時(shí)數(shù)據(jù)服務(wù)平臺(tái)設(shè)計(jì)方案,充分實(shí)現(xiàn)實(shí)時(shí)數(shù)據(jù)集成、數(shù)據(jù)資源共享和決策輔助支撐。
電力系統(tǒng)的實(shí)時(shí)數(shù)據(jù)是指能反映電力系統(tǒng)實(shí)時(shí)運(yùn)行狀態(tài)的數(shù)據(jù),通過(guò)對(duì)這些數(shù)據(jù)的監(jiān)測(cè)和分析能夠了解設(shè)備的性能、運(yùn)行狀況和健康狀況,從而保證整個(gè)電力系統(tǒng)的正常穩(wěn)定運(yùn)行。
實(shí)時(shí)數(shù)據(jù)包含了豐富的電力系統(tǒng)運(yùn)行狀況信息,它不僅僅能夠反應(yīng)系統(tǒng)當(dāng)前的狀況和設(shè)備運(yùn)行狀況,而且通過(guò)對(duì)實(shí)時(shí)數(shù)據(jù)的記錄可以得到反映系統(tǒng)和設(shè)備的歷史狀況的歷史數(shù)據(jù),通過(guò)對(duì)歷史同期數(shù)據(jù)的分析比較可以預(yù)知事故的發(fā)生和設(shè)備的狀況,而日常監(jiān)測(cè)數(shù)據(jù)可為輔助決策提供必要的參考依據(jù)。
因此,構(gòu)建一個(gè)實(shí)時(shí)數(shù)據(jù)服務(wù)平臺(tái),將電力系統(tǒng)的實(shí)時(shí)數(shù)據(jù)進(jìn)行統(tǒng)一歸集,對(duì)實(shí)時(shí)數(shù)據(jù)進(jìn)行監(jiān)測(cè)和分析,能隨時(shí)掌握電力系統(tǒng)的運(yùn)行狀況,將問(wèn)題的事后解決變?yōu)槭孪阮A(yù)防,為實(shí)現(xiàn)狀態(tài)檢修和預(yù)防性維護(hù)提供基礎(chǔ),以提高電力系統(tǒng)運(yùn)行的安全性、可靠性和穩(wěn)定性,保證電力企業(yè)的經(jīng)濟(jì)效益。
在數(shù)據(jù)庫(kù)技術(shù)中,目前主要有兩種方法來(lái)使用大量的內(nèi)存。一種是在傳統(tǒng)的數(shù)據(jù)庫(kù)中,增大緩沖池,也就是常說(shuō)的共享內(nèi)存技術(shù),另一種就是內(nèi)存數(shù)據(jù)庫(kù)技術(shù)。
但是共享內(nèi)存技術(shù)的實(shí)時(shí)系統(tǒng)由于優(yōu)化的目標(biāo)仍然集中在最小化磁盤(pán)訪(fǎng)問(wèn)上,很難滿(mǎn)足完整的數(shù)據(jù)庫(kù)管理的要求。
而內(nèi)存數(shù)據(jù)庫(kù)技術(shù)從根本上拋棄了磁盤(pán)數(shù)據(jù)管理的許多傳統(tǒng)方式,在數(shù)據(jù)處理速度一般比傳統(tǒng)數(shù)據(jù)庫(kù)的數(shù)據(jù)處理速度快10 倍以上,理想情況甚至可以達(dá)到1 000 倍[3-5]。
現(xiàn)有內(nèi)存數(shù)據(jù)庫(kù)包括SQLite、Altibase、Berkeley DB、Oracle TimesTen、eXtremeDB、H2 Database,但是從軟件的設(shè)計(jì)成本考慮,Altibase、Oracle TimesTen、eXtremeDB 需要商業(yè)授權(quán)。通過(guò)排除需商業(yè)授權(quán)的數(shù)據(jù)庫(kù)產(chǎn)品,還可用SQLite、Berkeley DB、H2。因此選擇這三種內(nèi)存數(shù)據(jù)庫(kù)進(jìn)行測(cè)試比較,測(cè)試結(jié)果如表1 所示。
表1 Berkeley DB、SQLite、H2測(cè)試對(duì)比表
由上面測(cè)試結(jié)果可以看出Berkeley DB 的性能要高于其他兩個(gè),且支持原生API 方式訪(fǎng)問(wèn)、存儲(chǔ)格式為key-value 形式完全符合電力實(shí)時(shí)數(shù)據(jù)集成需求。
Berkeley DB 由四個(gè)主要的子系統(tǒng)構(gòu)成,包括數(shù)據(jù)存取子系統(tǒng)、內(nèi)存池管理子系統(tǒng)、事務(wù)子系統(tǒng)及鎖子系統(tǒng)。其中數(shù)據(jù)存取子系統(tǒng)作為Berkeley DB 數(shù)據(jù)庫(kù)進(jìn)程包內(nèi)部的核心組件,而其他子系統(tǒng)都存在于Berkeley DB 數(shù)據(jù)庫(kù)進(jìn)程包的外部。
2.2.1 數(shù)據(jù)存取子系統(tǒng)
數(shù)據(jù)存取(Access Methods)子系統(tǒng)為創(chuàng)建和訪(fǎng)問(wèn)數(shù)據(jù)庫(kù)文件提供了多種支持,應(yīng)用程序可以從中選擇最適合的文件組織結(jié)構(gòu)。
2.2.2 內(nèi)存池管理子系統(tǒng)
內(nèi)存池(Memory pool)子系統(tǒng)對(duì)Berkeley DB所使用的共享緩沖區(qū)進(jìn)行有效的管理,負(fù)責(zé)將修改后的頁(yè)寫(xiě)回文件和為新調(diào)入的頁(yè)分配內(nèi)存空間。
2.2.3 事務(wù)子系統(tǒng)
事務(wù)(Transaction)子系統(tǒng)為Berkeley DB 提供事務(wù)管理功能。它允許把一組對(duì)數(shù)據(jù)庫(kù)的修改看作一個(gè)原子單位,這組操作要么全做,要么全不做。事務(wù)子系統(tǒng)適用于需要事務(wù)保證數(shù)據(jù)的修改的應(yīng)用。
2.2.4 鎖子系統(tǒng)
鎖(Locking)子系統(tǒng)為Berkeley DB 提供鎖機(jī)制,為系統(tǒng)提供多用戶(hù)讀取和單用戶(hù)修改同一對(duì)象的共享控制。該子系統(tǒng)也可被應(yīng)用程序單獨(dú)采用。鎖子系統(tǒng)適用于一個(gè)靈活的、快速的、可設(shè)置的鎖管理器。
在以上對(duì)Berkeley DB 技術(shù)分析的基礎(chǔ)上,進(jìn)一步研究實(shí)時(shí)數(shù)據(jù)服務(wù)平臺(tái)架構(gòu)、實(shí)時(shí)數(shù)據(jù)的接收/處理方式、數(shù)據(jù)存儲(chǔ)/檢索方式、數(shù)據(jù)訂閱/查詢(xún)方式和不同實(shí)時(shí)數(shù)據(jù)的接入方式,形成基于Berkeley DB 的實(shí)時(shí)數(shù)據(jù)服務(wù)平臺(tái)的整體設(shè)計(jì)方案。
整個(gè)平臺(tái)的設(shè)計(jì)由三大部分構(gòu)成:實(shí)時(shí)數(shù)據(jù)接收/處理、實(shí)時(shí)數(shù)據(jù)存儲(chǔ)/檢索和實(shí)時(shí)數(shù)據(jù)訂閱/查詢(xún),為了保證實(shí)時(shí)數(shù)據(jù)集成的實(shí)時(shí)性、處理數(shù)據(jù)的高效性,設(shè)計(jì)結(jié)構(gòu)如圖1 所示:
圖1 平臺(tái)總體結(jié)構(gòu)圖
3.1.1 數(shù)據(jù)接收/處理
數(shù)據(jù)接收/處理是實(shí)時(shí)數(shù)據(jù)集成數(shù)據(jù)來(lái)源的唯一途徑,只有對(duì)其接收數(shù)據(jù)及分析數(shù)據(jù)的能力做到快捷、高效,才能保證整個(gè)實(shí)時(shí)數(shù)據(jù)集成的實(shí)時(shí)性,對(duì)此設(shè)計(jì)了圖2 所示的結(jié)構(gòu)圖:
圖2 數(shù)據(jù)接收/處理結(jié)構(gòu)圖
其中每次tcp 連接請(qǐng)求都會(huì)通過(guò)接收服務(wù)來(lái)進(jìn)行處理及驗(yàn)證,若該tcp 連接請(qǐng)求為合法的連接請(qǐng)求,會(huì)話(huà)管理機(jī)制就為其創(chuàng)建一個(gè)會(huì)話(huà)狀態(tài),該會(huì)話(huà)狀態(tài)只負(fù)責(zé)接收對(duì)應(yīng)的一個(gè)tcp 連接,為了保證數(shù)據(jù)快捷、高效的進(jìn)行處理讓每一個(gè)會(huì)話(huà)狀態(tài)都處于一個(gè)獨(dú)立的線(xiàn)程中?;诖朔N設(shè)計(jì),每一種實(shí)時(shí)信號(hào)量只可能來(lái)自同一個(gè)地方,而不可能來(lái)自不同的地方,這就使得每一個(gè)tcp 連接傳輸?shù)臄?shù)據(jù)都不同于其他連接的數(shù)據(jù),可以不用考慮其他數(shù)據(jù)而直接通過(guò)獨(dú)立的線(xiàn)程來(lái)進(jìn)行處理,保證對(duì)數(shù)據(jù)進(jìn)行高效的處理。
3.1.2 數(shù)據(jù)存儲(chǔ)/檢索
數(shù)據(jù)的存儲(chǔ)/檢索是連接數(shù)據(jù)接收/處理和數(shù)據(jù)訂閱/查詢(xún)的中間橋梁,該模塊的性能也是影響實(shí)時(shí)數(shù)據(jù)實(shí)時(shí)性的一個(gè)重要因數(shù),為了保障數(shù)據(jù)的實(shí)時(shí)性,本模塊使用Berkeley DB 作為實(shí)時(shí)數(shù)據(jù)引擎,采用將實(shí)時(shí)數(shù)據(jù)存儲(chǔ)于內(nèi)存中的策略,只有在需要的時(shí)候才同步到硬盤(pán)上,這樣既保證了實(shí)時(shí)數(shù)據(jù)的存儲(chǔ)更新效率,也提高了數(shù)據(jù)查詢(xún)效率。為此,從電力系統(tǒng)需求出發(fā),設(shè)計(jì)了如下的數(shù)據(jù)存儲(chǔ)/檢索機(jī)制來(lái)提高存儲(chǔ)/檢索效率:存儲(chǔ)/檢索模塊根據(jù)配置文件中定義的節(jié)點(diǎn)和信號(hào)類(lèi)型,為其創(chuàng)建獨(dú)立的內(nèi)存數(shù)據(jù)庫(kù)來(lái)進(jìn)行管理各個(gè)節(jié)點(diǎn)和信號(hào)類(lèi)型的實(shí)時(shí)數(shù)據(jù),使得每一種信號(hào)類(lèi)型的實(shí)時(shí)數(shù)據(jù)都獨(dú)立于其他,可以最大限度的避免Berkeley DB 實(shí)時(shí)數(shù)據(jù)引擎并發(fā)操作時(shí)引起的異常導(dǎo)致整個(gè)庫(kù)鎖死,充分利用多庫(kù)聯(lián)合操作技巧盡量減少Berkeley DB 實(shí)時(shí)數(shù)據(jù)引擎使用鎖子系統(tǒng)時(shí)所占用的時(shí)間。
圖3 數(shù)據(jù)存儲(chǔ)/檢索機(jī)制圖
設(shè)計(jì)采用的客戶(hù)機(jī)檢索實(shí)時(shí)數(shù)據(jù)模式如下圖所示:
圖4 客戶(hù)機(jī)檢索數(shù)據(jù)方式圖
實(shí)時(shí)數(shù)據(jù)平臺(tái)采取預(yù)先加載客戶(hù)自定義數(shù)據(jù)點(diǎn)配置庫(kù)的形式,客戶(hù)機(jī)需要檢索的數(shù)據(jù)點(diǎn)號(hào)事先由客戶(hù)機(jī)自定義編輯成數(shù)據(jù)點(diǎn)配置庫(kù),然后在請(qǐng)求數(shù)據(jù)前將該數(shù)據(jù)點(diǎn)配置庫(kù)提交給實(shí)時(shí)數(shù)據(jù)平臺(tái)(實(shí)時(shí)數(shù)據(jù)平臺(tái)將其存放于內(nèi)存中),以后客戶(hù)機(jī)每次請(qǐng)求數(shù)據(jù)都只需發(fā)送相應(yīng)編號(hào)命令即可檢索到相應(yīng)數(shù)據(jù),這樣使得實(shí)時(shí)數(shù)據(jù)平臺(tái)檢索數(shù)據(jù)更加高效,同時(shí)也降低了網(wǎng)絡(luò)傳輸?shù)膸挕?/p>
3.1.3 數(shù)據(jù)訂閱/查詢(xún)
數(shù)據(jù)訂閱/查詢(xún)模塊為最終的終端客戶(hù)提供實(shí)時(shí)數(shù)據(jù)查詢(xún)及訂閱,該模塊同樣采用tcp 通訊,通訊設(shè)計(jì)沿用數(shù)據(jù)接收模塊的設(shè)計(jì),但該模塊涉及到可自定義的用戶(hù)查詢(xún)配置,客戶(hù)可自定義訂閱的數(shù)據(jù)類(lèi)型,該模塊結(jié)構(gòu)見(jiàn)圖5:
圖5 數(shù)據(jù)訂閱/查詢(xún)結(jié)構(gòu)圖
在圖5 中,數(shù)據(jù)查詢(xún)依賴(lài)于用戶(hù)提供的自定義查詢(xún)配置文件,用戶(hù)可以將要查詢(xún)的各種信號(hào)key放在一起,提供一個(gè)唯一的查詢(xún)編號(hào),查詢(xún)時(shí)只需要提供唯一的查詢(xún)編號(hào)即可完成所需實(shí)時(shí)數(shù)據(jù)的查詢(xún);數(shù)據(jù)訂閱是類(lèi)似網(wǎng)站rss 訂閱的一種機(jī)制,但也有所不同,該訂閱方式為用戶(hù)可以訂閱需要關(guān)注的信號(hào),只要訂閱關(guān)注信號(hào)后,一旦數(shù)據(jù)接收模塊接收到信號(hào)數(shù)據(jù),主動(dòng)把信號(hào)數(shù)據(jù)拷貝給訂閱管理器后,訂閱管理器就會(huì)主動(dòng)將用戶(hù)所關(guān)注的實(shí)時(shí)信號(hào)回發(fā)給訂閱過(guò)該信號(hào)的所有客戶(hù),即完成實(shí)時(shí)信號(hào)數(shù)據(jù)的訂閱(推送)[6-7]。
實(shí)時(shí)數(shù)據(jù)服務(wù)平臺(tái)與各系統(tǒng)之間的實(shí)時(shí)數(shù)據(jù)傳輸流程是通信標(biāo)準(zhǔn)的重要部分。實(shí)時(shí)通信基于面向連接的TCP 通信協(xié)議,使用C/S 模式建立實(shí)時(shí)數(shù)據(jù)管道及管理管道,下圖簡(jiǎn)要說(shuō)明了實(shí)時(shí)通信的建立過(guò)程。系統(tǒng)啟動(dòng)或重建通信時(shí),實(shí)時(shí)通信管道未建立,服務(wù)平臺(tái)與各系統(tǒng)的通信過(guò)程分解為若干子通信流程[8-9]。
圖6 實(shí)時(shí)通信建立過(guò)程圖
在上述實(shí)時(shí)通信的基礎(chǔ)上,實(shí)時(shí)數(shù)據(jù)服務(wù)平臺(tái)統(tǒng)一集成接入各個(gè)變電站實(shí)時(shí)數(shù)據(jù),整個(gè)變電站實(shí)時(shí)數(shù)據(jù)通過(guò)特定數(shù)據(jù)傳輸協(xié)議統(tǒng)一到實(shí)時(shí)數(shù)據(jù)服務(wù)平臺(tái),再由實(shí)時(shí)數(shù)據(jù)服務(wù)平臺(tái)對(duì)各個(gè)變電站實(shí)時(shí)數(shù)據(jù)進(jìn)行統(tǒng)一管理及提供數(shù)據(jù)查詢(xún)接口給其他應(yīng)用系統(tǒng)。
圖7 數(shù)據(jù)接入示意圖
本文通過(guò)對(duì)實(shí)時(shí)數(shù)據(jù)服務(wù)平臺(tái)架構(gòu)、實(shí)時(shí)數(shù)據(jù)的接收/處理方式、數(shù)據(jù)存儲(chǔ)/檢索方式、數(shù)據(jù)訂閱/查詢(xún)方式和不同實(shí)時(shí)數(shù)據(jù)的接入方式的研究,得出一個(gè)可行的易于構(gòu)建實(shí)施的面向上層應(yīng)用系統(tǒng)的實(shí)時(shí)數(shù)據(jù)服務(wù)平臺(tái)設(shè)計(jì)方案,為今后的實(shí)時(shí)數(shù)據(jù)平臺(tái)的研究與應(yīng)用提供重要的參考。
[1]周蓉.電力系統(tǒng)實(shí)時(shí)數(shù)據(jù)管理系統(tǒng)的研究與開(kāi)發(fā)[D].華北電力大學(xué)(北京),2003.
[2]張嶄.基于組態(tài)軟件的電力系統(tǒng)實(shí)時(shí)數(shù)據(jù)庫(kù)設(shè)計(jì)與實(shí)現(xiàn)[D].中國(guó)科學(xué)院大學(xué) (工程管理與信息技術(shù)學(xué)院),2014.
[3]武君勝,吳德州.面向電力系統(tǒng)的分布式實(shí)時(shí)數(shù)據(jù)庫(kù)關(guān)鍵技術(shù)及應(yīng)用[J].中國(guó)科技論文,2008,3 (2):102-107.
[4]劉吉臻,房方,牛玉廣.電力企業(yè)中的實(shí)時(shí)數(shù)據(jù)庫(kù)技術(shù)[J].中國(guó)電力,2004,37 (2):73-78.
[5]周怡,王堅(jiān)敏,羅斐,等.PI 實(shí)時(shí)數(shù)據(jù)庫(kù)在供電企業(yè)中的應(yīng)用架構(gòu)[J].浙江電力,2005,24 (1):40-43.
[6]李倩.基于RSS 的信息推送系統(tǒng)與訂閱系統(tǒng)的研究與實(shí)現(xiàn)[D].北京交通大學(xué),2012.
[7]于魁飛.基于RSS 的信息發(fā)布與訂閱技術(shù)研究[D].北京郵電大學(xué),2007.
[8]辛耀中.電力系統(tǒng)數(shù)據(jù)通信協(xié)議體系[J].電力系統(tǒng)自動(dòng)化,1999,(1):40-44.
[9]溫佶強(qiáng),杜浩良,吳新華,等.廠(chǎng)站數(shù)據(jù)接入PI 系統(tǒng)模式研究[J].電力系統(tǒng)保護(hù)與控制,2007,35 (15):35-38.