杨 鹏
(内蒙古自治区气象信息中心 内蒙古 呼和浩特 010051)
经过多年发展,自治区气象信息化能力不断提高,气象数据存储与服务能力不断增强,天气预报、气候预测和数值预报业务以及科研系统的基础资源环境大幅改善,但面向大数据服务的现实需求,存储、共享数据种类不完整,数据供应不足,自治区特色生态气象观测、人工影响天气观测及多部门行业共享数据没有实现快速采集并纳入统一规范化管理,难以发挥应用价值。
2016年气象部门构建了基于全国气象综合信息共享平台(以下简称“CIMISS”)的集约化数据环境,标准、统一地支撑气象核心业务系统的气象数据生态已初步形成,但数据采集形式单一,不能满足行业、部门数据采集汇聚需求;无法支持分布式计算、流式计算、挖掘分析、机器学习等新型技术框架,不能快速响应内部、行业和决策用户的数据加工、处理需求;无法满足长序列历史数据及分钟级数据检索的性能需求,亟须实现历史、实时资料一体化在线访问[1]。因此,内蒙古自治区气象大数据综合用平台应运而生,它将负责解决数据集约、业务集约问题,有效支撑气象业务系统和各类数据应用,全面支撑“云+端”生态运行。
从数据形态来讲,气象数据主要分为结构化数据和非结构化数据。结构化数据包括气象台站的各类观测要素资料,如地面、高空、辐射、农业气象、大气成分等;非结构化数据包括数值预报、气象灾害、雷达、卫星等[2]。
(1)业务数据:基于CIMISS统一数据环境,自治区每日实时收集来自国内外气象观测数据、加工处理后产品数据以及部门间交换数据等多种数据。数据种类包括:地面、高空、辐射、农业气象和生态气象、大气成分、卫星、雷达、气象灾害、数值预报产品、气象服务产品和其他资料等共11大类[3]。现有数据见表1。
表1 数据增量及存储期限详情信息表
其中结构化数据包含地面、高空、海洋、辐射、农业气象、大气成分等种类的数据,6种数据现存数据量为8.8 TB。非结构化数据包含数值预报、气象灾害、雷达、卫星、服务产品等种类的数据,存数据量为141.7 TB。
未来5年的数据增量:考虑各个存储库的年增长量,未来5年平均年增长率按照20%计算,按照计算公式:S=a1×(1+q)5∑=a1×(1+q)5(a1为第1年数据存储量,q为年增长率)进行计算:结构化数据未来5年数据存储量为8.8TB×(1+20%)5=22(TB);非结构化数据未来5年数据存储量为141.7TB×(1+20%)5=352.59(TB)。
(2)其他数据:通过历史资料拯救及数字化工作,收集整理了全区各类纸质气象记录档案资料、各类气象记录档案数字化图像文件、台站归档电子资料、录入的历史资料数据集、国家气象局下发数据集、整编数据等文本文件;通过定期制作和各台站汇交的地面、高空、辐射月报和年报资料。累积长序列数据集总量约20 TB。
未来5年的数据增量:考虑各个存储库的年增长量,未来5年平均年增长率按照20%计算,按照计算公式:S=a1×(1+q)5∑=a1×(1+q)5(a1为第一年数据存储量,q为年增长率)进行计算:非结构化数据未来5年数据存储量为18.04TB×(1+20%)5=44.88(TB)。
对于结构化数据可根据数据的交互需求采用关系型数据库与NOSQL数据库相结合的存储设计,以满足数据实时查询检索和统计计算分析的需求。针对非结构化数据,根据数据检索维度设计其分布式索引信息实时访问,采用分布式NAS文件类型存储,用以满足此类数据的各种业务访问需求。同时针对非结构化数据的实时共享访问需求,提供分布式KV数据库存储形式,将雷达、数值预报、卫星数据进行分片打散,从而提供更为高效的基于时空维度的数据实时访问及可视化显示能力[3-4]。
2.1.1 数据分库分表设计
单表数据量限制在500万,表之间数据无倾斜,尽量均匀分布,因此应尽量选好分库分表键。元数据信息表,以广播表的形式,在各分库里均有副本,保证JOIN操作的高效检索。数据的分库分表数量按照数据的实际存储时限来确定,并根据总数据容量进行分布式数据库资源规模的确定。进行数据检索时,加入分库分表键条件,这样数据将直接定位到分库,极大缩短查询时间。
2.1.2 读写分离设计
数据的解码入库,与数据的读取,在数据库IO层面会产生冲突,从而导致两者的性能降低,采用分布式数据库产品提供数据的读写分离能力,并保证读库与主库主键具有很小的数据延时。
2.1.3 数据索引设计
分布式关系型数据库,支持传统的数据索引,从而为高频访问数据的查询进行快速定位和缓冲,在针对各类汇交数据的访问,根据高频检索条件进行索引设计,从而保证大部分查询可以命中索引,实现数据的快速检索。
2.1.4 提高数据库运行效率的办法
在数据库物理设计时,降低范式,增加冗余,少用触发器,多用存储过程。当计算非常复杂,而且记录条数非常巨大时,复杂计算要先在数据库外面,以文件系统方式用C++语言计算处理完成之后,最后才入库追加到表中去。对数据库管理系统DBMS进行系统优化,即优化各种系统参数,如缓冲区个数。使用面向数据的SQL语言进行程序设计时,尽量采取优化算法[5]。
分布式关系型数据库hbase,用于结构化数据的实时查询、检索。分布式表格系统设计采用Cassandra数据库集群存储监视指标数据,支持高吞吐量的大量写入、低延迟页面刷新。采用数据库集群存储日志事件类数据,支持持续大量的写入、关键字查询、查询统计等。分布式文件系统采用分布式NAS[6-7]。
2.3.1 气象结构化数据存储系统
根据结构化数据存储规范,利用关系型数据库技术建设气象结构化数据分布式存储系统,包括自动站数据库、其他站点数据库、结构化数据分析库、非结构化数据索引库等物理隔离的数据库,用以存储气象观测站点数据、文件产品的索引信息、新汇交数据。
2.3.2 非结构化数据存储系统
根据非结构化数据存储规范,利用分布式文件存储系统和文件目录结构规范建设非结构化数据实时库和非结构化数据历史库。非结构化数据实时库,主要满足气象核心业务系统对数据服务的需求。非结构化数据实时库具有实时性高、周期性短、访问速度快、数据量不超过5PB等特点,提供应用系统的直接访问。非结构化数据历史库,主要满足科研用户以及业务试验系统对数据在线访问的需求,保障历史数据在线服务。非结构化数据历史库具有全序列、历史性、数据量大等特点,为应用系统对历史资料的分析提供数据资源。结构化实时库与历史库共同组成气象结构化的数据存储全集,提供直接数据访问[8-9]。
气象大数据管理云平台根据气象应用对数据访问的需求,分为结构化数据库、非结构化文件索引库、缓冲库、历史分析库、实时应用库。在进行分布式数据库分库分表设计时,主要结合了各类数据库的分库分表特点,如针对hbase数据库,主要按观测时间进行分库分表设计,针对分析型数据库,主要根据站点编号进行hash分布键的设计。针对键表和要素表,则根据访问特点,对要素表按外键id进行hash分布键的设计。
数据索引需要建立在一个全局共同遵守的标准之上,这个标准中规定了在不同数据分片场景下各个数据节点应共同包含或通过逻辑映射的方式包含相应的属性,如在水平分片场景下,各个数据节点应共同拥有日期属性,日期属性可分为年、月、旬等多个分类方式。如同属于年分类的场景下,则需要共同拥有年属性;如在垂直分片场景下,各个数据节点应共同拥有要素类型属性。分布式存储的核心问题是对数据分片和数据分配方式,分片的方式分为水平分片、垂直分片、导出分片和混合分片。
除对气象数据进行长序列、分布式、分级在线存储外,还针对天气分析、决策服务、气候预测等应用设计多副本数据库和数据表。比如,针对天气分析,基于分布式表格系统建立气象数据实时应用库;针对决策服务和气候预测,基于分布式分析型数据库对长序列地面数据冗余存储;针对应用频度和重要性不同,对地面分钟和小时数据按国家站/区域站、常用要素/全要素的分表存储,在接口层面进行封装,保障访问的高效。设计存储缓冲区,暂存入库后的数据,基于SSD构建小型关系型数据库;所有用于服务的数据库都从该缓冲区获取数据,基于数据库提供的记录变更信息开展数据同步。该同步方式实现了读写分离,除了高效、稳定,还能适应可能新增的副本需求[10-11]。见图1。
数据访问接口模块实现数据访问的接口封装,包括数据库数据访问接口、文件访问接口、安全认证和请求监听功能,由于接口读写的高并发性,需要考虑接口封装的多线程特性,包括端口监听、连接的建立以及数据传输的控制能力。数据访问接口遵循气象数据统一服务接口标准规范进行设计,通过符合气象标准的开放接口,并在其基础上进行定制开发,保证各业务系统与大数据平台的无缝对接,全面提升数据服务性能。
数据库接口服务面向对象为专业和非专业的数据使用人员,专业地为数据库管理员提供数据库接口,非专业在系统界面提供查询、导出功能。数据库数据访问功能是当系统对外提供结构化数据访问服务时,数据访问请求首先通过数据访问安全控制功能实现安全认证,然后通过统一的数据获取服务获得数据的存储位置信息以及数据结构信息,然后根据数据存储位置,访问物理存储的数据库表,通过结构信息可动态给出访问形式化参数结构,通过给定参数动态拼装查询检索和写入信息对应的SQL语句然后进行真正的数据访问,最后将数据结果以用户定义的形式化结构参数形态返回给用户[12]。
文件访问接口功能就是给外部系统提供文件类气象数据的调用服务接口,接口封装了文件的数据操作API,对外提供统一的服务接口供外部调用。文件访问接口模块主要完成的功能包括各类气象专业化文件读取,文件写入功能。
(1)接收服务请求功能单元负责接收来自外部系统的服务请求,包括调用的API信息、调用者信息及调用参数信息。
(2)启动服务进程功能单元根据服务请求信息自动启动服务进程,这些服务进程会根据请求信息自动匹配相关进程。进程启动之后,交与其他模块进行处理。
(3)提交处理结果功能单元是经存储管理控制中心动态调度数据处理(融合、包处理等)和数据读取服务(副本生成、压缩、打包等)等操作后,将结果或结果集返回给请求服务的外部系统。文件访问接口模块主要由接收服务请求、启动服务进程和提交处理结果等功能组成。
气象大数据综合应用平台对气象大数据资源进行全流程规范化管理,对气象及相关领域数据进行快速汇聚、交换、质控和入库;基于算法库和加工流水线,对数据进行加工处理,生产丰富和高质量的统计类、网格化、组网拼图、天气气候分析等产品;完成200余种数据产品服务,目前用户数据达300个,预计同时支持动态用户数达1 500人,最大支持同时检索和下载资料并发数达1 500次/min,实现部门内外用户亚秒级数据响应。对气象大数据进行规范、实现实时历史一体化的在线存储,提供统一、便捷、丰富的数据服务接口。开放内部的数据管理能力,包括数据交换、产品加工、存储服务等,平台建成后每小时收集、解码、存储、共享数据量约14 GB,资料全流程管理均通过气象大数据管理云平台自动化实现。
气象大数据综合应用平台推动气象数据开放共享,使气象深度渗透、融入其他行业中,实现功能的互补和延伸。汇聚气象数据、社会数据、行业数据等数据资源,实现气象与其他产业间功能的互补和延伸,向政府、行业部门、军队和公众用户提供6大类160子类数据产品共享服务,数据产品日服务量由原来的200 GB提升到500 G,支持1 000用户并发访问,充分发挥气象信息蕴含的经济价值、社会价值。