張海祥 何曉宇 李鵬 呂偉
(北京空間飛行器總體設計部,北京 100094)
航天器電測是指在統(tǒng)一供配電條件下,對航天器電氣功能、性能、接口等進行的全面檢查。電測過程中,航天器按照一定的格式和頻率下傳數(shù)據(jù),地面電測設備對數(shù)據(jù)進行解析、處理和分析,以此對航天器的功能和性能作出評估和判斷[1]。航天器電測產(chǎn)生的數(shù)據(jù)量非常大,因此對電測數(shù)據(jù)必須有效存儲。最簡單的做法是利用文件系統(tǒng)來存儲數(shù)據(jù)。這種方式每次將數(shù)據(jù)以文本文件的方式記錄在單個數(shù)據(jù)文件中,然后再利用文件夾來管理所有的數(shù)據(jù)文件。這種形式雖然存儲簡單容易實現(xiàn),但隨著文件數(shù)量的不斷增加,數(shù)據(jù)變得不可管理,不方便查詢,通用性差,效率不高。
與數(shù)據(jù)文件存儲方式相比,數(shù)據(jù)庫管理系統(tǒng)(DBMS)在數(shù)據(jù)存儲方面具有明顯的優(yōu)勢:關系數(shù)據(jù)庫技術和數(shù)據(jù)庫理論發(fā)展成熟,應用工具多;與數(shù)據(jù)文件相比,DBMS能管理的數(shù)據(jù)量大,操作容易;利用SQL語句完成后期數(shù)據(jù)分析,效率高,且具有良好的通用性和可擴展性[2]。航天器電測領域引入數(shù)據(jù)庫管理系統(tǒng),利用數(shù)據(jù)庫技術可以提高數(shù)據(jù)管理的有效性和方便性,提升航天器測試的信息化水平。
航天器是一個由供配電、測控、熱控、姿態(tài)與軌道控制、有效載荷等多個分系統(tǒng)組成的復雜系統(tǒng),各個分系統(tǒng)又分別由若干子單元組成,這些子單元又可進一步分解,直至元器件[3]。為了全面地反映航天器各個組成部分的性能和工作狀態(tài),每個航天器都設計了大量的遙測參數(shù),這些參數(shù)包括電壓、電流、溫度、壓力、星上設備狀態(tài)等[4]。根據(jù)航天器的實際應用情況,可以做出如下假設:
(1)每個航天器最多由26個分系統(tǒng)組成,為每個分系統(tǒng)設置一個標識號,依次為A、B、C、…Z;
(2)每個分系統(tǒng)最多有999個遙測參數(shù),為每個遙測參數(shù)設置一個參數(shù)序號,例如A 分系統(tǒng)的參數(shù)序號為A001、A002、A003、…A999,B 分系統(tǒng)的參數(shù)序號為B001、B002、B003、…B999,以此類推直到Z分系統(tǒng)。
根據(jù)數(shù)據(jù)的應用類型,航天器電測數(shù)據(jù)可以分為基礎定義數(shù)據(jù)和測試數(shù)據(jù),基礎定義數(shù)據(jù)是指遙測參數(shù)的定義信息。遙測參數(shù)定義信息中包含該參數(shù)所屬分系統(tǒng)、測量單位、參數(shù)在遙測格式中的位置和下傳周期等。測試數(shù)據(jù)是指電測過程中產(chǎn)生的每個遙測參數(shù)的具體測試值,測試值包括原碼和工程值,原碼是指航天器下傳后未經(jīng)處理的原始值,為十六進制的整數(shù),工程值是指按照設計的處理方法和系數(shù)對原碼進行計算處理后的數(shù)值,比如把某一組成部分的電壓,經(jīng)過計算處理將原碼轉(zhuǎn)換成具體的電壓數(shù)值,有利于直觀的判讀。
兩類數(shù)據(jù)相比較而言,基礎定義數(shù)據(jù)的數(shù)據(jù)量小,每個航天器一般包含上千個遙測參數(shù),這類數(shù)據(jù)變化較少,存儲管理相對簡單,該類表的設計不在本文描述。測試數(shù)據(jù)的數(shù)據(jù)量大,一般而言,在航天器電測過程中,重要參數(shù)或變化較快的參數(shù)可達到下傳7 200次/小時,而這類參數(shù)數(shù)量高達數(shù)百個,測試數(shù)據(jù)的存儲管理相對復雜,測試數(shù)據(jù)的數(shù)據(jù)量占整個電測的數(shù)據(jù)量的98%以上,測試數(shù)據(jù)表的表結構設計,對整個數(shù)據(jù)庫的性能極為關鍵,本文主要描述測試數(shù)據(jù)的數(shù)據(jù)庫表結構的實現(xiàn)方法。
表是數(shù)據(jù)庫存儲和管理數(shù)據(jù)的基本邏輯結構,表結構設計對數(shù)據(jù)庫性能的影響是最直接的[5]。表的橫向的每一列稱為字段,如果表的字段數(shù)量特別多,稱之為橫表,相反表的字段數(shù)量相對少而記錄條數(shù)較多的表稱之為豎表[6]。這兩類表對數(shù)據(jù)庫的各項性能起到截然相反的作用。橫表攜帶的有效信息量多,存儲相同的信息量的情況下其占用的記錄條數(shù)更少,有利于數(shù)據(jù)插入操作,但擴展性不佳。豎表實際上是將一條橫表的大記錄拆成若干條小記錄,為了保證原信息的完整性,必須引入額外的冗余數(shù)據(jù),對數(shù)據(jù)查詢有利。從表結構設計來看,是不可能達到各項性能同時最優(yōu)的效果,所以系統(tǒng)數(shù)據(jù)表的設計關鍵是選擇合適的字段長度,平衡各性能要素,從而達到總體性能最優(yōu)[7-8]。
測試數(shù)據(jù)的每個遙測參數(shù)相互獨立,邏輯關系簡單,航天器下傳的每幀數(shù)據(jù)包含3個屬性:時間、參數(shù)序號、測試值。根據(jù)數(shù)據(jù)表設計的兩個方向:豎表和橫表,其豎表表結構見表1。
表1 豎表數(shù)據(jù)表結構Table 1 A vertical table structure
這種表結構形式簡單,但同一時刻需要存儲的數(shù)據(jù)記錄將達到上千條,每秒鐘將增加幾千條數(shù)據(jù)記錄,數(shù)據(jù)量將呈現(xiàn)爆炸式增長,數(shù)據(jù)冗余大,給數(shù)據(jù)入庫的實時性應用造成了很大的影響[9]。這種表結構不適合航天器電測領域。
在橫表設計中,以時間和參數(shù)序號作為字段名,最簡單的表結構為所有參數(shù)的工程值存入一張表中,如果一個航天器具有參數(shù)A001、A002…C001、C002…Z001、Z002…,則該表的表結構見表2。
表2 橫表數(shù)據(jù)表結構Table 2 A horizontal table structure
這種表結構數(shù)據(jù)記錄條數(shù)是前一種表結構的幾千分之一,而且可以把時間設為主鍵,有利于查詢,但這種表結構的突出缺點是列數(shù)太多,如果一個航天器有3 000個參數(shù),這張表的列數(shù)將達到3 001列,如此多列的表大大影響數(shù)據(jù)庫性能。因此在航天器測試領域需要對這種表進行優(yōu)化改進。
橫表表結構按分系統(tǒng)來劃分,以遙測參數(shù)序號作為字段名,存在缺點是擴展性差,靈活性差,當航天器增加一個新的分系統(tǒng)時,數(shù)據(jù)庫需要增加一張該分系統(tǒng)的數(shù)據(jù)表,當某一分系統(tǒng)增加一個新的遙測參數(shù)時,該表需要為該參數(shù)增加一個新的字段。為了克服此缺點,結合前文的假設,設計數(shù)據(jù)庫表時,可以為航天器預先創(chuàng)建26 個分系統(tǒng),每個分系統(tǒng)包含999 個參數(shù)的數(shù)據(jù)庫表,這種最大包絡的冗余設計,可以有效解決隨著分系統(tǒng)和參數(shù)的變化而需要修改數(shù)據(jù)表結構的問題。
在橫表結構中,數(shù)據(jù)庫性能與表的字段數(shù)存在如下關系:當字段數(shù)在某一閾值以內(nèi)時,字段數(shù)的大小對數(shù)據(jù)庫性能影響很小,當字段數(shù)超過該閾值時,數(shù)據(jù)庫性能隨著字段數(shù)的增加而急劇降低。閾值的大小與數(shù)據(jù)庫軟件、數(shù)據(jù)庫屬性設置、安裝數(shù)據(jù)庫的硬件環(huán)境相關。在實際的數(shù)據(jù)庫設計中,絕大多數(shù)的數(shù)據(jù)表的字段數(shù)均小于200。
根據(jù)前面的假設以及最大包絡的設計思路,使每個航天器型號包含26個分系統(tǒng),每個分系統(tǒng)包含999個遙測參數(shù)。在橫表模式設計中,可以按照分系統(tǒng)來劃分,不同分系統(tǒng)的數(shù)據(jù)劃分到不同的表中,同時為了具體應用的方便性,把每個分系統(tǒng)999個遙測參數(shù)的數(shù)據(jù)再等數(shù)量地劃分到5張表中,每張表包含200(或199)個參數(shù)的數(shù)值。這種表結構的設計,不僅減少表的字段數(shù),提高數(shù)據(jù)庫性能,同時使表結構的層次更加清晰。
根據(jù)3.1節(jié)設計的方法,在航天器電測中,測試數(shù)據(jù)表存儲測試過程產(chǎn)生參數(shù)原碼、工程值、測試指令和測試序列等信息。原碼和工程值數(shù)據(jù)表的表名稱定義為:
表名稱=“航天器編號_數(shù)據(jù)類型編號_分系統(tǒng)代號_原碼|工程值_垂直分區(qū)編號_水平分區(qū)編號”
其中垂直分區(qū)編號是指把每個分系統(tǒng)的999個參數(shù)分配到5張表中,作為每張表的垂直分區(qū)標志號;水平分區(qū)編號是指由于測試時間跨度較長,把全程的測試時間數(shù)據(jù)分配到多張表中而加以區(qū)分的編號,比如把2012年全年的數(shù)據(jù)按季度分配到4張表中進行存儲,則水平分區(qū)的編號可以定義為“201201”、“201202”、“201203”和“201204”。
在航天器電測數(shù)據(jù)庫表設計中定義的縮寫見表3。
表3 數(shù)據(jù)庫設計中名詞縮寫說明Table 3 Abbreviation in the database structure
表3的數(shù)據(jù)表表名稱可以表示為
表名 = WXBH_SJLX_FXT_YM |GCZ_CZFQ_SPFQ
每張工程值表的表結構都相同,第一列為時間,后面200(或199)列為參數(shù)序號。如航天器編號為SATTEST1,數(shù)據(jù)類型為DATE,C 分系統(tǒng)前199個參數(shù)2012年第一季度的工程表表名為SATTEST1_DATE_C_GCZ_0_201201,其具體表結構見表4。
表4 某型號C分系統(tǒng)的第一張工程值表表結構Table 4 First table structure of C subsystem’s value in some spacecraft
原碼表與工程值表類似,只有參數(shù)的數(shù)據(jù)類型不同。如航天器編號為SATTEST1,數(shù)據(jù)類型為DATE,C分系統(tǒng)前199個參數(shù)2012年第一季度的原碼表表名為SATTEST1_DATE_C_YM_0_201201,其具體結構見表5。
表5 某型號的C分系統(tǒng)的第一張原碼表表結構Table 5 First table structure of C subsystem’s raw value in some spacecraft
為航天器初始創(chuàng)建數(shù)據(jù)庫表時,一次創(chuàng)建26個分系統(tǒng)的表,每個分系統(tǒng)預分配999個參數(shù),這樣避免了測試過程中,增加新的參數(shù)時需要對數(shù)據(jù)庫表結構進行修改。航天器型號的工程值表和原碼表可以用如下集合來表示:
測試數(shù)據(jù)庫表還可以存儲在測試過程中發(fā)送的測試指令和測試序列,指令和測試序列的內(nèi)容相對簡單,可以把指令和序列的相應屬性作為表的字段來創(chuàng)建數(shù)據(jù)表。
利用數(shù)據(jù)庫管理系統(tǒng)對測試數(shù)據(jù)進行管理,具有管理集中、應用方便等優(yōu)點。本文根據(jù)航天器電測數(shù)據(jù)的特點,按照分類分層次的方法,提出了一種面向航天器電測的通用的數(shù)據(jù)庫表結構設計方法,該數(shù)據(jù)庫表結構設計具有如下優(yōu)點:
(1)通用性強。該表結構與具體的航天器型號特點無關,所有型號的航天器測試數(shù)據(jù)表均可以按照該方法創(chuàng)建統(tǒng)一的數(shù)據(jù)表。該數(shù)據(jù)庫結構適用于各種通用的數(shù)據(jù)庫軟件,比如ORACLE、MYSQL等,不依賴于數(shù)據(jù)庫軟件的特有特性。
(2)冗余性好。在表結構設計中,為分系統(tǒng)個數(shù)和參數(shù)個數(shù)做好了冗余設計,測試過程中增加新的分系統(tǒng)和新的參數(shù)時,不需要修改數(shù)據(jù)表結構。
(3)層次結構清晰,命名統(tǒng)一規(guī)范,兼顧數(shù)據(jù)入庫和查詢的效率。在數(shù)據(jù)庫橫表模式的基礎上,進行拆分優(yōu)化,提高了數(shù)據(jù)庫的整體性能。
該數(shù)據(jù)庫表結構實現(xiàn)了測試數(shù)據(jù)的集中有效管理,方便對試驗數(shù)據(jù)的分析,提高了數(shù)據(jù)的利用效率,具有良好的通用性和實用性。該數(shù)據(jù)庫表結構已經(jīng)廣泛應用于“北斗”、“嫦娥”、“神舟”等系列航天器的電測中,可作為航天器電測中通用的表結構設計方法。
(References)
[1]譚維熾,胡金剛.航天器系統(tǒng)工程[M].北京:中國科學技術出版社,2009
Tan Weizhi,Hu Jingang.Spacecraft system engineering[M].Beijing:China Science and Technology Press,2009(in Chinese)
[2]路川,胡欣杰,閻文麗.Oracle 10g寶典[M].北京:電子工業(yè)出版社,2010
Lu Chuan,Hu Xinjie,Yan Wenli.Bible of Oracle 10g[M].Beijing:Publishing House of Electronics Industry,2010(in Chinese)
[3]王慶成.航天器電測技術[M].北京:中國科學技術出版社,2007
Wang Qingcheng.Electrical test technology of spacecraft[M].Beijing:China Science and Technology Press,2007(in Chinese)
[4]劉德勇,石柱,劉國民.應用UML建模航天測試數(shù)據(jù)庫需求的過程[J].航天控制,2008,26(4):48-52
Liu Deyong,Shi Zhu,Liu Guoming.The process of requirement development of aerospace test database by UML[J].Aerospace Control,2008,26(4):48-52(in Chinese)
[5]李超,張明博,邢春曉,等.列存儲數(shù)據(jù)庫關鍵技術綜述[J].計算機科學,2010,37(12):1-7
Li Chao,Zhang Mingbo,Xing Chunxiao,et al.Survey and review on key technologies of column oriented database systems[J].Computer Science,2010,37(12):1-7(in Chinese)
[6]劉艷艷,崔松雪,陳勇.一種新的海量海洋環(huán)境數(shù)據(jù)庫組織結構的研究與實現(xiàn)[J].中國海洋大學學報,2008,38(4):667-670
Liu Yanyan,Cui Songxue,Chen Yong.Research and realization of a new massive ocean environmental database storage structure[J].Periodical of Ocean University of China,2008,38(4):667-670(in Chinese)
[7]章洪良,張廣興,張大方.海量網(wǎng)絡監(jiān)測數(shù)據(jù)存儲優(yōu)化研究[J].微計算機信息,2009,25(4):175-176
Zhang Hongliang,Zhang Guangxin,Zhang Dafang.Research of data-storing optimization for large-scale network monitoring systems[J].Micro-computer Information,2009,25(4):175-176(in Chinese)
[8]徐洪信,申景詩,王鳳陽.高速率數(shù)據(jù)接收存儲系統(tǒng)設計[J].航天器工程,2009,18(1):43-47
Xu Hongxin,Shen Jingshi,Wang Fengyang.Design of the high-speed data receiving and storage system[J].Spacecraft Engineering,2009,18(1):43-47(in Chinese)
[9]武海平,余宏亮,鄭緯民.通用海量數(shù)據(jù)庫性能測試系統(tǒng)的設計與實現(xiàn)[J].清華大學學報(自然科學版),2006,46(7):1309-1312
Wu Haiping,Yu Hongliang,Zheng Weimin.General performance measures for massive databases[J].Journal of Tsinghua University(Science and Technology),2006,46(7):1309-1312(in Chinese)