陶曉峰,陳方周
(國(guó)網(wǎng)電力科學(xué)研究院,江蘇南京210003)
用電信息采集系統(tǒng)中主要采用采集終端匯總電表數(shù)據(jù)再上送主站的采集模式[1],其中采集終端和系統(tǒng)主站之間主要采用GPRS無(wú)線通信方式[2]。目前由于地域等原因會(huì)造成無(wú)線通信信號(hào)不穩(wěn)定,導(dǎo)致周期采集任務(wù)中有些任務(wù)會(huì)執(zhí)行失敗,造成部分?jǐn)?shù)據(jù)缺失。為了保證系統(tǒng)采集數(shù)據(jù)的成功率和完整率[3],需要引入數(shù)據(jù)補(bǔ)采機(jī)制作為對(duì)自動(dòng)周期定時(shí)采集的一種必要補(bǔ)充。為了減少大型數(shù)據(jù)庫(kù)I/O操作和提高檢索效率,文中引入了一種基于緩存的海量數(shù)據(jù)的補(bǔ)采策略,通過(guò)在緩存中保存數(shù)據(jù)采集成功與否的狀態(tài)標(biāo)識(shí),直接遍歷緩存數(shù)據(jù),有效減少對(duì)數(shù)據(jù)庫(kù)的檢索壓力,通過(guò)制定延時(shí)同步回寫(xiě)數(shù)據(jù)庫(kù)機(jī)制對(duì)采集成功標(biāo)識(shí)進(jìn)行持久化保存。
數(shù)據(jù)補(bǔ)采策略主要由補(bǔ)采服務(wù)、分布式緩存、采集服務(wù)3個(gè)服務(wù)子模塊組成。補(bǔ)采服務(wù)主要負(fù)責(zé)根據(jù)設(shè)定的采集任務(wù)將每個(gè)數(shù)據(jù)采集狀態(tài)在分布式緩存中進(jìn)行初始化,根據(jù)指定的采集任務(wù)模塊檢索緩存中的數(shù)據(jù)采集狀態(tài)發(fā)起補(bǔ)采任務(wù),任務(wù)保存在分布式緩存的任務(wù)隊(duì)列,采集機(jī)獲取補(bǔ)采任務(wù)進(jìn)行執(zhí)行,通過(guò)解析數(shù)據(jù)報(bào)文,采用數(shù)據(jù)包標(biāo)記(DPM)方法對(duì)采集數(shù)據(jù)包進(jìn)行快速解析,獲取數(shù)據(jù)信息,對(duì)采集成功的數(shù)據(jù)在分布式緩存中進(jìn)行標(biāo)記。補(bǔ)采流程如圖1所示。
在數(shù)據(jù)規(guī)模越來(lái)越大的情況下,采用遍歷數(shù)據(jù)庫(kù)判斷數(shù)據(jù)缺失的方式會(huì)增加數(shù)據(jù)庫(kù)I/O的負(fù)載,而采用對(duì)系統(tǒng)中的數(shù)據(jù)采集項(xiàng)進(jìn)行內(nèi)存初始化打點(diǎn)設(shè)計(jì)方案,則可減少數(shù)據(jù)庫(kù)的直接操作。
圖1數(shù)據(jù)補(bǔ)采流程
哈希技術(shù)在信息系統(tǒng)的數(shù)據(jù)存儲(chǔ)與訪問(wèn)中占有重要地位,它把關(guān)鍵詞直接映射為存儲(chǔ)地址,達(dá)到快速尋址的目的。根據(jù)用電采集系統(tǒng)的物理結(jié)構(gòu),一個(gè)采集設(shè)備下負(fù)責(zé)收集幾百到上千不等的用戶電表數(shù)據(jù),數(shù)據(jù)采集狀態(tài)標(biāo)識(shí)采用位打點(diǎn)標(biāo)記法,系統(tǒng)中通過(guò)數(shù)據(jù)時(shí)標(biāo)Time、測(cè)量點(diǎn)號(hào)Pn和數(shù)據(jù)項(xiàng)編碼Fn共同組成數(shù)據(jù)信息的三元組作為關(guān)鍵詞Key;1個(gè)用戶電表的數(shù)據(jù)狀態(tài)代表1個(gè)數(shù)據(jù)位,數(shù)據(jù)位值0代表沒(méi)采集成功,1代表采集成功,將所有用戶電表的數(shù)據(jù)采集狀態(tài)按測(cè)量點(diǎn)號(hào)Pn組合成一個(gè)狀態(tài)位字符串作為值value,將采集設(shè)備的三元組信息關(guān)鍵詞Key和狀態(tài)位字符串值value進(jìn)行內(nèi)存映射成哈希表。
根據(jù)數(shù)據(jù)分布和哈希函數(shù)的效率選擇哈希函數(shù),文中采用乘法哈希函數(shù):
式中:H(m)為哈希運(yùn)算函數(shù);mi,pi分別為信息關(guān)鍵詞和狀態(tài)位值。此哈希函數(shù)利用乘法的不相關(guān)性[4],提高了檢索速度。
用電信息系統(tǒng)中數(shù)據(jù)的采集交互都是以數(shù)據(jù)包按照一定的協(xié)議格式傳輸?shù)?,DPM法的主要思想是數(shù)據(jù)包發(fā)送給采集服務(wù)器后,由數(shù)據(jù)包解析器將接收到的數(shù)據(jù)包中直接分離出數(shù)據(jù)標(biāo)識(shí)信息[5],對(duì)數(shù)據(jù)格式和詳細(xì)的數(shù)據(jù)明細(xì)采用弱化處理方式提高解析效率。數(shù)據(jù)包的格式如圖2所示,標(biāo)記服務(wù)通過(guò)從數(shù)據(jù)包中提取出數(shù)據(jù)單元標(biāo)識(shí),DPM將解析出數(shù)據(jù)時(shí)間、測(cè)量點(diǎn)號(hào)、數(shù)據(jù)項(xiàng)編碼項(xiàng)作為數(shù)據(jù)信息的三元組,根據(jù)三元組信息組合成Key,根據(jù)上述乘法哈希函數(shù)可以快速定位數(shù)據(jù)采集狀態(tài)標(biāo)記。
圖2數(shù)據(jù)報(bào)文信息域
采集終端下所有用戶的數(shù)據(jù)采集狀態(tài),根據(jù)采集任務(wù)模板預(yù)先初始化生成狀態(tài)位字符,狀態(tài)位通過(guò)位標(biāo)識(shí)符都標(biāo)記在了狀態(tài)字符串內(nèi),將這些狀態(tài)位字符保存在分布式緩存中[6],采集成功的數(shù)據(jù)會(huì)更新相對(duì)應(yīng)的狀態(tài)位字符,補(bǔ)采服務(wù)定期遍歷每個(gè)終端的狀態(tài)字符串,將狀態(tài)位轉(zhuǎn)化為數(shù)組形式,可以一次通過(guò)檢索出狀態(tài)位是0的數(shù)組索引下標(biāo)值,此下標(biāo)值代表了數(shù)據(jù)信息的三元組中的Pn值,根據(jù)Pn值可以定位到唯一的用戶電表。根據(jù)這些信息生成不同的補(bǔ)采任務(wù),前置模塊可以并發(fā)執(zhí)行補(bǔ)采任務(wù)。
對(duì)于保存在內(nèi)存中的采集狀態(tài)是一種暫態(tài)的狀態(tài),當(dāng)程序重新初始化時(shí)就會(huì)丟失,因此需要對(duì)這些狀態(tài)進(jìn)行持久化保存,在數(shù)據(jù)庫(kù)中根據(jù)Map的Key和Value設(shè)計(jì)對(duì)應(yīng)的數(shù)據(jù)表,以數(shù)據(jù)信息三元組中的3個(gè)屬性作為聯(lián)合主鍵,狀態(tài)屬性為Varchar2屬性,采用延遲回寫(xiě)機(jī)制減少對(duì)數(shù)據(jù)庫(kù)的操作[7]。
對(duì)于GPRS無(wú)線通信方式,特別是信號(hào)覆蓋差的地方其在線時(shí)間很不穩(wěn)定,通過(guò)上線即補(bǔ)采策略可以在最大程度上消除信號(hào)不穩(wěn)定帶來(lái)的影響,其原理是當(dāng)終端上線后觸發(fā)一個(gè)上線事件給補(bǔ)采服務(wù),補(bǔ)采服務(wù)監(jiān)聽(tīng)到上線事件后檢索內(nèi)存中的采集狀態(tài),實(shí)時(shí)地生成補(bǔ)采任務(wù)[8]。補(bǔ)采流程如圖3所示。
圖3上線即補(bǔ)采流程
設(shè)定周期補(bǔ)采策略時(shí)根據(jù)系統(tǒng)和通信信道的空閑程度可以調(diào)整補(bǔ)采的策略,通過(guò)靈活定義正則表達(dá)式(一種文本模式,包括普通字符和特殊字符)來(lái)設(shè)定周期補(bǔ)采的時(shí)間和補(bǔ)采頻率,對(duì)一些優(yōu)先級(jí)高的任務(wù)可以提高補(bǔ)采頻率實(shí)現(xiàn)提升采集成功率的目標(biāo)。
該補(bǔ)采策略在青海、新疆、江西、安徽等多個(gè)省級(jí)集中部署的用電信息采集系統(tǒng)中進(jìn)行了實(shí)際運(yùn)用,實(shí)踐證明對(duì)系統(tǒng)提高采集成功率有明顯效果,通過(guò)在一天之中的多次補(bǔ)采,采集成功率至少提高了5%以上。如表1所示。
表1補(bǔ)采策略應(yīng)用和采集成功率關(guān)系表
該補(bǔ)采策略針對(duì)智能用電信息采集中數(shù)據(jù)量大、通信不是很穩(wěn)定的特點(diǎn)設(shè)計(jì)的,實(shí)踐證明該模塊對(duì)用電采集系統(tǒng)提高采集成功率有明顯效果,目前已經(jīng)成為系統(tǒng)中必不可少的關(guān)鍵模塊。
[1]李衛(wèi)良,田 偉,王曉丹.以AMI為核心的智能配用電技術(shù)體系研究[J].江蘇電機(jī)工程,2011,30(3):1-6.
[2]Q/GDW378.1—2009電力用戶用電信息采集系統(tǒng)設(shè)計(jì)導(dǎo)則:主站軟件設(shè)計(jì)導(dǎo)則[S].北京:中國(guó)電力出版社,2009.
[3]Q/GDW376.1—2009電力用戶用電信息采集系統(tǒng)通信協(xié)議:主站與采集終端通信協(xié)議[S].北京:中國(guó)電力出版社,2009.
[4]CORMEN T H,LEISERSON C E,RIVEST R L,et al.Introduc-tion to Algorithms.Third Edition.Cambridge,Massachusetts London,England :The MIT Press,,2009:253-285.
[5]閻 冬,王玉龍,蘇 森,等.基于協(xié)作交互的概率性數(shù)據(jù)包標(biāo)記溯源方法[J].北京郵電大學(xué)學(xué)報(bào),2012,35(1):51-54.
[6]周功業(yè),吳偉杰,陳進(jìn)才.一種基于對(duì)象存儲(chǔ)系統(tǒng)的元數(shù)據(jù)緩存實(shí)現(xiàn)方法[J].計(jì)算機(jī)科學(xué),2007,34(10):146-148.
[7]盧成均.緩存機(jī)制及其在數(shù)據(jù)存取層中的應(yīng)用模型研究[J].計(jì)算機(jī)應(yīng)用與軟件, 2008,25(12):172-174.
[8]錢(qián)立軍,李新家.用電信息采集系統(tǒng)中數(shù)據(jù)比對(duì)功能的實(shí)現(xiàn)及應(yīng)用[J].江蘇電機(jī)工程,2013,32(2):64-65.