章 碧,邵立琴,陳遠(yuǎn)志
(中國(guó)船舶重工集團(tuán)公司第七二四研究所,南京 211153)
一種雷達(dá)輻射源目標(biāo)信息快速查詢方法
章 碧,邵立琴,陳遠(yuǎn)志
(中國(guó)船舶重工集團(tuán)公司第七二四研究所,南京 211153)
介紹了一種雷達(dá)輻射源目標(biāo)信息快速查詢方法,描述了該方法的實(shí)施流程和相關(guān)優(yōu)點(diǎn),通過(guò)實(shí)驗(yàn)數(shù)據(jù)證明了其高效性。該方法可以作為相似類型信息(如敵我識(shí)別信息、塔康信息等)查詢功能的通用范式,實(shí)現(xiàn)在大數(shù)據(jù)量目標(biāo)信息中快速獲取滿足不同查詢條件的目標(biāo)信息數(shù)據(jù)。
雷達(dá)輻射源;存儲(chǔ)過(guò)程;多線程;物化視圖;分頁(yè)查詢
雷達(dá)偵測(cè)系統(tǒng)通過(guò)對(duì)接收的輻射源信號(hào)進(jìn)行處理而獲得輻射源目標(biāo)參數(shù)信息,并將這些信息存儲(chǔ)在系統(tǒng)數(shù)據(jù)庫(kù)中。隨著系統(tǒng)工作時(shí)間的不斷累加,數(shù)據(jù)庫(kù)中存儲(chǔ)的雷達(dá)輻射源目標(biāo)參數(shù)信息量也將不斷增大,如果不采取高效率措施,則對(duì)于數(shù)據(jù)庫(kù)中的雷達(dá)輻射源目標(biāo)信息的查詢時(shí)間也將會(huì)越來(lái)越長(zhǎng)。本文針對(duì)輻射源數(shù)據(jù)庫(kù)大數(shù)據(jù)量與查詢效率的矛盾,提出優(yōu)化設(shè)計(jì)方法。對(duì)大數(shù)據(jù)量的雷達(dá)輻射源目標(biāo)信息,一方面進(jìn)行存儲(chǔ)方式的改造,另一方面重新設(shè)計(jì)查詢方式,使得雷達(dá)輻射源目標(biāo)信息的查詢功能在數(shù)據(jù)庫(kù)服務(wù)器端和數(shù)據(jù)庫(kù)客戶端之間達(dá)到資源利用和查詢效率的優(yōu)化,并進(jìn)行通用化處理,使其成為一種相似類型數(shù)據(jù)庫(kù)信息查詢功能的通用范式。
隨著雷達(dá)偵測(cè)系統(tǒng)工作時(shí)間的累加,輻射源信息數(shù)據(jù)的不斷加入,如果數(shù)據(jù)庫(kù)服務(wù)器采用單個(gè)表格來(lái)存儲(chǔ)雷達(dá)輻射源目標(biāo)信息,則該表格將會(huì)成為一張巨表。而查詢一張巨表,往往意味著數(shù)據(jù)庫(kù)客戶端需要從服務(wù)器端的數(shù)據(jù)文件中讀取大量信息(硬解析[1]),在查詢過(guò)程中存在頻繁的數(shù)據(jù)I/O,不僅耗用大量計(jì)算機(jī)資源而且影響查詢效率。有鑒于此,利用單張表格存儲(chǔ)雷達(dá)輻射源目標(biāo)信息的方式通常不可取,取而代之的是使用多張表格來(lái)進(jìn)行存儲(chǔ)。
對(duì)表格的拆分一般分為橫向切割和縱向切割兩種??紤]到巨表行數(shù)過(guò)多,因此考慮對(duì)巨表進(jìn)行橫向切割,即當(dāng)表中數(shù)據(jù)行數(shù)達(dá)到一定數(shù)量時(shí),將其切割為一張子表。為了將多個(gè)子表進(jìn)行邏輯上的關(guān)聯(lián),可以考慮將所有子表的關(guān)聯(lián)數(shù)據(jù)進(jìn)行記錄,即建立一張子表的索引信息表,如表1所示。
表1雷達(dá)輻射源目標(biāo)信息子表索引信息表
從以上索引信息表中可以看出,當(dāng)一張雷達(dá)輻射源目標(biāo)信息子表存儲(chǔ)的信息數(shù)為一百萬(wàn)批時(shí),會(huì)用另一張子表繼續(xù)存儲(chǔ)雷達(dá)輻射源目標(biāo)信息。那么,在查詢雷達(dá)輻射源目標(biāo)信息的時(shí)候,可以根據(jù)時(shí)間條件從其索引信息表中找到一個(gè)或者多個(gè)雷達(dá)輻射源目標(biāo)信息子表,從而減小數(shù)據(jù)篩選的范圍。
為了實(shí)現(xiàn)雷達(dá)輻射源目標(biāo)信息的分表存儲(chǔ),設(shè)計(jì)采用兩個(gè)存儲(chǔ)過(guò)程來(lái)實(shí)現(xiàn),分別為創(chuàng)建子表存儲(chǔ)過(guò)程sp_createrdwtable和入庫(kù)存儲(chǔ)過(guò)程sp_addrdwtotable。前者根據(jù)已存的子表個(gè)數(shù)N-1(N為正整數(shù))創(chuàng)建一個(gè)編號(hào)為N的子表T_RDW_INFO_N(N為八位整數(shù),不足八位則前面補(bǔ)零),后者則向當(dāng)前或者下一編號(hào)的子表中插入一條雷達(dá)輻射源目標(biāo)信息,并更新索引表中相應(yīng)子表的記錄,具體流程如圖1所示。
圖1 入庫(kù)存儲(chǔ)過(guò)程sp_addrdwtotable流程圖
為了提高雷達(dá)輻射源目標(biāo)信息查詢速度,需要解決以下問(wèn)題:
(1) 查詢結(jié)果的條數(shù)在十萬(wàn)級(jí)甚至百萬(wàn)級(jí)的數(shù)據(jù)時(shí),通常導(dǎo)致系統(tǒng)查詢結(jié)果顯示資源相對(duì)不足;
(2) 數(shù)據(jù)查詢過(guò)程耗費(fèi)時(shí)間往往比較長(zhǎng),幾分鐘甚至十幾分鐘;
(3) 數(shù)據(jù)查詢過(guò)程耗費(fèi)網(wǎng)絡(luò)資源多。
針對(duì)查詢結(jié)果顯示資源的不足問(wèn)題,設(shè)計(jì)將查詢結(jié)果進(jìn)行分頁(yè)顯示,每次僅顯示一頁(yè)查詢結(jié)果,同時(shí)應(yīng)具有向上翻頁(yè)、向下翻頁(yè)和頁(yè)面跳轉(zhuǎn)的功能。
針對(duì)查詢過(guò)程耗費(fèi)時(shí)間長(zhǎng)問(wèn)題,設(shè)計(jì)在查詢過(guò)程中將已查詢到的部分結(jié)果先進(jìn)行顯示,而不必等待查詢過(guò)程運(yùn)行完畢,同時(shí)應(yīng)該具有在查詢過(guò)程中隨時(shí)中止查詢的功能。
針對(duì)查詢過(guò)程耗費(fèi)網(wǎng)絡(luò)資源多問(wèn)題,設(shè)計(jì)減少查詢客戶端與服務(wù)器端之間的數(shù)據(jù)交換,即利用查詢客戶端向服務(wù)器端傳遞相應(yīng)存儲(chǔ)過(guò)程中的參數(shù),查詢過(guò)程由性能更高的服務(wù)器端完成,同時(shí)查詢結(jié)果也放在服務(wù)器端。
通過(guò)以上措施,得到查詢結(jié)果的過(guò)程將會(huì)是利用存儲(chǔ)過(guò)程持續(xù)生成的方式,在這個(gè)過(guò)程中可以分頁(yè)查詢已經(jīng)生成的部分結(jié)果。為了實(shí)現(xiàn)快速查詢,可以采用多線程技術(shù),一邊在服務(wù)器端生成查詢結(jié)果,一邊在客戶端讀取查詢結(jié)果。
線程1查詢客戶端通過(guò)向服務(wù)器端傳遞存儲(chǔ)過(guò)程參數(shù),包括查詢條件、查詢結(jié)果顯示方式等,調(diào)用服務(wù)器端中的相關(guān)存儲(chǔ)過(guò)程,生成查詢結(jié)果臨時(shí)表。實(shí)現(xiàn)的具體流程如圖2所示。
圖2 生成查詢結(jié)果臨時(shí)表線程流程圖
線程2每隔一秒查詢一次線程1中生成的查詢結(jié)果臨時(shí)表,得到查詢結(jié)果數(shù)并顯示,同時(shí)得到查詢結(jié)果的總頁(yè)數(shù)作為向上翻頁(yè)、向下翻頁(yè)和頁(yè)面跳轉(zhuǎn)的依據(jù)。
查詢客戶端根據(jù)分頁(yè)查詢的顯示行數(shù)、排序字段和頁(yè)碼等,從線程1中生成的查詢結(jié)果臨時(shí)表中讀取一頁(yè)查詢結(jié)果。
這種雷達(dá)輻射源目標(biāo)信息查詢方法的優(yōu)點(diǎn)是:
(1) 查詢結(jié)果顯示資源占用小,顯示速度快;
(2) 能快速得到查詢結(jié)果,雖然不一定是全部查詢結(jié)果;
(3) 減少了查詢客戶端與服務(wù)器端網(wǎng)絡(luò)之間的數(shù)據(jù)交換。
另一方面,在創(chuàng)建查詢結(jié)果臨時(shí)表的過(guò)程中存在遍歷子表的過(guò)程,而查詢結(jié)果臨時(shí)表中的約束條件,即表格主鍵的設(shè)置,有可能導(dǎo)致大量目標(biāo)信息插值行為無(wú)效,降低查詢結(jié)果臨時(shí)表生成的效率,或者由于查詢條件的復(fù)雜,在子表中篩選滿足查詢條件的目標(biāo)信息時(shí)本身效率就不高。為了解決可能存在的查詢效率低現(xiàn)象,可以再引入一個(gè)線程,快速獲取所有查詢結(jié)果。
線程3查詢客戶端通過(guò)向服務(wù)器端傳遞存儲(chǔ)過(guò)程參數(shù),包括查詢條件、查詢結(jié)果顯示方式等,調(diào)用服務(wù)器端中的相關(guān)存儲(chǔ)過(guò)程,先生成查詢結(jié)果視圖,再將查詢結(jié)果視圖轉(zhuǎn)化成物化視圖[2]。實(shí)現(xiàn)的具體流程如圖3所示。
圖3 生成查詢結(jié)果物化視圖線程流程圖
同時(shí),考慮到生成查詢結(jié)果物化視圖的過(guò)程往往需要耗費(fèi)一定的時(shí)間(比生成查詢結(jié)果臨時(shí)表耗費(fèi)的時(shí)間短),但是在這段時(shí)間內(nèi)無(wú)法讀取物化視圖中的數(shù)據(jù)。針對(duì)該問(wèn)題,系統(tǒng)設(shè)計(jì)在查詢結(jié)果物化視圖生成完成之后,中止線程1中查詢結(jié)果臨時(shí)表的生成和線程2中的定時(shí)查詢。查詢客戶端根據(jù)分頁(yè)查詢的顯示行數(shù)、排序字段和頁(yè)碼等,從線程3中生成的查詢結(jié)果物化視圖中讀取一頁(yè)查詢結(jié)果。
在實(shí)際數(shù)據(jù)庫(kù)使用中,例如選定系統(tǒng)正常工作時(shí)間中跨度為2天的一段時(shí)間。該時(shí)間段內(nèi)存儲(chǔ)的目標(biāo)總數(shù)約為270萬(wàn)條,查詢條件為目標(biāo)國(guó)籍為單一某國(guó),對(duì)雷達(dá)輻射源目標(biāo)信息進(jìn)行查詢,最終得到253批查詢結(jié)果,利用線程1查詢時(shí)耗時(shí)3分27秒,而利用線程3查詢時(shí)耗時(shí)僅為16秒。
在雷達(dá)輻射源目標(biāo)信息查詢過(guò)程中,先啟用線程1和線程2,如果在運(yùn)行線程1時(shí)出現(xiàn)查詢緩慢的情況,則啟用線程3。不論是線程1中生成的查詢結(jié)果臨時(shí)表還是線程3中生成的查詢結(jié)果物化視圖,都可以方便地以外部表等方式進(jìn)行數(shù)據(jù)文件導(dǎo)出。
對(duì)雷達(dá)輻射源目標(biāo)信息存儲(chǔ)的優(yōu)化,一方面加大了目標(biāo)信息存儲(chǔ)結(jié)構(gòu)的復(fù)雜度,另一方面卻令目標(biāo)信息在入庫(kù)過(guò)程中,主鍵約束[3]的判定,由巨表主鍵切換成普通表主鍵,最終反而提升了目標(biāo)信息入庫(kù)的效率。在查詢雷達(dá)輻射源目標(biāo)信息時(shí),根據(jù)查詢時(shí)間段從雷達(dá)輻射源目標(biāo)索引信息表中可以快速定位查詢結(jié)果所在的子表序列,進(jìn)而提升查詢效率。
利用線程1創(chuàng)建查詢結(jié)果臨時(shí)表,在查詢條件僅限于時(shí)間段且查詢結(jié)果沒有主鍵約束時(shí),與利用線程3創(chuàng)建查詢結(jié)果物化視圖的實(shí)際過(guò)程相仿,效率差別小。而在查詢條件復(fù)雜的條件下,創(chuàng)建臨時(shí)表的過(guò)程往往需要遍歷多張目標(biāo)信息子表,可能存在大量的查詢條件判斷和無(wú)效信息插值,從而影響臨時(shí)表創(chuàng)建的效率。
利用線程3創(chuàng)建查詢結(jié)果物化視圖的效率高,但是查詢客戶端無(wú)法在查詢結(jié)果物化視圖的創(chuàng)建過(guò)程中獲取物化視圖中的查詢結(jié)果。當(dāng)查詢結(jié)果中數(shù)據(jù)量大,例如達(dá)到十萬(wàn)級(jí)時(shí),需要等待比較長(zhǎng),無(wú)法快速地獲得一部分查詢結(jié)果,從而影響查詢客戶端用戶的體驗(yàn)。
考慮到查詢客戶端用戶的體驗(yàn),可以采用線程1和線程2結(jié)合的方式;考慮到查詢效率,可以采用線程3的方式。
上述的雷達(dá)輻射源目標(biāo)快速查詢方法是在用戶體驗(yàn)和查詢效率之間進(jìn)行取舍,即以用戶體驗(yàn)為優(yōu)先。當(dāng)雷達(dá)輻射源目標(biāo)信息的查詢速度快,并不影響用戶體驗(yàn)時(shí),以犧牲查詢效率的創(chuàng)建查詢結(jié)果臨時(shí)表的方式來(lái)進(jìn)行查詢。而當(dāng)雷達(dá)輻射源目標(biāo)信息的查詢速度慢,影響了用戶體驗(yàn)時(shí),一方面繼續(xù)創(chuàng)建查詢結(jié)果臨時(shí)表,另一方面開始創(chuàng)建查詢結(jié)果物化視圖以縮短用戶等待全部查詢結(jié)果的時(shí)間,從而達(dá)到用戶體驗(yàn)和查詢效率之間的平衡。
類似于雷達(dá)輻射源目標(biāo)信息的信息,如敵我識(shí)別目標(biāo)信息、塔康目標(biāo)信息等,也會(huì)隨著其對(duì)應(yīng)信號(hào)偵測(cè)系統(tǒng)工作時(shí)間的累加產(chǎn)生大數(shù)據(jù)量的目標(biāo)信息。對(duì)于這一類相類似大數(shù)據(jù)量目標(biāo)信息的快速查詢工程應(yīng)用,可以通過(guò)本文述及的雷達(dá)輻射源目標(biāo)信息快速查詢方法進(jìn)行通用化設(shè)計(jì),以總結(jié)出一種通用范式來(lái)加以解決。
首先,是大數(shù)據(jù)量目標(biāo)信息的存儲(chǔ)。根據(jù)雷達(dá)輻射源目標(biāo)信息的存儲(chǔ)方式,所有類似的信息均可采用信息子表加信息子表索引信息表存儲(chǔ)的方式[4],信息入庫(kù)端只需調(diào)用數(shù)據(jù)庫(kù)中的相應(yīng)存儲(chǔ)過(guò)程。例如,調(diào)用創(chuàng)建子表存儲(chǔ)過(guò)程sp_createrdwtable以及入庫(kù)存儲(chǔ)過(guò)程sp_addrdwtotable來(lái)存儲(chǔ)雷達(dá)輻射源目標(biāo)信息。
然后,是目標(biāo)信息查詢客戶端的設(shè)計(jì)。根據(jù)雷達(dá)輻射源目標(biāo)信息查詢客戶端的設(shè)計(jì)方式,可以總結(jié)出其中應(yīng)該包含的幾個(gè)關(guān)鍵要素:
(1) 需設(shè)置查詢時(shí)間段;
(2) 按照信號(hào)參數(shù)特點(diǎn)編輯查詢條件;
(3) 按照信號(hào)參數(shù)選擇排序字段及其排序方式(升序、降序);
(4) 可設(shè)置查詢結(jié)果表格顯示的行數(shù);
(5) 查詢結(jié)果臨時(shí)表是否設(shè)置主鍵;
(6) 可中斷查詢過(guò)程;
(7) 具有向上翻頁(yè)、向下翻頁(yè)和頁(yè)面跳轉(zhuǎn)功能;
(8) 具有查詢結(jié)果數(shù)據(jù)導(dǎo)出功能。
最后,是在數(shù)據(jù)庫(kù)服務(wù)器端創(chuàng)建與快速查詢相關(guān)的存儲(chǔ)過(guò)程。以雷達(dá)輻射源目標(biāo)信息快速查詢相關(guān)的存儲(chǔ)過(guò)程為例列舉如下:
(1) sp_getrdwtables:獲取滿足時(shí)間條件的雷達(dá)輻射源目標(biāo)信息子表序列的存儲(chǔ)過(guò)程;
(2) sp_getrdwtemptableandcount:由一張雷達(dá)輻射源目標(biāo)信息子表創(chuàng)建滿足查詢條件的臨時(shí)表并獲取表中目標(biāo)信息的條數(shù);
(3) sp_getrdwcountandcreateview:獲取雷達(dá)輻射源目標(biāo)信息子表序列中所有滿足查詢條件目標(biāo)信息的條數(shù)并創(chuàng)建查詢結(jié)果視圖;
(4) sp_insertrdwintotemptable:創(chuàng)建雷達(dá)輻射源目標(biāo)信息查詢結(jié)果臨時(shí)表并將查詢結(jié)果插入該表;
(5) sp_createmviewforrdw:由雷達(dá)輻射源目標(biāo)信息查詢結(jié)果視圖生成物化視圖。
雷達(dá)輻射源目標(biāo)信息查詢客戶端通過(guò)多線程技術(shù)調(diào)用以上5種存儲(chǔ)過(guò)程,可以實(shí)現(xiàn)雷達(dá)輻射源目標(biāo)信息的快速查詢。
當(dāng)應(yīng)用到敵我識(shí)別目標(biāo)信息數(shù)據(jù)庫(kù)時(shí),設(shè)計(jì)考慮如下:
首先,在數(shù)據(jù)庫(kù)服務(wù)器端創(chuàng)建兩個(gè)存儲(chǔ)過(guò)程:sp_createifftable(敵我識(shí)別目標(biāo)信息子表創(chuàng)建存儲(chǔ)過(guò)程)和sp_addifftotable(敵我識(shí)別目標(biāo)信息入庫(kù)存儲(chǔ)過(guò)程),以存儲(chǔ)大數(shù)據(jù)量的敵我識(shí)別信息;
然后,根據(jù)目標(biāo)信息查詢客戶端設(shè)計(jì)的八個(gè)要素設(shè)計(jì)敵我識(shí)別目標(biāo)信息查詢客戶端,如圖4所示。
最后,在數(shù)據(jù)庫(kù)服務(wù)器上編寫與敵我識(shí)別目標(biāo)信息快速查詢相關(guān)的存儲(chǔ)過(guò)程,列表如下:
(1) sp_getifftables:獲取滿足時(shí)間條件的敵我識(shí)別目標(biāo)信息子表序列的存儲(chǔ)過(guò)程;
(2) sp_getifftemptableandcount:由一張敵我識(shí)別目標(biāo)信息子表創(chuàng)建滿足查詢條件的臨時(shí)表并獲取表中目標(biāo)信息的條數(shù);
圖4 敵我識(shí)別目標(biāo)信息查詢客戶端
(3) sp_getiffcountandcreateview:獲取敵我識(shí)別目標(biāo)信息子表序列中所有滿足查詢條件目標(biāo)信息的條數(shù)并創(chuàng)建查詢結(jié)果視圖;
(4) sp_insertiffintotemptable:創(chuàng)建敵我識(shí)別目標(biāo)信息查詢結(jié)果臨時(shí)表并將查詢結(jié)果插入該表;
(5) sp_createmviewforiff:由敵我識(shí)別目標(biāo)信息查詢結(jié)果視圖生成物化視圖。
敵我識(shí)別目標(biāo)信息查詢客戶端通過(guò)多線程技術(shù)調(diào)用以上5種存儲(chǔ)過(guò)程,即可以實(shí)現(xiàn)敵我識(shí)別目標(biāo)信息的快速查詢。
通過(guò)以上的介紹與分析,本文所介紹的雷達(dá)輻射源目標(biāo)信息快速查詢方法有效提高了大容量數(shù)據(jù)庫(kù)輻射源目標(biāo)信息查詢效率,在實(shí)際應(yīng)用中,該方法得到了充分的驗(yàn)證。另一方面,通過(guò)通用化設(shè)計(jì)本查詢方法可以作為一種通用范式解決類似數(shù)據(jù)庫(kù)的查詢問(wèn)題。
[1] Thomas Kyte. Oracle Database 9I/10G/11G編程藝術(shù)[M].北京:人民郵電出版社,2015:4.
[2] 丁士鋒,等. Oracle PL/SQL從入門到精通[M].北京:清華大學(xué)出版社,2012: 253.
[3] 楊建榮. Oracle DBA工作筆記[M].北京:中國(guó)鐵道出版社,2016:351.
[4] 林樹澤,等. Oracle DBA高可用、備份恢復(fù)與性能優(yōu)化[M].北京:清華大學(xué)出版社,2015:76.
A method of quickly searching target information of radar radiation sources
ZHANG Bi, SHAO Li-qin, CHEN Yuan-zhi
(No. 724 Research Institute of CSIC, Nanjing 211153)
A method of quickly searching the target information of the radar radiation sources is introduced. The implementation process and the relevant advantages of the method are described, and its high efficiency is verified through the test data. This method can be regarded as a general paradigm of searching similar types of information (such as IFF and TACAN, etc.) to rapidly get the data that meet the different search conditions from massive target information.
radar radiation source; storage procedure; multithreading; materialized view; paged query
TN757.52
A
1009-0401(2017)04-0062-04
2017-08-10;
2017-08-22
章碧(1983-),男,高級(jí)工程師,碩士,研究方向:數(shù)據(jù)庫(kù)設(shè)計(jì)與信號(hào)識(shí)別;邵立琴(1977-),女,工程師,研究方向:數(shù)據(jù)處理;陳遠(yuǎn)志(1970-),男,工程師,碩士,研究方向:軟件工程。