提高气象数据查询速度的存储分析

2014-09-10 15:37傅雅玉源艳芬梁慎青叶秋英
电脑知识与技术 2014年6期
关键词:数据库

傅雅玉 源艳芬 梁慎青 叶秋英

摘要:在气象现代化的发展进程中,将来各种各样的实时观测数据会越来越多,除了数据的准确性以外,对数据的时效性要求也越来越高。数据的时效包括采集传输时效和查询应用时效。采集传输时效有严格气象报文观测传输规范和制度,该文重点研究分析如何提高实时观测数据的查询应用时效。

关键词:结构化数据;数据库;数据库索引;列式存储;行式存储

中图分类号:TP311 文献标识码:A 文章编号:1009-3044(2014)06-1170-03

Analysis of Meteorological Data Storage to Improve Query Speed

FU Ya-yu,YUAN Yan-fen,LIANG Shen-qing,YE Qiu-ying

(Guangdong Meteorological Information Centre, Guangzhou 510080, China)

Abstract: In the process of the development of modern meteorology, a variety of real-time observation data in the future will be more and more, in addition to data accuracy, timeliness of data requirements are also increasing. Timeliness of data collection and transmission, including timeliness and query applications aging. There are strict time collection and transmission of meteorological observations packet transmission specifications and system, this paper focuses on the analysis of how to improve the query application timeliness real-time observation data.

Key words: structured data; database; database indexes; columns; storage; storage line

为建设幸福广东,提高预报准确率,广东省要在2015年基本实现气象现代化。信息中心要完成“三个一”工作。即一分钟资料到桌面、一套一体化的数据库、一个实时分析数据集,满足“资料好用、用好资料”的要求。

这“三个一”的工作,其实要求信息中心将及时收到的实时观测资料进行处理、入库,然后提供给预报员和其他应用人员使用,而不是将原始资料直接送到预报员桌面。这就要求我们需要对成千上万的原始数据进行快速的处理入库和提供高效的快速查询、统计、分析机制。

信息中心每天收到各种各样的气象资料,其中有结构化数据(如国家自动站和区域站等)和非结构化数据(如雷达产品,云图等)。在自动站资料的应用中,预报员希望从自动站观测数据中快速提取如温度、雨量、风向和风速等要素进行平均或累计等运算。

众所周知,数据查询的速度和数据的存储方式都以索引密切相关。信息中心保证大量的实时数据入库的同时,还需要想办法改善数据的存储方式来满足快速查询的要求。在现有的存储技术架构中,是否还有更好的办法来提升数据查询速度呢?我们先来了解计算机的数据存储方式。

1 数据的存储方式

目前,在计算机的数据处理过程中,计算机会将数据存储到存储介质(通常指硬盘)里,存储的方式通常有行式存储和列式存储。

行式存储是将每条记录数据以行的形式依次存储到存储介质中的过程。

例如下面的表:

这个简单表的每条记录包括观测站点的Name(名称),IIIII(站号),Temp(温度)和Rain(雨量)。

这个表要存储在计算机的内存(RAM)和存储(硬盘)中。数据库必须把这个简单的二维表转换成一个个“字节”中,由操作系统按顺序写到内存或硬盘中。

行式数据库把一行中的数据值串在一起存储起来,然后再存储下一行的数据,以此类推。

列式存储是将每条记录数据以列的形式依次存储到存储介质中的过程。

列式数据库把一列中的数据值串在一起存储起来,然后再存储下一列的数据,以此类推。

2 两种存储方式的优缺点

行式存储数据库因为同一条记录的行存储在一起,所以记录写入速度快,读取一条记录和同一条记录的多个列快,更改和删除记录快,但聚合统计、查询慢,数据压缩比低,索引开销大。

列式存储数据库因为同一类型的列按顺序依次存储在一块,索引和数据列是统一,同一列的数据相同或相似较多,所以列式存储查询速度快、数据压缩比高、装载快,但是插入更新慢,不太适合数据频繁更新变化。

行式存储的数据库擅长随机读操作,多用于联机事务处理 (OLTP);列式存储的数据库则更擅长大批量数据量查询,多用于联机分析处理(OLAP)。

3 气象数据存储使用特点

气象自动站观测的实时资料主要特点是时间点高度集中,时间间隔短,站点较多。也就是说同一个时间点并发数较大。由于这些特点,对收集、处理、存储和管理要求很高,收集耗费的时间也多。根据行式存储数据库写入快的特点,比较适合使用行式数据库。如商业数据库Oracle等。要实现“三个一”的第一个目标,即一分钟资料到桌面,信息中心还需要完善数据流程。

资料一经入库之后,一般很少更改数据项内容。在资料的使用上,预报员更多的是关心某个特殊时间区间(暴雨、台风、冰冻雨雪等天气过程)某个站点或某个区域站点的温度、雨量、风速和风向等要素值或平均值或累加值。从这点来看,气象资料的存储又非常适合列式存储数据库的要求。现经常使用商用列式数据库有Sybase IQ、ParAccel、Sand/DNA Analytics和Vertica等。

4 改进建议

如果气象应用根据某几列来聚合数据,就应该按列的方式组织数据更有效。或者只需要修改某一列值,按列的方式组织数据更有效。因为可以直接找到某列数据并修改,而与行中的其他列无关。如果采用行式数据库,如现在的Oracle数据库,为满足业务需要,需要建立大量的索引和混合索引,而大量的索引所带来的存储空间的浪费以及维护这些索引花费的不少的时间。列式数据库就不会出现这种情形,因为列式数据库的所有字段都是索引的,甚至可以认为索引和数据是统一的。

如果频繁增加行数据,频繁的修改和删除数据,每次要求读出整行数据,那么按行的方式组织数据会更有效,因为只需要一次寻址就可以顺序写入或读出整行的全部数据。

鉴于气象实时数据收集和查询的特点,收集大量并发的实时数据入库应该采用行式数据库,而气象历史数据,无论是查询还是存储压缩,非常适合采用列式数据库。因为查询聚合通常提取数据库中的气象要素列,如温度、雨量等,而相同区域的要素列的值在天气稳定的情形下相同的可能性很大,这非常有利于数据压缩存储。如Oracle和MySQL等稳定可靠的数据库产品。在数据库使用时增加列式索引来加快查询速度,提高预报产品生成时间。

在数据库存储可采用如Oracle 12C的列混合压缩方式压缩数据或者历史库采用高性能列数据库,如SyBase IQ 等,如此来提高压缩率和存储效率。

在实际应用中,列式存储的数据库更适合于气象海量数据的分析和统计。

5 小结

广东省要在2015年基本实现气象现代化,要让社会百姓感觉到气象真的像现代化,除了提高气象预报和气候预测的准确性外,预报时效也非常重要。现在社会科技发展很快,移动互联网和智能手机出现,改变人们以往的生活习惯,人们可以通过手持智能设备使用气象应用客户端快速查询天气情况。这就要求我们对数据查询、统计分析提出很高的要求,根据用户使用习惯,查询反应时间最好在3秒之内,越快越好。鉴于此,数据的底层组织存储架构非常重要,设计好坏直接影响到用户体验,关系到气象现代化的进程。

参考文献:

[1] Xuedong Chen,Stephen Revilak.The Star Schema Benchmark and Augmented Fact Table Indexing[C].Pat & Betty ONeil, TPC Technology Conference ,2009.

[2] 尹东方.列式存储在知识发现系统中的应用与实现[D].长春:吉林大学,2010.

[3] 孙慧生.浅谈列式数据库[J].企业技术开发,2011,29(21):46-47.

猜你喜欢
数据库
超星数据库录入证
本刊加入数据库的声明
数据库
数据库
数据库
两种新的非确定数据库上的Top-K查询
数据库
数据库
数据库
数据库