鄭寶鋒,劉修國,崔芳姿,范振林,張 超
(1.中國地質(zhì)大學(xué)(武漢)國家地理信息系統(tǒng)工程技術(shù)研究中心,湖北 武漢 430000;2.中國地質(zhì)調(diào)查局水文地質(zhì)環(huán)境地質(zhì)調(diào)查中心,河北 保定 071051)
中國地質(zhì)調(diào)查局積極響應(yīng)國務(wù)院《找礦突破戰(zhàn)略行動綱要》,在進(jìn)行找礦任務(wù)時,本著以人為本、安全第一的原則,結(jié)合安全生產(chǎn)和應(yīng)急救援的工作經(jīng)驗,研發(fā)了一套地質(zhì)調(diào)查安全保障(CGSsafety)系統(tǒng),以提升地質(zhì)調(diào)查單位的安全生產(chǎn)管理和安全保障技術(shù)水平。CGSsafety系統(tǒng)采用我國自主知識產(chǎn)權(quán)的天地圖和北斗衛(wèi)星導(dǎo)航系統(tǒng)(BDS),從數(shù)字化管理的角度出發(fā),集成了BDS、移動通信網(wǎng)(GPRS)、地理信息系統(tǒng)(GIS)和終端設(shè)備,利用計算機(jī)技術(shù)、網(wǎng)絡(luò)技術(shù)將文字信息、地理信息、圖片信息、業(yè)務(wù)內(nèi)容等統(tǒng)一建立在可實時訪問的數(shù)據(jù)信息系統(tǒng)下,實現(xiàn)了地質(zhì)調(diào)查野外人員、車輛、飛機(jī)、船舶的衛(wèi)星定位、軌跡跟蹤、緊急呼救、雙向通信、應(yīng)急救援,野外安全環(huán)境條件分析以及地質(zhì)調(diào)查安全生產(chǎn)規(guī)范化、系統(tǒng)化、現(xiàn)代化管理。該系統(tǒng)于2013年1月正式運行,是中國地質(zhì)調(diào)查局以及局屬單位日常安全生產(chǎn)管理、年度安全考核的重要抓手,也是地質(zhì)調(diào)查生產(chǎn)調(diào)度的重要依據(jù)。CGSsafety系統(tǒng)由網(wǎng)絡(luò)中心(服務(wù)器、網(wǎng)絡(luò)環(huán)境)、調(diào)度指揮中心(指揮大屏、遠(yuǎn)程會商)、軟件(安全保障平臺、手機(jī)App和野外安全保障終端軟件)、北斗集群式指揮機(jī)和野外安全保障終端設(shè)備等組成[1-2]。
隨著地質(zhì)調(diào)查任務(wù)以及與地質(zhì)調(diào)查單位、野外工作者、物力等配套的北斗設(shè)備、車輛、船舶、飛機(jī)的逐年增加,數(shù)據(jù)量逐年增大,對數(shù)據(jù)庫的穩(wěn)定性、安全保障時效性提出了更高的要求。為了使CGSsafety系統(tǒng)能更加適應(yīng)今后工作的要求、更好地保障野外工作者的安全,同時建立更加全面、迅速、準(zhǔn)確、靈活的安全生產(chǎn)信息平臺,本文對CGSsafety系統(tǒng)進(jìn)行了升級,重點介紹了時間序列數(shù)據(jù)庫在系統(tǒng)中的應(yīng)用,旨在解決系統(tǒng)中傳統(tǒng)數(shù)據(jù)庫所遇到的問題以及針對目前系統(tǒng)提出解決方案。
CGSsafety系統(tǒng)的數(shù)據(jù)來源以野外安全保障終端回傳的定位數(shù)據(jù)和通信數(shù)據(jù)為主,還包括用戶單位的日常安全生產(chǎn)管理數(shù)據(jù)。野外安全保障終端以北斗終端為主,主要包括兩大功能:①實時定位,提供全天候的實時定位系統(tǒng);②短信報文通信,民用服務(wù)每min可傳送一條120個漢字以內(nèi)的短信息。
截至2018年12月,CGSsafety系統(tǒng)注冊的安全保障終端有4 000余臺,個人終端每30 min自動報位 一次,車載終端每min自動報位一次,且個人終端在野外期間,每日9:00、12:00、16:00各主動報位一次。每天北斗設(shè)備的報位數(shù)據(jù)包括北斗位置信息和北斗短報文信息兩類。按照目前的北斗設(shè)備數(shù)量,CGSsafety系統(tǒng)每日接收和處理的數(shù)據(jù)量可達(dá)幾萬到十幾萬,同時系統(tǒng)還要為安全生產(chǎn)管理提供統(tǒng)計、分析、管理等必要的數(shù)據(jù)支持,因此CGSsafety系統(tǒng)在數(shù)據(jù)存儲和數(shù)據(jù)訪問性能方面都有較高的要求。
目前,CGSsafety系統(tǒng)的大容量數(shù)據(jù)存儲采用關(guān)系型數(shù)據(jù)庫(SQLServer),隨著時間的推移,采用的磁盤陣列設(shè)備已越來越不能滿足日益增加的北斗數(shù)據(jù)的存儲和管理需要。根據(jù)系統(tǒng)運行以來的數(shù)據(jù)統(tǒng)計和目前設(shè)備的采樣周期計算,一年的數(shù)據(jù)量約為1 000多萬條,存儲空間約為10G,隨著未來安全生產(chǎn)管理工作的進(jìn)一步發(fā)展和監(jiān)控頻率的提高,數(shù)據(jù)量可能會呈幾何級增長。隨著監(jiān)控頻率和設(shè)備數(shù)量的增加,對磁盤陣列的空間要求將越來越高,需要不斷增加磁盤空間,使得運行成本持續(xù)增長。
CGSsafety系統(tǒng)的實時性強、發(fā)送頻率高,具有海量的數(shù)據(jù)空間要求,普通的關(guān)系型數(shù)據(jù)庫雖能滿足一定的要求,但隨著時間的推移、監(jiān)控頻率和設(shè)備數(shù)量的提高,將越來越捉襟見肘,不能適應(yīng)未來的發(fā)展需求。然而,時序數(shù)據(jù)庫可以很好地滿足CGSsafety系統(tǒng)未來發(fā)展的要求。時序數(shù)據(jù)累計速度非???,時序數(shù)據(jù)庫通過提高效率來處理大規(guī)模數(shù)據(jù),能提供更高的容納率、更快的大規(guī)模查詢以及更好的數(shù)據(jù)壓縮。
CGSsafety系統(tǒng)要求數(shù)據(jù)庫具有較高的低延遲性,從而實現(xiàn)系統(tǒng)的實時展示、快速查詢等功能,為地質(zhì)安全生產(chǎn)和安全救援工作的順利進(jìn)行提供進(jìn)一步的保障。這就要求數(shù)據(jù)庫能適應(yīng)持久的、高性能負(fù)荷的數(shù)據(jù)存儲、處理和快速讀寫。傳統(tǒng)的關(guān)系型數(shù)據(jù)庫存在訪問速度較慢的問題,且在上述環(huán)境中會產(chǎn)生較大的訪問性能瓶頸。
傳統(tǒng)的關(guān)系型數(shù)據(jù)庫在應(yīng)用開發(fā)上具有一些得天獨厚的優(yōu)勢,可為開發(fā)者提供更加豐富的開發(fā)接口和相關(guān)的輔助功能,使開發(fā)的應(yīng)用程序能更快速地讀寫數(shù)據(jù)。時序數(shù)據(jù)庫產(chǎn)品具備了普遍的應(yīng)用程序二次開發(fā)接口、系統(tǒng)開發(fā)套件,提供了標(biāo)準(zhǔn)的API方法來訪問數(shù)據(jù)庫管理系統(tǒng)(ODBC),為CGSsafety系統(tǒng)進(jìn)一步的功能擴(kuò)展提供了技術(shù)支撐,解決了系統(tǒng)升級改造的問題[3-5]。
中國地質(zhì)調(diào)查局配備的北斗終端發(fā)送的實時位置信息和短報文都屬于典型的時序數(shù)據(jù),由設(shè)備在一段時間內(nèi)連續(xù)間隔一定時間生成定位坐標(biāo)信息或短報文信息。時序數(shù)據(jù)庫很好地解決了物聯(lián)網(wǎng)下的大數(shù)據(jù)存儲和高并發(fā)等問題,本文采用InfoEarthThingDB進(jìn)行應(yīng)用。
InfoEarthThingDB是面向物聯(lián)網(wǎng)海量監(jiān)測數(shù)據(jù)存儲、管理和調(diào)度設(shè)計的一個時序數(shù)據(jù)庫,采用最新的Go語言和NodeJS開發(fā),無需任何外部依賴即可獨立部署,支持Windows、Linux等操作系統(tǒng)[6-8]。
InfoEarthThingDB具有的特點為:①物聯(lián)網(wǎng)系統(tǒng)往往需要嚴(yán)苛的運行環(huán)境,InfoEarthThingDB只需安裝一個二進(jìn)制文件,即可運行于Windows、Linux等系統(tǒng),完全沒有任何的外部依賴;②底層采用基于NoSQL架構(gòu)的存儲引擎,提供了極強的寫能力和高壓縮率;③提供了RESTAPI讀寫、查詢接口以及SQLLike的查詢語言,方便使用;④TimeSeries Index,對Tags進(jìn)行索引,提供了高效的檢索。
時序數(shù)據(jù)庫解決了大量用戶更新和查詢定位信息的性能問題,特別是在附近點查詢和最近設(shè)備查詢方面能實現(xiàn)非常高效的性能,且具有高效的截面數(shù)據(jù)查詢能力,能瞬時恢復(fù)某一時刻的整體場景。一般時序數(shù)據(jù)庫支持的大量數(shù)據(jù)插入和高效單點查詢,InfoEarthThingDB同樣具有[9-13]。
CGSsafety系統(tǒng)采用B/S架構(gòu),具有設(shè)備接入、大數(shù)據(jù)存儲、數(shù)據(jù)分析、數(shù)據(jù)可視化等功能,能對人員、車輛等的北斗終端、通信衛(wèi)星終端、手機(jī)終端上報的位置信息、短信信息、報平安信息、報警信息等進(jìn)行接收、解析、存儲、管理,還能對數(shù)據(jù)進(jìn)行分析處理,提供位置信息展示、歷史軌跡回放、報警信息反饋、數(shù)據(jù)統(tǒng)計等功能。系統(tǒng)總體邏輯架構(gòu)如圖1所示。
圖1 系統(tǒng)總體邏輯架構(gòu)
數(shù)據(jù)采集層通過北斗終端設(shè)備實時采集戶外人員和車輛的位置信息、用戶安全確認(rèn)信息短報文數(shù)據(jù),然后在衛(wèi)星通信系統(tǒng)的支持下,將這些數(shù)據(jù)發(fā)送到系統(tǒng)數(shù)據(jù)接收端。數(shù)據(jù)中心負(fù)責(zé)對原始報文數(shù)據(jù)進(jìn)行解析、處理、入庫,并提供數(shù)據(jù)服務(wù)。監(jiān)控系統(tǒng)面向安全監(jiān)控業(yè)務(wù)人員,通過基本的業(yè)務(wù)操作和空間數(shù)據(jù)服務(wù),實現(xiàn)對人員、車輛等位置、安全狀態(tài)的監(jiān)控以及發(fā)送危險預(yù)警信息。
CGSsafety系統(tǒng)主要由基本操作、監(jiān)控欄、圖層管理、信息標(biāo)牌、北斗交互、分度盤等功能模塊組成,如圖2所示。
圖2 CGSsafety系統(tǒng)功能結(jié)構(gòu)
1)基本操作。該模塊主要包括地圖窗口前進(jìn)或后退,地圖顯示回到初始比例尺,地圖漫游,移動地圖,放大或縮小地圖,在地圖上量算任意兩點間距離或多點間的累計距離,在地圖上繪制任意區(qū)域并量算其面積,按省份、矩形、任意多邊形以及范圍面查詢等功能。
2)監(jiān)控欄。該模塊用于記錄統(tǒng)計所有單位工作組的野外情況,分為全局統(tǒng)計、本單位統(tǒng)計和歸口管理部門統(tǒng)計。該模塊可分別針對項目、工作組和個體進(jìn)行查詢,在地圖上回放人員或車輛在固定時間段內(nèi)的活動軌跡,按照多單位或多省份對全局所有野外工作組中配備有北斗設(shè)備的人員、車輛、飛機(jī)和輪船等個體進(jìn)行查找等。監(jiān)控欄界面如圖3所示。
圖3 監(jiān)控欄界面
3)圖層管理。該模塊用于控制地圖上顯示的地圖圖層。
4)信息標(biāo)牌。該模塊用于顯示當(dāng)前野外作業(yè)人員、車輛或飛機(jī)的相關(guān)信息,可查看人員、車輛、飛機(jī)等的軌跡信息,為作業(yè)人員發(fā)送北斗消息等。
5)北斗交互。該模塊包括交互通信、報警記錄、報平安記錄、短信記錄、報警聯(lián)系人等功能。
6)分度盤。該模塊用于控制地圖的縮放級別,并可控制地圖移動。
系統(tǒng)建成后,北斗和天通設(shè)備的位置信息、短報文信息的實時展示,設(shè)備、人員、車輛等查詢性能均得到了明顯的提升,極大地提高了數(shù)據(jù)存儲、查詢、分析能力,為安全生產(chǎn)管理和人員財產(chǎn)安全提供了更加穩(wěn)固的保障。
本文在原有業(yè)務(wù)體系的基礎(chǔ)上,對系統(tǒng)整體技術(shù)方案進(jìn)行了整體升級改造,很好地解決了系統(tǒng)卡頓、經(jīng)常沒有反應(yīng)的問題,首頁面加載時間控制在3 s以內(nèi),系統(tǒng)操作平均響應(yīng)時間為0.5 s。為了進(jìn)一步精確分析時序數(shù)據(jù)庫與關(guān)系型數(shù)據(jù)庫之間的性能優(yōu)勢,本文分別從數(shù)據(jù)庫讀寫性能、并發(fā)性、可擴(kuò)展性等方面進(jìn)行比較。
1)批量讀寫性能測試比較。本文分別在同一類型的3個主機(jī)上安裝SQLServer 2012、MySQL 5.6和InfoEarthThingDB 1.0,對其在不同數(shù)據(jù)量下數(shù)據(jù)讀寫完成的響應(yīng)時間進(jìn)行測試,每條數(shù)據(jù)2個字段。多次測試獲得的平均結(jié)果如表1所示。
表1 不同數(shù)據(jù)庫讀寫完成的平均時間/s
從數(shù)據(jù)庫寫入的響應(yīng)時間來看(圖4),在數(shù)據(jù)量較小的情況下,MySQL和InfoEarthThingDB比SQLServer具有優(yōu)勢;隨著數(shù)據(jù)量的增大,SQLServer與MySQL的性能接近,而InfoEarthThingDB比二者性能高出接近一倍。從數(shù)據(jù)庫讀取的響應(yīng)時間來看(圖5),隨著數(shù)據(jù)量的增加,InfoEarthThingDB的響應(yīng)時間依舊很短,性能遠(yuǎn)勝于SQLServer和MySQL??傮w來說,InfoEarthThingDB在簡單、大量數(shù)據(jù)存儲方面比SQLServer 和MySQL具有更大的性能優(yōu)勢。
圖4 數(shù)據(jù)庫寫入比較
圖5 數(shù)據(jù)庫讀取比較
2)數(shù)據(jù)庫并發(fā)性測試。對上述3個數(shù)據(jù)庫的并發(fā)性進(jìn)行測試,結(jié)果如表2所示。
表2 數(shù)據(jù)庫并發(fā)性測試結(jié)果
由單機(jī)數(shù)據(jù)庫并發(fā)測試結(jié)果可知(圖6),InfoEarth ThingDB的數(shù)據(jù)庫并發(fā)性高于MySQL和SQLServer,并發(fā)性與計算機(jī)性能有直接關(guān)系,因此數(shù)據(jù)庫之間的差距都不太大。
圖6 數(shù)據(jù)庫并發(fā)比較
3)可擴(kuò)展性比較。InfoEarthThingDB的數(shù)據(jù)存儲非結(jié)構(gòu)化,基于鍵值對,其數(shù)據(jù)結(jié)構(gòu)不固定,每個元組可根據(jù)自身需求增加鍵值對,從而實現(xiàn)模式自由,支持簡單復(fù)制、橫向擴(kuò)展、簡單API等。SQLServer和MySQL屬于關(guān)系型數(shù)據(jù)庫,具有完整性約束,支持多表聯(lián)合查詢、視圖、存儲過程、觸發(fā)器、索引等復(fù)雜查詢,為保證數(shù)據(jù)庫的ACID,需盡可能地按照要求的范式設(shè)計,從而難于橫向擴(kuò)展。
MySQL和SQLServer在復(fù)雜業(yè)務(wù)處理方面具有得天獨厚的優(yōu)勢,但應(yīng)對數(shù)據(jù)監(jiān)控業(yè)務(wù)的秒級數(shù)據(jù)采集、數(shù)據(jù)量龐大、快速響應(yīng)時,InfoEarthThingDB更具性能方面的優(yōu)勢,可緩解系統(tǒng)瞬時查詢和寫入壓力,提升用戶體驗。
研究結(jié)果表明,在CGSsafety系統(tǒng)中采用時序數(shù)據(jù)庫可以很好地解決海量數(shù)據(jù)存儲和高頻次數(shù)據(jù)訪問的問題;且能為CGSsafety系統(tǒng)未來的功能擴(kuò)展提供必要的功能支持。隨著北斗監(jiān)控在各領(lǐng)域的大量應(yīng)用,時序數(shù)據(jù)庫將在各行各業(yè)得到更多更好的應(yīng)用。