謝 君
上海電氣集團股份有限公司 中央研究院 上海 200070
?
基于實時數據庫的城市軌道交通綜合監(jiān)控系統(tǒng)實時數據壓縮子系統(tǒng)研究*
謝 君
上海電氣集團股份有限公司 中央研究院 上海 200070
在城市軌道交通綜合監(jiān)控系統(tǒng)(ISCS)中,系統(tǒng)不斷擴展導致實時數據量不斷增大,迫切需要一種簡單高效的管理實時數據的方法。分析了實時數據的數學模型,確認了對實時數據進行壓縮處理的可行性。論述了實時數據庫(RTDB)在ISCS通信模型中應用的特點,提出以RTDB為基礎,增加實時數據壓縮模塊,并設計了一套與壓縮方法配套的數據緩存系統(tǒng)。通過數據緩存與壓縮算法的結合,使實時數據壓縮子系統(tǒng)能夠應對ISCS中大量通信數據并發(fā)的問題,實現對ISCS通信數據進行壓縮處理的功能。
實時數據庫; 城市軌道交通綜合監(jiān)控系統(tǒng); 數據處理
為了能夠安全高效地管理城市軌道交通,迫切需要引入城市軌道交通綜合監(jiān)控系統(tǒng)(ISCS)[1]。應用ISCS不僅能夠使城市軌道交通管理更加簡潔高效,而且能夠提高城市軌道交通的安全性和可靠性,為乘客的生命財產安全提供最大保障。ISCS能夠將城市軌道交通各個部分整合起來,形成一個綜合監(jiān)控平臺,完成數據的統(tǒng)一管理[2]。在這一過程中,隨著大量數據的進入,系統(tǒng)內所承擔的負荷在不斷增大,而ISCS的軟硬件資源卻是有限的,因此,能否使用盡可能少的資源處理盡可能多的數據,成為衡量ISCS性能的重要指標之一。使用盡可能少的資源處理盡可能多的數據,實際要做的就是數據壓縮。從信息論角度而言,數據壓縮之所以能發(fā)揮作用,根本原因是現實中許多數據存在冗余,數據壓縮就是要發(fā)現這些冗余的數據,或去除,或減小這些數據的編碼量,使真正有價值的數據能夠被凸現出來[3]。
在ISCS中,包含并協調了眾多子系統(tǒng),使之能夠成為一個整體為外界提供服務。這些子系統(tǒng)分別為監(jiān)控與數據采集系統(tǒng)(SCADA)、電力自動化系統(tǒng)(EMCS)、火災報警系統(tǒng)(FAS)、自動列車監(jiān)控系統(tǒng)(ATS),還有一些通過工業(yè)以太網集成的系統(tǒng),如公共廣播(PA)系統(tǒng)、閉路電視(CCTV)系統(tǒng)、門禁系統(tǒng)(ACS)和乘客信息系統(tǒng)(PIS)。
這些通過工業(yè)以太網集成的系統(tǒng),通過各種通信協議實現信息互通共享[4],這些信息流的冗余度就是壓縮算法所關心的問題。假設有一個字符串序列為1101110110001100100101010101010111000 100111000101…,基于普適概率計算,在目前觀測到的序列中出現了n次1的條件下,可以得到接下來一個數據仍然為1的概率。事件下一個字符仍然為1的條件概率,就是長度n+1的序列中全部都為1的序列的概率除以所有長度n的序列中全部位置上都是1的片段的概率與長度為1的片段中出現1的概率的乘積。
由于最簡單的程序擁有最大的概率,因此可以用程序永遠輸出1的概率來逼近下一位是1的概率,即:
(1)
式中:y為長度n+1的序列中全部都是1的序列的概率;c為概率值,可以伴隨著觀測數量的增多,從0無限逼近1。
在上面的序列中,如果經常出現1,那么接下來一位繼續(xù)出現1的概率很大[5],這也符合工業(yè)現場中數據很少出現大幅波動的情形。正因為大部分時間數據變化都是平緩、不劇烈的,所以數據壓縮方法能夠在這些應用場合起到較為理想的壓縮效果。相反,如果數據完全隨機出現,毫無規(guī)律可言,那么是不能被壓縮的。有了以上數學基礎后,需要設計一套能夠在大量數據中快速找到并處理冗余數據的子系統(tǒng)。
為了獲得較為理想的數據處理實時性,考慮將數據壓縮作為功能模塊嵌入實時數據庫(RTDB)中。RTDB是實時控制系統(tǒng)與數據采集系統(tǒng)的支撐核心,具有數據實時性和事務實時性的特點[6],這些特點對于信息變化極快的ISCS而言是非常重要的。以RTDB作為統(tǒng)一接口向ISCS提供數據,能夠帶來多種數據管理功能和實時瀏覽查詢數據的服務。
綜合以上考慮,在RTDB的基礎上,設計了實時數據壓縮模塊,作為一個子系統(tǒng)為ISCS提供數據支持。
在數據壓縮子系統(tǒng)中,數據緩存是數據從通信設備進入ISCS之前的第一個存儲位置。緩存的作用是暫時存儲進入的數據,數據是否真正進入ISCS還需要作進一步判定,因此,數據緩存的首要任務是完成數據的存儲和再次讀取。針對ISCS中通信數據的特點及具體使用流程,數據壓縮子系統(tǒng)的數據緩存在具體操作方式上不同于一般意義上的數據緩存,主要體現在數據存儲方式、數據查詢方式和緩存空間管理方式。在數據壓縮子系統(tǒng)中,數據經過死區(qū)限值方法處理后進入緩存,這一方法是數據進入緩存的第一道門檻,可以有效降低緩存空間的占用量,達到節(jié)省計算資源的目的。數據進入緩存后,由實時數據壓縮方法對數據進行處理。經過處理后,冗余數據會被壓縮,滿足用戶需求的數據將會被留下,數據量進一步減小,后續(xù)數據的處理難度也因此大幅下降。所有有價值的數據將進入RTDB,最后由RTDB統(tǒng)一向ISCS提供數據。系統(tǒng)間的數據流動關系如圖1所示。
圖1 數據緩存與外圍系統(tǒng)數據流動示意圖
在圖1所示的數據緩存中,數據進入緩存后的存入結構與存入方式不同于一般意義上的數據緩存。合適的存入結構與存入方式能夠在很大程度上降低數據的訪問難度,進而提升數據的訪問效率。結合壓縮算法的使用方式,每一時刻的測量值采用了單向鏈表的存儲方式,如圖2所示。在ISCS應用中,經常會涉及無用數據的刪除及剩余數據的移動問題,單向鏈表恰恰能夠很好地滿足數據頻繁刪改的要求[7]。
圖2 單向鏈表存儲方式示意圖
采用以上存儲方式后,假設一個數據被判斷出在現有條件下屬于冗余數據,那么就意味著這個數據需要被壓縮。反映在圖2的存儲方式中,就是需要去除一個數據,然后將該數據前一位的數據直接鏈接到該數據的后一位數據。同理,假設某次計算后,發(fā)現大量冗余數據,那么也只需要將冗余數據的前一個數據直接鏈接到冗余數據的后一個數據。因此,無論有多少冗余數據,刪除操作都只需要簡單的兩步即可。
數據查詢主要應用在后續(xù)數據讀取時,在數據讀取過程中,由于同時有多個數據源信號進入,需要在大量數據源中快速找到指定的數據源歷史值,因此需要使用恰當的數據組織方式和查找方式。通常情況下,數據點位一旦設置完畢,就不會再改變,即數據源的信息在大部分情況下都只是用于讀取查找,增加或刪除數據源的可能性很低。因此,設計中使用了樹形結構組織各個信號源信息,同時,為了避免數據組織結構過于復雜,降低維護難度,設計中限制樹的深度為3層。每一層使用散列碼對該層數據進行鍵值索引映射,這樣在掌握數據源信息的情形下,可以直接切入樹的中間層進行查找讀取操作,而不需要每一次都從根開始進行查找[8]。具體的組織方式及結構如圖3所示,圖3中每一個數據源經過散列函數后得到一個唯一的鍵編碼,將鍵按以上方式組織起來,得到一棵便于搜索的樹。與此同時,每一個鍵相對應的值體現在圖2所示的數據存儲序列中。
圖3 多源數據存儲方式示意圖
緩存空間管理,就是要發(fā)現緩存中已經過時或無用的數據,并及時清理,以降低緩存的資源占用率。另一方面,緩存的空間管理也受限于緩存的使用方式和使用情況。在本設計方案中,緩存是為壓縮數據而服務的,是數據壓縮前的臨時存儲空間,所以空間管理必須要與壓縮算法緊密結合起來。
考慮到壓縮流程,緩存中的一個數據是否過時由該數據之后的數據進行判定,這就需要索引指示經過判定的數據和尚未經過判定的數據。由于同一信號源的數據是單向鏈表式存儲,因此每一次啟用數據壓縮方法只要從該索引位置開始向后逐個進行判定即可,一旦發(fā)現了過時數據,將首先改變索引位置,然后報告數據過時并將其刪除。
在已有旋轉門算法的基礎上,針對ISCS的通信特點,在使用旋轉門方法之前使用死區(qū)限值對通信數據先進行一次過濾[9],這樣可以避免出現大量冗余數據。由于數據量小了,每次需要計算的數據量也就自然減小,整體響應速度提升。數據量減小還能顯著降低內存消耗量,為整體系統(tǒng)提供更多的計算資源[10]。
使用死區(qū)限值需要對每一個數據源的數據進行首次存儲,表示如下:
private float baseValue;
這里假設閾值為1,那么以baseValue為基礎的上下限分別為baseValue+1和baseValue-1。
考慮到后續(xù)的壓縮方法,之后的數據值兩兩合為一組,與baseValue的上下限進行對比,一旦任何一個值超過所設定的閾值范圍,將把兩個數據值按先后關系放入待處理鏈表中,并將最新的值放入baseValue,以方便后續(xù)的兩個值進行對比。
在后續(xù)壓縮方法計算中,本設計的壓縮方法主要依靠由當前值的上下精度和基礎值的上下精度所圍成的平行四邊形進行判斷。在當前值和基礎值之間的所有數據值都會被判斷是否在該平行四邊形中。如果都在平行四邊形中,那么本次計算結束,等待下一個值到來,再進行一次判斷。如果發(fā)現有一個數據值不在該平行四邊形中,那么將會把該數據值之前的那個值設置為基礎值,然后將當前基礎值與上一個基礎值之間的所有數據值壓縮,再等待下一個值到來,重復以上計算。
程序中具體判定過程為: 計算一條通過待測試數據值且平行于平行四邊形長斜邊的直線是否能夠與平行四邊形其余兩邊產生交點,如果能夠產生交點,則意味著待測試數據值位于平行四邊形內;否則,判定為在平行四邊形外。
通過計算,其中一條長斜邊的直線方程為:
(2)
那么與這條直線平行且通過待測試數據值的直線方程為:
(3)
接下來,只要得到交點坐標就可以進行判斷了。由于待測試數據值位于基礎數據值和當前數據值之間,所以橫坐標必定位于兩者之間,也就意味著可以省去檢測橫坐標。
縱坐標的計算公式為:
(4)
基于RTDB的實時數據壓縮方法在RTDB基礎上增加數據壓縮來達到管理ISCS中大量高并發(fā)通信數據的目的。使用這一方法,一方面保證了工程實施過程中的便捷性和高效性,另一方面還保證了系統(tǒng)處理實時數據的能力和穩(wěn)定性。同時需要認識到,數據壓縮方法有著極強的針對性,需要對具體的數據分析其特點,進而提出具體的處理方法。這一方法有其適用范圍,且存在繼續(xù)改良的空間,這些需要在后期工程中不斷驗證與完善。
[1] 王開滿,王軍,張慎明.城市軌道交通自動化綜合監(jiān)控系統(tǒng)的集成模式[J].城市軌道交通研究,2007,10(3): 57-62.
[2] 張永康.城市軌道交通直流電源監(jiān)控系統(tǒng)中無人值守新技術研究[J].上海電氣技術,2013,6(3): 53-57.
[3] 吳家安.數據壓縮技術及應用[M].北京: 科學出版社,2009.
[4] 王忠杰,任利惠.新型城市軌道交通系統(tǒng)及其性能特征[J].裝備機械,2012(2): 66-72.
[5] 曹雪虹,張宗橙.信息論與編碼[M].北京: 清華大學出版社,2004.
[6] 劉云生.實時數據庫系統(tǒng)[M].北京: 科學出版社,2012.
[7] 嚴蔚敏,吳偉民.數據結構(C語言版)[M].北京: 清華大學出版社,2012.
[8] 王珊,薩師煊.數據庫系統(tǒng)概論[M].4版.北京: 高等教育出版社,2006.
[9] 楊龍.基于RTDB的實時數據壓縮算法研究[D].南京: 南京郵電大學,2013.
[10] 劉紅霞,牛富麗.實時數據庫數據壓縮算法探討與改進[J].化工自動化及儀表,2010,37(6): 72-75.
(編輯: 啟 德)
In ISCS, the continuous expansion of the system leads to the increasing amount of real-time data, so there is an urgent need for a simple and efficient way to manage real-time data. By analyzing the mathematical model of real-time data, the feasibility of real-time data compression was confirmed. After discussing the application characteristics of RTDB in ISCS communication model, proposed to add real-time data compression module based on RTDB while a set of data caching system that supported the compression method was designed. Through the combination of data caching and compression algorithm, the real-time data compression subsystem can deal with the problems of mass communication data concurring in ISCS and realize the function of compressing ISCS communication data.
RTDB; ISCS; Data Processing
2016年10月
謝君(1988— ),男,碩士,助理工程師,主要從事實時數據處理研究工作, E-mail: xiejun4@shanghai-electric.com
TM-9;U231+.92
A
1674-540X(2017)02-001-04
*上海市科學技術委員會企業(yè)合作專項(編號: 15dz1180400)