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