??诮?jīng)濟(jì)學(xué)院 曾子力 張藍(lán)春
波音最新型787系列噴氣式客機(jī)無論在技術(shù)還是設(shè)計(jì)上都有前所未有的突破。而其中飛行數(shù)據(jù)記錄儀(FDR)的數(shù)據(jù)格式也刷新了傳統(tǒng)的制式,采用ARINC647A-1型記錄制式。其最大特點(diǎn)是數(shù)據(jù)以幀為單位記錄。由于每秒產(chǎn)生成百上千的數(shù)據(jù)幀,數(shù)據(jù)幀隨機(jī)排列。解碼分析信息系統(tǒng)將數(shù)據(jù)幀歸類后以秒為單位進(jìn)行存儲(chǔ)在數(shù)據(jù)庫(kù)中。由于航空飛行記錄器是通過XML文檔定義飛行數(shù)據(jù)的楨結(jié)構(gòu)及參數(shù)種類,如各個(gè)參數(shù)記錄的bit位置和各數(shù)據(jù)幀的設(shè)置與作用等等,因此解碼數(shù)據(jù)庫(kù)是通過設(shè)計(jì)軟件讀取該文檔記錄而生成,從而實(shí)現(xiàn)對(duì)飛機(jī)黑匣子數(shù)據(jù)的解碼。
解碼分析系統(tǒng)在載入解碼數(shù)據(jù)庫(kù)后,即可對(duì)飛機(jī)系統(tǒng)的運(yùn)轉(zhuǎn)數(shù)據(jù)進(jìn)行解讀,解碼后的參數(shù)推送到分析程序模得到工程值,用戶再對(duì)參數(shù)工程值做進(jìn)一步的分析,最后提煉出的信息存儲(chǔ)在后臺(tái)SQLServer數(shù)據(jù)庫(kù)系統(tǒng),并同時(shí)在前臺(tái)也會(huì)保存相關(guān)的記錄。
由于飛行記錄器和快速存取記錄器數(shù)據(jù)量大的特點(diǎn),雖然相關(guān)數(shù)據(jù)仍需存放在大型關(guān)系數(shù)據(jù)庫(kù)SQLServer服務(wù)器上,但面對(duì)龐大的數(shù)據(jù),不利于提到解碼分析和數(shù)據(jù)查詢速度。并且,若飛機(jī)數(shù)據(jù)庫(kù)等也采用SQLServer數(shù)據(jù)庫(kù)進(jìn)行管理,勢(shì)必嚴(yán)重影響系統(tǒng)性能和運(yùn)行速度,提高系統(tǒng)運(yùn)行速度,因此,本系統(tǒng)將飛機(jī)數(shù)據(jù)庫(kù)和機(jī)場(chǎng)數(shù)據(jù)庫(kù)放置在前臺(tái),以便客戶端快速調(diào)用。前端采用嵌入式實(shí)時(shí)數(shù)據(jù)庫(kù)系統(tǒng)來存放飛機(jī)數(shù)據(jù)庫(kù)、機(jī)場(chǎng)數(shù)據(jù)庫(kù)信息。實(shí)現(xiàn)兩種完全不同類型數(shù)據(jù)庫(kù)的兼容。
飛行數(shù)據(jù)譯碼分析系統(tǒng)使用SQLServer數(shù)據(jù)庫(kù)作為后臺(tái)確保大量的快速存取記錄器的警告事件記錄和航班記錄有足夠的數(shù)據(jù)庫(kù)容量存儲(chǔ),同時(shí)SQLServer的服務(wù)器特性能確保各客戶端的譯碼分析數(shù)據(jù)能保存在服務(wù)器數(shù)據(jù)庫(kù)中。但對(duì)部分使用頻率很高的小型數(shù)據(jù)庫(kù)表,如飛機(jī)數(shù)據(jù)庫(kù)表、機(jī)場(chǎng)數(shù)據(jù)庫(kù)表等則不宜采用SQLServer來存儲(chǔ),為了提高系統(tǒng)運(yùn)行速度,利用存儲(chǔ)過程的方式對(duì)MS SQLServer 2000數(shù)據(jù)庫(kù)操作,前端數(shù)據(jù)庫(kù)采用小型本地?cái)?shù)據(jù)庫(kù)。
由于一個(gè)firebird數(shù)據(jù)庫(kù)服務(wù)器能夠管理多個(gè)獨(dú)立的數(shù)據(jù)庫(kù),每一個(gè)數(shù)據(jù)庫(kù)同時(shí)可支持多個(gè)客戶端連結(jié)。因此航空飛行記錄器解碼分析系統(tǒng)前端數(shù)據(jù)庫(kù)采用Firebird跨平臺(tái)的關(guān)系數(shù)據(jù)庫(kù)系統(tǒng)。
基于Firebird航空飛行記錄器解碼分析數(shù)據(jù)庫(kù)系統(tǒng)優(yōu)勢(shì):一方面,F(xiàn)irebird作為輕量級(jí)嵌入式數(shù)據(jù)庫(kù)不會(huì)給操作系統(tǒng)環(huán)境帶來污染;另一方面,體現(xiàn)了很好的健壯性和便攜性。例如,假設(shè)若干動(dòng)態(tài)庫(kù)放置在系統(tǒng)文件夾下,則這些動(dòng)態(tài)庫(kù)有可能和其他系統(tǒng)的同名動(dòng)態(tài)庫(kù)產(chǎn)生沖突。而多數(shù)大型數(shù)據(jù)庫(kù)的客戶端的安裝必須依賴數(shù)據(jù)庫(kù)開發(fā)商提供的安裝程序,完全的不透明,加大了系統(tǒng)故障的概率。無需安裝而直接運(yùn)行。具體分析如下:
1.航空飛行記錄器解碼分析前端系統(tǒng)是面向單機(jī)用戶,整個(gè)服務(wù)器的功能都已經(jīng)包含到客戶端動(dòng)態(tài)庫(kù)中,那么程序的運(yùn)行也就不再依賴于必需安裝FireBird Server。這樣一來,一個(gè)可執(zhí)行文件加上幾個(gè)動(dòng)態(tài)庫(kù),這是所有單機(jī)數(shù)據(jù)庫(kù)系統(tǒng)都希望達(dá)到的效果。它完全免去了數(shù)據(jù)庫(kù)引擎的安裝,真正實(shí)現(xiàn)了“便攜”的效果。
2.把數(shù)據(jù)庫(kù)服務(wù)器的安裝包含到我們航空飛行記錄器解碼分析系統(tǒng)中。這個(gè)特性是FireBird數(shù)據(jù)庫(kù)所獨(dú)有的。FireBird的部署提供了相應(yīng)的服務(wù)安裝的支持文件,這使得數(shù)據(jù)庫(kù)的安裝可以完全合并到程序本身之中,使數(shù)據(jù)庫(kù)服務(wù)成為系統(tǒng)的一部分。
3.讓客戶端程序是一個(gè)完全獨(dú)立的可執(zhí)行文件,客戶端除了這個(gè)可執(zhí)行文件以外,不必部署任何其他文件,包括數(shù)據(jù)庫(kù)的客戶端。
(1)和物理主鍵應(yīng)與邏輯主鍵分離
兩表用邏輯主鍵相關(guān)聯(lián)時(shí),在數(shù)據(jù)導(dǎo)入過程中,尤其是從邏輯主鍵的設(shè)計(jì)升級(jí)到物理主鍵的設(shè)計(jì)時(shí),兩表的關(guān)聯(lián)需要一個(gè)將邏輯主鍵關(guān)聯(lián)轉(zhuǎn)化為物理主鍵關(guān)聯(lián)的過程。處理的方法有兩個(gè)方法。
其一,客戶端處理時(shí),在客戶端放一個(gè)內(nèi)存表,預(yù)先載入被關(guān)聯(lián)的基礎(chǔ)數(shù)據(jù)表,其中既包含物理主鍵,又包含邏輯主鍵。然后將關(guān)聯(lián)表導(dǎo)入,每插入一條記錄之前,都通過內(nèi)存表匹配邏輯主鍵對(duì)應(yīng)的物理主鍵的值,把該值放入記錄相應(yīng)的關(guān)聯(lián)字段中,再輸入數(shù)據(jù)庫(kù)。
第二,服務(wù)器端處理時(shí)是在服務(wù)器端的觸發(fā)器中判斷,如果整數(shù)關(guān)聯(lián)字段為空,則自動(dòng)通過原始的邏輯主鍵關(guān)聯(lián)字段匹配物理關(guān)聯(lián)字段對(duì)應(yīng)的值,再進(jìn)行賦值。
(2)數(shù)據(jù)導(dǎo)入導(dǎo)出過程中需要注意兩個(gè)問題
其一,尊重已形成的自增長(zhǎng)主鍵的值,也就是,已形成的自增長(zhǎng)主鍵的值不能讓它重新生成,原樣倒入,這樣就不會(huì)錯(cuò)亂。IBExpert生成的觸發(fā)器因?yàn)橛信袛嗾Z(yǔ)句,所以并不會(huì)干擾。
其二,生成器對(duì)象的值也要隨著變。特別是,在空數(shù)據(jù)庫(kù)倒入歷史數(shù)據(jù)時(shí),一定要把生成器的值也繼承過來。
(3)動(dòng)態(tài)建庫(kù)是一個(gè)理念變化
也就是說,“系統(tǒng)不依賴于一個(gè)固定的永久性庫(kù)”。動(dòng)態(tài)建庫(kù)同時(shí)能夠分化數(shù)據(jù)風(fēng)險(xiǎn),將風(fēng)險(xiǎn)分散到數(shù)據(jù)的子集上。數(shù)據(jù)庫(kù)物理存儲(chǔ)的瑕疵是有積累效果的。在極限情況下,F(xiàn)ireBird數(shù)據(jù)庫(kù)對(duì)數(shù)據(jù)庫(kù)文件的瑕疵產(chǎn)生有一定的容忍能力。具有2、3個(gè)簇錯(cuò)誤的gdb文件基本上仍能夠繼續(xù)使用,這樣,當(dāng)系統(tǒng)進(jìn)入新業(yè)務(wù)時(shí)間的時(shí)候,數(shù)據(jù)庫(kù)瑕疵就被拋棄在舊庫(kù)中。這樣,系統(tǒng)即使不進(jìn)行修補(bǔ)、備份、恢復(fù),仍能很好的運(yùn)行。如此一來真正就能夠?qū)崿F(xiàn)“無人值守”的數(shù)據(jù)庫(kù)系統(tǒng)。若是單個(gè)數(shù)據(jù)庫(kù),則數(shù)據(jù)庫(kù)文件錯(cuò)誤必須被及時(shí)發(fā)現(xiàn)、修補(bǔ),否則會(huì)導(dǎo)致整個(gè)系統(tǒng)的崩潰,乃至于所有的數(shù)據(jù)都損失掉。
機(jī)場(chǎng)信息數(shù)據(jù)庫(kù)表是存放航空公司航線所有可能飛達(dá)的機(jī)場(chǎng)信息,包括機(jī)場(chǎng)位置、跑道方向等信息,該數(shù)據(jù)庫(kù)表中所有字段都為字符型數(shù)據(jù),具體包括以下字段:
飛機(jī)信息數(shù)據(jù)庫(kù)表是存放航空公司機(jī)隊(duì)所有飛機(jī)的機(jī)型等與飛機(jī)出廠信息相關(guān)的數(shù)據(jù)庫(kù)表,包括飛機(jī)注冊(cè)號(hào)、機(jī)型、發(fā)動(dòng)機(jī)信息等相關(guān)的各類解碼數(shù)據(jù)庫(kù),這些信息在QAR數(shù)據(jù)解碼與分析中將被頻繁使用。該數(shù)據(jù)庫(kù)表共包括以下字段信息:
[1]張藍(lán)春.基于C++的飛機(jī)黑匣子解碼分析系統(tǒng)的設(shè)計(jì)[J].計(jì)算機(jī)系統(tǒng)應(yīng)用,2009.
[2]熊華鋼.先進(jìn)航空電子綜合技術(shù)[M].國(guó)防工業(yè)出版社,2012.
[3]張立科.VISUAL C++ MFC類庫(kù)參考手冊(cè)[M].人民郵電出版社,2005.