system: [SYSTEM]

user: 2. 气象及大气污染数据仓库系统体系结构 2.1. 系统整体体系结构 图1显示了系统的4层架构。数据层包括数据库系统和文件系统，是整个系统的最底层。应用服务器层也称之为中间层，它是数据库系统与应用系统之间的中间件，提供访问数据库的接口，负责转发用 户请求、中间信息传输管理之类的所有应用程序操作。业务逻辑层采用的是B/S架构中的MVC模式，它将不同的应用模块分开，实现应用之间解耦合。用户层通常也称之为表达层，通过浏览器为前端用户呈现出一个丰富的可交互性界面，在WebGIS地图上动态展示用户需要的信息，同时还提供地图交互、地理分析等交互功能 [ 4 ] 。 对于业务逻辑层，本系统采用的是B/S架构中的MVC模式。MVC是Model-View-Control的简称，即模型–视图–控制器。它是一个存在于服务器表达层的模型，它将应用分开，改变应用之间的高度耦合。MVC是在20世纪80年代发明的一种软件设计模式，至今已被广泛使用，最近几年被推荐为Sun公司J2EE平台的设计模式(见图2)。 模型由Hibernate框架负责，完成数据持久化工作；视图由Struts2框架负责，实现逻辑应用层和用户层的分离；而控制器由Spring框架负责，负责整合管理Hibernate和Struts2框架，并对业务逻辑进行管理。框架的信息都写在配置文件中，由Java语言读取配置文件，将三大框架完全整合在一起，是的系 图1. 气象及大气污染数据仓库体系结构图 图2. MVC模式示意图 统层次清晰，扩展性良好，容易移植并且平台独立性比较强。 最后一层为客户层，实现方式为Ajax、Java applet、OpenLayer等，客户端浏览器通过POST/GET方式请求服务器端，然后实现页面展示。 2.2. 数据存储设计 所有ORACLE数据库都被设计成OLAP型数据库，实时性、事务性要求不高，但是侧重对决策人员的决策支持。同时为了应对根据分析人员快速的大数据量的复杂查询处理，一系列空气污染数据表和气象数据表均采用分区表策略，Oracle的表分区通过改善可管理性、性能和可用性，为各式应用程序带来了极大的好处。通常，分区可以使某些查询以及维护操作的性能大大提高。此外，分区还可以极大简化常见的管理任务，分区是构建千兆字节数据系统或超高可用性系统的关键工具。 综合考虑数据结构、数据存储、文件管理系统和商用RDBMS数据库的优势和劣势，本系统的存储设计为文件系统和RDBMS数据库结合的方式。具体设计方式为： 1) 元数据统一采用RDBMS数据库存储。 2) 结构化的数据，比如用户数据、经纬度数据等，主要采用RDBMS数据库。 3) 卫星、格点、数值预报模式、雷达、遥感等非结构化数据主要采用文件系统与RDBMS系统混 合的管理方式。这些非结构化数据的元数据利用RDBMS数据库管理，比如那些存储的文件系统的中的数据，它们的文件路径和文件名会被作为元数据管理起来，然后利用RDBMS数据库对元数据进行管理，实现两种存储方式的互补。 2.3. 数据实体设计 在数据库设计时，第一步就是根据系统需求和系统功能设计数据库实体，数据库实体在数据库中的表达就是数据库表。基于气象资料的编码规则和系统需求，各种不同类别的气象资料对应各自的实体结构。 气象资料一般可以分为两种，第一种是结构化的气象资料，结构化的气象资料是指各种观测站所测得的数据，从表现形式上又可分为两类，一类是从气象报文中提取的报告，另一类是从气象报文中提取的要素值，两种均为字符串格式，可以通过结构化的方式进行组织管理；第二种是二进制格式的气象资料，我们统称为非结构化数据。下面给出了本系统数据库中有代表意义的几个实体设计方案。 1) 常规天气公报实体设计方案 气象站观测到的信息可以通过各种传输手段传送，传送的一般是报文格式的数据，是各种气象要素的编码，所以需要在ETL过程中把报文的报头信息抽取出来，形成一个字段用来检索定位，与此同时，将报文的内容存储在数据仓库中。 如图3，给出了常规天气公报实体设计方案图，其中E_MARK(公报标识标志ID)为主键，E_MARK(公报标识标志ID)、E_ENTER_TIME(公报入库时间)、E_RECEIVE_TIME(公报收到时间)是用于管理的字段，其本身并不是气象数据，E_BULLETION(公报报文)是公报报文字段，用CLOB类型存储。该实体与其他实体没有任何关联关系，是独自的实体。 2) 气象要素实体设计方案 气象要素是对气象报文进行解码后得到的具有直观意义的信息。观测类型分为地上观测和空中观测，地上观测的气象要素一般分布在二维平面(比如地面观测站测得的信息)，而空中观测的气象要素一般分布在三维空间，包括了垂直空间(比如空中气球观测的信息)。二维平面空间中的气象站观测的气象要素是平面的，数目比较确定，所以各个气象站观测的要素数目大体一致；而三维空间中的气象站观测的是不同 图3. 常规天气公报实体设计方案图 高度(气压)的气象要素，气象要素在不同高度(气压)的值是不一样的，往往不同高度的观测站测得的值相去甚远。 根据以上特点，在气象要素表设计时，要根据不同的气象要素特点设计各自的表结构。比如针对于二维地面观测资料，各个观测站都是站点编号，并且都是唯一的，像这样的实体设计成无关联的单表机构即可满足需求；但是对于三维高空观测资料，因为各个高空观测站的高度不一样，观测高度可能还会变动，每个高度可能有不同种类的要素，这样数据库表字段的数目就不好确定，所以多表关联来解决这个问题，即建立要素表和键值表。键值表存放观测站用于索引的唯一标识，要素表存放不同高度的气象要素信息。 在多表关联结构中，由于一个高空观测站可能在不同的高度进行观测，每个高度对其相关气象要素(如位势高度、温度、露点温度、风向、风速等)，因此键值表的每一行对应要素表的多行，每个观测站的要素表的行数取决于观测的位势高度。这种表结构设计方法有助于减少数据冗余，提高数据检索效率。当然，不管是地上观测的气象要素实体还是空中观测的气象要素实体，气象要素实体表结构都包含三个主要部分：主键字段(索引字段)、数据质量控制字段和气象要素字段。其中，主键字段是唯一不重复的，用于排除重复数据，避免不必要的冗余，可以唯一检索出一条气象要素信息，用于查看更新；入库时间字段一般用于审计之用；数据质量控制字段是气象上的一种置信度，是根据特定的质量控制算法算出的百分比，可以将其整合到ETL流程中，自动进行质量控制；气象要素字段来源于国内通信系统(除台北)实时上传的高空报文解报数据和地面自动站逐小时数据(Z文件)。如图4，展示了单表实体结构方案设计图的一部分。 3) 其他气象及污染数据实体设计 用户信息实体包括用户名、密码、邮箱、性别等用户数据字段，空气污染数据库包括经纬度信息实体、颗粒空气污染物数据实体、污染性气体数据实体，还有城市历史天气统计信息实体、城市历史天气综述实体、农业气象资料实体等。 2.4 文件存储路径设计 为了将非结构化数据合理的管理起来，就需要将其文件路径存储在关系型数据库中，而文件目录路径设计的就显得尤为重要。 图4. 常规地面气象要素实体方案图 首先根据二进制文件的类型建立相应根节点目录，数值模式产品根目录名称为Data Schema，遥感资料根目录的名称为remote sensing，雷达资料根目录的名称为radar，卫星资料的根目录名称为satellite。 其次，由于非结构化数据的数据量庞大，需要为其设计二级缓存，将近期可能会用到的数据暂放在缓存中，既提高了数据存取效率，又方便数据快速迁移。 最后，根据数据本身的特点，建立子目录，以数值模式产品为例，子目录分为T639全球中期天气数值模式产品、GRAPES_MESO中国及周边区域数值模式产品和T213L31中期分析预报系统产品等。 2.5. 元数据设计 2.5.1. 气象及污染数据仓库系统元数据 数据仓库系统中，元数据的应用相当广泛，基本贯穿于系统的设计始终，包括数据实体创建、资料入库维护、资料检索等方面，对于提高系统灵活性、方便管理、提高效率等方面有很大的作用。 本系统中的元数据主要包括以下几种： 1) 气象及污染资料元数据 气象及污染资料元数据用来存储数据种类信息，有结构化元数据和非结构化元数据，这些种类信息用于检索系统和导航信息。 2) 站点号元数据 站点号元数据包含了站点信息，包括区域站点信息表、公报站点信息表、要素站点信息表，站点分布的区域有全球、亚洲、中国以及自定义区域。 3) 控制信息元数据 控制信息元数据包含了日志文件的保留时间、过期数据的过期期限等。 4) 业务数据备份元数据 业务数据备份元数据包含了业务数据的备份时间、备份频率、备份位置等。 5) 格点元数据 格点元数据包含了国内外各种网格场的定义信息。 2.5.2. 元数据在气象及污染数据仓库系统中的作用 元数据可以帮助促进数据集的高效利用，有效的维护和管理数据，提供有关数据的各种检索信息。 1) 数据库实体创建中元数据的作用 由于数据仓库系统中有非常多的表、索引、簇、视图、存储过程、函数、物化视图等数据库对象需要创建和维护，以人工的方式进行创建和管理无疑是一个非常低效的过程，而且有可能因为人为失误造成不可逆的损失，因为本系统中设计了基于WEB的气象数据对象管理模块，用于实现气象数据对象元数据的创建、管理和维护。 首先，用记事本编辑一个数据库实体描述XML文件，将XML文件中的数据库实体信息录入对应的元数据表中，具体元数据表关联图如图5。 从图6可以看出XML文件中的数据库实体信息以及关联关系，当数据仓库管理员需要创建又或者维护一张数据表的时候： 1) 将XML作为配置文件，其中的信息传输到前端WEB页面，数据库管理员通过前端的WEB页面选择数据名称，通过MDT_DT_TYPE选择种类别名。 2) 根据种类别名，通过MDT_DT_INFO获得数据名称对应的要素表名、键表名、要素表是否分区和键表是否分区等信息。 3) 如果需要创建表分区，根据要素表名链接到MDT_DT_Part_Info，从MDT_DT_Part_Info中可以得到分区表名、分区级别、分区字段、分区字段数据类型、分区类型、分区值、分区名和所在表空间等信息。 4) 根据要素表名链接到MDT_Data_Cons_Info和MDT_DT_Index_Info，从中获得建表需要的索引信息和约束信息。 经过以上步骤，数据库管理员通过WEB页面就可以获得创建或者维护一张气象数据表所需的大部分信息。