唐 宇
(1.北京全路通信信號研究設計院集團有限公司,北京 100070 2.北京市高速鐵路運行控制系統工程技術研究中心,北京 100070)
近些年來,軌道交通行業迎來了更加廣闊的市場機遇,同時也面臨著更加嚴峻的市場競爭。產品要得到客戶的認可,就必須要快速響應市場變化。如何利用信息技術和控制技術,提高系統及平臺的信息化水平,進而提高產品的綜合競爭力,是許多產商當前面臨的重要課題。
信息是以數據的形式進行存儲與傳輸的,要實現產品的信息化,數據的存取是必不可少的一環,而要提升產品信息化水平,數據的存取能力就必須得到保障。在軌道交通行業,產品信息化水平還有很大的提升空間。而關系型數據庫數據處理速度低,關系數據模型無法對生產過程數據進行高效的處理、存儲與檢索,難以為軌道交通運營、管理過程中產生的海量實時數據提供快速的存取服務。因此,如何面向海量實時數據提供高效的數據存取成為一個亟待解決的重要問題。
本文將介紹實時數據庫如何滿足實時數據的存取需求,并根據綜合監控系統需求提出一種實時數據庫解決方案。
實時數據庫是一種面向海量實時數據存儲的數據庫系統,可用于存儲并管理來自各種控制系統和總線的設備狀態與過程數據,提供系統級、甚至企業級的統一實時數據平臺。
除了要滿足經典數據庫系統的數據正確性、安全性及可靠性之外,實時數據庫還要滿足一些其他特性。在學術研究領域,實時數據庫需要保證數據及事務的定時限制,例如一個更新操作必須在規定時間內完成等,這是由于在實時應用環境中,數據的價值會隨著時間增加而減小[1]。因此,很多學術工作致力于建立模型來研究事務的調度、事務執行時間預測等,以盡量保證數據的實時性。然而市場上很多實時數據庫產品往往并不強調事務調度、執行時間預測等特性,往往更關注吞吐量、數據壓縮比等指標,因為現代實時數據庫已經能實現ms級的操作響應,這已經能滿足絕大多數生產環境應用的需求,而過于復雜的事務調度、時間預測算法反而可能會影響數據庫操作執行效率。
生產環境中的實時數據庫一般包含以下主要特點:
1) 支持分布式數據采集。數據的來源包括分布在不同地理位置的大量設備、傳感器,并能有效兼容多種異構的通信協議。
2) 海量數據的高效存取。數據庫在內存中緩存數據并異步將數據持久化至磁盤,保證數據存取性能;同時提供壓縮比高的有損壓縮技術,節省磁盤空間,能夠在線保存海量歷史數據。
3) 支持動態報警閾值調整。在系統不停機的情況下,數據庫支持在線修改報警觸發條件,以便在第一時間發現緊急情況。
4) 實時數據的整合與發布。實時數據可以通過配套的數據整合工具發布到符合ODBC標準的關系數據庫及EXCEL電子表格中,支持動態報表生成,并方便用戶根據業務需求進行二次開發、信息集成。
從妍妍父母的話語得知,妍妍以前一直都很健康,他們也知道妍妍是在裝病找借口,但女兒是他們的心頭肉,他們不愿意勉強妍妍,所以只能給妍妍請假了。看來,我得先從妍妍父母做工作。我告訴他們,愛孩子也應該有原則,如果我們不能在開學這個階段處理好孩子的“上學恐懼癥”,繼續這樣一味地妥協下去,只會助長孩子以后遇事逃避的壞習慣,甚至會影響孩子的人生。
5) 開放的開發接口。實時數據庫往往會為用戶提供完整的數據存取編程接口,方便用戶根據業務需求進行二次開發。
6) 時鐘同步。提供時鐘同步功能保證數據采集服務器與數據庫服務器的時間一致,避免時間不一致導致的數據異常。
實時數據庫可用于生產過程數據的自動采集、存儲、監視和報警。一個成熟的實時數據庫,通過高壓縮比算法可在線存儲所有數據采集點多年收集的數據。因此,用戶既可以瀏覽當前生產的實時情況,也可回顧生產的歷史情況??梢赃@么理解,實時數據庫對于企業來說就如同飛機上的“黑匣子”。通過實時數據庫可集成ERP、設備維護管理、管理信息系統(MIS)、模擬與優化等應用程序,在業務管理和實時生產之間起到橋梁作用,實現企業信息化、數字化管理。實時數據庫系統在工業生產領域的應用市場前景極其廣闊,目前已廣泛應用于石油化工、冶金、電力、石化、交通、電信、證券、飛行控制、航空航天、智能建筑、氣象等諸多領域,國內市場需求、潛力較大。
軌道交通綜合監控(ISCS)系統是以計算機技術、網絡技術、自動化技術和信息技術等為基礎的計算機集成系統。該系統需要集成多個自動化專業子系統,并對各專業子系統進行統一監控,實現各專業系統的信息共享及系統之間的聯動控制功能,提高運營效率,為實現軌道交通現代化運營管理提供信息化基礎。本章主要分析綜合監控系統對數據存取提出的需求。
綜合監控系統的數據存取功能主要由實時數據庫與關系數據庫共同完成。其中,實時數據庫專門用來提供高效的實時數據存取,是系統運行、處理的核心;關系數據庫負責歷史數據、系統運行參數等數據的存取。根據所存儲數據的作用來劃分,綜合監控系統中的關系數據庫又可分為參數庫與歷史庫,前者存儲著綜合監控系統運行所需的部分參數,后者則主要存放系統監測到的歷史數據,供統計及追溯用。
實時數據庫在綜合監控系統中起著承上啟下的作用,是綜合監控系統運行時的核心服務之一。如圖1所示,一方面,參數庫中的參數內容在實時數據庫啟動時會被加載進實時庫表中,并且隨著系統運行,一些需要保存備份的實時數據會被存入歷史庫中;另一方面,實時庫為界面顯示、交互操作、應用處理服務等提供實時數據支持。

圖1 實時數據庫與其他模塊的交互示意圖Fig.1 Interaction between real-time databases and other modules
保證數據存取的響應速度。實時數據庫主要以內存為存儲介質,而關系數據庫的存儲介質為磁盤。因此,實時數據庫可以提供更快速的操作響應,不會因為參數庫或者歷史庫的時耗而影響界面操作以及應用處理的響應速度。
保證系統可用性。實時數據庫的運行狀態可獨立于參數庫、歷史庫的運行狀態;因此,在參數庫、歷史庫不可使用的情況下,綜合監控系統依然能在實時庫的數據支持下持續運行。
綜合監控系統需要實時數據庫滿足下列核心功能。
1) 海量數據高效的存取。包括監控點的屬性信息(名稱、數據類型、描述信息、計量單位、是否保存歷史數據等)及監控到的數據的增刪查改。
2) 與關系庫的交互。包括在啟動時從參數庫中加載參數數據、將點屬性及監控數據持久化到歷史庫。
3) 數據的訂閱/發布。允許其他模塊訂閱相應的數據并指定數據發布的條件,具體條件包括有更新即發布、數據絕對值超過閾值即發布以及數據的改變值超過閾值即發布。
綜合監控系統還需要實時數據庫提供一定的二維表結構支持。此外,實時數據庫還需要提供消息處理、連接驗證、內存管理、日志管理、主從管理等功能,以確保系統完整性、安全性、可靠性、可用性及可擴展性。
在非功能屬性上,實時數據庫要滿足單點數據讀寫響應時間在數百ms內的需求,能夠在線存儲一條典型軌道交通線路所包含數據采集點的實時數據量,滿足相應的實時數據更新吞吐量需求。
當前商用實時數據庫均為閉源軟件,客戶只能通過數據庫暴露的API進行二次開發,而不能自主修改實時數據庫的特性。另外,購買商用實時數據庫的價格不菲,例如對于一個擁有5 000監測點的系統,主流實時數據庫PI的報價為10萬美金左右,而軌道交通領域中,一個車站的數據收集點個數就不止5 000,一條軌道交通線路包含的各種監測點數則往往是數十萬級的。如果依賴市場上的商業實時數據庫構建綜合監控系統將會導致巨大的成本開銷。因此,自主研發實時數據庫系統可以為企業節約軟件成本。此外,鑒于實時數據庫在其他領域的廣泛應用,實時數據庫產品還有為企業創造利潤的價值。另一方面,實時數據庫是基礎軟件數據庫的一個分支,也是工業控制領域的核心服務之一,自主研發實時數據庫可以提升企業在信息技術、工業控制領域的核心競爭力。
為節省開發時間成本,實時數據庫可以基于內存數據庫進行擴展。內存數據庫主要以內存為存儲介質提供數據的存取服務,不支持關系數據模型。內存數據庫的優點在于存取效率高、性能好,缺點在于功能相對比較單一。根據綜合監控系統的需求,實時數據庫功能模塊框如圖2所示。
對于這些模塊,實時數據庫需要基于內存數據庫添加或修改的功能主要包括(按模塊劃分):
1) 消息監聽模塊:將添加數據訂閱接口以支持與數據值相關的訂閱規則;

圖2 實時數據庫功能模塊框圖Fig.2 Functional modules of real-time databases
2) 消息發送模塊:支持向關系庫發送加載數據、持久化數據的請求,支持點數據的發布;
3) 存取引擎模塊:在更新點數據時,支持將歷史數據進行緩存;
4) 數據持久化模塊:支持將緩存的點數據持久化到歷史庫中;
5) 數據加載模塊:支持將系統運行參數、點屬性、點的歷史值等數據從參數庫、歷史庫中獲??;
6) 訂閱/發布模塊:支持一定的與數據值相關的訂閱規則,包括設定點數據值閾值、點數據值變動閾值等;當更新的點數據值滿足規則時,會將點數據值發布給訂閱者;
7) 內存管理模塊:可清理緩存的歷史數據;
8) 日志管理模塊:支持與實時庫業務相關的日志管理,日志會記錄應用報警、參數加載、數據持久化等信息;
9) 主從管理模塊:采用主從的方式保存數據,避免出現單點故障。
另外,為使客戶端連接到實時庫服務,還需要為應用程序提供客戶端庫??蛻舳藥煨枰峁┑墓δ苤饕校?/p>
1) 管理、維護與實時庫的連接,包括建立、維護、關閉與服務器的連接,出現連接故障時會自動重連,在主服務器出現故障時可連接到備用服務器等;
2) 管理與實時庫的讀寫請求的傳輸,并支持數據操作的批量提交以提升系統吞吐量;
3) 若應用程序希望以操作二維數據表的方式存取數據,客戶端庫需實現對二維數據操作的降維及恢復,包括將對二維表的數據操作轉換為對一維特定格式字符串的操作及其逆轉換。這是因為實時庫采用了高效的鍵值數據模型來存取數據而不是傳統的二維表模型。為同時保證應用程序操作數據的便利性及實時庫處理數據的高性能,客戶端庫需要支持對二維數據操作與對字符串操作的相互轉換。
如何利用信息化技術提升產品信息化水平,以提升產品競爭力是工業領域中諸多企業所面臨的重要問題。作為信息的儲存及傳播的載體,數據不可避免地會成為各方關注的重點,而傳統的關系型數據庫在實時應用場景中難以滿足數據高效存取的需求。實時數據庫,一種能夠快速存取實時數據的數據庫系統,則能夠很好地滿足該類需求。本文根據軌道交通綜合監控系統所提出的需求,分析形成了一種實時數據庫解決方案。