基于云平台NoSQL的海量天文图像存储研究
2014-02-04陈慧英
陈慧英
(昆明理工大学教育技术与网络中心 云南 昆明 650500)
基于云平台NoSQL的海量天文图像存储研究
陈慧英
(昆明理工大学教育技术与网络中心 云南 昆明 650500)
云计算所提出的全新计算和存储思想,对海量数据的存储解决方案以及快速访问有效数据资源提供了参考。以云存储平台NoSQL数据库为背景,研究海量天文数据的存储和访问技术。首先构建了基于MongoDB平台的天文图像FITS文件存储原型,在此基础上设计并分析存储实验。实验结果表明,数据分片存储以及选择最佳的分片大小能有效提高天文数据的存储和访问效率。
海量天文数据云存储NoSQL MongoDB数据分片
1 引言
虚拟天文台天文数据存储基本采用“Linux+IDE硬盘+软RAID技术”模式[1]。实际上,传统的直接存储技术难以满足天文领域每日TB级动态增长的海量数据存储以及数据的实时处理、同步传输和多点备份等一系列需求[2]。近些年来,由于微软、苹果、google、IBM、戴尔和Amazon等知名服务商的加入,云存储技术发展更为迅速。iCloud、Cloud Drive、Dropbox和SkyDrive等都是典型的云存储应用[3]。鉴于云存储技术所具有的安全性、性能和可扩展性等方面的优势,美国加州理工大学的G.Bruce Berriman等人就将商业的云计算应用于天文学,以EC2云服务平台为科学工作流应用研究数据共享方案,比较了传统架构与商业云服务在成本和性能上对科学应用的影响[4]。与此同时,NoSQL(Not Only SQL)—非关系数据管理技术开始出现,作为云计算(存储)的重要组成部分,NoSQL强有力地支撑了分布式存储技术的发展[5]。至此,国际上已有将云存储技术和NoSQL技术应用于天文图像存储的先例,并取得了一定进展[6]。
2 面向NoSQL的海量天文数据存储
天文观测采集到的原始数据一般存在数据量大、读写比例高和改写率低等特征。FITS(Flexible Image Transport System)文件于1982年由国际天文学会确定为各天文台之间用于传输和交换天文数据的统一标准格式[7]。FITS文件由
FITS头和二进制的图像数据组成,数据量极大。对天文数据进行分析时,需要读取大量数据,而检索数据具有局域性,需要对相邻区域的数据进行连续访问。采集到的天文数据一旦存储下来,很少有机会再对其更改。基于此,天文数据存储的需求可归纳为:①海量存储;②可将FITS文件分开存储(FITS头部分和数据部分),并通过FITS头文件中的特定参数进行数据检索;③实时高速读写。
2.1 NoSQL存储海量天文数据的优势
NoSQL存储海量天文数据的优势有:①海量数据存储:同传统数据库不同的是,NoSQL将分布式系统、分区和集群等技术应用于数据分布式存储,使其具有出色的水平扩展能力,以有效扩大存储规模,满足海量数据存储的要求;②多模式存储自由:目前来看,未来存储的数据不仅仅是结构化数据(整数和浮点数等),更多的是半结构化数据(XML、电子邮件等)和非结构化数据(文档、图片和视频等)。而NoSQL数据库所存储的数据,不再是整数和浮点数等基本的数据类型,而是扩展到了整个文件,为数据存储提供了更多的自由度;③高效的读写性能:有实践证明,面对每秒数万次的读写请求,传统数据库难以承受,而NoSQL数据库却能够从容应对(如Google就是使用了NoSQL数据库[8])。
2.2 NoSQL与天文数据的融合
2.2.1 FITS文件头存储
FITS文件头中包含一系列固定长度的标题记录,且每个标题记录由关键字和对应的值组成。在NoSQL数据库中,标题记录可以以“键/值”的形式表示,一个FITS头作为一条“键/值”记录存储。这样,NoSQL数据库可以按照标题记录中的任何关键字进行检索。
2.2.2 存储二进制数据
存储二进制数据有2种方式:①采用如GridFS(一种大型文件存储规范)等文件上传工具,直接将整个数据文件上传至数据库;②采用分片的方式,将一个二进制文件切分成多个数据片,每一个数据片作为一条记录的一个字段存储,并在该记录中增加一个描述分片的信息字段,将每个分片以数据记录的方式存储到NoSQL数据库中。在前期对NoSQL相关数据库做了详细的调研分析工作,结合研究需要,最终选取MongoDB作为平台进行后续的研究工作。
3 海量天文图像存储
3.1 FITS文件头解析和提取
3.1.1 FITS头解析
FITS头包括FITS文件的标识符,比特数,图像维数以及图像辅助信息和说明。FITS头总共有2 880 Bytes,每个标题记录均为80 Bytes,共含36个标题记录。每一标题记录存储图像的某一特征信息。标题记录的第一列开始为关键字,第9列一定是“=”,紧跟“=”号之后的是关键字的值。值最后的字符在第30列。每个FITS文件必须包含SIMPLE、BITPIX、NAXIS和END关键字,且必须按此顺序排列。在关键字之间可插入其他的标题记录,但第一个标题记录的关键字一定是以SIMPLE开始,最后以END关键字作为FITS头的结束。
3.1.2 提取FITS文件头
所谓提取FITS文件头,即按每80个字节为单位,从FITS文件中读取标题记录,并将该记录的关键字作为字段名,值作为字段值,END关键字表示提取结束。然后将整个FITS文件头中的所有记录按照“键/值”的方式组成一条数据记录存储到NoSQL中。
3.2 文件头和文件的存储规范设计
在对FITS文件制定存储规范时,应充分考虑到数据检索的便利性。考虑到NoSQL数据库的特点,为了方便实现分片存储,把FITS头和FITS数据文件分开存储到不同的数据集,然后通过FITS头中的关键字检索整个FITS文件。而当将FITS数据文件分片后,要通过FITS头检索到所有数据文件时,必须在FITS头和所有分片数据之间找一个关联关键字。研究中,选取FITS文件名作为此关联关键字。
文件头作为一条记录存储至MongoDB的数据集中,而FITS数据文件进行分片之后存储在另一个数据集中。其中,每个分片文件作为一条记录存储起来。每条记录由FITS文件名、分片号、FITS文件总大小、该分片大小和该分片数据组成。每条记录都是以“键/值”方式存储的。
3.3 FITS文件分片
FITS文件分片记录生成规范:首先按照指定的分片大小对FITS数据文件进行切分,然后通过FITS文件的总长度对指定分片大小取模,得到每个分片数据的分片号。将每个数据分片加上FITS文件名、总大小和分片大小等就组成了一条分片记录。
4 海量天文图像存储实验分析
4.1 分片存储效率
实验测试数据分布式存储时,文件分片与不分片对系统存储效率的影响。实验基于4 M大小的FITS文件。将分片大小设置为存储文件的实际大小即为不分片。分片则是随机选取512 K作为指定分片大小对FITS文件进行分片。实验中按上述描述分别将FITS文件存储到MongoDB数据集中,连续
写文件400次,统计每次写时间,得到2组实验数据。2组测试数据的对比分析结果如图1所示。
图1 不分片与分片时写时间对比
以上对比分析表明,在MongoDB平台上,分片与不分片在数据文件存储效率上存在显著差异,而且文件分片能够较大幅度提升海量数据的存储效率。
4.2 最佳分片大小(chunksize)
分片大小,即为数据集群中分片的块大小。shard集群中数据以块(chunk)为存储单位,存储在各个shard数据节点上。为了平衡数据的分布,集群会自动根据实际情况移动chunks。如果Chunksize设置过大,可能在每个块传输过程中都会造成长时间的锁表,设置过小,又可能会导致节点间块传输过于频繁,降低效率。本实验参考MongoDB的分片机制手动编程实现文件分片,同时,设置不同chunksize反复执行测试。针对4 M的FITS文件,实验选取了13组分片值分别测试,如图2、图3、图4和图5所示。
图2 不同分片写文件时间对比
图3 不同分片写文件时间平均值(加权平均写时间散点图)
图4 不同分片读文件时间对比
图5 不同分片时读文件时间平均值对比(加权平均读时间散点图)
图2显示到当分片过小时,写效率很低,chunksize稍微增大写效率明显提升,当增加到一定大小时,时间降低的幅度逐渐减小,效率有提升,但不明显,图3表明分片值为512 K的时候存储效率最高。从图4和图5可以看出读文件效率随着chunksize的不断增大而提升,只是提升幅度成递减趋势。当增大到存储文件大小的1/2时出现反弹。
4.3 文件大小与最佳分片大小
以上实验都基于4 M大小的FITS文件展开。虽然天文图像数据以4 M大小居多,但也存在其他大小的天文数据图像文件。为了更好的满足海量天文图像的存储要求,实验将选取另外几组不同大小的文件继续做最佳分片大小的对比分析。实验选取文件大小分别为2 M、8 M和16 M的3种文件,针对每种文件大小取7组分片。实验二表明分片值大小越大读效率越高,而本实验实施过程中发现不同大小的文件有同样规律,因此本文将不针对不同大小文件考虑读效率分析。
经分析本实验得出以下结论:文件为8 M或以下时,最佳分片大小参考值为文件大小的1/8,当文件大小继续增大时,最佳分片大小不再增加,16 M以上文件(包含16 M)的最佳分片大小参考值为1 M。
5 结束语
采用云存储平台存储海量天文图像数据,并通过部署NoSQL环境验证其良好性能。实验选用标配服务器,部署2个数据节点搭建存储集群,采用千兆每秒的带宽,单网卡操作,4 M的FITS文件的读写性能达到80 M/s。如需更高效地实现海量天文图像存储可通过增加节点数,采用更高网络带宽以及多网卡。因此在实际天文研究中采用云计算和云存储服务将大幅度地提高效率,节约成本。
[1]李文.虚拟天文台环境下的海量数据存储与访问技术研究[D].天津:天津大学,2007.
[2]陈慧英.基于NoSQL数据库的海量天文图像分布存储研究[D].昆明:昆明理工大学,2012.
[3]梁彪,曹宇佶,秦中元,等.云计算下的数据存储安全可证明性综述[J].计算机应用研究,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]季凯帆,曹文达.FITS,BMP和SCR图像格式及相互转换[J].云南天文台台刊,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