鄭寶鋒,劉修國,崔芳姿,范振林,張 超
(1.中國地質大學(武漢)國家地理信息系統工程技術研究中心,湖北 武漢 430000;2.中國地質調查局水文地質環境地質調查中心,河北 保定 071051)
中國地質調查局積極響應國務院《找礦突破戰略行動綱要》,在進行找礦任務時,本著以人為本、安全第一的原則,結合安全生產和應急救援的工作經驗,研發了一套地質調查安全保障(CGSsafety)系統,以提升地質調查單位的安全生產管理和安全保障技術水平。CGSsafety系統采用我國自主知識產權的天地圖和北斗衛星導航系統(BDS),從數字化管理的角度出發,集成了BDS、移動通信網(GPRS)、地理信息系統(GIS)和終端設備,利用計算機技術、網絡技術將文字信息、地理信息、圖片信息、業務內容等統一建立在可實時訪問的數據信息系統下,實現了地質調查野外人員、車輛、飛機、船舶的衛星定位、軌跡跟蹤、緊急呼救、雙向通信、應急救援,野外安全環境條件分析以及地質調查安全生產規范化、系統化、現代化管理。該系統于2013年1月正式運行,是中國地質調查局以及局屬單位日常安全生產管理、年度安全考核的重要抓手,也是地質調查生產調度的重要依據。CGSsafety系統由網絡中心(服務器、網絡環境)、調度指揮中心(指揮大屏、遠程會商)、軟件(安全保障平臺、手機App和野外安全保障終端軟件)、北斗集群式指揮機和野外安全保障終端設備等組成[1-2]。
隨著地質調查任務以及與地質調查單位、野外工作者、物力等配套的北斗設備、車輛、船舶、飛機的逐年增加,數據量逐年增大,對數據庫的穩定性、安全保障時效性提出了更高的要求。為了使CGSsafety系統能更加適應今后工作的要求、更好地保障野外工作者的安全,同時建立更加全面、迅速、準確、靈活的安全生產信息平臺,本文對CGSsafety系統進行了升級,重點介紹了時間序列數據庫在系統中的應用,旨在解決系統中傳統數據庫所遇到的問題以及針對目前系統提出解決方案。
CGSsafety系統的數據來源以野外安全保障終端回傳的定位數據和通信數據為主,還包括用戶單位的日常安全生產管理數據。野外安全保障終端以北斗終端為主,主要包括兩大功能:①實時定位,提供全天候的實時定位系統;②短信報文通信,民用服務每min可傳送一條120個漢字以內的短信息。
截至2018年12月,CGSsafety系統注冊的安全保障終端有4 000余臺,個人終端每30 min自動報位 一次,車載終端每min自動報位一次,且個人終端在野外期間,每日9:00、12:00、16:00各主動報位一次。每天北斗設備的報位數據包括北斗位置信息和北斗短報文信息兩類。按照目前的北斗設備數量,CGSsafety系統每日接收和處理的數據量可達幾萬到十幾萬,同時系統還要為安全生產管理提供統計、分析、管理等必要的數據支持,因此CGSsafety系統在數據存儲和數據訪問性能方面都有較高的要求。
目前,CGSsafety系統的大容量數據存儲采用關系型數據庫(SQLServer),隨著時間的推移,采用的磁盤陣列設備已越來越不能滿足日益增加的北斗數據的存儲和管理需要。根據系統運行以來的數據統計和目前設備的采樣周期計算,一年的數據量約為1 000多萬條,存儲空間約為10G,隨著未來安全生產管理工作的進一步發展和監控頻率的提高,數據量可能會呈幾何級增長。隨著監控頻率和設備數量的增加,對磁盤陣列的空間要求將越來越高,需要不斷增加磁盤空間,使得運行成本持續增長。
CGSsafety系統的實時性強、發送頻率高,具有海量的數據空間要求,普通的關系型數據庫雖能滿足一定的要求,但隨著時間的推移、監控頻率和設備數量的提高,將越來越捉襟見肘,不能適應未來的發展需求。然而,時序數據庫可以很好地滿足CGSsafety系統未來發展的要求。時序數據累計速度非常快,時序數據庫通過提高效率來處理大規模數據,能提供更高的容納率、更快的大規模查詢以及更好的數據壓縮。
CGSsafety系統要求數據庫具有較高的低延遲性,從而實現系統的實時展示、快速查詢等功能,為地質安全生產和安全救援工作的順利進行提供進一步的保障。這就要求數據庫能適應持久的、高性能負荷的數據存儲、處理和快速讀寫。傳統的關系型數據庫存在訪問速度較慢的問題,且在上述環境中會產生較大的訪問性能瓶頸。
傳統的關系型數據庫在應用開發上具有一些得天獨厚的優勢,可為開發者提供更加豐富的開發接口和相關的輔助功能,使開發的應用程序能更快速地讀寫數據。時序數據庫產品具備了普遍的應用程序二次開發接口、系統開發套件,提供了標準的API方法來訪問數據庫管理系統(ODBC),為CGSsafety系統進一步的功能擴展提供了技術支撐,解決了系統升級改造的問題[3-5]。
中國地質調查局配備的北斗終端發送的實時位置信息和短報文都屬于典型的時序數據,由設備在一段時間內連續間隔一定時間生成定位坐標信息或短報文信息。時序數據庫很好地解決了物聯網下的大數據存儲和高并發等問題,本文采用InfoEarthThingDB進行應用。
InfoEarthThingDB是面向物聯網海量監測數據存儲、管理和調度設計的一個時序數據庫,采用最新的Go語言和NodeJS開發,無需任何外部依賴即可獨立部署,支持Windows、Linux等操作系統[6-8]。
InfoEarthThingDB具有的特點為:①物聯網系統往往需要嚴苛的運行環境,InfoEarthThingDB只需安裝一個二進制文件,即可運行于Windows、Linux等系統,完全沒有任何的外部依賴;②底層采用基于NoSQL架構的存儲引擎,提供了極強的寫能力和高壓縮率;③提供了RESTAPI讀寫、查詢接口以及SQLLike的查詢語言,方便使用;④TimeSeries Index,對Tags進行索引,提供了高效的檢索。
時序數據庫解決了大量用戶更新和查詢定位信息的性能問題,特別是在附近點查詢和最近設備查詢方面能實現非常高效的性能,且具有高效的截面數據查詢能力,能瞬時恢復某一時刻的整體場景。一般時序數據庫支持的大量數據插入和高效單點查詢,InfoEarthThingDB同樣具有[9-13]。
CGSsafety系統采用B/S架構,具有設備接入、大數據存儲、數據分析、數據可視化等功能,能對人員、車輛等的北斗終端、通信衛星終端、手機終端上報的位置信息、短信信息、報平安信息、報警信息等進行接收、解析、存儲、管理,還能對數據進行分析處理,提供位置信息展示、歷史軌跡回放、報警信息反饋、數據統計等功能。系統總體邏輯架構如圖1所示。

圖1 系統總體邏輯架構
數據采集層通過北斗終端設備實時采集戶外人員和車輛的位置信息、用戶安全確認信息短報文數據,然后在衛星通信系統的支持下,將這些數據發送到系統數據接收端。數據中心負責對原始報文數據進行解析、處理、入庫,并提供數據服務。監控系統面向安全監控業務人員,通過基本的業務操作和空間數據服務,實現對人員、車輛等位置、安全狀態的監控以及發送危險預警信息。
CGSsafety系統主要由基本操作、監控欄、圖層管理、信息標牌、北斗交互、分度盤等功能模塊組成,如圖2所示。

圖2 CGSsafety系統功能結構
1)基本操作。該模塊主要包括地圖窗口前進或后退,地圖顯示回到初始比例尺,地圖漫游,移動地圖,放大或縮小地圖,在地圖上量算任意兩點間距離或多點間的累計距離,在地圖上繪制任意區域并量算其面積,按省份、矩形、任意多邊形以及范圍面查詢等功能。
2)監控欄。該模塊用于記錄統計所有單位工作組的野外情況,分為全局統計、本單位統計和歸口管理部門統計。該模塊可分別針對項目、工作組和個體進行查詢,在地圖上回放人員或車輛在固定時間段內的活動軌跡,按照多單位或多省份對全局所有野外工作組中配備有北斗設備的人員、車輛、飛機和輪船等個體進行查找等。監控欄界面如圖3所示。

圖3 監控欄界面
3)圖層管理。該模塊用于控制地圖上顯示的地圖圖層。
4)信息標牌。該模塊用于顯示當前野外作業人員、車輛或飛機的相關信息,可查看人員、車輛、飛機等的軌跡信息,為作業人員發送北斗消息等。
5)北斗交互。該模塊包括交互通信、報警記錄、報平安記錄、短信記錄、報警聯系人等功能。
6)分度盤。該模塊用于控制地圖的縮放級別,并可控制地圖移動。
系統建成后,北斗和天通設備的位置信息、短報文信息的實時展示,設備、人員、車輛等查詢性能均得到了明顯的提升,極大地提高了數據存儲、查詢、分析能力,為安全生產管理和人員財產安全提供了更加穩固的保障。
本文在原有業務體系的基礎上,對系統整體技術方案進行了整體升級改造,很好地解決了系統卡頓、經常沒有反應的問題,首頁面加載時間控制在3 s以內,系統操作平均響應時間為0.5 s。為了進一步精確分析時序數據庫與關系型數據庫之間的性能優勢,本文分別從數據庫讀寫性能、并發性、可擴展性等方面進行比較。
1)批量讀寫性能測試比較。本文分別在同一類型的3個主機上安裝SQLServer 2012、MySQL 5.6和InfoEarthThingDB 1.0,對其在不同數據量下數據讀寫完成的響應時間進行測試,每條數據2個字段。多次測試獲得的平均結果如表1所示。

表1 不同數據庫讀寫完成的平均時間/s
從數據庫寫入的響應時間來看(圖4),在數據量較小的情況下,MySQL和InfoEarthThingDB比SQLServer具有優勢;隨著數據量的增大,SQLServer與MySQL的性能接近,而InfoEarthThingDB比二者性能高出接近一倍。從數據庫讀取的響應時間來看(圖5),隨著數據量的增加,InfoEarthThingDB的響應時間依舊很短,性能遠勝于SQLServer和MySQL。總體來說,InfoEarthThingDB在簡單、大量數據存儲方面比SQLServer 和MySQL具有更大的性能優勢。

圖4 數據庫寫入比較

圖5 數據庫讀取比較
2)數據庫并發性測試。對上述3個數據庫的并發性進行測試,結果如表2所示。

表2 數據庫并發性測試結果
由單機數據庫并發測試結果可知(圖6),InfoEarth ThingDB的數據庫并發性高于MySQL和SQLServer,并發性與計算機性能有直接關系,因此數據庫之間的差距都不太大。

圖6 數據庫并發比較
3)可擴展性比較。InfoEarthThingDB的數據存儲非結構化,基于鍵值對,其數據結構不固定,每個元組可根據自身需求增加鍵值對,從而實現模式自由,支持簡單復制、橫向擴展、簡單API等。SQLServer和MySQL屬于關系型數據庫,具有完整性約束,支持多表聯合查詢、視圖、存儲過程、觸發器、索引等復雜查詢,為保證數據庫的ACID,需盡可能地按照要求的范式設計,從而難于橫向擴展。
MySQL和SQLServer在復雜業務處理方面具有得天獨厚的優勢,但應對數據監控業務的秒級數據采集、數據量龐大、快速響應時,InfoEarthThingDB更具性能方面的優勢,可緩解系統瞬時查詢和寫入壓力,提升用戶體驗。
研究結果表明,在CGSsafety系統中采用時序數據庫可以很好地解決海量數據存儲和高頻次數據訪問的問題;且能為CGSsafety系統未來的功能擴展提供必要的功能支持。隨著北斗監控在各領域的大量應用,時序數據庫將在各行各業得到更多更好的應用。