在開發(fā)遠程移動監(jiān)控系統(tǒng)時,一般有兩種技術(shù)路線,一種是直接開發(fā)針對特定行業(yè)特定應(yīng)用的系統(tǒng),另一種是選用組態(tài)軟件進行二次開發(fā),這兩種技術(shù)路線各有優(yōu)缺點。當(dāng)管理功能是遠程移動監(jiān)控系統(tǒng)的主要功能點,或者監(jiān)控對象具有非常獨特的行業(yè)特性,直接開發(fā)應(yīng)用系統(tǒng)是一種合理的選擇。而當(dāng)監(jiān)控功能是遠程移動監(jiān)控系統(tǒng)的主要功能點時,選用合適的組態(tài)軟件,可以減少投入成本,縮短項目周期、提高系統(tǒng)穩(wěn)定性,減少失敗風(fēng)險。
不管采取以上哪種技術(shù)路線,都不可避免地要對一個問題進行決策:如何保存采集到的數(shù)據(jù)。保存的概念包括三個方面:內(nèi)存中保存的實時數(shù)據(jù),磁盤上保存的歷史數(shù)據(jù),針對實時數(shù)據(jù)和歷史數(shù)據(jù)的訪問接口??梢赃x擇的方案有五種:
1、組態(tài)軟件本身的內(nèi)存和歷史數(shù)據(jù)庫(或模塊);
2、自定義的內(nèi)存和文件格式;
3、關(guān)系數(shù)據(jù)庫;
4、實時數(shù)據(jù)庫;
5、關(guān)系數(shù)據(jù)庫+實時數(shù)據(jù)庫;
針對以上兩種不同的技術(shù)路線,可以選擇不同的數(shù)據(jù)保存方案,當(dāng)需要采集和保存的數(shù)據(jù)點達到一定的規(guī)模時,就需要采用方案4或方案5,在我的上一篇文章《實時數(shù)據(jù)庫與組態(tài)軟件的市場定位之異同》中,提到了依據(jù)工程總點數(shù)和需保存的總點數(shù)來決定是使用實時數(shù)據(jù)庫還是組態(tài)軟件,在遠程移動監(jiān)控系統(tǒng)中,當(dāng)系統(tǒng)的點數(shù)規(guī)模超出了組態(tài)軟件能處理的范圍時,關(guān)系數(shù)據(jù)庫也同樣不能處理。
還是以那個重型機械廠的項目為例說明,如果按照每臺車輛每10秒向上傳送一次數(shù)據(jù),每次傳送100個數(shù)據(jù),車輛總數(shù)按50000臺計算。
如果采用Oracle關(guān)系數(shù)據(jù)庫來存貯實時和歷史數(shù)據(jù)。對數(shù)據(jù)的保存有兩種方式,這兩種方式也決定了上層Oracle數(shù)據(jù)庫的數(shù)據(jù)表設(shè)計方案。
第一種方案是每個車輛設(shè)備的數(shù)據(jù)用一條記錄來表示,每條記錄有100個字段,這樣設(shè)計的好處是采集服務(wù)器操作ORACLE服務(wù)器的事務(wù)數(shù)比較小,平均每秒鐘的插入事務(wù)數(shù)為50000*5/60=4167條。該方式的缺點是,對不同的DTU需要設(shè)計不同的數(shù)據(jù)表;數(shù)據(jù)不能被壓縮,磁盤空間占用非常大,如果每條記錄按1K來計算,則一年需占用的磁盤空間為:356*24*60*60/5*50000*1024=293335G,再加上索引等輔助內(nèi)容,整個系統(tǒng)一年所占用的磁盤空間約為400000G。
第二種方案是每個車輛設(shè)備的數(shù)據(jù)用多條記錄來表示,每條記錄只記錄該DTU中某一個具體的數(shù)據(jù)點,這樣處理,Oracle服務(wù)器的事務(wù)數(shù)達到每秒鐘50000*100*5/60=416667次,在這種情況下,對數(shù)據(jù)可以采取一些壓縮處理,系統(tǒng)一年所占用的磁盤空間與第一種方案相比,可以減少到1/10左右,約為40000G。
不管是采用以上的哪一種方案,都存在單位時間的讀寫次數(shù)達到系統(tǒng)處理上限,系統(tǒng)容量超出系統(tǒng)上限等困難,導(dǎo)致系統(tǒng)無法使用??梢酝ㄟ^引入網(wǎng)格數(shù)據(jù)庫,或重新規(guī)劃需保存的歷史數(shù)據(jù)等方式解決這些難點問題,但都存在缺點,不是價格高,就是不得不損失相應(yīng)功能。
引入實時數(shù)據(jù)庫,只能部分解決此問題,舉例說明,如果使用我們的實時數(shù)據(jù)庫,單臺服務(wù)器只能處理5000臺左右車輛設(shè)備的數(shù)據(jù)采集和保存問題(經(jīng)過定制改造,如果不改造,單服務(wù)器只能處理1000臺車輛設(shè)備,該問題的瓶頸不在于性能,而在于點數(shù)限制,目前我們的標準實時數(shù)據(jù)庫單臺服務(wù)器只支持126000個數(shù)據(jù)點),仍不能處理高達50000臺車輛設(shè)備。
這時,需要使用分布式實時數(shù)據(jù)庫服務(wù)器來解決超大容量實時和歷史數(shù)據(jù)訪問,如下圖所示可以看到,單臺服務(wù)器處理5千臺設(shè)備,處理的數(shù)據(jù)點為50萬個,10臺實時服務(wù)器能處理5萬臺設(shè)備,處理的總數(shù)據(jù)點為500萬個,調(diào)度服務(wù)器對這10臺服務(wù)器進行調(diào)度,使得10臺服務(wù)器對外部而言(包括采集服務(wù)器和客戶端)是透明的,外部只看到一臺能處理500萬數(shù)據(jù)點的大型實時數(shù)據(jù)庫。
要實現(xiàn)一個分布式分布式實時數(shù)據(jù)庫服務(wù)器,可能做得非常復(fù)雜,但對于大型遠程移動監(jiān)控系統(tǒng)中,可以簡化處理,當(dāng)然,這需要實時數(shù)據(jù)庫支持層次點系統(tǒng)、設(shè)備模塊、在線修改等功能的輔助支持










