楊曉艷,劉志奇,孫小涓,3,石 濤,紀 珍,佟繼周
(1. 中國科學院空天信息創(chuàng)新研究院,北京 100190;2. 中國科學院空間信息與應(yīng)用系統(tǒng)重點實驗室,北京 100190;3. 中國科學院大學,北京 100049;4. 中國科學院國家空間科學中心,北京 100190)
2015年以來,我國陸續(xù)發(fā)射了暗物質(zhì)粒子探測衛(wèi)星、硬X射線調(diào)制望遠鏡、引力波暴高能電磁對應(yīng)體全天監(jiān)測器衛(wèi)星等空間天文衛(wèi)星,獲取了大量空間天文觀測數(shù)據(jù)。地面系統(tǒng)對衛(wèi)星原始探測數(shù)據(jù)以及在此基礎(chǔ)上生成的編輯級產(chǎn)品、標定級產(chǎn)品進行存儲和管理。這些數(shù)據(jù)產(chǎn)品是衛(wèi)星在一定時空條件下的探測成果,產(chǎn)品內(nèi)容包含粒子類別、粒子數(shù)量、粒子能段、粒子入射徑跡、粒子能量沉積等表征空間天文目標的信息,同時還包含衛(wèi)星在軌姿態(tài)、軌道位置、溫度、壓力等表征衛(wèi)星平臺、有效載荷工作狀況的信息。這些數(shù)據(jù)用于空間天文研究、衛(wèi)星及載荷健康狀況趨勢分析、衛(wèi)星探測目標分析與計劃輔助制定、衛(wèi)星探測過程可視化等應(yīng)用領(lǐng)域,能夠發(fā)揮重要的數(shù)據(jù)價值。
現(xiàn)有的衛(wèi)星數(shù)據(jù)地面管理系統(tǒng)中,按照國家空間科學中心提出的空間科學數(shù)據(jù)模型[1],空間天文衛(wèi)星數(shù)據(jù)以FITS(Flexible Image Transport System)[2-3]、ROOT(歐洲核子研究中心開發(fā)的一種數(shù)據(jù)格式)等空間科學領(lǐng)域?qū)S玫臄?shù)據(jù)格式保存在文件中。在獲取數(shù)據(jù)時,首先需要檢索數(shù)據(jù)文件并解析文件格式[4-5],然后從文件指定位置抽取所需的特征參數(shù),對某些數(shù)據(jù)還需要進行物理量轉(zhuǎn)換、時間校正等處理[6]。由于各衛(wèi)星數(shù)據(jù)產(chǎn)品的存儲格式不同,獲取特征參數(shù)的數(shù)據(jù)處理過程也不同,處理過程復(fù)雜耗時。隨著數(shù)據(jù)量的不斷增長,數(shù)據(jù)庫檢索時間越來越長,數(shù)據(jù)獲取的實時性越來越難以保證。目前以文件為粒度進行數(shù)據(jù)存儲和組織的系統(tǒng)難以滿足數(shù)據(jù)實時檢索獲取的要求。
為了滿足實時獲取數(shù)據(jù)的應(yīng)用需求,我們需要從空間天文數(shù)據(jù)文件中抽取特征參數(shù),構(gòu)建一種高效的參數(shù)級細粒度數(shù)據(jù)組織方法。但是,從海量空間天文數(shù)據(jù)文件中抽取得到的特征參數(shù)數(shù)量巨大,如何高效地組織和索引這些數(shù)據(jù)是一個非常關(guān)鍵的問題。
空間天文衛(wèi)星觀測對象主要是宇宙中的各類天體目標,空間天文衛(wèi)星數(shù)據(jù)包括表征這些觀測對象的科學數(shù)據(jù),以及表征衛(wèi)星和載荷狀態(tài)的工程數(shù)據(jù),這類數(shù)據(jù)有以下特點。
(1)數(shù)據(jù)種類多樣,時間分辨率高,數(shù)據(jù)量龐大
從產(chǎn)品內(nèi)容來講,空間天文衛(wèi)星數(shù)據(jù)包含天文目標科學數(shù)據(jù)、衛(wèi)星平臺及載荷工程數(shù)據(jù)等類型;從產(chǎn)品級別來講,包含編輯級產(chǎn)品、標定級產(chǎn)品等類型。每顆衛(wèi)星的產(chǎn)品內(nèi)容、產(chǎn)品級別有所不同。以暗物質(zhì)衛(wèi)星為例,產(chǎn)品級別有9級,每級產(chǎn)品類型約為十幾類,共計100多類。以暗物質(zhì)衛(wèi)星標定級產(chǎn)品為例,半小時的數(shù)據(jù)文件中包含粒子數(shù)量達12萬左右,每個粒子的參數(shù)包括粒子在各載荷中的沉積能量、擊中位置、粒子入射徑跡等,按5年衛(wèi)星壽命期估算,產(chǎn)生的數(shù)據(jù)約為105.1億條。工程數(shù)據(jù)包括衛(wèi)星姿態(tài)軌道控制計算機(Attitude and Orbit Control Computer, AOCC)的姿態(tài)數(shù)據(jù)、全球定位系統(tǒng)(Global Positioning System, GPS)數(shù)據(jù)等幾十類數(shù)據(jù),大部分數(shù)據(jù)為每秒一條,還有一部分數(shù)據(jù)每秒兩條甚至四條。按照每秒一條估算,每顆衛(wèi)星每年每類數(shù)據(jù)產(chǎn)生3 000多萬條,按照衛(wèi)星壽命5年、每顆衛(wèi)星35類數(shù)據(jù)估算,單星壽命期內(nèi)產(chǎn)生數(shù)據(jù)量約50億條。數(shù)據(jù)總量達百億甚至千億量級,我們迫切需要構(gòu)建一種針對海量多源數(shù)據(jù)的高效組織方法。
(2)數(shù)據(jù)具有時間、空間屬性特征,需要支持基于時空條件快速檢索多類數(shù)據(jù)的應(yīng)用需求
空間天文衛(wèi)星數(shù)據(jù)信息表達為(Time, RA, DEC, par1, par2……)。其中,Time表示觀測時間;RA表示當前觀測時間衛(wèi)星視場中心點赤經(jīng);DEC表示當前觀測時間衛(wèi)星視場中心點赤緯;par1和par2表示特征參數(shù),比如高能電子計數(shù)、載荷工程參數(shù)測量值等。空間天文數(shù)據(jù)具有時間、空間屬性特征,為了支持基于時空檢索條件對多源數(shù)據(jù)進行快速檢索,需要對多源數(shù)據(jù)的時間、空間屬性進行統(tǒng)一處理,構(gòu)建基于特征參數(shù)時空索引的數(shù)據(jù)組織方法和檢索方法,面向應(yīng)用提供符合要求的數(shù)據(jù)。
(3)數(shù)據(jù)量持續(xù)增長,需要可擴展架構(gòu)支持日益增長的數(shù)據(jù)存儲要求
伴隨著已有衛(wèi)星持續(xù)在軌運行和新型衛(wèi)星發(fā)射入軌,空間天文衛(wèi)星數(shù)據(jù)體量呈現(xiàn)持續(xù)增長的趨勢,需要構(gòu)建一套在存儲容量方面具備良好可擴展性的分布式數(shù)據(jù)庫存儲系統(tǒng),并且隨著存儲容量的增加,其檢索效率能夠基本穩(wěn)定。
面對空間天文衛(wèi)星海量數(shù)據(jù)組織和快速獲取的需求,傳統(tǒng)關(guān)系型數(shù)據(jù)庫難以滿足。HBase等非關(guān)系型數(shù)據(jù)庫具有數(shù)據(jù)結(jié)構(gòu)靈活、水平擴展性強的特點,比傳統(tǒng)的結(jié)構(gòu)化數(shù)據(jù)庫更加有效地組織大數(shù)據(jù)。然而,由于HBase數(shù)據(jù)庫僅在主鍵建立了B+樹索引,能夠提供基于主鍵的快速查詢能力,在面對非主鍵查詢請求時,需要進行全表掃描,查詢效率很低。而空間天文衛(wèi)星數(shù)據(jù)需要按照時間、赤經(jīng)、赤緯、參數(shù)等多重屬性進行檢索,HBase難以滿足按照多重屬性快速檢索數(shù)據(jù)的需求。
利用非關(guān)系型數(shù)據(jù)庫存儲和檢索海量時空數(shù)據(jù),多個行業(yè)的學者都進行了研究,主要有兩種思路:一種是地理信息、國土資源、空間科學等領(lǐng)域的學者,從構(gòu)建時空格網(wǎng)模型出發(fā),將時空數(shù)據(jù)按照時空編碼存入非關(guān)系型數(shù)據(jù)庫。比如文[7]提出一種空間矢量數(shù)據(jù)分布式存儲模型,采用四叉樹建立空間格網(wǎng),并以格網(wǎng)編號、隨機碼構(gòu)建行鍵,將數(shù)據(jù)存儲在HBase數(shù)據(jù)庫中。文[8]提出HTM-ST離散化時空數(shù)據(jù)組織模型,采用時間、空間離散剖分的方式建立時空耦合編碼,并以該編碼構(gòu)建行鍵,將日地空間數(shù)據(jù)存儲在HBase數(shù)據(jù)庫中。由于HBase采用字典序方式存儲行鍵,采用多重屬性構(gòu)建行鍵的方法僅適用于點查詢;針對范圍查詢,需要逐層判斷各個時空網(wǎng)格與查詢范圍的拓撲關(guān)系,在剖分細化的過程中不斷逼近查詢條件中的時空范圍,或者進行全表掃描,查詢耗時明顯。
另一種思路是計算機信息技術(shù)領(lǐng)域的學者,通過構(gòu)建多層索引,提高非關(guān)系型數(shù)據(jù)庫的數(shù)據(jù)檢索效率。比如,文[9]提出一種基于索引表和值表,并結(jié)合熱點數(shù)據(jù)緩存的分層式索引技術(shù)。該方法在一定程度上提高了檢索效率,但在多屬性范圍檢索時需要對多列查詢結(jié)果進行合并處理,同樣無法滿足空間科學領(lǐng)域需要按照時空范圍實時獲取數(shù)據(jù)的需求。文[10]提出TA-index的三層索引技術(shù),該方法旨在提高數(shù)據(jù)入庫效率,在時空范圍查詢時由于需要分多次查詢多層索引和數(shù)據(jù)庫表,因此耗時較長。
針對海量空間天文衛(wèi)星數(shù)據(jù)需要按照時間、空間雙重屬性進行組織和查詢的需求,本文提出一種新的空間天文衛(wèi)星數(shù)據(jù)組織方法。首先解析數(shù)據(jù)文件并從中抽取海量特征參數(shù),建立觀測時間、空間位置與特征參數(shù)的關(guān)聯(lián),實現(xiàn)在統(tǒng)一時空下的多源數(shù)據(jù)組織。然后結(jié)合非關(guān)系型數(shù)據(jù)庫數(shù)據(jù)結(jié)構(gòu)靈活、水平擴展性強,以及關(guān)系型數(shù)據(jù)庫在多列值范圍查詢方面的優(yōu)勢,建立一套基于異構(gòu)數(shù)據(jù)庫進行數(shù)據(jù)組織和存儲的方式,其中采用分布式數(shù)據(jù)庫分區(qū)分表的方式,構(gòu)建空間天文衛(wèi)星HBase集群數(shù)據(jù)庫,對海量特征參數(shù)進行存儲管理;采用關(guān)系型數(shù)據(jù)庫分表的方式,存儲空間天文衛(wèi)星時空索引數(shù)據(jù),支持時間、空間兩個維度的檢索數(shù)據(jù)。
現(xiàn)有的空間天文衛(wèi)星數(shù)據(jù)以文件形態(tài)存儲在地面管理系統(tǒng)中,特征參數(shù)抽取是空間天文衛(wèi)星高效組織大數(shù)據(jù)的第一步?;贔ITSIO(https://heasarc.gsfc.nasa.gov/fitsio/fitsio.html)和ROOT(http://root.cern.ch)格式解析框架,構(gòu)建數(shù)據(jù)解析算法,能夠適應(yīng)現(xiàn)有衛(wèi)星多種數(shù)據(jù)格式參數(shù)抽取的要求。主要步驟如下:
(1)預(yù)先設(shè)置各衛(wèi)星各類數(shù)據(jù)需要抽取的參數(shù),生成參數(shù)抽取需求。
(2)獲取衛(wèi)星數(shù)據(jù)產(chǎn)品文件,識別衛(wèi)星名稱、數(shù)據(jù)類型、存儲格式。
(3)根據(jù)衛(wèi)星名稱、數(shù)據(jù)類型,與步驟(1)的參數(shù)抽取需求進行匹配。
(4)針對FITS格式數(shù)據(jù)文件,調(diào)用FITSIO提取各參數(shù)值及觀測時間;針對ROOT格式數(shù)據(jù)文件,調(diào)用ROOT格式解析框架提取各參數(shù)值及觀測時間;針對CSV和dat等普通格式文件,直接提取各參數(shù)值及觀測時間。
(5)根據(jù)需要對提取的參數(shù)進行物理量轉(zhuǎn)換,比如將載荷溫度、壓力等參數(shù)值從星上記錄的電信號值轉(zhuǎn)換為有物理含義的參數(shù)值。
(6)基于衛(wèi)星姿態(tài)數(shù)據(jù)計算逐時刻的衛(wèi)星觀測視場位置信息(RA,DEC)。
面向海量特征參數(shù)時間序列數(shù)據(jù)的存儲需求,本文提出一種基于HBase集群構(gòu)建的特征參數(shù)存儲結(jié)構(gòu)(如圖1),以參數(shù)分表+時間分區(qū)的方式進行存儲,支持以時間點、時間范圍為條件檢索數(shù)據(jù)。
首先,以單個參數(shù)或幾個關(guān)聯(lián)參數(shù)為粒度,將海量特征參數(shù)劃分為Group1和Group2等不同的參數(shù)組,分別建立參數(shù)表。其中,針對姿態(tài)四元數(shù)、軌道位置xyz坐標、軌道六根數(shù)等互相關(guān)聯(lián)的參數(shù),將其按組建表存儲,比如圖中參數(shù)A,B和C劃分為一組,參數(shù)U和V劃分為一組;其余參數(shù)單獨建表存儲。這種存儲方式一方面能夠提高數(shù)據(jù)存儲的靈活性,便于管理;另一方面能夠支持多組參數(shù)表并發(fā)查詢,從而提高多參數(shù)查詢效率。
然后,基于各類參數(shù)的時間頻率,按照時間范圍對各參數(shù)表進行分區(qū),分別建立獨立的時間分區(qū)索引。比如,圖1中Table1參數(shù)時頻較高,以5個時間單位為跨度建立t1,t6,t11…的時間分區(qū)索引;而TableN參數(shù)時頻較低,以10個時間單位為跨度建立t1,t11…的時間分區(qū)索引。這種分區(qū)設(shè)計能夠?qū)?shù)量龐大的參數(shù)按照時間范圍存入不同區(qū)域,在參數(shù)檢索過程中,支持通過分區(qū)索引查找對應(yīng)時段數(shù)據(jù),并且能夠支持多分區(qū)并發(fā)查詢,從而進一步提高查詢效率。
時空索引表示觀測時間與觀測視場中心點位置的關(guān)系,需要存儲Time,RA和DEC三個字段的數(shù)據(jù)。時空索引需要滿足按照時間、空間范圍聯(lián)合檢索的需求,即按照Time,RA和DEC字段范圍獲取數(shù)據(jù)。由于非關(guān)系型數(shù)據(jù)庫HBase的優(yōu)勢在于通過行鍵或者行鍵的范圍快速檢索數(shù)據(jù),在面對非主鍵查詢需求時,需要進行全表掃描,因而效率較低。而關(guān)系型數(shù)據(jù)庫采用結(jié)構(gòu)化查詢語言(Structured Query Language, SQL)的方式,適合這種多列值查詢的應(yīng)用需求,不僅能夠滿足點查詢需求(按照指定時間、位置獲取數(shù)據(jù)),而且能夠滿足范圍查詢需求(按照時間范圍、空間范圍獲取數(shù)據(jù))。因此,本文將時空索引數(shù)據(jù)存入關(guān)系型數(shù)據(jù)庫MySQL中。
衛(wèi)星觀測過程中,每秒產(chǎn)生一條時空索引數(shù)據(jù),觀測時間為順序遞增值。在時空索引表中,將Time字段設(shè)置為主鍵。另外,由于時空索引每秒一條記錄,每顆衛(wèi)星每年數(shù)據(jù)量高達3 000多萬條,而MySQL庫表數(shù)據(jù)達到千萬級后,檢索效率很低。對數(shù)據(jù)庫表進行水平切分,能夠解決超大型數(shù)據(jù)量和高負載庫表遇到瓶頸的問題,提高檢索效率。
由于本文面向的典型應(yīng)用場景每次請求數(shù)據(jù)的時長基本是小時量級,大概率是查詢單表,而單表數(shù)據(jù)量控制在百萬級別,能夠保證檢索效率。因此,在時空索引數(shù)據(jù)存儲過程中,按照觀測時間Time字段,以月為單位對時空索引表進行水平切分,切分后的子表數(shù)據(jù)量為200多萬條。同時,針對跨兩個表的聯(lián)合查詢也做了摸底測試,聯(lián)合查詢耗時與單表查詢沒有明顯區(qū)別。但是,如果應(yīng)用場景發(fā)生變化,比如檢索時長較長,經(jīng)常需要聯(lián)合查詢或者聯(lián)合多張表進行查詢,MySQL分表方案可能需要隨之進行調(diào)整。
聯(lián)合查詢的SQL語句如下:
select Time from Table1
where Time>=?5 and Time<=?6 and RA>=?1 and RA<=?2 and DEC>=?3 and DEC<=?4
union select Time from Table2
where Time>=?5 and Time<=?6 and RA>=?1 and RA<=?2 and DEC>=?3 and DEC<=?4
本文方法能夠支持以時間、空間為條件對特征參數(shù)進行檢索。根據(jù)時間和空間組合數(shù)據(jù)檢索條件,數(shù)據(jù)檢索需求可分為時間點、時間范圍、空間點、空間范圍、時間點+空間點、時間點+空間范圍、時間范圍+空間點、時間范圍+空間范圍共8種情況。
當檢索請求僅包含時間信息時,根據(jù)時間點或者時間范圍對待檢索參數(shù)表發(fā)起多個并行檢索任務(wù),針對以時間點為檢索條件的請求,調(diào)用HBase get方法(根據(jù)唯一健值查詢)對參數(shù)表進行檢索;針對以時間段為檢索條件的請求,調(diào)用HBase scan方法(根據(jù)唯一鍵值的起止范圍查詢)對參數(shù)表進行檢索;完成檢索后,對多個任務(wù)的檢索結(jié)果進行合并。
當檢索請求包含空間信息時,首先檢索時空索引表,獲取符合條件的時間信息;然后根據(jù)時間信息檢索參數(shù)表。
以檢索赤經(jīng)RA范圍在(r1,r3)、赤緯DEC范圍在(d1,d2)、觀測時間Time范圍在(t1,t100)且檢索參數(shù)為A,B,C和W為例,檢索過程如圖2。
圖2 數(shù)據(jù)檢索過程
(1)以 “r1 (2)以 “t1