驟三、客戶端應(yīng)用程序在運行過程中,根據(jù)服務(wù)對象的當(dāng)前狀態(tài)形成用于數(shù)據(jù)訪問的key編碼,并將所述key編碼寫入共享內(nèi)存;
步驟四、服務(wù)端在預(yù)定的周期內(nèi)檢查共享內(nèi)存是否更新,如果更新,則讀取更新的key編碼,在數(shù)據(jù)資源模塊中查詢到對應(yīng)的data,并將data寫入共享內(nèi)存,客戶端讀取所述data,完成數(shù)據(jù)交互。
[0028]基于Berkeyley DB的數(shù)據(jù)庫由key/data對進(jìn)行數(shù)據(jù)管理。key/data對相當(dāng)于關(guān)系數(shù)據(jù)庫系統(tǒng)中的行。Berkeyley DB不提供關(guān)系數(shù)據(jù)庫中列直接訪問的功能,而是在key/data對中的data項中通過實際應(yīng)用來封裝字段。每對key/data組成一個數(shù)據(jù)庫基本結(jié)構(gòu)單元,整個數(shù)據(jù)庫是由許多這樣的結(jié)構(gòu)單元構(gòu)成。應(yīng)用程序只需提供key就能夠訪問到相應(yīng)的數(shù)據(jù)。Key/data可以是任意長度的二進(jìn)制數(shù)據(jù)。
[0029]key是訪問數(shù)據(jù)的關(guān)鍵字,本實施例根據(jù)服務(wù)對象的特征對key進(jìn)行編碼,例如描述空中飛行目標(biāo)電磁輻射特性的key可編碼為“qh30qvl0s0.5h200En0”,表示目標(biāo)的方位角和俯仰角分別為30°、10°,飛行速度為0.5Ma,飛行高度為200m,發(fā)動機額定工作。飛行器在該狀態(tài)下的輻射特性數(shù)據(jù)保存在與之對應(yīng)的data中,其結(jié)構(gòu)采用結(jié)構(gòu)化的數(shù)據(jù)結(jié)構(gòu)。
[0030]typedef struct —SignatureData{
char key[nl]; float radiance[m^n]; float range[m^n]; //……其它需要的數(shù)據(jù)……II } SignatureData;
key/data對設(shè)計完成后,數(shù)據(jù)庫更新模塊調(diào)用數(shù)據(jù)寫入端口將key/data對寫入數(shù)據(jù)資源模塊。如果用戶需要刪除或更新數(shù)據(jù)庫中已有的key/data對,分別調(diào)用數(shù)據(jù)刪除和更新端口即可。根據(jù)電磁環(huán)境仿真需求,數(shù)據(jù)庫更新無需實時進(jìn)行,因而,數(shù)據(jù)庫更新工作在電磁環(huán)境仿真開始前完成即可,從而進(jìn)一步保證了仿真對數(shù)據(jù)庫的實時性要求。
[0031]完整描述服務(wù)對象特性的所有key/data對構(gòu)成數(shù)據(jù)資源模塊的數(shù)據(jù)庫,為電磁環(huán)境仿真提供數(shù)據(jù)支撐。
[0032]如圖2所示,客戶端和服務(wù)端程序啟動時調(diào)用通信模塊的映像文件創(chuàng)建端口,根據(jù)事先約定的名稱創(chuàng)建映像文件,也即共享內(nèi)存??蛻舳藨?yīng)用程序在運行過程中,根據(jù)仿真對象的當(dāng)前狀態(tài)形成用于數(shù)據(jù)訪問的key編碼,并將其寫入共享內(nèi)存。服務(wù)端在預(yù)定的周期內(nèi)檢查共享內(nèi)存是否更新,如果更新,則讀取更新的key編碼,在數(shù)據(jù)庫中查詢到對應(yīng)的data,并將data寫入共享內(nèi)存,客戶端讀取該data,完成數(shù)據(jù)交互。整個過程的詳細(xì)步驟如下:
1)客戶端程序完成key編碼后,調(diào)用數(shù)據(jù)讀取模塊的實時數(shù)據(jù)讀取端口,向共享內(nèi)存發(fā)送key編碼;
2)客戶端由通信模塊調(diào)用共享內(nèi)存數(shù)據(jù)交互端口,首先判斷共享內(nèi)存是否被其它進(jìn)程占用,如果占用,則等待,如果未占用,則獲取指向共享內(nèi)存的指針,并將key編碼寫入共享內(nèi)存;
3)在預(yù)定的周期內(nèi),服務(wù)端調(diào)用共享內(nèi)存數(shù)據(jù)交互端口,查看key編碼是否更新,如果更新,則獲取指向共享內(nèi)存的指針,并讀取該key編碼;
4)服務(wù)端調(diào)用實時數(shù)據(jù)讀取端口,根據(jù)key編碼查詢數(shù)據(jù)庫中與之對應(yīng)的data,并將其讀出后向共享內(nèi)存發(fā)送;
5)服務(wù)端由通信模塊調(diào)用共享內(nèi)存數(shù)據(jù)交互端口,首先判斷共享內(nèi)存是否被其它進(jìn)程占用,如果占用,則等待,如果未占用,則獲取指向共享內(nèi)存的指針,并將data寫入共享內(nèi)存;
6)客戶端查詢到共享內(nèi)存的data更新后,按照步驟3)類似的方法讀取data,并由實時數(shù)據(jù)讀取端口返回給客戶端應(yīng)用程序。
[0033]本發(fā)明雖然已以較佳實施例公開如上,但其并不是用來限定本發(fā)明,任何本領(lǐng)域技術(shù)人員在不脫離本發(fā)明的精神和范圍內(nèi),都可以利用上述揭示的方法和技術(shù)內(nèi)容對本發(fā)明技術(shù)方案做出可能的變動和修改,因此,凡是未脫離本發(fā)明技術(shù)方案的內(nèi)容,依據(jù)本發(fā)明的技術(shù)實質(zhì)對以上實施例所作的任何簡單修改、等同變化及修飾,均屬于本發(fā)明技術(shù)方案的保護(hù)范圍。
【主權(quán)項】
1.一種目標(biāo)特性實時數(shù)據(jù)庫,其特征在于,所述數(shù)據(jù)庫基于Berkeyley DB,包括:數(shù)據(jù)庫更新模塊、通信模塊、數(shù)據(jù)讀取模塊和數(shù)據(jù)資源模塊;所述的通信模塊包括映像文件創(chuàng)建端口和共享內(nèi)存交互端口,數(shù)據(jù)庫與應(yīng)用程序通過共享內(nèi)存進(jìn)行數(shù)據(jù)交互。2.依據(jù)權(quán)利要求1所述的目標(biāo)特性實時數(shù)據(jù)庫,其特征在于,所述的數(shù)據(jù)庫滿足半實物仿真對實時性的要求。3.依據(jù)權(quán)利要求1所述的目標(biāo)特性實時數(shù)據(jù)庫,其特征在于,所述的數(shù)據(jù)庫更新模塊包括數(shù)據(jù)寫入端口、數(shù)據(jù)刪除端口和數(shù)據(jù)更新端口。4.依據(jù)權(quán)利要求1所述的目標(biāo)特性實時數(shù)據(jù)庫,其特征在于,所述的數(shù)據(jù)讀取模塊包括實時數(shù)據(jù)讀取端口,負(fù)責(zé)實時響應(yīng)客戶端數(shù)據(jù)讀取的請求。5.依據(jù)權(quán)利要求1所述的目標(biāo)特性實時數(shù)據(jù)庫,其特征在于,所述數(shù)據(jù)資源模塊包括目標(biāo)特性數(shù)據(jù)集,提供應(yīng)用程序所需要的特性數(shù)據(jù)。6.依據(jù)權(quán)利要求1所述的目標(biāo)特性實時數(shù)據(jù)庫,其特征在于,所述數(shù)據(jù)庫由Key/data對進(jìn)行數(shù)據(jù)管理,key為訪問數(shù)據(jù)的關(guān)鍵字,根據(jù)服務(wù)對象的特征對key進(jìn)行編碼,服務(wù)對象在對應(yīng)特征下的福射特性數(shù)據(jù)保存在與key對應(yīng)的data中。7.權(quán)利要求1至6中任意一項所提供的目標(biāo)特性實時數(shù)據(jù)庫的應(yīng)用方法,其特征在于,包括: 步驟一、建構(gòu)數(shù)據(jù)庫; 步驟二、應(yīng)用程序啟動時,數(shù)據(jù)庫所在的服務(wù)端調(diào)用映像文件創(chuàng)建端口創(chuàng)建共享內(nèi)存; 步驟三、客戶端應(yīng)用程序在運行過程中,根據(jù)服務(wù)對象的當(dāng)前狀態(tài)形成用于數(shù)據(jù)訪問的key編碼,并將所述key編碼寫入共享內(nèi)存; 步驟四、服務(wù)端在預(yù)定的周期內(nèi)檢查共享內(nèi)存是否更新,如果更新,則讀取更新的key編碼,在數(shù)據(jù)資源模塊中查詢到對應(yīng)的data,并將data寫入共享內(nèi)存,客戶端讀取所述data,完成數(shù)據(jù)交互。8.依據(jù)權(quán)利要求7所述的目標(biāo)特性實時數(shù)據(jù)庫的應(yīng)用方法,其特征在于,客戶端由通信模塊調(diào)用共享內(nèi)存交互端口,首先判斷共享內(nèi)存是否被其他進(jìn)程占用;如果被占用,則等待;如果未被占用,則獲取指向共孚內(nèi)存的指針,并將key編碼與入共孚內(nèi)存。
【專利摘要】本發(fā)明公開了一種基于BerkeyleyDB的目標(biāo)特性實時數(shù)據(jù)庫及其應(yīng)用方法,本發(fā)明公開的基于BerkeyleyDB的目標(biāo)特性實時數(shù)據(jù)庫包括:數(shù)據(jù)庫更新模塊、通信模塊、數(shù)據(jù)讀取模塊和數(shù)據(jù)資源模塊;所述的通信模塊包括映像文件創(chuàng)建端口和共享內(nèi)存交互端口,數(shù)據(jù)庫與應(yīng)用程序通過共享內(nèi)存進(jìn)行數(shù)據(jù)交互。本發(fā)明解決了基于BerkeyleyDB的嵌入式數(shù)據(jù)庫與應(yīng)用程序不兼容的問題。
【IPC分類】G06F17/30
【公開號】CN105468635
【申請?zhí)枴緾N201410452969
【發(fā)明人】陸志灃, 洪澤華, 張勵, 趙海生, 賴鵬, 丁拓
【申請人】上海機電工程研究所
【公開日】2016年4月6日
【申請日】2014年9月9日