江西贛州供電公司 傅 裕
調(diào)度自動化系統(tǒng)[1]主要用于對電力系統(tǒng)中復(fù)雜的網(wǎng)絡(luò)拓?fù)浣Y(jié)構(gòu)進(jìn)行調(diào)度和管理,綜合利用計算機(jī)、遠(yuǎn)動和遠(yuǎn)程通信技術(shù),對電網(wǎng)運行的設(shè)備進(jìn)行監(jiān)視、控制、調(diào)度,以實現(xiàn)電力系統(tǒng)調(diào)度管理自動化,有效地幫助調(diào)度員完成調(diào)度任務(wù)。
調(diào)度自動化系統(tǒng)經(jīng)過了一系列的發(fā)展過程:最原始的調(diào)度系統(tǒng)主要通過電話進(jìn)行,到20世紀(jì)60年代發(fā)展成遠(yuǎn)動模擬屏,直到80年代后計算機(jī)的興起,才出現(xiàn)了功能強(qiáng)大的SCADA和EMS。SCADA即數(shù)據(jù)采集和監(jiān)視控制系統(tǒng),主要的功能是完成數(shù)據(jù)的收集、處理解釋、存儲和顯示,然后把這些信息傳遞給其它模塊。EMS即能量管理系統(tǒng),它是基于計算機(jī)技術(shù)的現(xiàn)代電力綜合自動化系統(tǒng),主要應(yīng)用包括:大區(qū)級電網(wǎng)和省市級電網(wǎng)調(diào)度中心,監(jiān)測電網(wǎng)各類實時信息,并對電網(wǎng)進(jìn)行調(diào)度決策管理和控制,保障電網(wǎng)的運行安全,提高電網(wǎng)質(zhì)量并降低電網(wǎng)運行的經(jīng)濟(jì)成本。
數(shù)據(jù)庫系統(tǒng)是調(diào)度自動化系統(tǒng)的重要組成部分,甚至可以說是其核心部分,因為系統(tǒng)最終的操作對象都是各種各樣的數(shù)據(jù),自動調(diào)度系統(tǒng)現(xiàn)在已經(jīng)發(fā)展出各類各樣的形式,但其中的數(shù)據(jù)庫部分都是所有系統(tǒng)的性能關(guān)鍵。數(shù)據(jù)庫系統(tǒng)需要有組織、動態(tài)地存儲大量的電網(wǎng)數(shù)據(jù),同時讓多個用戶能同時獲取這些數(shù)據(jù)。
然而調(diào)度自動化系統(tǒng)中的數(shù)據(jù)庫與傳統(tǒng)計算機(jī)系統(tǒng)中的數(shù)據(jù)庫有著較大的不同[2],傳統(tǒng)的數(shù)據(jù)庫主要是關(guān)系型數(shù)據(jù)庫,這類數(shù)據(jù)庫主要用于存儲持久性數(shù)據(jù),即對數(shù)據(jù)庫中數(shù)據(jù)的修改不是非常頻繁,商用的關(guān)系型數(shù)據(jù)庫主要有IBM公司的DB2,甲骨文公司的Oracle,開源數(shù)據(jù)庫MySQL和微軟公司的SQL Server。但是這些傳統(tǒng)的關(guān)系型數(shù)據(jù)庫在現(xiàn)代實時工程和時間關(guān)鍵型應(yīng)用中卻表現(xiàn)不好,因而有了實時數(shù)據(jù)庫技術(shù)的需求。實時數(shù)據(jù)庫系統(tǒng)(RTDBS:Real-Time Database System)將數(shù)據(jù)庫技術(shù)應(yīng)用到實時系統(tǒng)中,其相對傳統(tǒng)的數(shù)據(jù)庫技術(shù)要更為復(fù)雜,發(fā)展也相對落后。
調(diào)度自動化系統(tǒng)中的數(shù)據(jù)與一般的計算機(jī)系統(tǒng)數(shù)據(jù)有較大的不同,主要體現(xiàn)在如下幾個方面:
(1)數(shù)據(jù)處理的時限性。傳統(tǒng)的應(yīng)用系統(tǒng)中數(shù)據(jù)最重要的是保證其完整性和一致性,而在調(diào)度自動化系統(tǒng)中,數(shù)據(jù)不僅要完整、一致,同時更重要的是數(shù)據(jù)和對數(shù)據(jù)的處理具有嚴(yán)格的時限性,系統(tǒng)的正確性不僅僅取決于事務(wù)處理結(jié)果的邏輯性,還決定于這個處理過程需要在限定的時間內(nèi)完成。超過這個時限,即使處理的邏輯結(jié)果是正確的,對系統(tǒng)而言,可能這個“正確”但超時的結(jié)果仍然給系統(tǒng)帶來了負(fù)面影響,因此系統(tǒng)會認(rèn)為這個處理是失敗的。
(2)數(shù)據(jù)處理任務(wù)的并發(fā)性。傳統(tǒng)的數(shù)據(jù)庫即歷史數(shù)據(jù)庫中的數(shù)據(jù)是相對持久的,數(shù)據(jù)存儲以后對其修改不頻繁,而調(diào)度自動化系統(tǒng)中有著大量的數(shù)據(jù)需要實時同步,即時刻保持?jǐn)?shù)據(jù)庫系統(tǒng)中的數(shù)據(jù)與現(xiàn)場真實數(shù)據(jù)的同步,一般來說可以采用間隔較短的時間對數(shù)據(jù)庫進(jìn)行刷新來完成同步。這就要求實時數(shù)據(jù)庫能響應(yīng)足夠頻繁的大批量的并發(fā)的數(shù)據(jù)訪問,應(yīng)對這一特點,實時數(shù)據(jù)庫一般采用內(nèi)存數(shù)據(jù)庫的方式,即將數(shù)據(jù)保存在內(nèi)存中以獲得快速訪問的能力,而不是將數(shù)據(jù)保存在低速的磁盤上。
(3)數(shù)據(jù)的可恢復(fù)性。數(shù)據(jù)的可恢復(fù)性,指的是數(shù)據(jù)庫系統(tǒng)在發(fā)生故障后能恢復(fù)到發(fā)生故障前的狀態(tài)。而調(diào)度自動化系統(tǒng)在發(fā)生單點故障后,要求系統(tǒng)在一個數(shù)據(jù)更新周期內(nèi)恢復(fù)正常工作。傳統(tǒng)的數(shù)據(jù)恢復(fù)主要是通過日志和覆蓋方式,而調(diào)度自動化系統(tǒng)實時數(shù)據(jù)有著自己的特點,即實時數(shù)據(jù)庫中的數(shù)據(jù)很多都是短暫存在的,可能經(jīng)過一小段時間后就會被更改,因此有時故障的發(fā)生對系統(tǒng)的影響同樣也是短暫存在的,而不會影響到系統(tǒng)以后的狀態(tài)。因此需要針對性的策略來處理調(diào)度自動化系統(tǒng)中的數(shù)據(jù)恢復(fù)流程。
調(diào)度自動化系統(tǒng)中數(shù)據(jù)的以上特點也就是對實時數(shù)據(jù)庫提出的要求,實時數(shù)據(jù)庫系統(tǒng)非常強(qiáng)調(diào)數(shù)據(jù)及其處理的時限性,寧可數(shù)據(jù)的相對不準(zhǔn)確,也不要超時的數(shù)據(jù)結(jié)果。
實時數(shù)據(jù)庫不是數(shù)據(jù)庫與實時操作系統(tǒng)的簡單結(jié)合,而是數(shù)據(jù)和事務(wù)都有顯式定時限制的數(shù)據(jù)庫[3]。只有把這兩者的原理、方法、技術(shù)與結(jié)構(gòu)結(jié)合到一起的實時數(shù)據(jù)庫才能同時滿足數(shù)據(jù)和事務(wù)處理的實時性要求。數(shù)據(jù)的時效性體現(xiàn)在一個數(shù)據(jù)對象的三個主要屬性:當(dāng)前值、采樣時間、采樣頻率。如圖1所示。
而事務(wù)的定時限制即實時數(shù)據(jù)處理(實時事務(wù))有定時限制(定時可以是絕對、相對或周期時間),超過時限即事務(wù)處理失敗。

圖1 數(shù)據(jù)對象的三個屬性

圖2 通用實時數(shù)據(jù)庫模型

圖3 內(nèi)存數(shù)據(jù)管理

圖4 歷史數(shù)據(jù)處理流程
一般的數(shù)據(jù)庫功能有:(1)數(shù)據(jù)存取,各類數(shù)據(jù)操作、查詢處理、存取方式、完整性檢查;(2)持久數(shù)據(jù)管理,包括數(shù)據(jù)庫的定義、存儲、維護(hù)等;(3)事務(wù)管理,事務(wù)的定義、調(diào)度和并發(fā)控制、執(zhí)行管理;(4)存取控制安全性檢驗;(5)數(shù)據(jù)庫的可靠性恢復(fù)機(jī)制。
而實時數(shù)據(jù)庫(RTDBS)特有如下功能:(1)數(shù)據(jù)庫狀態(tài)的實時性,即數(shù)據(jù)庫的狀態(tài)是現(xiàn)實的真實狀態(tài)的反映;(2)數(shù)據(jù)值的時間一致性,即事務(wù)處理過程所訪問的數(shù)據(jù)是時間一致的;(3)事務(wù)處理的實時性,即事務(wù)及時處理,滿足其定時限制。
實時數(shù)據(jù)庫系統(tǒng)的一般結(jié)構(gòu)模型如圖2所示,主要有實時數(shù)據(jù)管理、歷史數(shù)據(jù)管理、實時事務(wù)管理三大塊,這三部分是構(gòu)成實時數(shù)據(jù)庫的基本功能模塊。安全管理、多服務(wù)器支持等是外層的東西。
如圖3,在實時數(shù)據(jù)庫系統(tǒng)中,為了提高存取速度,要使用大內(nèi)存作為其主要存儲介質(zhì),減少活動期間的磁盤I/O,從而滿足實時事務(wù)的定時限制[4]。而計算機(jī)的物理內(nèi)存是有限的,內(nèi)存中常駐的數(shù)據(jù)一定為存取頻率高頻數(shù)據(jù)。
(1)內(nèi)存中數(shù)據(jù)的內(nèi)容
內(nèi)存中的數(shù)據(jù)分兩種,動態(tài)數(shù)據(jù)和靜態(tài)數(shù)據(jù)。靜態(tài)數(shù)據(jù)指系統(tǒng)信息,用戶信息,數(shù)據(jù)庫結(jié)構(gòu)和組態(tài)信息等相對靜態(tài)并且經(jīng)常訪問的信息。動態(tài)數(shù)據(jù)有兩個緩沖池組成:數(shù)據(jù)緩沖池和程序緩沖池。緩沖池為椎棧式結(jié)構(gòu)。
數(shù)據(jù)緩沖池有包括三部分內(nèi)容:實時數(shù)據(jù)緩沖池,保存了當(dāng)前一段時間內(nèi)(如前一個小時)的實時數(shù)據(jù);歷史數(shù)據(jù)緩沖池,它的大小是設(shè)定的,保存了當(dāng)前一段時間內(nèi)最后訪問的歷史數(shù)據(jù);報警數(shù)據(jù)緩沖池,它的大小是設(shè)定的,保存了當(dāng)前一段時間內(nèi)最后訪問的報警數(shù)據(jù)。
程序緩沖池,它的大小是設(shè)定的,保存了當(dāng)前一段時間內(nèi)最后執(zhí)行的數(shù)據(jù)庫系統(tǒng)程序代碼。
(2)內(nèi)存管理
將可用的內(nèi)存空間邏輯地劃分為“分區(qū)”,每一分區(qū)存儲一種數(shù)據(jù),每一分區(qū)由若干“段”組成。段是內(nèi)存中固定長度的連續(xù)區(qū)域,是內(nèi)存與外存進(jìn)行數(shù)據(jù)交換的單位。為了提高檢索速度,在每一分區(qū)的最前段,系統(tǒng)維護(hù)了一個段的索引。
(3)內(nèi)存和磁盤數(shù)據(jù)的交換
內(nèi)存相對磁盤有著很大的速度優(yōu)勢,但是內(nèi)存容量卻相對小很多,隨著調(diào)度自動化系統(tǒng)中數(shù)據(jù)規(guī)模的增大,將所有數(shù)據(jù)放在內(nèi)存中是不切實際的,因此需要有策略地將數(shù)據(jù)分別存儲。應(yīng)遵循如下原則:靜態(tài)數(shù)據(jù)和關(guān)鍵數(shù)據(jù)必須常駐內(nèi)存中且不能被交換出去;新出現(xiàn)的數(shù)據(jù)在首次處理請求前不能被交換出去;優(yōu)先級高的事務(wù)數(shù)據(jù)在事務(wù) 的活動期不能被交 換出去。
實時數(shù)據(jù)庫系統(tǒng)是一個多進(jìn)程,多線程的復(fù)雜系統(tǒng),其各個進(jìn)程的優(yōu)先級是動態(tài)變化的。各個功能模塊進(jìn)程都是相對獨立的應(yīng)用程序,共同完成實時數(shù)據(jù)庫系統(tǒng)的管理、控制與操縱。它們的主要任務(wù)是事件處理、存儲管理以及系統(tǒng)首次啟動時的初始化。其中事件處理包括數(shù)據(jù)操縱、觸發(fā)器管理和事件管理三個部分。
數(shù)據(jù)操縱負(fù)責(zé)數(shù)據(jù)庫的操作(包括數(shù)據(jù)的插入、刪除、修改和查詢等)、查詢優(yōu)化和數(shù)據(jù)庫控制(包括完整性、安全性控制等)。
觸發(fā)器管理的主要功能有:事件探測、復(fù)合事件處理和發(fā)信號;條件的監(jiān)視與評價;被觸發(fā)活動的執(zhí)行處理。
事件管理主要負(fù)責(zé):各種事件操作(開始、中止、掛起、恢復(fù)、結(jié)束等);實時優(yōu)先級分派;實時調(diào)度算法;實時并發(fā)控制策略??梢圆捎靡环N多級調(diào)度策略:第一級用于區(qū)分實時與非實時事件,第二級用于區(qū)分硬事件和軟事件,第三級則對不同事件采用不同的調(diào)度策略。該調(diào)度策略能很好地滿足實時應(yīng)用的要求。并發(fā)控制則采用一種樂觀方法與封鎖機(jī)制相結(jié)合的策略,既維護(hù)數(shù)據(jù)庫的一致性又盡量滿足事件的時間限制。
在調(diào)度自動實時數(shù)據(jù)庫系統(tǒng)的運行過程中,通常有四個事務(wù)或程序同時執(zhí)行:觸發(fā)事件,監(jiān)控器(包括事件探測器、事件處理器、條件評價器),被觸發(fā)的活動,事件管理及調(diào)度程序。它們的工作流程如下:當(dāng)有外部請求、時鐘或事件條件發(fā)生時,首先將其通知給觸發(fā)器和監(jiān)控器,然后監(jiān)控器啟動事件探測器和處理器進(jìn)行探測處理。如果檢測到的是一個事件,則向監(jiān)控器發(fā)出信號,再調(diào)用狀態(tài)評價器,并按優(yōu)先級順序?qū)λ星樾芜M(jìn)行評價。然后根據(jù)評價結(jié)果進(jìn)行相關(guān)處理。最后解除觸發(fā)事務(wù)的掛起狀態(tài),恢復(fù)系統(tǒng)的正常運行。
歷史數(shù)據(jù)的處理[5]是實時數(shù)據(jù)庫系統(tǒng)的重要組成部分,可通過如圖4的策略來進(jìn)行。
首先是系統(tǒng)的啟動,啟動以后最先要做的就是讀取系統(tǒng)的組態(tài)信息,這是一個初始化的過程,目的是獲得系統(tǒng)的各個參數(shù)。歷史數(shù)據(jù)處理過程中包含兩類文件:索引文件和數(shù)據(jù)文件。由于數(shù)據(jù)規(guī)模一般都非常大,因此采用文件組的方式在磁盤上進(jìn)行存儲,索引文件的功能便是建立磁盤上文件組的Index,用于以后的查詢或修改。索引文件尺寸較小,存儲的是索引而不是內(nèi)容。讀取索引后就可以根據(jù)索引進(jìn)行數(shù)據(jù)文件的創(chuàng)建,索引文件中包含磁盤數(shù)據(jù)文件的相關(guān)信息以及存儲路徑等等。因此獲得了索引文件就相當(dāng)于獲得了一本書的目錄,要想查閱具體某項內(nèi)容可以直接通過頁碼進(jìn)入,從而加速了查詢過程。
接著是獲得需要轉(zhuǎn)存的實時數(shù)據(jù),根據(jù)本文第四部分內(nèi)存數(shù)據(jù)管理中所述的策略,需要將部分實時數(shù)據(jù)轉(zhuǎn)換為歷史數(shù)據(jù),以解決物理內(nèi)存容量有限的問題。實時數(shù)據(jù)可以通過壓縮后再保存到數(shù)據(jù)文件,調(diào)度自動化系統(tǒng)的數(shù)據(jù)規(guī)模一般比較大,通過壓縮可以很好地減少磁盤的使用,從而降低經(jīng)濟(jì)成本。實時數(shù)據(jù)的壓縮分為兩類:有規(guī)律數(shù)據(jù)的壓縮和無規(guī)律數(shù)據(jù)的壓縮。
有規(guī)律數(shù)據(jù)采用邏輯壓縮方法。在一段時間內(nèi),相鄰的數(shù)據(jù)在精度允許范圍內(nèi),常常會滿足某種線性規(guī)律,如果我們利用這個規(guī)律,就可以對采集來的數(shù)據(jù)進(jìn)行壓縮處理,不必要逐點保存。比如計算機(jī)圖形中的矢量圖存儲量非常小,因為其保存的不是圖形的每個像素點的值,而是用矢量描述的圖形,一條線段只需要兩個點(起點和終點)就可以描述出來,所以通過找到數(shù)據(jù)間的關(guān)系進(jìn)行壓縮存儲是非常好的方法。
而對于無規(guī)律數(shù)據(jù)則采用物理壓縮方法。無規(guī)律數(shù)據(jù)即數(shù)據(jù)的變化是隨機(jī)的,無規(guī)律可尋,如設(shè)備發(fā)生故障時產(chǎn)生的數(shù)據(jù)。這類數(shù)據(jù)的壓縮則只能靠普通的數(shù)據(jù)壓縮方法來進(jìn)行壓縮,因此相對有規(guī)律數(shù)據(jù)其壓縮率要小的多。
將壓縮后的數(shù)據(jù)寫入數(shù)據(jù)文件,如果已創(chuàng)建的數(shù)據(jù)文件都已寫滿,就需要更新索引文件,在索引文件中添加新的數(shù)據(jù)文件條目;如果數(shù)據(jù)文件未寫滿,則繼續(xù)獲取新的實時數(shù)據(jù),重復(fù)壓縮再寫入的過程。
實時數(shù)據(jù)庫中的事務(wù)有著定時性和語義相關(guān)性兩大特點。定時性來源于外部顯式給定的事務(wù)處理時限和要處理數(shù)據(jù)隨時間變化兩個方面;語義相關(guān)性包括結(jié)構(gòu)相關(guān)、數(shù)據(jù)相關(guān)和功能替代/結(jié)果補(bǔ)償這幾個方面。
實時事務(wù)處理中的一個關(guān)鍵問題是可預(yù)測性。在一個獨立的事務(wù)上下文中,可預(yù)測性關(guān)系著這樣的問題:事務(wù)處理是否能按時完成?如果一個嚴(yán)格實時的事務(wù)錯過了定時期限,它將導(dǎo)致嚴(yán)重的后果,我們也可以說它的過期給系統(tǒng)帶來了大的負(fù)面影響,因此,我們需要在這類事務(wù)處理前進(jìn)行預(yù)測。這種預(yù)測只有在我們知道這個事務(wù)的最壞情況處理時長和它所需要的數(shù)據(jù)資源的條件下才能完成。同時,知道最差預(yù)測和實際情況間存在差別也是非常重要的。如果能在一個事務(wù)處理前就知道它將在時限內(nèi)完成不了,就可以讓系統(tǒng)丟棄這個事務(wù),從而避免在這個事務(wù)上花費時間,同時不會產(chǎn)生因事務(wù)處理失敗而導(dǎo)致的數(shù)據(jù)恢復(fù)。
一個事務(wù)的執(zhí)行路徑依賴于它所訪問的數(shù)據(jù)項的值,因此預(yù)測一個事務(wù)的最壞執(zhí)行時間可以根據(jù)它所依賴的數(shù)據(jù)來進(jìn)行。由于實時數(shù)據(jù)庫一般采用定時刷新的方式進(jìn)行數(shù)據(jù)同步,我們可以統(tǒng)計各類數(shù)據(jù)的平均訪問時間,而一個事務(wù)的最壞執(zhí)行時間可以設(shè)定為它所需要的數(shù)據(jù)的平均訪問時間的和,也可以再乘以一個大于1的系數(shù),具體可根據(jù)不同的系統(tǒng)來進(jìn)行系數(shù)調(diào)整。
調(diào)度自動化系統(tǒng)在電力系統(tǒng)中發(fā)揮著非常重要的作用,作為其核心的數(shù)據(jù)庫部分是研究的重點。本文首先分析了調(diào)度自動化系統(tǒng)中數(shù)據(jù)的特點,強(qiáng)調(diào)其時限性、處理的并發(fā)性和可恢復(fù)性,接著分析了實時數(shù)據(jù)庫的原理并提出一種通用的模型,比較了其與普通歷史數(shù)據(jù)庫的異同,然后本文詳細(xì)分析了實時數(shù)據(jù)庫模型中的四個主要部分:內(nèi)存數(shù)據(jù)的管理、系統(tǒng)進(jìn)程的管理、歷史數(shù)據(jù)的處理和實時事務(wù)處理。這四個部分是針對實時數(shù)據(jù)庫的特點而設(shè)計的,能夠很好地發(fā)揮實時數(shù)據(jù)庫在調(diào)度自動化系統(tǒng)的作用,促進(jìn)我國電網(wǎng)調(diào)度系統(tǒng)的發(fā)展。
[1]姚建國,楊勝春,高宗和,楊志宏.電網(wǎng)調(diào)度自動化系統(tǒng)發(fā)展趨勢展望[J].電力系統(tǒng)自動化,2007(13).
[2]談蘇偉.電網(wǎng)調(diào)度自動化前置子系統(tǒng)實時數(shù)據(jù)庫的設(shè)計與實現(xiàn)[J].電力自動化設(shè)備,2009(07).
[3]周寧,丁琦.開放實時數(shù)據(jù)庫及其在調(diào)度自動化系統(tǒng)中的應(yīng)用[J].電網(wǎng)技術(shù),2006(S2).
[4]韓慧云,黃梅.電力調(diào)度自動化系統(tǒng)中數(shù)據(jù)庫和人機(jī)界面的設(shè)計[J].電氣時代,2006(01).
[5]陸會明,周釗,廖常斌.基于實時數(shù)據(jù)庫系統(tǒng)的歷史數(shù)據(jù)處理[J].電力自動化設(shè)備,2009(03).