陳慧英
(昆明理工大學(xué)教育技術(shù)與網(wǎng)絡(luò)中心 云南 昆明 650500)
基于云平臺(tái)NoSQL的海量天文圖像存儲(chǔ)研究
陳慧英
(昆明理工大學(xué)教育技術(shù)與網(wǎng)絡(luò)中心 云南 昆明 650500)
云計(jì)算所提出的全新計(jì)算和存儲(chǔ)思想,對(duì)海量數(shù)據(jù)的存儲(chǔ)解決方案以及快速訪問(wèn)有效數(shù)據(jù)資源提供了參考。以云存儲(chǔ)平臺(tái)NoSQL數(shù)據(jù)庫(kù)為背景,研究海量天文數(shù)據(jù)的存儲(chǔ)和訪問(wèn)技術(shù)。首先構(gòu)建了基于MongoDB平臺(tái)的天文圖像FITS文件存儲(chǔ)原型,在此基礎(chǔ)上設(shè)計(jì)并分析存儲(chǔ)實(shí)驗(yàn)。實(shí)驗(yàn)結(jié)果表明,數(shù)據(jù)分片存儲(chǔ)以及選擇最佳的分片大小能有效提高天文數(shù)據(jù)的存儲(chǔ)和訪問(wèn)效率。
海量天文數(shù)據(jù)云存儲(chǔ)NoSQL MongoDB數(shù)據(jù)分片
虛擬天文臺(tái)天文數(shù)據(jù)存儲(chǔ)基本采用“Linux+IDE硬盤+軟RAID技術(shù)”模式[1]。實(shí)際上,傳統(tǒng)的直接存儲(chǔ)技術(shù)難以滿足天文領(lǐng)域每日TB級(jí)動(dòng)態(tài)增長(zhǎng)的海量數(shù)據(jù)存儲(chǔ)以及數(shù)據(jù)的實(shí)時(shí)處理、同步傳輸和多點(diǎn)備份等一系列需求[2]。近些年來(lái),由于微軟、蘋果、google、IBM、戴爾和Amazon等知名服務(wù)商的加入,云存儲(chǔ)技術(shù)發(fā)展更為迅速。iCloud、Cloud Drive、Dropbox和SkyDrive等都是典型的云存儲(chǔ)應(yīng)用[3]。鑒于云存儲(chǔ)技術(shù)所具有的安全性、性能和可擴(kuò)展性等方面的優(yōu)勢(shì),美國(guó)加州理工大學(xué)的G.Bruce Berriman等人就將商業(yè)的云計(jì)算應(yīng)用于天文學(xué),以EC2云服務(wù)平臺(tái)為科學(xué)工作流應(yīng)用研究數(shù)據(jù)共享方案,比較了傳統(tǒng)架構(gòu)與商業(yè)云服務(wù)在成本和性能上對(duì)科學(xué)應(yīng)用的影響[4]。與此同時(shí),NoSQL(Not Only SQL)—非關(guān)系數(shù)據(jù)管理技術(shù)開始出現(xiàn),作為云計(jì)算(存儲(chǔ))的重要組成部分,NoSQL強(qiáng)有力地支撐了分布式存儲(chǔ)技術(shù)的發(fā)展[5]。至此,國(guó)際上已有將云存儲(chǔ)技術(shù)和NoSQL技術(shù)應(yīng)用于天文圖像存儲(chǔ)的先例,并取得了一定進(jìn)展[6]。
天文觀測(cè)采集到的原始數(shù)據(jù)一般存在數(shù)據(jù)量大、讀寫比例高和改寫率低等特征。FITS(Flexible Image Transport System)文件于1982年由國(guó)際天文學(xué)會(huì)確定為各天文臺(tái)之間用于傳輸和交換天文數(shù)據(jù)的統(tǒng)一標(biāo)準(zhǔn)格式[7]。FITS文件由
FITS頭和二進(jìn)制的圖像數(shù)據(jù)組成,數(shù)據(jù)量極大。對(duì)天文數(shù)據(jù)進(jìn)行分析時(shí),需要讀取大量數(shù)據(jù),而檢索數(shù)據(jù)具有局域性,需要對(duì)相鄰區(qū)域的數(shù)據(jù)進(jìn)行連續(xù)訪問(wèn)。采集到的天文數(shù)據(jù)一旦存儲(chǔ)下來(lái),很少有機(jī)會(huì)再對(duì)其更改?;诖耍煳臄?shù)據(jù)存儲(chǔ)的需求可歸納為:①海量存儲(chǔ);②可將FITS文件分開存儲(chǔ)(FITS頭部分和數(shù)據(jù)部分),并通過(guò)FITS頭文件中的特定參數(shù)進(jìn)行數(shù)據(jù)檢索;③實(shí)時(shí)高速讀寫。
2.1 NoSQL存儲(chǔ)海量天文數(shù)據(jù)的優(yōu)勢(shì)
NoSQL存儲(chǔ)海量天文數(shù)據(jù)的優(yōu)勢(shì)有:①海量數(shù)據(jù)存儲(chǔ):同傳統(tǒng)數(shù)據(jù)庫(kù)不同的是,NoSQL將分布式系統(tǒng)、分區(qū)和集群等技術(shù)應(yīng)用于數(shù)據(jù)分布式存儲(chǔ),使其具有出色的水平擴(kuò)展能力,以有效擴(kuò)大存儲(chǔ)規(guī)模,滿足海量數(shù)據(jù)存儲(chǔ)的要求;②多模式存儲(chǔ)自由:目前來(lái)看,未來(lái)存儲(chǔ)的數(shù)據(jù)不僅僅是結(jié)構(gòu)化數(shù)據(jù)(整數(shù)和浮點(diǎn)數(shù)等),更多的是半結(jié)構(gòu)化數(shù)據(jù)(XML、電子郵件等)和非結(jié)構(gòu)化數(shù)據(jù)(文檔、圖片和視頻等)。而NoSQL數(shù)據(jù)庫(kù)所存儲(chǔ)的數(shù)據(jù),不再是整數(shù)和浮點(diǎn)數(shù)等基本的數(shù)據(jù)類型,而是擴(kuò)展到了整個(gè)文件,為數(shù)據(jù)存儲(chǔ)提供了更多的自由度;③高效的讀寫性能:有實(shí)踐證明,面對(duì)每秒數(shù)萬(wàn)次的讀寫請(qǐng)求,傳統(tǒng)數(shù)據(jù)庫(kù)難以承受,而NoSQL數(shù)據(jù)庫(kù)卻能夠從容應(yīng)對(duì)(如Google就是使用了NoSQL數(shù)據(jù)庫(kù)[8])。
2.2 NoSQL與天文數(shù)據(jù)的融合
2.2.1 FITS文件頭存儲(chǔ)
FITS文件頭中包含一系列固定長(zhǎng)度的標(biāo)題記錄,且每個(gè)標(biāo)題記錄由關(guān)鍵字和對(duì)應(yīng)的值組成。在NoSQL數(shù)據(jù)庫(kù)中,標(biāo)題記錄可以以“鍵/值”的形式表示,一個(gè)FITS頭作為一條“鍵/值”記錄存儲(chǔ)。這樣,NoSQL數(shù)據(jù)庫(kù)可以按照標(biāo)題記錄中的任何關(guān)鍵字進(jìn)行檢索。
2.2.2 存儲(chǔ)二進(jìn)制數(shù)據(jù)
存儲(chǔ)二進(jìn)制數(shù)據(jù)有2種方式:①采用如GridFS(一種大型文件存儲(chǔ)規(guī)范)等文件上傳工具,直接將整個(gè)數(shù)據(jù)文件上傳至數(shù)據(jù)庫(kù);②采用分片的方式,將一個(gè)二進(jìn)制文件切分成多個(gè)數(shù)據(jù)片,每一個(gè)數(shù)據(jù)片作為一條記錄的一個(gè)字段存儲(chǔ),并在該記錄中增加一個(gè)描述分片的信息字段,將每個(gè)分片以數(shù)據(jù)記錄的方式存儲(chǔ)到NoSQL數(shù)據(jù)庫(kù)中。在前期對(duì)NoSQL相關(guān)數(shù)據(jù)庫(kù)做了詳細(xì)的調(diào)研分析工作,結(jié)合研究需要,最終選取MongoDB作為平臺(tái)進(jìn)行后續(xù)的研究工作。
3.1 FITS文件頭解析和提取
3.1.1 FITS頭解析
FITS頭包括FITS文件的標(biāo)識(shí)符,比特?cái)?shù),圖像維數(shù)以及圖像輔助信息和說(shuō)明。FITS頭總共有2 880 Bytes,每個(gè)標(biāo)題記錄均為80 Bytes,共含36個(gè)標(biāo)題記錄。每一標(biāo)題記錄存儲(chǔ)圖像的某一特征信息。標(biāo)題記錄的第一列開始為關(guān)鍵字,第9列一定是“=”,緊跟“=”號(hào)之后的是關(guān)鍵字的值。值最后的字符在第30列。每個(gè)FITS文件必須包含SIMPLE、BITPIX、NAXIS和END關(guān)鍵字,且必須按此順序排列。在關(guān)鍵字之間可插入其他的標(biāo)題記錄,但第一個(gè)標(biāo)題記錄的關(guān)鍵字一定是以SIMPLE開始,最后以END關(guān)鍵字作為FITS頭的結(jié)束。
3.1.2 提取FITS文件頭
所謂提取FITS文件頭,即按每80個(gè)字節(jié)為單位,從FITS文件中讀取標(biāo)題記錄,并將該記錄的關(guān)鍵字作為字段名,值作為字段值,END關(guān)鍵字表示提取結(jié)束。然后將整個(gè)FITS文件頭中的所有記錄按照“鍵/值”的方式組成一條數(shù)據(jù)記錄存儲(chǔ)到NoSQL中。
3.2 文件頭和文件的存儲(chǔ)規(guī)范設(shè)計(jì)
在對(duì)FITS文件制定存儲(chǔ)規(guī)范時(shí),應(yīng)充分考慮到數(shù)據(jù)檢索的便利性。考慮到NoSQL數(shù)據(jù)庫(kù)的特點(diǎn),為了方便實(shí)現(xiàn)分片存儲(chǔ),把FITS頭和FITS數(shù)據(jù)文件分開存儲(chǔ)到不同的數(shù)據(jù)集,然后通過(guò)FITS頭中的關(guān)鍵字檢索整個(gè)FITS文件。而當(dāng)將FITS數(shù)據(jù)文件分片后,要通過(guò)FITS頭檢索到所有數(shù)據(jù)文件時(shí),必須在FITS頭和所有分片數(shù)據(jù)之間找一個(gè)關(guān)聯(lián)關(guān)鍵字。研究中,選取FITS文件名作為此關(guān)聯(lián)關(guān)鍵字。
文件頭作為一條記錄存儲(chǔ)至MongoDB的數(shù)據(jù)集中,而FITS數(shù)據(jù)文件進(jìn)行分片之后存儲(chǔ)在另一個(gè)數(shù)據(jù)集中。其中,每個(gè)分片文件作為一條記錄存儲(chǔ)起來(lái)。每條記錄由FITS文件名、分片號(hào)、FITS文件總大小、該分片大小和該分片數(shù)據(jù)組成。每條記錄都是以“鍵/值”方式存儲(chǔ)的。
3.3 FITS文件分片
FITS文件分片記錄生成規(guī)范:首先按照指定的分片大小對(duì)FITS數(shù)據(jù)文件進(jìn)行切分,然后通過(guò)FITS文件的總長(zhǎng)度對(duì)指定分片大小取模,得到每個(gè)分片數(shù)據(jù)的分片號(hào)。將每個(gè)數(shù)據(jù)分片加上FITS文件名、總大小和分片大小等就組成了一條分片記錄。
4.1 分片存儲(chǔ)效率
實(shí)驗(yàn)測(cè)試數(shù)據(jù)分布式存儲(chǔ)時(shí),文件分片與不分片對(duì)系統(tǒng)存儲(chǔ)效率的影響。實(shí)驗(yàn)基于4 M大小的FITS文件。將分片大小設(shè)置為存儲(chǔ)文件的實(shí)際大小即為不分片。分片則是隨機(jī)選取512 K作為指定分片大小對(duì)FITS文件進(jìn)行分片。實(shí)驗(yàn)中按上述描述分別將FITS文件存儲(chǔ)到MongoDB數(shù)據(jù)集中,連續(xù)
寫文件400次,統(tǒng)計(jì)每次寫時(shí)間,得到2組實(shí)驗(yàn)數(shù)據(jù)。2組測(cè)試數(shù)據(jù)的對(duì)比分析結(jié)果如圖1所示。
圖1 不分片與分片時(shí)寫時(shí)間對(duì)比
以上對(duì)比分析表明,在MongoDB平臺(tái)上,分片與不分片在數(shù)據(jù)文件存儲(chǔ)效率上存在顯著差異,而且文件分片能夠較大幅度提升海量數(shù)據(jù)的存儲(chǔ)效率。
4.2 最佳分片大?。╟hunksize)
分片大小,即為數(shù)據(jù)集群中分片的塊大小。shard集群中數(shù)據(jù)以塊(chunk)為存儲(chǔ)單位,存儲(chǔ)在各個(gè)shard數(shù)據(jù)節(jié)點(diǎn)上。為了平衡數(shù)據(jù)的分布,集群會(huì)自動(dòng)根據(jù)實(shí)際情況移動(dòng)chunks。如果Chunksize設(shè)置過(guò)大,可能在每個(gè)塊傳輸過(guò)程中都會(huì)造成長(zhǎng)時(shí)間的鎖表,設(shè)置過(guò)小,又可能會(huì)導(dǎo)致節(jié)點(diǎn)間塊傳輸過(guò)于頻繁,降低效率。本實(shí)驗(yàn)參考MongoDB的分片機(jī)制手動(dòng)編程實(shí)現(xiàn)文件分片,同時(shí),設(shè)置不同chunksize反復(fù)執(zhí)行測(cè)試。針對(duì)4 M的FITS文件,實(shí)驗(yàn)選取了13組分片值分別測(cè)試,如圖2、圖3、圖4和圖5所示。
圖2 不同分片寫文件時(shí)間對(duì)比
圖3 不同分片寫文件時(shí)間平均值(加權(quán)平均寫時(shí)間散點(diǎn)圖)
圖4 不同分片讀文件時(shí)間對(duì)比
圖5 不同分片時(shí)讀文件時(shí)間平均值對(duì)比(加權(quán)平均讀時(shí)間散點(diǎn)圖)
圖2顯示到當(dāng)分片過(guò)小時(shí),寫效率很低,chunksize稍微增大寫效率明顯提升,當(dāng)增加到一定大小時(shí),時(shí)間降低的幅度逐漸減小,效率有提升,但不明顯,圖3表明分片值為512 K的時(shí)候存儲(chǔ)效率最高。從圖4和圖5可以看出讀文件效率隨著chunksize的不斷增大而提升,只是提升幅度成遞減趨勢(shì)。當(dāng)增大到存儲(chǔ)文件大小的1/2時(shí)出現(xiàn)反彈。
4.3 文件大小與最佳分片大小
以上實(shí)驗(yàn)都基于4 M大小的FITS文件展開。雖然天文圖像數(shù)據(jù)以4 M大小居多,但也存在其他大小的天文數(shù)據(jù)圖像文件。為了更好的滿足海量天文圖像的存儲(chǔ)要求,實(shí)驗(yàn)將選取另外幾組不同大小的文件繼續(xù)做最佳分片大小的對(duì)比分析。實(shí)驗(yàn)選取文件大小分別為2 M、8 M和16 M的3種文件,針對(duì)每種文件大小取7組分片。實(shí)驗(yàn)二表明分片值大小越大讀效率越高,而本實(shí)驗(yàn)實(shí)施過(guò)程中發(fā)現(xiàn)不同大小的文件有同樣規(guī)律,因此本文將不針對(duì)不同大小文件考慮讀效率分析。
經(jīng)分析本實(shí)驗(yàn)得出以下結(jié)論:文件為8 M或以下時(shí),最佳分片大小參考值為文件大小的1/8,當(dāng)文件大小繼續(xù)增大時(shí),最佳分片大小不再增加,16 M以上文件(包含16 M)的最佳分片大小參考值為1 M。
采用云存儲(chǔ)平臺(tái)存儲(chǔ)海量天文圖像數(shù)據(jù),并通過(guò)部署NoSQL環(huán)境驗(yàn)證其良好性能。實(shí)驗(yàn)選用標(biāo)配服務(wù)器,部署2個(gè)數(shù)據(jù)節(jié)點(diǎn)搭建存儲(chǔ)集群,采用千兆每秒的帶寬,單網(wǎng)卡操作,4 M的FITS文件的讀寫性能達(dá)到80 M/s。如需更高效地實(shí)現(xiàn)海量天文圖像存儲(chǔ)可通過(guò)增加節(jié)點(diǎn)數(shù),采用更高網(wǎng)絡(luò)帶寬以及多網(wǎng)卡。因此在實(shí)際天文研究中采用云計(jì)算和云存儲(chǔ)服務(wù)將大幅度地提高效率,節(jié)約成本。
[1]李文.虛擬天文臺(tái)環(huán)境下的海量數(shù)據(jù)存儲(chǔ)與訪問(wèn)技術(shù)研究[D].天津:天津大學(xué),2007.
[2]陳慧英.基于NoSQL數(shù)據(jù)庫(kù)的海量天文圖像分布存儲(chǔ)研究[D].昆明:昆明理工大學(xué),2012.
[3]梁彪,曹宇佶,秦中元,等.云計(jì)算下的數(shù)據(jù)存儲(chǔ)安全可證明性綜述[J].計(jì)算機(jī)應(yīng)用研究,2012,29(7):2416-2421.
[4]BERRIMAN G B,JUVE G,DEELMAN E,et al.The Application of Cloud Computing to Astronomy:A Study of Cost and Performance[C]//E-Science Workshops.2010 Sixth IEEE International Conference on.2010:1-7.
[5]STRAUCH C,SITES U L S,KRIHA W.NoSQL databases [M].German:Stuttgart Media University,2011.
[6]ENKE H,PARTL A,REINEFELD A,et al.Handling Big Data in Astronomy and Astrophysics:Rich Structured Queries on Replicated Cloud Data with XtreemFS[J]. Datenbank-Spektrum,2012,12(3):173-181.
[7]季凱帆,曹文達(dá).FITS,BMP和SCR圖像格式及相互轉(zhuǎn)換[J].云南天文臺(tái)臺(tái)刊,1996(2):60-64.
[8]RAMANATHAN S,GOEL S,ALAGUMALAI S.Comparison of Cloud database:Amazon's SimpleDB and Google's Bigtable [C]//Recent Trends in Information Systems(ReTIS),2011 International Conference on,2011:165-168.
Research on Massive Astronomical Image Storage Based on NoSQL Cloud Platform
CHEN Hui-ying
(Kunming University of Science and Technology,Kunming Yunnan 650500,China)
The bran-new calculation and storage ideas proposed by cloud computing provide the
for storage solutions of massive data and rapid access of effective data resources.This paper studies the storage and access technologies of massive astronomical data based on cloud storage platform NoSQL database.Firstly,this paper builds an astronomical image FITS file storage prototype based on MongoDB platform.On this basis,this paper designs and analyzes the storage experiments.The experimental results show that the data partition storage and selection of optimal segment size can effectively improve the effectiveness of astronomical data storage and access.
massive astronomical data;cloud storage;NoSQL;MongoDB;data partition
TP391
A
1008-1739(2014)15-60-4
定稿日期:2014-07-12