时间:2024-09-03
王国君,蔡 英
(宝鸡市气象局,陕西宝鸡 721006)
观测数据整合与共享的实现
王国君,蔡 英
(宝鸡市气象局,陕西宝鸡 721006)
为了有效解决不同厂家区域站数据存储结构不统一的问题,实现各类自动气象站观测数据的集约化使用,以整合区域站、自动站数据建立统一的应用数据源,建立标准的访问接口和数据共享系统为目标,设计了观测数据整合与共享系统,使用数据库触发器、存储过程以及.net平台编程技术实现。
区域站;数据库;触发器;存储过程;整合
2012年以后,宝鸡市气象局逐步使用华云、无锡设备新建或替换原有华创区域自动气象站,因此在全市形成三个区域站中心站系统,且各厂家所使用的数据库结构不一致,数据存储字段、类型也存在差异,增加了数据使用的难度,降低了使用效率。自动站与区域站数据融合使用也存上述问题,需要对全市观测数据进行整合,建立统一的应用数据源,数据访问接口和数据共享系统。
1.1 观测数据整合与共享系统功能设计
观测数据整合与共享主要是实现区域站、自动站数据集约化数据存储,建立统一的观测数据应用源,建立标准的数据应用访问接口。如图1所示,原有的CAWS600B(华创)、CAWSDB (华云)、AWS(无锡)三个区域站数据库部署在业务数据库服务器上,与各自的中心站软件关联。新建AWSData库用于存储区域站及自动站数据,该库部署在应用数据库服务器上,业务和应用分离,避免数据应用访问量异常增加影响区域站业务质量。通过使用数据库触发器机制实现三个厂家区域站数据主动推送到AWSData库,完成数据整合。自动站数据使用辅助程序收集报文,解析存入AWSData库。基于AWSData库整合和收集的观测数据进行实时分析和处理,将大风、强降水等数据存入Alarm库,作为灾害性天气实时提示报警信息在共享系统上显示。数据共享是基于WCF服务技术为应用库设计标准的访问接口,通过访问接口的标准化实现应用数据的开放,以WebApp站点实现数据展示、查询统计等。
图1 观测数据整合与共享系统结构图
1.2 数据库结构设计
数据库设计遵循关系型数据库设计原则[1], AWSData库用于存储区域站、自动站的观测数据,并作为统一开放数据源。分析区域站、自动站数据特点发现,自动站观测要素多,区域站观测要素少,区域站观测项目为自动站观测项目的子集。为提高数据存储空间利用效率,将两类数据分开存储,使用时合并。分别设计区域站和自动站数据表,相同属性采用相同字段名和存储类型,设置站号和时间为主键。
2.1 数据推送机制
区域站数据主动推送是由数据库引擎完成。区域站中心站软件将数据入库后,数据库引擎触发和响应Insert事件,执行AFTERINSERT触发器 (触发器是一种响应特定事件的特殊类型的存储过程。AFTERINSERT触发器,只要向表中插入新行,就会执行触发器的代码,对于每一个插入的行,SQLServer会将行的内容存储到一个特殊的表中,表名称为INSERTED,在触发器的代码内可以访问该表。)代码。该触发器调用执行预先编写的数据推送存储过程,将区域站数据写入到AWSData库中,区域站数据第一时间被从源表推送到目标表。同理,使用CLR存储过程 (为提高数据分析和筛选的效率)分析处理被写入AwsData库的数据,并筛选出强降水、大风等报警信息,将其推送至Alarm库。
图2 区域站数据推送序列图
2.2 数据推送存储过程的实现细节
2.2.1 使用链接服务器实现跨服务器数据推送分别为三个数据库创建相应的数据推送存储过程来实现数据推送存储功能,在存储过程中使用SQL语句从源表中检索出数据,再将数据写入AWSData库中的区域站数据表。由于AWSData库与源库不在同一数据库服务器上,引用AWSData库中的区域站数据表时须以 “链接服务器名.库名.表名”的方式使用,实现数据跨越服务器推送。
2.2.2 解决数据存储类型和内容格式不一致的问题 三个厂家数据库中关于 “最大风速出现时间”,“最高温度出现时间”等字段分别采用不同的数据类型,华创库中采用char(10)、华云库中采用char(5)、无锡库中采用char(4)。AWSData库中区域站数据表中采用char(4)类型存储,该类数据需要在数据推送存储过程中进预处理[3],统一数据格式。如表示“12:03”,无锡库存为“1203”,华创、华云两库存入格式为“12:03”,由于华创库该字段采用char (10),存入时数据库会自动在其后补五个空字符。因此需要使用字符串函数去掉其中的 “:”或多余的空字符,使数据格式一致。
2.2.3 使用动态SQL语句解决表名与站号相关的问题 由于华云库的设计没有遵循关系型数据库设计原则,以站号信息作为表名。例如整点和分钟加密数据分别存储于 HXXXXX, MXXXXX两个表中,造成对华云库的数据检索比较困难,推送存储过程里不能直接执行 “INSERTINTOSELECT”这样的SQL语句实现数据推送,必须通过字符串运算,根据站号动态拟合出相应的SQL语句字符串,使用Sp_Executesql方法执行动态SQL语句[2]。
2.3 历史数据与数据完整性说明
数据的推送是充分利用SQLServer数据库的事件机制实现的。实际使用中,区域站中心站软件向数据库成功写入数据,数据库引擎就会启动和确保数据推送存储过程得到有效执行。实践证明该方式是可以保证区域站数据完整推送到应用库中,不会出现遗漏。历史数据的导入需要手动完成,在数据推送功能的代码基础上稍做修改即可实现,手动执行一次可一次性完成历史数据的导入和整合。
观测数据整合和共享系统实现了区域站、自动站数据标准化存储,建立了统一观测数据应用源,面向服务架构开发了数据访问接口,并实现观测数据共享,为气象服务工作提供数据支持,提高了数据提取和使用效率。该系统主要涉及了一些数据共享和应用功能,相对于业务服务工作的需求,还需要后续不断开发更多的数据展示和应用功能。
[1] 萨师煊.数据库系统概论[M].3版.北京:高等教育出版社,2002:173-175.
[2] 邹建.深入浅出SQLServer2005开发、管理与应用实例[M].北京:人民邮电出版社,2008:108-112.
[3] 何林,范涛,曹波.区域自动气象站数据库整合设计与实现[J].陕西气象,2014(4):44-46.
P409
B
王国君,蔡英.观测数据整合与共享的实现[J].陕西气象,2015(2):38-40.
1006-4354(2015)02-0038-03
2014-08-25
王国君(1981—),男,汉族,陕西蓝田人,工程师,从事气象信息技术保障工作。
我们致力于保护作者版权,注重分享,被刊用文章因无法核实真实出处,未能及时与作者取得联系,或有版权异议的,请联系管理员,我们会立即处理! 部分文章是来自各大过期杂志,内容仅供学习参考,不准确地方联系删除处理!