地震大数据存储管理研究
2015-05-13李盛乐陈晓琳刘珠妹中国地震局地震研究所地震大地测量重点实验室武汉430071
刘 坚 李盛乐 陈晓琳 康 凯 刘珠妹(中国地震局地震研究所地震大地测量重点实验室,武汉 430071)
地震大数据存储管理研究
刘 坚 李盛乐 陈晓琳 康 凯 刘珠妹
(中国地震局地震研究所地震大地测量重点实验室,武汉 430071)
针对目前传统关系数据库在存储大数据时遇到的诸多挑战,提出了一种基于Hbase的地震大数据存储管理方法。Hbase表是一个分布式多维表,表中的数据通过一个行关键字(Row Key)、一个列族和一个列名(Columnfamily:column name)以及一个时间戳进行索引和查询定位。关键在设计好Row Key,以方便数据查询并进行数据分析。下面以地震观测数据为实例,讲述在Hbase的存储原理和方法。
假设地震业务数据库中有一Obs观测数据表,如果按照传统的RDBMS的话,Obs表中的列是不能随意改变的,比如schema定义了Netid,Stationid,pointid、Intrid、Itemid、value等属性,Obs表的属性是不能动态增加的。如果是Hbase列式存储数据库,在创建Obs表时,再为它定义一个info列族,Obs的数据便可以表示为:info:value=23.4,如果欲增加新的字段属性,只需要通过添加一个info:newProperty就可以了。
表1 关系数据库表结构
表1是关系数据库定义的Obs表,一旦设计完投入运行,该表的列是固定的,不能动态改变,并且列值为null值时,因占存储空间而浪费了这部分空间。表2是在Hbase的NoSQL数据库,Obs表的列可通过列族动态增加,并且空值列是不存储的,这样就节约了存储空间,因此Hbase的基于列存储的数据模型就非常适合地震数据频繁扩展的场景。另外,选用Hbase数据库存储管理数据,还有另外一个好处就是能自动切分数据,当Obs表中的数据超过某一个阀值时,Hbase就会自动切分数据,这样就使查询具有了伸缩性,再加上Hbase的弱事务性的特性,因此Hbase的数据写入效率非常高。
表2 NoSQL数据库表结构
将两者针对结构化观测数据的存储进行效能测试,在关键代码行处添加秒表,记录执行命令时间。数据量(条)分别为50,100,1000,10000,100000。每次插入保存完毕把所耗时长(单位:ms)写入日志文件。连续多次测试,取平均值。当写入记录条数小于1 000时,可以看出两者所耗时间差别并不明显;但随插入记录条数持续增加,Mysql的插入耗时开始剧增,而Hbase耗时变化幅度相对较小,其存储性能优势也就显现出来了。
分别对Hbase-0.94.6和Mysql-5.1.48做10,50,100,200,500,1000次文件写入试验,文件大小约为30 KB/个,两者的二进制文件存储耗时(单位:ms)性能对比结果显示,当插入文件数量越来越多时,Hbase的性能优势显而易见。
分别对Hbase-0.94.6和Mysql-5.1.48做数据量为1 000、2000、10 000、100 000、500 000二者查询性能测试,结果显示,Hbase耗时(单位:ms)很少,且幅度变化不大,而Mysql查询耗时随数据量增长幅度上升变化快。
综上所述,该种基于Hbase的地震大数据存储方法,并与传统关系数据库Mysql在写入与读取效率作比对测试,结果表明,该方法在数据存储与查询等性能,特别是在数据量多时,具有显著优势。