气象数据和产品是气象预报预测、决策服务工作的基础和支撑。随着气象综合观测系统的建设,以及高性能计算机系统和数值预报模式的迅速发展,气象信息在内涵与外延上都发生了重大变化,种类和数据量都呈几何级数增长,特别是各种新增观测资料的内在意义、数据规范、产生频次、数据量、传输流程、加工处理方法以及时效要求等方面,与传统的常规资料相比都具有非常大的差异[1]。同时,由于气象预报系统和公共气象服务系统的发展,对气象信息管理和共享服务系统在方式、机制、容量、加工处理能力、检索手段、访问效率和精准服务等方面也提出了更高的要求。
9210工程 (气象卫星综合应用业务系统) 建设完成以来,在各省级气象业务系统中,逐渐形成了以网络通信为传输基础、以文件系统为主要管理和服务方式的气象信息管理共享体系[2-3]。该系统的特点是收集来自多个方面的观测资料和产品,存放在共享服务器相应目录,形成提供气象资料共享服务的文件库系统,并通过FTP服务,将共享文件库的内容提供省内各级气象业务用户调用 (省级各气象业务单位、各地市以及气象台站、气象系统外行业用户)。各用户将调用的数据文件按照统一的编报规范解读后,各自对其进行加工应用。在随后的发展变化过程中,9210文件共享系统的前端逐步形成了部分面向特定观测资料收集系统的专用数据库,在其后端,逐步建立了部分面向特定应用平台的专用数据库,作为以文件系统为核心的共享系统的补充[4-5]。以文件系统为核心的气象信息管理与共享系统,在业务发展过程中,曾起到过重要的支撑作用,但是基于文件系统的气象信息共享体系仅仅是一种粗放的、浅层次的共享方式,难以实现对大量气象信息开展有效的存储和管理,无法为用户提供方便、高效、稳定的气象信息共享服务。面对气象信息在外延和内涵的变化,以及气象预测预报和公共气象服务系统对气象信息共享服务提出的更高的要求,其局限性和不足日益凸现:信息管理的能力与机制不足;信息共享服务能力不足;对信息的质量控制和加工处理支持能力不足;系统集约化程度不足。这种管理体系已成为提高气象业务和服务质量的瓶颈。
如何将大量观测资料和产品进行有效管理,并在此基础上提供高效的共享服务和应用,是气象信息系统建设和发展面临的重大课题。结合四川省气象业务和服务的实际应用需求,对省级气象信息管理和共享系统进行了比较深入的研究开发和应用实践,摸索出一套适应省级气象业务服务需求的典型系统,即建立集约化的气象数据库系统,通过中间件的支撑,提供开放式的气象信息共享与应用服务。
1 系统模型的建立省级气象信息管理和共享系统采用基于大型关系型数据库为气象信息管理和存储的核心,以消息传递中间件作为数据库的访问支持系统,建立开放、简捷、高效、灵活、稳定的气象信息共享系统。
1.1 存储模型气象信息主要来源于通信系统,种类繁多、收集渠道多样,且用户对信息的使用需求也复杂多样。因此,建立规范化的、适合省级气象业务需求、同时具有一定扩展性的气象信息存储模型是气象信息存储、管理、共享的核心和关键所在[6-9]。
目前,气象业务广泛使用的气象数据包括常规地面、高空、自动站、数值预报产品、卫星、雷达等。这些资料按照编码格式可分为两大类:以电码或要素排列存放的文件,如常规地面、高空、自动站资料;以二进制格式或GRIB等特殊编码存放的文件,如卫星、雷达、数值预报产品等资料。对资料的需求分析表明:不同种类的资料,其应用方式亦不相同,如对常规地面、高空、自动站资料,用户需要提供关于要素、时间、空间、值域等多项条件组合的检索,对这类资料用数据库二维表方式管理较为合适;而对卫星、雷达、数值预报产品等资料,用户一般是将文件下载到本地后,通过专用解码软件或专用处理软件生成可直接使用的产品,这类数据则不必进入数据库管理,采用文件方式管理即可,但采用文件方式管理的数据也必须有相应的索引机制才能方便用户查询,因此,文件管理的目录或有关数据信息需要纳入到数据库管理中。综合以上气象信息特点,同时结合后端用户应用需求,考虑将常规地面、高空、自动站等资料以数据库二维表方式存储, 将数值预报、雷达、卫星等资料以数据库索引表和文件相结合方式存储。
以二维表方式管理的资料其存储结构一般设计为由资料时间、空间属性字段以及温度、气压等要素字段组成。系统将首先按照编报规范对资料进行文件名检测、格式检测,然后进行要素译码或字段分解,同时做初步的质量控制,最后将解析得到的资料存入数据库中相应的表。表 1为自动站资料的数据结构设计。
![]() |
表 1 自动站观测资料表结构 Table 1 The structure of the AWS observation data table |
以索引表和文件相结合管理的资料其表结构一般设计为由资料时间、空间属性字段以及文件类型、文件名、文件存放目录等多个字段组成。文件存储的顶级目录一般设计为资料所属的类别,该类资料中的资料种类构成该类资料的第2级目录,第3级及以下各目录则根据资料的具体特点,由日期、时间或其他具有唯一性特征的内容确定。用户通过检索索引表中文件名和文件存放目录字段则可快速定位文件存放位置,从而实现快速下载。系统将首先按照编报规范对资料进行文件名检测、格式检测,然后对资料进行索引信息提取等处理,最后将索引信息写入索引表,同时将资料以文件方式按照设计的存储目录存储。图 1是雷达PUP产品的数据结构设计。
![]() |
|
图 1. 雷达PUP产品存储结构图 Fig 1. The storage structure of PUP products |
考虑到气象信息数据量大、保存时间较长等特点,为提高数据读写操作和查询速度,采用对表和索引进行分区的技术,即将数据量较大的表或索引按照某种策略 (如按照日或月) 划分成多个相对较小的、各自独立的存储空间,分别对其进行独立的管理和操作。数据库分区可提高数据检索速度、增强数据的可用性,同时在系统的安全性、灵活性以及维护方便性方面都较未分区有较大提高。
为提高数据库相关应用软件的灵活性及可维护性,在存储模型设计中,采用元数据技术。建立气象数据库相适应的元数据库,便于数据使用者了解数据的基本特征,使数据发现、检索、管理和访问变得容易。
据此,气象信息存储模型具备的功能应包括:规范化、集约化组织气象信息传输系统所收集的各类气象信息,具有收集、存储、管理和共享等功能;用户透过该模型不仅可以获得文件级的气象信息,还可以方便、及时、准确地从数据库中获得所需的要素级气象信息,为进一步质量控制、加工处理等工作提供有力支持,也为后续应用提供高效的数据支撑。
1.2 服务模型基于存储模型建立的气象资料存储管理系统可为用户提供程序调用、人机交互等多种方式的共享服务。其中,程序调用是气象上最常用的一种共享服务方式,即按照用户需求,开发相应的检索接口,用户通过调用接口函数,将检索的数据返回到调用程序的内存或用户本地的存储设备中。程序调用在各预报、预测业务系统被广泛使用,该方式满足了目前绝大多数自动化程度较高的气象预报、预测以及公共气象服务需求。
以数据库为核心的程序调用方式按照体系结构来看,分为两种:两层体系结构和三层体系结构。两层体系结构,即在用户端安装数据库管理系统的客户端软件,客户端需要数据时,加载驱动程序连接数据库,直接向数据库提交SQL语句检索数据。这种方式存在诸多隐患,若SQL语句中出现未使用索引字段作为检索条件、检索条件的数据类型与索引字段的数据类型不符等情况,都会导致数据库进行全表检索,从而为数据库带来巨大的系统开销,影响检索速度,甚至导致系统瘫痪或崩溃。三层体系结构是在客户端和数据库间,引入中间件服务系统,客户端的请求和数据库响应的结果都通过中间件服务器传递,通过中间件服务器,能将对数据库的操作全部规范起来,这种方式不仅增加了支持的平台,同时也增加了检索软件与用户业务的独立性 (如图 2所示)。就单一访问或小规模访问而言,三层结构在检索效率上可能会略有影响,但就大规模访问而言,三层结构的系统安全性和可用性得到加强,访问效率将会得到较好保障。
![]() |
|
图 2. 系统三层体系结构示意 Fig 2. The three-level structure of system |
1.3 中间件模型
数据库中间件介于数据库系统和应用系统之间,是为应用程序提供标准服务的独立功能软件。它根据应用领域被分为多种,如交易中间件、消息中间件等。
消息中间件是专门负责消息通信的软件[10-11]。它通常是一个独立运行的通信环境,有统一的编程调用接口,可以跨平台、跨协议。不同节点之间的软件可以通过配置相互连通,搭建统一的通信平台,从而产生更强大的功能[12-16]。气象信息共享系统是根据气象业务服务的各种需求,为众多用户提供气象数据服务,在此过程中,一般不允许共享应用程序对数据库中的气象数据进行修改,实际上是一个消息传递的过程。因此,消息中间件与气象信息服务的需求特点相适应,能够充分满足气象信息共享服务的需求[17-20]。
基于数据库和消息中间件的气象信息共享系统结构与工作原理如图 3所示。客户端应用程序将检索信息封装成为消息,并将其放入发送队列,发送至中间件服务器端的接收队列。中间件服务器端应用程序从接收队列中取出消息,根据消息中描述的信息和条件形成SQL语句,并向气象信息共享数据库提交以获得检索结果,然后将返回结果封装成为消息,放入发送队列,发送至客户端的接收队列,供客户端应用程序获取检索结果。消息传递中间件通过队列机制来完成消息排队和传递的工作,从而使应用程序之间实现松耦合的联系。
![]() |
|
图 3. 数据库访问中间件流程示意 Fig 3. The flow chart of access middleware |
采用中间件作为气象信息共享系统中访问气象数据库的唯一接口,有以下优势:① 具有跨平台、跨协议的数据通信能力。运行于不同操作系统的应用程序彼此之间可以方便地进行通信,而应用程序开发人员并不需要知道程序间通信的具体实现,从而可将主要精力用于开发应用程序。② 提供对数据库的统一访问能力。数据库访问中间件可以防止非法的、超越用户权限的数据库语句被提交 (如插入、删除或更新语句);可以通过元数据定义有选择地共享数据库中的表,而不是整个数据库中的数据都可被访问,从而规范了用户对数据库的操作,降低了数据库面临的风险。③ 对数据库提供保护功能。所有应用程序通过中间件提出气象信息检索请求,而不是直接连接到数据库进行查询。因此,可以通过连接池有效限制数据库连接数。所有向数据库提交的SQL语句统一由数据库访问中间件按规范生成。这样可以避免用户直接向数据库提交低效率的SQL语句,导致全表检索等问题的出现;从而保护了数据库的运行效率和工作性能。④ 提供多种编程语言的访问接口。不同编程语言开发的应用程序提出的气象信息检索请求都能够得到回应,获得所要检索的气象信息;拓展了数据库的应用范围。
采用中间件的三层体系结构方式,打破了传统的必须要有专业数据库研发能力才能进行应用开发的局面,易形成开放型、面向应用的格局,同时能对系统安全、可靠的运行提供较好的保障。
2 设计与实现按照上述模型,建立了省级气象信息管理共享系统。系统核心架构为采用Oracle 10g数据库建立集约化、综合性气象数据库系统,采用IBM MQ WebSphere消息中间件及其二次封装函数库作为开放的、面向多方面应用的数据库访问支持系统,对四川省各级各类用户提供气象信息共享服务,支持包括C/S和B/S系统结构在内的访问应用方式,同时研究开发一系列气象信息共享应用系统,直接为四川省用户提供主要气象信息服务。
该系统主要由资料收集传输子系统、以数据库为核心的气象信息存储管理子系统、以中间件为支撑的气象信息共享支持和应用子系统几部分构成,系统的前端是综合观测系统等数据源,后端则是气象预测、预报以及公共服务系统等气象信息共享服务的用户。
为方便用户使用,针对气象部门各用户所使用编程语言的不同和开发水平参差不齐的状况,消息传递过程被封装成为多个灵活的函数和Webservice访问接口,供使用Fortran,VC,VB,Delphi,Java等编程语言开发的应用程序调用。
客户端通过中间件检索气象信息流程:选定功能模块后,通过消息队列检索元数据,而后根据元数据设定需要检索的要素和条件,再次通过消息队列检索气象信息。服务器端响应客户端检索请求并返回气象信息流程:服务器端依次响应队列中的客户端检索请求,根据消息中的检索条件和要素名形成SQL语句,检索数据库后将结果封装成为消息,返回给客户端。
为保证共享系统更加稳定的投入大规模正式应用,对系统进行了压力测试。在客户端利用测试程序对服务器并行发起多种数据请求,并记录响应时间、处理时间、返回数据量等参数。测试结果表明:共享系统各组成部分在高负载情况下均可稳定工作,响应良好。
该共享系统现在已经管理和存储了四川省乃至西南区域气象业务所需要的几乎全部实时气象信息,主要包含有自动站、常规地面和高空、酸雨、农气等观测资料,新一代天气雷达基数据和PUP产品,以及ECWMF,T213,T639等数值模式产品、精细化城镇预报等预报产品。
该共享系统为用户应用程序提供多种编程语言的函数及Webservice接口,以实现气象信息共享服务。这种方式目前在诸多省级气象业务单位及部分市 (州) 局自主研发的应用系统中得到了广泛应用。其中,新一代天气雷达PUP产品共享应用系统、西南区域气象信息共享网站系统就是以该共享系统作为系统和数据支撑、面向四川省气象业务的典型应用系统,其界面如图 4所示。新一代天气雷达PUP产品共享应用系统是C/S系统结构的应用系统,凭借共享系统的访问接口和数据库作为后台支持,提供四川及周边省份多部新一代天气雷达的PUP产品的共享应用服务,于2009年汛期开始在四川省各级业务单位投入业务运行, 现已成为四川省各级业务单位对新一代天气雷达资料应用的最主要平台之一,在汛期气象业务服务工作中,特别是对于人影作业指挥等工作,起到了举足轻重的作用。西南区域气象信息共享网站系统是B/S系统结构的应用系统,依靠共享系统的支撑,以WebGIS填图、统计图表等方式提供地面观测资料、高空探测资料、降水量统计等气象信息的共享应用服务。其中各功能模块从2008年开始,陆续在四川省气象局投入业务运行,成为四川省各级业务单位气象服务的主要工作平台之一,在近几年的气象服务工作中,特别是重大气象服务,如“5.12”汶川特大地震抗震救灾、2010年舟曲特大山洪泥石流、2010年清平及映秀特大山洪泥石流应急气象服务过程中,发挥了重要作用。
![]() |
|
图 4. 共享应用实例 (a) 雷达PUP共享应用, (b) 自动气象站雨量填图应用 Fig 4. The examples of sharing applications (a) the radar PUP sharing application system, (b) the mapping application of the AWS precipitation |
该共享系统及其典型应用的广泛业务化应用,实效明显,是基于数据库和中间件技术的省级气象信息共享系统模型在实际业务环境中的成功尝试。
3 小结根据对省级气象信息管理和共享现状以及需求的充分调研与分析,按照三层体系结构设计,采用大型关系型数据库建立综合气象信息管理系统,引入消息型中间件提供多种语言访问接口,作为气象信息共享应用支持,由此构建气象信息管理与共享系统,实现综合气象信息的集约化管理和开放式共享服务。该系统具有以下优点:
1) 集约化地管理海量综合气象信息,能为用户提供完整、高效的气象信息共享服务。
2) 具有对数据库的保护功能,保证系统安全、高效地提供气象信息管理和共享服务。
3) 能够支持各种不同开发环境,包括不同平台和不同编程语言对数据库的访问,为不同层次的用户提供开放式的气象信息共享服务。
目前,这种系统设计已在四川省气象部门实际业务环境中实施,建成了一套完整的气象信息管理与共享系统,取得了广泛的业务应用。实践表明:该系统设计形成的一套气象信息管理与共享模型,提升了气象信息管理的内在质量,扩大了气象信息共享的深度与广度,通过不断完善和扩展,能够适应和满足省级气象业务和服务对气象信息管理与共享的需求,对省级气象信息管理与共享系统的建设具有一定的借鉴意义。
[1] | 宋连春, 李伟. 综合气象观测系统的发展. 气象, 2008, 34, (3): 3–9. DOI:10.7519/j.issn.1000-0526.2008.03.001 |
[2] | 王凌, 马渝勇, 杨东. 四川省气象信息共享系统建设初探. 四川气象, 2006, 26, (4): 43–46. |
[3] | 赵立成, 王素娟, 施进明. 国家卫星气象中心信息共享体制研究与技术实现. 应用气象学报, 2002, 13, (5): 627–632. |
[4] | 王宏记, 王海军, 曾又枝, 等. 省级气象信息综合数据库系统的设计与实现. 暴雨灾害, 2008, 27, (3): 283–286. |
[5] | 高梅, 仪清菊, 接连淑, 等. 气象信息共享研究. 资源科学, 2001, 23, (1): 80–84. |
[6] | 李集明, 沈文海, 王国复. 气象信息共享平台及其关键技术研究. 应用气象学报, 2006, 17, (5): 621–628. |
[7] | 邓莉, 王国复, 孙超, 等. 基本气象资料共享系统建设. 应用气象学报, 2005, 15, (增刊): 33–38. |
[8] | 沈文海, 赵芳, 高华云, 等. 国家级气象资料存储检索系统的建立. 应用气象学报, 2004, 15, (6): 727–736. |
[9] | 李集明, 熊安元. 气象科学数据共享系统研究综述. 应用气象学报, 2004, 15, (增刊): 1–9. |
[10] | ChrisBritton. IT体系结构与中间件. 北京: 人民邮电出版社, 2003: 261. |
[11] | 魏勇, 张权. 中间件技术研究. 电子技术应用, 2004, 30, (11): 1–4. DOI:10.3969/j.issn.0258-7998.2004.11.001 |
[12] | 冯中慧, 张红梅, 齐勇, 等. 基于中间件技术的分布式应用系统中访问控制的研究. 微电子学与计算机, 2005, 22, (9): 162–165. |
[13] | 张海梁, 袁荣湘, 孙婉胜. 数据库访问中间件技术在SCADA数据库系统中的应用. 电网技术, 2005, 29, (17): 58–62. DOI:10.3321/j.issn:1000-3673.2005.17.013 |
[14] | 乌云高娃. 一种数据库中间件的设计与实现. 计算机应用与软件, 2004, 21, (4): 27–28, 119. |
[15] | 陈文宇. 基于通用数据库的中间件软件的设计与应用. 计算机应用, 2000, 20, (3): 44–46. |
[16] | 张雪芹, 余雪丽, 孟昭光. 多层应用软件体系结构中数据库中间件原型的构造. 太原理工大学学报, 2000, 31, (6): 616–619. |
[17] | 李辉, 李绪志. 基于消息分类的复合模式消息中间件研究. 微计算机信息, 2007, 23, (36): 195–196;141. DOI:10.3969/j.issn.1008-0570.2007.36.076 |
[18] | 隋杨, 吴泉源. 消息中间件JMS接口的设计与实现. 微计算机信息, 2006, 22, (30): 210–212. DOI:10.3969/j.issn.1008-0570.2006.30.069 |
[19] | 陈明, 潘家铭, 阎保平. 消息中间件的设计与实现. 微电子学与计算机, 2005, 22, (4): 4–7. |
[20] | 陈学业, 杨盈. 基于消息中间件和元数据的空间数据交换模型. 测绘通报, 2002, (7): 20–22. |