一種目標(biāo)特性實(shí)時(shí)數(shù)據(jù)庫(kù)及其應(yīng)用方法
【專利說(shuō)明】一種目標(biāo)特性實(shí)時(shí)數(shù)據(jù)庫(kù)及其應(yīng)用方法
[0001]
技術(shù)領(lǐng)域
[0002]本發(fā)明涉及數(shù)據(jù)處理領(lǐng)域,特別涉及目標(biāo)成像半實(shí)物/全數(shù)字仿真領(lǐng)域的一種基于Berkeyley DB的以共享內(nèi)存通信的數(shù)據(jù)庫(kù)及其應(yīng)用方法。
[0003]
【背景技術(shù)】
[0004]電磁環(huán)境模型是目標(biāo)成像半實(shí)物/全數(shù)字仿真的基礎(chǔ),電磁環(huán)境建模在產(chǎn)品研發(fā)領(lǐng)域發(fā)揮著重要應(yīng)用。實(shí)時(shí)模擬一個(gè)逼真的電磁環(huán)境需要大量的數(shù)據(jù)作為支撐,如何高效地運(yùn)用這些海量數(shù)據(jù),使之滿足仿真系統(tǒng)的實(shí)時(shí)性要求極為重要。
[0005]Berkeyley DB是一種零配置運(yùn)行模式,數(shù)據(jù)庫(kù)資源占用少,實(shí)時(shí)性強(qiáng),操作簡(jiǎn)單可靠,滿足電磁環(huán)境仿真的需要。以Berkeyley DB為核心的嵌入式數(shù)據(jù)庫(kù)可以滿足仿真系統(tǒng)實(shí)時(shí)性的要求。所述的以Berkeyley DB為核心的嵌入式數(shù)據(jù)庫(kù)直接運(yùn)行在應(yīng)用程序進(jìn)程中,無(wú)數(shù)據(jù)庫(kù)服務(wù)器的概念,應(yīng)用程序不需要事先同數(shù)據(jù)庫(kù)服務(wù)建立起網(wǎng)絡(luò)連接,而是通過(guò)內(nèi)嵌在程序中的Berkeyley DB函數(shù)庫(kù)來(lái)完成對(duì)數(shù)據(jù)的保存、查詢、修改和刪除等操作。但是Berkeyley DB為核心的嵌入式數(shù)據(jù)庫(kù)直接嵌入到仿真應(yīng)用程序中使用可能會(huì)發(fā)生兼容性問(wèn)題。例如,有些仿真應(yīng)用程序需運(yùn)行在Microsoft Visual C++6.0環(huán)境下,而B(niǎo)erkeyley DB 需運(yùn)行在 Microsoft Visual Stud12005 或以上版本下,因而將 BerkeyleyDB直接嵌入到該應(yīng)用程序會(huì)產(chǎn)生版本兼容性問(wèn)題。解決方案之一是將仿真應(yīng)用程序移植到與Berkeyley DB兼容的環(huán)境下,但對(duì)于復(fù)雜的仿真應(yīng)用程序,這樣做的代價(jià)太大。
[0006]
【發(fā)明內(nèi)容】
[0007]本發(fā)明解決的問(wèn)題是Berkeyley DB為核心的嵌入式數(shù)據(jù)庫(kù)會(huì)發(fā)生與應(yīng)用程序不兼容的問(wèn)題;為解決所述問(wèn)題,本發(fā)明提供一種基于Berkeyley DB的數(shù)據(jù)庫(kù)及其應(yīng)用方法。
[0008]本發(fā)明提供的基于Berkeyley DB的數(shù)據(jù)庫(kù),包括:數(shù)據(jù)庫(kù)更新模塊、通信模塊、數(shù)據(jù)讀取模塊和數(shù)據(jù)資源模塊;所述的通信模塊包括映像文件創(chuàng)建端口和共享內(nèi)存交互端口,數(shù)據(jù)庫(kù)與應(yīng)用程序通過(guò)共享內(nèi)存進(jìn)行數(shù)據(jù)交互。
[0009]進(jìn)一步,所述的數(shù)據(jù)庫(kù)更新模塊包括數(shù)據(jù)寫(xiě)入端口、數(shù)據(jù)刪除端口和數(shù)據(jù)更新端□。
[0010]進(jìn)一步,所述的數(shù)據(jù)讀取模塊包括實(shí)時(shí)數(shù)據(jù)讀取端口,負(fù)責(zé)實(shí)時(shí)響應(yīng)客戶端數(shù)據(jù)讀取的請(qǐng)求。
[0011]進(jìn)一步,所述數(shù)據(jù)資源模塊包括目標(biāo)特性數(shù)據(jù)集,提供應(yīng)用程序所需要的目標(biāo)特性數(shù)據(jù)。
[0012]進(jìn)一步,所述數(shù)據(jù)庫(kù)由Key/data對(duì)進(jìn)行數(shù)據(jù)管理,key為訪問(wèn)數(shù)據(jù)的關(guān)鍵字,根據(jù)服務(wù)對(duì)象的特征對(duì)key進(jìn)行編碼,服務(wù)對(duì)象在對(duì)應(yīng)特征下的輻射特性數(shù)據(jù)保存在與key對(duì)應(yīng)的data中。
[0013]本發(fā)明提供的基于Berkeyley DB的數(shù)據(jù)庫(kù)的應(yīng)用方法,包括:
步驟一、建構(gòu)數(shù)據(jù)庫(kù);
步驟二、應(yīng)用程序啟動(dòng)時(shí),數(shù)據(jù)庫(kù)所在的服務(wù)端調(diào)用映像文件創(chuàng)建端口創(chuàng)建共享內(nèi)存;
步驟三、客戶端應(yīng)用程序在運(yùn)行過(guò)程中,根據(jù)服務(wù)對(duì)象的當(dāng)前狀態(tài)形成用于數(shù)據(jù)訪問(wèn)的key編碼,并將所述key編碼寫(xiě)入共享內(nèi)存;
步驟四、服務(wù)端在預(yù)定的周期內(nèi)檢查共享內(nèi)存是否更新,如果更新,則讀取更新的key編碼,在數(shù)據(jù)資源模塊中查詢到對(duì)應(yīng)的data,并將data寫(xiě)入共享內(nèi)存,客戶端讀取所述data,完成數(shù)據(jù)交互。
進(jìn)一步,客戶端由通信模塊調(diào)用共享內(nèi)存交互端口,首先判斷共享內(nèi)存是否被其他進(jìn)程占用;如果被占用,則等待;如果未被占用,則獲取指向共享內(nèi)存的指針,并將key編碼寫(xiě)入共享內(nèi)存。
[0014]本發(fā)明的優(yōu)點(diǎn)包括:放棄了 Berkeyley DB傳統(tǒng)的直接嵌入到應(yīng)用程序中的方式,采用基于共享內(nèi)存的數(shù)據(jù)交互方式,即服務(wù)端和客戶端分別運(yùn)行在兩個(gè)獨(dú)立的進(jìn)程,兩者通過(guò)共享內(nèi)存進(jìn)行數(shù)據(jù)交互,從而解決了 Berkeyley DB為核心的嵌入式數(shù)據(jù)庫(kù)會(huì)發(fā)生與應(yīng)用程序不兼容的問(wèn)題;
Berkeyley DB為核心的目標(biāo)特性實(shí)時(shí)數(shù)據(jù)庫(kù)可以實(shí)時(shí)響應(yīng)客戶端的數(shù)據(jù)請(qǐng)求,響應(yīng)速度小于1ms。
[0015]
【附圖說(shuō)明】
[0016]圖1是本發(fā)明的實(shí)施例提供的基于Berkeyley DB的目標(biāo)特性實(shí)時(shí)數(shù)據(jù)庫(kù)的結(jié)構(gòu)不意圖;
圖2是本發(fā)明的實(shí)施例提供的基于Berkeyley DB的目標(biāo)特性實(shí)時(shí)數(shù)據(jù)庫(kù)的應(yīng)用方法流程示意圖。
[0017]
【具體實(shí)施方式】
[0018]下文中,結(jié)合附圖和實(shí)施例對(duì)本發(fā)明作進(jìn)一步闡述。
[0019]本發(fā)明所提過(guò)的基于Berkeyley DB的目標(biāo)特性實(shí)時(shí)數(shù)據(jù)庫(kù)及其應(yīng)用方法可以用于所有的數(shù)據(jù)庫(kù),在本實(shí)施例中,以電磁環(huán)境仿真用數(shù)據(jù)庫(kù)為例,對(duì)本發(fā)明作示意性闡述。
[0020]如圖1所示,本發(fā)明提供的基于Berkeyley DB的目標(biāo)特性實(shí)時(shí)數(shù)據(jù)庫(kù),包括:數(shù)據(jù)庫(kù)更新模塊10、通信模塊20、數(shù)據(jù)讀取模塊30和數(shù)據(jù)資源模塊40 ;所述的通信模塊30包括映像文件創(chuàng)建端口和共享內(nèi)存交互端口,數(shù)據(jù)庫(kù)與應(yīng)用程序通過(guò)共享內(nèi)存進(jìn)行數(shù)據(jù)交互。
[0021]本發(fā)明提供的基于Berkeyley DB的目標(biāo)特性實(shí)時(shí)數(shù)據(jù)庫(kù),獨(dú)立于應(yīng)用程序運(yùn)行環(huán)境。作為服務(wù)端,數(shù)據(jù)庫(kù)啟動(dòng)后為客戶端的應(yīng)用程序提供后臺(tái)實(shí)時(shí)數(shù)據(jù)支撐。服務(wù)端與客戶端通過(guò)共享內(nèi)存進(jìn)行數(shù)據(jù)交互。
[0022]繼續(xù)參考圖1,所述的數(shù)據(jù)庫(kù)更新模塊10主要由數(shù)據(jù)寫(xiě)入端口、數(shù)據(jù)刪除端口和數(shù)據(jù)更新端口構(gòu)成,所述數(shù)據(jù)寫(xiě)入端口提供數(shù)據(jù)寫(xiě)入功能、數(shù)據(jù)刪除端口提供數(shù)據(jù)刪除功能、數(shù)據(jù)更新端口提供數(shù)據(jù)更新功能。
[0023]根據(jù)電磁環(huán)境仿真的實(shí)際情況,仿真過(guò)程中無(wú)需實(shí)時(shí)更新數(shù)據(jù)庫(kù),數(shù)據(jù)的寫(xiě)入、刪除和更新作為數(shù)據(jù)庫(kù)的維護(hù)環(huán)節(jié)在仿真程序啟動(dòng)之前完成即可。寫(xiě)入的數(shù)據(jù)存儲(chǔ)在數(shù)據(jù)資源模塊40。
[0024]通信模塊20負(fù)責(zé)服務(wù)端與客戶端的數(shù)據(jù)交互,由映像文件創(chuàng)建端口和共享內(nèi)存數(shù)據(jù)交互端口構(gòu)成。為了使服務(wù)端獨(dú)立于客戶端應(yīng)用程序的運(yùn)行環(huán)境,解決Berkeyley DB與仿真程序運(yùn)行環(huán)境的兼容性問(wèn)題,本發(fā)明采用基于共享內(nèi)存的數(shù)據(jù)交互方式,即服務(wù)端和客戶端分別運(yùn)行在兩個(gè)獨(dú)立的進(jìn)程,兩者通過(guò)共享內(nèi)存進(jìn)行數(shù)據(jù)交互。在應(yīng)用程序啟動(dòng)時(shí),調(diào)用映像文件創(chuàng)建端口,根據(jù)事先約定的名稱創(chuàng)建映像文件,即共享內(nèi)存。
[0025]數(shù)據(jù)讀取模塊30負(fù)責(zé)實(shí)時(shí)響應(yīng)客戶端數(shù)據(jù)讀取的請(qǐng)求,主要包括實(shí)時(shí)數(shù)據(jù)讀取端口。
[0026]數(shù)據(jù)資源模塊40提供電磁環(huán)境仿真所需的目標(biāo)特征數(shù)據(jù)集。
[0027]結(jié)合參考圖1和圖2,本發(fā)明提供的基于Berkeyley DB的目標(biāo)特性實(shí)時(shí)數(shù)據(jù)庫(kù)的應(yīng)用方法包括:
步驟一、建構(gòu)數(shù)據(jù)庫(kù);
步驟二、應(yīng)用程序啟動(dòng)時(shí),數(shù)據(jù)庫(kù)所在的服務(wù)端調(diào)用映像文件創(chuàng)建端口創(chuàng)建共享內(nèi)存;
步