1数据多重存储和分级管理
数据多重存储体现在同一数据既要存储到本地数据库中又要存储到相应的文件中。存储在本地数据库中的数据即可用于本地管理与存储,也可用于数据的查找和对外提供二次开发接口。存储在文件中的数据以文本文件的格式被传输至海洋环境预报单位[4]。数据分级管理主要体现在数据库结构设计上。将水文、气象观测数据进行分级存储,分为临时数据存储表和最终数据存储表。临时存储表中存储当前小时进入数据管理系统的数据,并在后续小时数据进入系统后将临时数据表中数据打包插入最终数据表中。临时数据表限定数据量阈值,超过设定阈值后临时数据表数据将被自动删除。最终数据表每个观测要素一个表,记录该数据当天数据,包括该要素当天各整点数据值、数据极值和当天每分钟的数据值。
2系统功能模块设计
根据观测数据使用对象的不同[5],将系统进行模块化设计为:数据上传模块和本地数据管理模块。数据上传模块将实时观测数据上传至海洋环境预报单位;本地数据管理模块用于海洋观测站本地数据管理与存储,并对外提供二次开发接口。此外,该模块可根据业务需求生成数据上传模块所用的数据文件。系统结构类见图2。软件开发环境针对上述业务需求,采用了VisualStudioC#2010作为软件开发平台,数据库系统采用SQLServer2005。其中,VisualStudioC#2010是一种现代的完全面向对象的程序开发语言,它使得程序员能够在新的微软.NET平台上快速开发种类丰富的应用程序。.NET平台提供了大量的工具和服务,能够最大限度地发掘和使用计算及通信能力[6]。SQLServer2005能提供大型系统所需的数据库服务,可实现成千上万的用户同时连接。SQLServer2005为这样的环境提供了全面的保护,具有防止问题发生的安全措施,可在多个用户之间有效地分配可用资源。此外,还可以在一台计算机上运行多个SQLServer2005实例[7]。
3系统实现
3.1数据库逻辑结构设计
海洋站水文气象观测数据要在海洋观测站、海洋中心站、海区预报中心及国家预报中心等各单位使用,其中:海洋观测站端仅使用本站数据;海洋中心站使用本中心站下属各海洋站数据;海区预报中心使用本海区下属各海洋站数据;国家预报中心使用所有海洋站的数据。这些数据是连续不间断产生和使用的。因此,在建立海洋站水文气象数据库时,必须考虑大规模数据的存储问题。在建立数据库的同时,构建出符合海洋观测预报业务的数据模型,设计了水文要素临时数据表(tempdata_sw表)、气象要素临时数据表(tempdata_qx表)和风要素临时存储表(tempdata_wi表)、风要素数据存储表(WI表)、相对湿度数据存储表(HU表)、气温数据存储表(AT表)、气压数据存储表(BP表)、降雨量数据存储表(RN表)、能见度数据存储表(VB表)、海水温度数据存储表(WT表)、海水盐度数据存储表(SL表)、潮位数据存储表(WL表)等多个表格。其中,临时表每个要素每小时1行数据,用于存放近3d每分钟生成的实时数据。数据存储表每个要素每天1行数据,用于存放整点值数据、极值数据以及该天每分钟数据(表1至表5)。以上5个表为数据库逻辑结构设计所需的表,其中表1至表3为临时数据存储表,表4为气象要素数据表、表5为水文要素数据表,其余水文气象要素数据正式表的表结构与表4和表5结构一致。此外,风要素表结构中DataXX为风向值与风速值的组合,即“风向值风速值”。
3.2系统程序实现与运行结果
3.2.1数据库触发器设计结构化查询语言StructureQueryLanguage(SQL)是专门为数据库建立的操作命令集,是一种功能齐全的数据库语言。SQL主要由两部分组成:DDL(DataDefinitionLanguage)和DML(DataManipulationLanguage)。其中,DDL是建立数据库表及列的指令群,DML是操作数据库记录的指令群。以下SQL语句实现了海洋水文气象数据库触发器的设计。上述程序以潮位(WL)数据为例,实现了水文要素的数据临时表向正式表的级联更新。其中,水文要素数据更新为本时刻00分数据到正式表本小时的更新。利用以上函数接口,实现了水文气象数据管理,并被海洋站上位机软件调用,完成了海洋站水文气象数据的管理。
4结束语
系统利用数据库技术和面向对象技术,整合现有观测设备的数据类型,实现了海洋观测数据的自动化管理,有效降低了海洋观测系统的管理成本,同时系统为海洋观测数据的模块化管理和使用提供了对外接口。实现了海洋水文气象观测数据的模块化和业务化应用,为进一步提高海洋观测预报的精细化水平,更好服务于海洋经济发展管理的支持能力奠定了基础。
作者:李博 王斌 叶颖 王鹏 孙成龙 闫秦 单位:国家海洋技术中心