气象资料数据库系统建设是一项大的基础性项目, 其建设周期长、投入大, 一旦建成后其结构和内容就很难更改, 各级气象部门都非常重视。如何针对气象数据信息实际特点, 结合当前成熟的计算机网络技术、数据库技术、数据存储技术及软件开发技术, 设计出可靠、安全、灵活、便于扩展升级的气象数据库系统是一项非常复杂而重要的工作。本文结合本单位气象资料数据库系统建设及实施的实际情况, 详细论述一种基于宽带局域网络和大容量磁盘阵列的分布式气象资料数据库系统的设计方法。
1 数据库物理设计和数据处理流程本单位气象系统主要由中心气象室、气象台、两个气象站组成。数据库物理设计和数据处理流程分别如图 1和图 2所示。
![]() |
|
图 1. 气象资料数据库系统物理结构 |
![]() |
|
图 2. 气象资料数据库系统数据处理流程 |
由图 1和图 2可知, 数据库系统采用了分布式数据库设计技术, 在机场气象台、团站气象站分别建立实时数据库子系统, 由单独的数据库服务器进行管理; 在中心气象室建立历史数据库, 由两台数据库服务器和大容量磁盘阵列进行存储和管理。各种气象资料数据, 经过数据库管理维护软件进行整理、订正、分类转换后写入实时数据库子系统中。实时数据库子系统中的数据通过分布式数据库复制技术实时写入到大容量的历史数据库中, 保证数据库之间的数据同步。
2 数据库可靠性设计中心气象室历史数据库作为单位气象系统的全部气象数据存储系统, 要求具有极高的可靠性、可用性和容错性。其可靠性设计采用了服务器群集和磁盘冗余阵列 (RAID) 技术, 分别从数据库服务器、数据库存储介质两个不同层面上实现了系统的容错性, 提高了历史气象数据库系统容错和故障转移能力, 保证了系统的高可用性。其中, 历史数据库群集采用了双节点服务器群集, 其物理组成如图 3所示; 磁盘阵列冗余设计采用了RAID5进行设计和部署。
![]() |
|
图 3. 双节点服务器群集结构 |
3 数据库安全设计
数据库系统安全性设计[1]采用了如下3种方法, 分别在数据库层、网络协议底层及应用层上对数据库访问进行了安全访问限制, 较好地解决了数据库系统存在的安全问题。
3.1 数据库用户角色数据库用户分为普通用户、高级用户和特权用户, 其中普通用户只能浏览查询数据库数据, 不能进行数据库数据的删除和备份等重要操作; 中心气象室、机场气象台和团站气象站三地数据库管理员为高级别用户, 可以给予最大的本地实时气象数据库操作权限, 但这种权限只能针对三地实时气象数据库, 不能访问中心气象室历史气象数据库; 特权用户为系统管理员, 它是整个气象资料数据库硬软件的管理者和设计者, 其帐号唯一, 负责管理维护整个数据库系统所有资源和用户帐号, 包括实时数据库和历史数据库。
3.2 安全组件法目前, 气象资料数据库系统大都已基于宽带局域网络或Internet互联网开放环境中, 共享物理通信链路、802.3以太网协议以及SQL Server 2000默认的数据库用户身份认证机制, 都会造成比较严重的数据库安全隐患, 为了保证气象资料数据库的高度安全性, 在数据库系统具体实现中, 提出了安全组件概念及模型, 并通过与其他单位合作, 开发了一个基于Windows 2000 Server的MTS (Microsoft Transaction Server) 之上的一个具体的安全访问组件, 较好地解决了子网内部存在的安全隐患。此安全组件采用组件对象模型[2] (COM) 进行开发, 服务于数据库管理维护软件, 而以服务程序形式常驻Windows 2000 Server系统内。其主要功能是为中心气象室、机场气象台、团站气象站等实时气象资料数据库用户提供身份验证接口, 连接三地数据源。
安全组件实现原理为:传统C/S模型下客户机访问数据库服务器大都是通过ODBC数据库源名或数据库服务器名来进行访问, 数据库源名及数据库用户信息都要先通过客户机进行传输。客户机首先将包含数据库源名和数据库用户信息的IP数据包发往数据库服务器, 数据库服务器验证后客户机方能与之会话, 数据库用户信息在网络链路上进行传输, 存在较大的安全隐患。采用安全组件后, 客户机不能直接与数据库服务器进行连接, 而是通过安全组件与数据库服务器进行连接, 数据库真实数据源名及数据库用户信息在安全组件内部与数据库服务器之间进行验证, 而客户机与安全组件之间数据源及数据库用户信息采用虚假别名。安全组件与数据库服务器位于同一台服务器上, 这样就避免了真实数据源名及用户帐号信息在客户机与服务器之间的网络链路上传播, 较好地解决了数据库关键信息在子网内传播存在的安全隐患问题。安全组件模型如图 4所示。
![]() |
|
图 4. 安全组件数据访问模型图 |
在程序实现上, 安全组件采用了COM组件包容技术来实现。其中内部被包容的组件为Microsoft Data Acess Components (MDAC) 组件包提供的ActiveX Data Object (ADO) 组件, 外部组件为安全组件。安全组件在接口层对ADO组件进行包容, 对其部分接口进行改造升级, 并在其对外暴露接口IConnection中加入了数据源、用户帐号等信息的加密、解密、身份验证等。通过这种改造, 可以解决数据库系统底层访问协议及部分数据访问引擎存在的一些不足, 提高和增强数据库访问的安全性。安全组件内部实现结构如图 5所示。
![]() |
|
图 5. 安全组件内部实现结构 |
3.3 防火墙过滤法
目前, 在子网边界防止外部用户非法访问的主要手段是配置硬件防火墙或软件防火墙。由于软件防火墙技术及产品已经相当成熟、应用非常广泛、价格低廉, 因此可以在中心气象室气象子网边界配置软件防火墙。防火墙的安全策略是采用IP包过滤和端口限制相结合的方法, 具体为, 对于Web访问用户, 防火墙只开放80端口, 同时关闭TCP/IP协议上的NetBEUI协议, 防止非法用户使用137, 139等默认端口进行共享连接[3]; 对于子网内权限较高的用户, 可以在防火墙上采用IP包过滤限制非法访问。防火墙软件使用过程中必须仔细配置防火墙规则, 严格审查日志记录, 密切跟踪并杜绝非法用户的访问。
4 应用软件体系结构设计气象资料数据库应用软件系统采用了Browser/Server (B/S) 结构和多层Client/Server (C/S) 体系结构进行开发。其中在三地实时数据库管理维护软件中采用3层C/S (增加了安全组件中间层) 结构, 在气象Web应用程序中采用B/S 3层结构[4]。整个系统软件模型框架如图 6所示。
![]() |
|
图 6. 数据库应用软件体系结构模型 |
上述模型可以分解为:界面层、中间层和数据层。3层具体功能如下:
界面层:界面层属于C/S或B/S模型的应用层上, 是客户机应用程序的主体界面, 此层为数据库用户登入、数据输入、输出和Web查询等操作提供一个接口, 是中心气象室、机场气象台、团站气象站三地实时数据库管理维护软件及气象Web应用程序客户端开发的基础。
中间层:具体设计为, 三地实时数据库管理维护软件中采用自己开发的安全组件充当中间层; 气象Web应用程序采用IIS (Internet Information Server) 服务器的内置组件充当中间层, 进行数据库连接和操作。
数据层:是数据库服务层, 它响应经中间层身份验证后的界面层用户请求, 访问数据库中各种数据, 这一层通常由大型的数据库服务器实现, 本系统中采用SQL Server 2000数据库服务器充当数据层。
上述模型中, 在传统的C/S结构上增加一个中间层, 在数据库用户和数据库服务器之间建立起一道安全屏障, 有效防止非法用户进入数据库, 保证了数据库安全。同时在3层B/S结构中, 由于大量数据库的操作计算只在数据库服务器上进行, 不需要瘦客户机共同参与, 使得在网络中传输的中间数据量大大减少, 提高了速度, 节省了网络带宽。
5 应用实例 5.1 数据库管理维护模块系统主要包括4个数据库管理维护模块, 完成对各种分散气象数据的管理和维护。中心气象室数据库管理维护模块是系统管理的核心, 具有最高的数据访问权限, 除了对本地数据进行管理外, 还对另外3个气象站点数据进行实时访问和维护。该模块主要包括用户管理、本地数据管理、外场数据管理、实况数据查询、历史数据查询、预报制作发布及数据库备份等模块。其中, 用户管理对整个数据库系统的各级用户进行管理、跟踪和维护; 本地数据管理完成中心气象室所有采集数据的入库管理、接收状况监控管理等; 外场数据管理完成对另外3个台站数据的入库及接收状态管理; 实况、历史数据查询完成关系型数据的查询统计; 预报制作发布实现对各种预报文档的数据库管理, 包括自动建立预报日志, Web上动态实时发布预报结果等。图 7为“本地数据管理”模块下对“QXCCTV (军队卫星气象数据广播接收系统) 接收数据”进行管理的一个界面, 该界面可以对入库数据种类、入库方式、监控时间间隔、是否运行日志记录进行灵活设置和定制。
![]() |
|
图 7. 中心气象室数据管理维护程序模块 |
5.2 气象数据图形查询显示系统
非关系型数据的查询显示是整个数据库系统的核心模块, 是天气预报、历史天气过程诊断分析、课题研究的主要工作平台。图 8为非关系型数据查询显示程序模块, 该模块能够对数据库系统中存放的各种格式的天气图、格点报、云图、传真图、TLnP数据等进行实况和历史查询显示, 并具有图形叠加、打印、缩放和保存等功能, 在业务值班中发挥了较大作用。图 8中显示的是2005年4月17日20:00 (北京时, 下同) 500 hPa欧洲格点报48h预报显示效果图 (图中为高度场和温度场叠加图)。
![]() |
|
图 8. 天气预报数据分析处理系统效果图 |
5.3 气象Web应用程序
气象Web应用程序[5]模块功能主要是实现各种气象数据在Web上的动态查询和显示, 解决远程分布式用户通过拨号网络或Internet网络对气象数据访问需求。该软件模块采用了COM服务器端组件技术和B/S三层结构进行开发, 针对不同数据类型需要自行开发的服务器端COM组件如表 1所示。这些COM组件在服务器后台对数据进行计算和图形处理, 在IE浏览器前端生成并显示气象图形。
![]() |
表 1 气象Web应用程序需要开发的服务器端COM组件 |
图 9是采用了TLnPDisplayCom (温度对数压力图显示组件) 组件在IE中动态查询7月17日08:00郑州站的温度对数压力图曲线。该COM组件对外提供TLnpShow接口和TLnpFilePath (数据库提供的TLnp文件路径), VirtualFilePath (Web虚拟路径), bGrid (是否生成细网格), bEnergy (是否绘制能量区), b100 hPa (是绘制100 hPa还是200 hPa), SiteName (显示站点名称) 等几个属性和ExportJpeg (生成Jpeg图像) 的方法。通过这些属性和方法用户就可以在Web上动态生成各式多样的TLnp图, 满足不同用户的需求。图 9是一个绘制了能量区、细网格和纵坐标为100 hPa范围的TLnp图效果图。
![]() |
|
图 9. 气象数据Web综合查询系统主页 |
6 结语
该气象资料数据库系统建成并投入使用以来, 运行稳定可靠, 数据存取速度快, 群集服务器和磁盘阵列有效保证了为网络用户提供连续、可靠、不间断气象数据查询和各种Web数据查询服务。安全组件模型、服务器端COM组件、B/S结构等技术在数据库应用软件开发中得到了较好应用, 并被证明是一种解决网络及数据库协议底层安全隐患、提高数据库分布式应用的一种行之有效方法。
[1] | 邓莉, 王国复, 孙超, 等. 基本气象资料共享系统建设. 应用气象学报, 2004, 15, (增刊): 34–35. |
[2] | Dale Rogerson. COM技术内幕∥杨秀章, 江英译. 北京: 清华大学出版社, 1999: 129-170. |
[3] | Joel Scambray. Windows 2000黑客大曝光∥杨洪涛译. 北京: 清华大学出版社, 2002: 95-129. |
[4] | 张顺谦, 熊志强. 三层体系结构方法及其在气象信息处理系统中的应用. 应用气象学报, 2003, 14, (1): 109–112. |
[5] | 赵伟, 李五生, 杨银娟. 基于Browser/Server结构的气象Web应用程序设计. 军事气象, 2004, (4): 46–48. |