999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

基于SQLite數據庫的歷史航跡管理系統設計與開發

2020-12-07 06:08:03劉峰陳福良
計算機時代 2020年11期
關鍵詞:數據庫

劉峰 陳福良

摘? 要: 為了解決指控系統中對實時目標歷史航跡的顯示需求,設計了一種基于SQLite數據庫的歷史航跡管理系統。結合當前指控系統的實際情況,將歷史航跡管理系統劃分為系統外部通信模塊、態勢處理模塊、存儲處理模塊和人機交互模塊。在商用計算機上對系統存儲和查詢性能進行了測試,測試結果滿足指控系統的實際使用需求。

關鍵詞: 指控系統; 歷史航跡; 數據庫; SQLite

中圖分類號:TP311.1? ? ? ? ? 文獻標識碼:A? ? ?文章編號:1006-8228(2020)11-58-05

Abstract: In order to solve the requirement of displaying the real-time target historical voyage track in the Command and Control System, this paper designs a historical track management system by using SQLite database. Combining with the actual situation of the current Command and Control System, the historical track management system is divided into external communication module, situation processing module, storage processing module and human-computer interaction module. The system is implemented on a commercial computer,and its storage and query performance are tested, the test results meet the actual requirements of the Command and Control System.

Key words: Command and Control System; historical track; database; SQLite

0 引言

隨著艦船裝備雷達系統的快速發展,在對目標定位過程中,產生海量的航跡數據,而現有的指控系統中,為了保證實時目標的響應時間,一般只支持目標少量歷史航跡點的顯示。但是在實際指揮引導的過程中,指揮員需要對目標的歷史軌跡數據與實時航跡進行對比分析,特別是對一些重點關注的目標進行分析,以確定目標的威脅等級、具體型號。因此需要存儲海量歷史航跡數據,并支持指揮人員快速查詢某批目標的歷史航跡數據。

然而,現階段歷史軌跡存儲管理技術不夠完善[2],并且現有的航跡存儲系統往往基于Hadoop、HBase等分布式計算存儲框架[3],對整個指控系統的軟件架構和資源占用要求比較高,因此如何適配指控系統,并做到高效地存儲和查詢歷史航跡數據,成為本系統設計的重點和難點。

本文從此實際需求出發,設計了基于SQLite數據庫的歷史航跡管理系統,并采用Qt進行開發,以適配不同的操作系統。

1 系統架構

歷史航跡管理系統接收指控系統內的實時態勢報文和指揮人員的查詢輸入,按照輸入的查詢規則,從數據庫中查詢符合輸入條件的數據,并將查詢結果打包發送出去,將整個系統劃分為外部通信模塊、態勢處理模塊、存儲處理模塊、人機交互模塊四個部分(見圖1),其中外部通信模塊采用接口適配的開發思想,適配整個系統與外部指控系統之間的通信協議,系統內部各個模塊之間通過消息隊列機制來進行數據同步。

外部通信模塊把從指控系統獲取到的目標態勢數據轉換為內部消息格式發送到態勢處理模塊,態勢處理模塊接收到內部消息數據,提取其中的位置信息,建立數據緩存隊列,當隊列長度到達一定閾值后,將隊列中的數據發送至存儲處理模塊進行入庫處理。存儲處理模塊負責對接收到的數據入庫保存,同時,響應人機交互模塊的查詢請求,從本地SQLITE數據文件中載入符合條件的航跡數據信息。

人機交互模塊接收人機交互界面的查詢請求,調用存儲處理模塊提供的查詢接口,返回滿足用戶查詢請求的數據。

2 外部通信模塊

外部通信模塊目前采用服務總線(DDS)的方式獲取數據,它是現階段指控系統常用的信息傳輸的架構,用來完成指控系統內不同應用軟件之間的信息交互。具體方式如圖2所示,通過DDS歷史航跡管理系統可以訂閱系統內的實時態勢情報態勢,并轉換為內部的信息格式發送給態勢處理模塊。

外部通信模塊作為本系統與外部指控系統之間的通信協議轉換中間層,可以將歷史航跡管理系統與外部指控系統解耦,并且通過修改此模塊可以達到適配采用不同通信架構的指控系統。

3 態勢處理模塊

態勢處理模塊將從外部通信模塊接收到的數據發送至存儲處理模塊。SQLite數據庫作為一種文件數據庫,存儲數據操作相當于文件操作,而態勢數據通過網絡進行接收,因此為了解決數據接收與數據庫文件讀寫速度不匹配的問題,采用數據緩存隊列對態勢數據進行預先保存,整個運行流程如圖3所示。

態勢處理模塊創建態勢數據接收線程,對接收到的態勢數據,提取其中的位置信息,緩存到內部數據隊列中,當隊列中的數據達到一定數量(此閾值可根據實際每秒中接收到的報文數量進行設置,目前設置為1000)時,將整個數據隊列,通過事件的方式發送到數據庫處理模塊,進行入庫保存,程序流程圖如圖4所示。

4 存儲處理模塊

4.1 模塊設計

存儲處理模塊采用SQLite數據庫進行航跡數據存儲,SQLite作為一種輕量級數據庫,支持單生產者多消費者的設計模式,因此存儲處理模塊在初始化時,預先創建數據庫寫入線程以及數據庫查詢線程。

數據寫入線程通過Qt事件消息隊列接收態勢處理模塊打包發送的態勢數據,數據讀取線程則響應人機交互模塊轉發的外部查詢請求,采用多線程處理模式,創建數據存儲和數據查詢線程,提升系統對外部查詢請求的響應,具體結構如圖5所示。

4.2 庫表設計

本系統主要提供單批目標在一段時間內的航跡位置數據,為了提高查詢的效率,每批目標單獨建立庫表,單個批號表中包含時間、經度、緯度、目標類型、航速、航向等列,用來存儲目標的位置數據,并以時間順序進行保存,目標庫表如圖6所示。

目前指控系統單日接收的態勢數據量在千萬級,單個目標表日增加數據在5萬行左右的,隨著時間積累,如果不對時間進行處理的話,存儲的數據量將逐漸增加,導致整個數據庫查詢性能的下降。為了解決此問題,存儲目標航跡數據時,使用多個數據庫文件來保存歷史航跡數據,具體做法為:以天為周期,使用當前日期為名稱,每天自動建立對應日期的數據庫文件。減少庫表中目標記錄,顯著提升查詢的時間性能。

4.3 數據寫入線程

數據寫入線程初始化時,將根據當前系統時間,創建對應日期的db文件,通過事務方式將從態勢處理模塊接收到的數據寫入數據庫,具體的偽代碼如下:

Begin

CreateSQLITEFile(time)

ConnectDB()

Transction() //開啟事務

For(int i=0; i

bool isCreate=JugeTime

if isCreate

CreateSQLITEFile(time)

ConnectDB()

Insert_sql()

Commit() //提交事務

End

其中,函數CreateSQLITEFile(time)根據傳入的1970s的絕對時間,生成相應日期的數據庫文件;ConnectDB()函數的作用是連接本機的SQLite數據庫文件,采用QSqlDatabase類來進行數據庫操作;函數JugeTime()用來判斷態勢數據的時間是否超過今天日期,如果超過,則需要重新建立新的日期的數據庫文件;函數Transction()設置開始事務,采用事務方式的原因是當SQLite插入數據時,默認將單條Insert語句作為事務進行操作,有多少條數據就會產生多少次磁盤操作,而循環使用Insert語句插入數據庫的效率遠低于通過事務方式插入[4];函數Commit()提交事務,完成整個寫入數據庫操作。具體流程圖如圖7所示。

4.4 數據讀取線程

數據讀取線程接收人機交互模塊發送的查詢請求,定義查詢請求結構如圖8所示。

其中uIP表示查詢請求方的IP地址,iBatch表示查詢的目標批號,dfStartTime,dfEndTime表示航跡數據的起始時間。當接收到查詢請求時,數據讀取線程首先根據查詢的起始時間,生成需要讀取的數據庫文件列表,按照查詢的時間順序,依次打開數據庫文件,調用SQLite查詢接口,查詢目標批號的航跡數據,對查詢到的數據,分包發送至人機交互模塊,由人機交互模塊將查詢數據發送給查詢方,偽代碼如下:

Beigin

sql_query=CreateSql(QueryCtrl)

namelist=GetSQLITEDBfileName(start, end)

For(int i=0; i

OpenDBFile(filename)

data=Query_sql(sql_query)

Package(data)

End

其中,函數CreateSql(QueryCtrl),根據接收到的查詢請求,生成相應的sql語句;函數GetSQLITEDBfileName(start,end),根據查詢請求中的起始時間,生成需要讀取db文件列表;函數OpenDBFile(filename)根據輸入的文件名稱,連接數據庫db文件;函數Query_sql(querystring)執行生成的sql查詢語句,返回從SQLite數據庫查詢到的歷史航跡數據;函數Package(data)將查詢到的航跡數據打包,并將打包后的查詢結果通過數據服務總線發送至請求方,具體流程圖如圖9所示。

5 人機交互模塊

主要響應外部其他應用軟件的查詢指令,由于態勢處理模塊設計緩存隊列緩存數據,為了保證查詢結果的時效性,接收到查詢指令后,人機交互模塊發送更新指令到態勢處理模塊,接收到更新指令后,態勢處理模塊會將當前緩存隊列中的所有數據發送到存儲處理模塊進行入庫保存,存儲處理模塊寫入線程完成后將通過Qt事件,傳遞信號給人機交互模塊,當收到數據寫入完成信號時,再將查詢請求轉發至存儲處理模塊,此時存儲模塊再處理數據查詢請求,整個時序如圖10所示。

6 試驗測試

6.1 試驗測試環境

在商用計算機上測試軟件性能,測試環境如下。

⑴ 硬件環境:處理器:Intel(R)Core(TM)i7-7700K CPU@4.2GHz,內存:16GB。

⑵ 軟件環境:Win7 64位操作系統。

6.2 試驗測試結果分析

⑴ 數據寫入性能測試

每隔2s發送1000批航跡點,并將緩存隊列閾值設置為1000,共進行5組測試,取10次試驗的平均耗時為測試結果,記錄時間性能測試結果如表1所示。

⑵ 數據查詢性能測試

查詢符合時間范圍的航跡數據,共進行5組測試,取10次試驗的平均耗時為測試結果,數據查詢性能測試結果如表2所示。

根據實際測試結果,系統平均寫入時間為197.2ms,平均讀取時間為49.2ms,遠低于航跡發送周期2s,滿足指控系統對歷史航跡存儲和查詢的需求。

7 結束語

本文針對指控系統中對目標歷史航跡數據存儲和查詢的需求,設計了系統的總體框架,明確了系統內部的信息流程以及和外部指控系統間的通信方式,并在此基礎上劃分了具體工作的各個功能模塊,采用Qt對各個功能模塊進行開發實現。通過對軟件存儲數據和查詢數據的時間性能進行測試,本系統符合歷史航跡存儲量大、查詢性能高和跨平臺的要求,可以滿足指控系統對實時目標歷史航跡顯示的需求。

參考文獻(References):

[1] Sunny Kumar Aditya & Vikash KumarKarn.Android SQLite Essentials[M].Packt Publishing Limited,2014.8.26.

[2] 格蘭特·艾倫,邁克·歐文斯.SQLite 權威指南(第2版)[M].電子工業出版社,2012.

[3] 程棟.SQLite數據庫在數據分發服務中的應用[J].信息技術,2014.6.

[4] 盛凱,劉忠,周德超.基于PostGIS的歷史航跡重演分析系統設計與開發[J].海軍工程大學學報,2017.10.

[5] 孟凡君,曹偉,管志強.海量雷達數據異常軌跡分析[J].電子科技,2017(30)-1.

[6] 孫曉全,熊永嶺,張艷娜.Android系統中SQLite數據庫使用效率研究[J].電子設計工程,2015.4.

[7] 林培杰,朱安南,程樹英.Android數據庫SQLite性能優化[J].計算機系統應用,2014.23.

[8] 王丹,孔祥偉,何良.SQLite輕型數據庫在試飛領域的應用[J].中國科技信息.2019.9.

[9] 孫成.基于智能設備的嵌入式數據庫安全性研究[D].吉林大學,2015.

猜你喜歡
數據庫
數據庫
財經(2017年15期)2017-07-03 22:40:49
數據庫
財經(2017年2期)2017-03-10 14:35:35
兩種新的非確定數據庫上的Top-K查詢
數據庫
財經(2016年15期)2016-06-03 07:38:02
數據庫
財經(2016年3期)2016-03-07 07:44:46
數據庫
財經(2016年6期)2016-02-24 07:41:51
數據庫
財經(2015年3期)2015-06-09 17:41:31
數據庫
財經(2014年21期)2014-08-18 01:50:18
數據庫
財經(2014年6期)2014-03-12 08:28:19
數據庫
財經(2013年6期)2013-04-29 17:59:30
主站蜘蛛池模板: 国产网友愉拍精品| 中文字幕亚洲精品2页| 国产香蕉97碰碰视频VA碰碰看| 国产日韩欧美在线视频免费观看| 制服丝袜一区| 在线一级毛片| 无码精品国产VA在线观看DVD| 激情午夜婷婷| 亚洲一区免费看| 91九色视频网| 色婷婷亚洲综合五月| 在线播放91| 在线免费a视频| 精品久久久久久久久久久| 国产成人欧美| 性色生活片在线观看| 任我操在线视频| 亚洲人成影院午夜网站| 亚洲AV无码一区二区三区牲色| 成人福利在线视频免费观看| 日韩亚洲综合在线| 亚洲精选高清无码| 国产精品一区二区在线播放| 久久久久免费精品国产| 国产簧片免费在线播放| 欧美成人午夜在线全部免费| 亚洲香蕉久久| 国产成人精品免费av| 欧美日韩另类国产| 九九香蕉视频| 日本久久久久久免费网络| 精品久久久无码专区中文字幕| 日韩a在线观看免费观看| 亚洲人成网站色7777| 亚洲免费毛片| 激情网址在线观看| 亚洲精品桃花岛av在线| 日韩欧美中文在线| 国产精品va免费视频| 国产精品9| 日本免费福利视频| 毛片免费视频| 麻豆精品在线视频| 欧美精品三级在线| 三上悠亚在线精品二区| 色哟哟色院91精品网站| 久久综合亚洲鲁鲁九月天| 国产在线91在线电影| 国产91色| 亚洲成人精品久久| 黄色污网站在线观看| 亚洲国产精品无码AV| 欧美亚洲国产一区| 她的性爱视频| 国产一区二区三区在线精品专区| 啪啪免费视频一区二区| 欧美激情视频一区| 久久中文字幕不卡一二区| 欧美日在线观看| 国产日本欧美亚洲精品视| 九九精品在线观看| 亚洲天堂免费| AV不卡国产在线观看| 亚洲性一区| 自慰高潮喷白浆在线观看| 在线视频一区二区三区不卡| 亚洲精品波多野结衣| 国产午夜福利片在线观看| 98超碰在线观看| 久久精品国产在热久久2019| 亚洲床戏一区| 中文字幕第1页在线播| 乱人伦99久久| 亚洲免费福利视频| 免费欧美一级| 热久久综合这里只有精品电影| 首页亚洲国产丝袜长腿综合| 成人免费午夜视频| 国产成年女人特黄特色大片免费| 日本在线国产| 2020久久国产综合精品swag| 国产亚洲欧美日本一二三本道|