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
主站蜘蛛池模板: 91免费国产高清观看| WWW丫丫国产成人精品| 综合人妻久久一区二区精品| 欧美色99| 亚洲天堂网2014| av性天堂网| 久久精品女人天堂aaa| 日本爱爱精品一区二区| 综合社区亚洲熟妇p| 伊人色天堂| av在线无码浏览| av午夜福利一片免费看| 91免费观看视频| 自拍中文字幕| 激情五月婷婷综合网| www亚洲天堂| 2019年国产精品自拍不卡| 人人看人人鲁狠狠高清| 亚洲AV无码精品无码久久蜜桃| 91青青视频| 高清码无在线看| 免费av一区二区三区在线| 不卡无码网| 91九色国产在线| 美女扒开下面流白浆在线试听| 亚洲色无码专线精品观看| 国产成人亚洲欧美激情| 国产香蕉一区二区在线网站| 亚洲欧美日韩另类在线一| 成人精品在线观看| 欧美一区二区三区香蕉视| 久久婷婷六月| 第九色区aⅴ天堂久久香| 国产美女91呻吟求| 欧美日韩中文国产| 日韩二区三区无| 亚洲综合网在线观看| 日韩精品成人网页视频在线| 国产永久无码观看在线| 91亚瑟视频| 国产精品毛片一区视频播| 欧美色99| 在线免费a视频| 国产激情无码一区二区免费 | 亚洲伊人久久精品影院| 54pao国产成人免费视频| 中文字幕在线看| 日本色综合网| 日韩精品无码免费专网站| 一级毛片在线播放免费观看| 一级毛片免费观看久| 手机永久AV在线播放| 国产手机在线小视频免费观看 | 国产精品美乳| 99久久精品国产综合婷婷| 欧美一级在线| 波多野结衣爽到高潮漏水大喷| 国产精品美女自慰喷水| 国产美女精品一区二区| 亚洲人成网站日本片| 人人妻人人澡人人爽欧美一区| 欧美另类第一页| 国产成人在线无码免费视频| 亚洲日本中文字幕乱码中文| 香蕉视频在线观看www| 国产精品亚洲天堂| 台湾AV国片精品女同性| 国模视频一区二区| 亚洲香蕉在线| 精品国产女同疯狂摩擦2| 大陆精大陆国产国语精品1024| 欧美成在线视频| 欧美中出一区二区| 国产日韩久久久久无码精品| 国产毛片基地| 午夜啪啪福利| 国产偷倩视频| 日韩欧美网址| 亚洲精品自拍区在线观看| 青青操国产视频| 国产在线91在线电影| 激情爆乳一区二区|