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

飛機信息數據庫表是存放航空公司機隊所有飛機的機型等與飛機出廠信息相關的數據庫表,包括飛機注冊號、機型、發動機信息等相關的各類解碼數據庫,這些信息在QAR數據解碼與分析中將被頻繁使用。該數據庫表共包括以下字段信息:

[1]張藍春.基于C++的飛機黑匣子解碼分析系統的設計[J].計算機系統應用,2009.
[2]熊華鋼.先進航空電子綜合技術[M].國防工業出版社,2012.
[3]張立科.VISUAL C++ MFC類庫參考手冊[M].人民郵電出版社,2005.