李博,王斌,叶颖,王鹏,孙成龙,闫秦
(国家海洋技术中心 天津 300112)
海洋环境预报事业是一项社会公益性事业,对促进海洋经济发展、保障沿海地区人民群众的生命财产安全具有重要的意义。海洋环境预报离不开观测数据的支持,海洋观测数据具有实时性和连续性要求高,需要长期观测等特点[1]。因此,快速、有效、准确地对观测到的海洋水文、气象数据进行存储、处理就尤为重要。目前,我国海洋水文气象观测数据在管理和使用上存在数据共享机制不健全、没有统一的数据结构以及数据管理方式不合理等问题[2]。这些问题严重地影响了观测数据的质量,并影响到海洋灾害预报的准确性。
为此,本研究提出了基于SQL Server的数据库设计方案,通过对数据库的级联更新等实现了数据分级存储,提高了数据管理效率。同时,利用UML建立系统模型,将数据管理模块设计为一个独立的模块,提高数据管理的独立性。
根据《GBT 14914-2006 海滨观测规范》,气象观测要素主要有:风速、风向、相对湿度、气温、气压、降雨量和能见度等。水文观测要素主要有:表层海水温度、表层海水盐度和潮汐等。其中,水文要素、气象要素分别以北京时间24 时(不含24时)和20时(不含20时)为日界。
因此,海洋站水文气象自动观测系统主要完成对多种来源、多种时相、多种精确度的海洋水文气象基础数据进行有效存储与管理,构建包含实时数据、历史数据、整点数据的综合性数据存储系统[3]。通过该数据管理系统既可实现将观测数据上传至各级海洋环境预报部门,又可满足海洋台站本地使用。考虑到系统的模块化设计,还要为数据管理系统留有对外可进行二次编程的接口(图1)。
图1 海洋水文气象数据管理系统用例分析
数据多重存储体现在同一数据既要存储到本地数据库中又要存储到相应的文件中。存储在本地数据库中的数据即可用于本地管理与存储,也可用于数据的查找和对外提供二次开发接口。存储在文件中的数据以文本文件的格式被传输至海洋环境预报单位[4]。
数据分级管理主要体现在数据库结构设计上。将水文、气象观测数据进行分级存储,分为临时数据存储表和最终数据存储表。临时存储表中存储当前小时进入数据管理系统的数据,并在后续小时数据进入系统后将临时数据表中数据打包插入最终数据表中。临时数据表限定数据量阈值,超过设定阈值后临时数据表数据将被自动删除。最终数据表每个观测要素一个表,记录该数据当天数据,包括该要素当天各整点数据值、数据极值和当天每分钟的数据值。
根据观测数据使用对象的不同[5],将系统进行模块化设计为:数据上传模块和本地数据管理模块。数据上传模块将实时观测数据上传至海洋环境预报单位;本地数据管理模块用于海洋观测站本地数据管理与存储,并对外提供二次开发接口。此外,该模块可根据业务需求生成数据上传模块所用的数据文件。系统结构类见图2。
图2 海洋水文气象数据管理系统结构类图
针对上述业务需求,采用了Visual Studio C#2010 作为软件开发平台,数据库系统采用SQL Server 2005。其中,Visual Studio C#2010是一种现代的完全面向对象的程序开发语言,它使得程序员能够在新的微软.NET 平台上快速开发种类丰富的应用程序。.NET 平台提供了大量的工具和服务,能够最大限度地发掘和使用计算及通信能力[6]。
SQL Server 2005 能提供大型系统所需的数据库服务,可实现成千上万的用户同时连接。SQL Server 2005 为这样的环境提供了全面的保护,具有防止问题发生的安全措施,可在多个用户之间有效地分配可用资源。此外,还可以在一台计算机上运行多个SQL Server 2005 实例[7]。
海洋站水文气象观测数据要在海洋观测站、海洋中心站、海区预报中心及国家预报中心等各单位使用,其中:海洋观测站端仅使用本站数据;海洋中心站使用本中心站下属各海洋站数据;海区预报中心使用本海区下属各海洋站数据;国家预报中心使用所有海洋站的数据。这些数据是连续不间断产生和使用的。因此,在建立海洋站水文气象数据库时,必须考虑大规模数据的存储问题。在建立数据库的同时,构建出符合海洋观测预报业务的数据模型,设计了水文要素临时数据表(tempdata_sw 表)、气象要素临时数据表(tempdata_qx 表)和风要素临时存储表(tempdata_wi表)、风要素数据存储表(WI表)、相对湿度数据存储表(HU 表)、气温数据存储表(AT表)、气压数据存储表(BP 表)、降雨量数据存储表(RN 表)、能见度数据存储表(VB 表)、海水温度数据存储表(WT 表)、海水盐度数据存储表(SL表)、潮位数据存储表(WL 表)等多个表格。其中,临时表每个要素每小时1 行数据,用于存放近3d每分钟生成的实时数据。数据存储表每个要素每天1 行数据,用于存放整点值数据、极值数据以及该天每分钟数据(表1至表5)。
表1 tempdata_sw表
续表
表2 tempdata_qx表
表3 tempdata_wi表
表4 气温数据存储表(AT表)
表5 海水温度数据存储表(WT 表)
以上5个表为数据库逻辑结构设计所需的表,其中表1至表3为临时数据存储表,表4为气象要素数据表、表5 为水文要素数据表,其余水文气象要素数据正式表的表结构与表4和表5结构一致。此外,风要素表结构中DataXX 为风向值与风速值的组合,即“风向值 风速值”。
3.2.1 数据库触发器设计
结构化查询语言Structure Query Language(SQL)是专门为数据库建立的操作命令集,是一种功能齐全的数据库语言。SQL 主要由两部分组成:DDL(Data Definition Language)和DML(Data Manipulation Language)。其中,DDL 是建立数据库表及列的指令群,DML 是操作数据库记录的指令群。以下SQL 语句实现了海洋水文气象数据库触发器的设计。
create trigger tri_sw//更改水文各要素整点值,以潮位要素为例。
on tempdata_sw
for update
if update(m00)
begin
update WL set wdXX=i.m00where zh=i.zh and type=’WL’and date=i.sdate+’XX’
end
上述程序以潮位(WL)数据为例,实现了水文要素的数据临时表向正式表的级联更新。其中,水文要素数据更新为本时刻00 分数据到正式表本小时的更新。
3.2.2 程序设计及运行结果
根据上述业务需求,对数据管理模块(表6)进行了程序开发,设计实现了以下几个程序对外调用的接口。
表6 水文气象数据管理模块情况
利用以上函数接口,实现了水文气象数据管理,并被海洋站上位机软件调用,完成了海洋站水文气象数据的管理。
系统利用数据库技术和面向对象技术,整合现有观测设备的数据类型,实现了海洋观测数据的自动化管理,有效降低了海洋观测系统的管理成本,同时系统为海洋观测数据的模块化管理和使用提供了对外接口。实现了海洋水文气象观测数据的模块化和业务化应用,为进一步提高海洋观测预报的精细化水平,更好服务于海洋经济发展管理的支持能力奠定了基础。
[1]秦明慧,李平,戴永寿,等.海洋台站数据管理及动态发布系统的设计[J].海洋预报,2010,27(3):66-71.
[2]吴向荣,陈宇东,李郅明,等.海洋台站观测数据生成环节及质控分析[J].海洋开发与管理,2014,31(4):34-37.
[3]中国国家标准化委员会.GB/T14914—2006海滨观测规范[S].2006.
[4]林春梅,余麒祥,曹宇峰,等.浅谈海洋台站工作的管理[J].海洋开发与管理,2013,30(4):44-47.
[5]俞永庆.自动海洋气象监测数据库及其Web开发应用[J].海洋预报,2006,23(1):81-84.
[6]刘维学.SQL Server查询优化器原理与优化实力分析[J].计算机技术与发展,2013,23(11):108-111.
[7]刘维学,乔丽平.SQL Server数据库DML触发器的研究与应用[J].计算机技术与发展,2013,23(11):66-69.