基于模型驱动的海洋环境数据平台研究与应用
2014-08-14刘美健
刘美健
(天津交通职业学院,天津 300110)
海洋环境数据管理与共享服务一直是海洋信息科学以及海洋信息化建设中的重要研究内容之一。海洋环境数据是指对人类生产生活产生直接或间接影响的海洋自然和非自然的所有要素整体(冯士筰等,2000)。它是指可以通过仪器设备直接或间接获取的有关海洋环境的基本特性,如海水温度、盐度、风、浪、海流等。海洋环境数据来源于人们对海洋的认知和利用,是人类开发海洋、利用海洋和管理海洋的重要决策依据。海洋具有多维动态变化特性,相应地,反映其特征的海洋环境数据也呈现出多源性、多态性和多样性的特点(刘金等,2011;张新等,2010),研发能够准确、有效管理这些数据的数据库系统和应用系统也比较复杂。
数据平台是数据存储、管理和服务的基础。传统的数据平台以用户业务为核心进行设计,当数据内容和业务逻辑变化发生时,需要对相关数据结构重新设计,以其为基础的应用系统也要重构,因此效率不高,扩展性和通用性也不足。针对这种不足,本文提出了基于模型驱动的数据平台设计方法。该方法以数据对象模型为核心,将数据和业务逻辑分解成最小单元,通过封装元模型及相互间关系,来提高数据平台的数据存储和管理效率,以及扩展性和通用性。将其应用到海洋环境数据管理中,可解决由于海洋环境数据内容变化导致的数据库字段频繁修改带来的弊端,为各种以海洋环境数据为基础的应用系统构建提供了统一的数据环境支持。
1 模型驱动开发基本概念
1.1 数据对象与元模型
数据对象就是对用户需要访问的各种类型数据的统称。数据对象包括两类,一类是用户数据,是指客观对象经实例化后所得到的、为实现特定业务逻辑而必不可少的数据,如海洋温度、盐度、海流等;另一类是系统数据是指为了存储和管理用户数据而附加的数据,如数据库、表、视图、存储过程、SQL语句等。存放用户数据的数据库一般被称为用户库,存放系统数据的数据库被称为系统库。
模型是对客观世界中各种实体的抽象。数据模型是对数据属性与相互间关系的抽象表示。元模型,即描述模型的模型(周骏等,2005),它是通过描述模型的语义和建立过程来定义模型结构,比模型的抽象程度更高。数据对象元模型是对数据对象模型及其关联关系的高度抽象,是数据对象模型的基础组成成分,存放在系统库中。通过元模型对特定业务领域的建模环境进行规范定义,可有效解决数据一致性、扩展性与可复用性问题。
1.2 模型驱动开发
模型驱动开发MDD(张炜,2007)(Model Driven Development)是由计算机软件领域的模型管理组织OMG(ObjectManagementGroup)提出的软件开发新理念,它是以模型作为软件开发的主体和核心,通过模型调用与转换进行软件的开发与维护。
模型驱动开发的关键是建模和模型映射,其作用是解决从元模型到模型、从模型到代码的映射问题,从而将模型映射为在不同技术平台上的具体实现。图1是典型的模型驱动开发流程。首先通过对业务需求进行整理与分析,抽象出能够完整地描述业务逻辑的、与具体实现技术和平台都无关的平台无关模型PIM(Platform IndependentModel);然后针对具体的平台与实现技术,确定映射规则,将平台无关模型转化为平台相关模型PSM(Platform Specific Model);再通过具体实现将平台相关模型转换为最终代码实现。
图1 模型驱动开发流程
与传统的软件开发模式相比,采用模型驱动架构设计数据平台和应用系统时,能够将复杂的数据和业务逻辑抽象为易于扩展与维护的元模型(周骏等,2005;罗荣良等,2004),实现对整个数据服务生命周期的管理,同时又便于支持多个业务系统的数据访问需求,减少对数据库字段的直接依赖程度,降低数据库维护压力与复杂度,提高开发维护效率。
2 模型驱动的海洋环境数据平台设计
采用模型驱动架构设计海洋环境数据平台,为具有动态变化特性的海洋环境数据的存储管理与应用系统构建提供了便利。从学科的角度讲,海洋环境数据包括海洋水文、气象、化学、生物生态、海洋物理、底质、海洋地球物理、海底地形地貌等八大类,每个大类又包括若干个要素,数据内容、类型、精度随时发生着改变。面对这些变化,亟需一种能够具有时空动态变化特性的数据存储与管理模式。采用标准格式数据文件或传统的数据库设计模式,显然不能满足这一需求,而模型驱动的数据平台设计与实现方法,为解决这一问题提供了有效解决方案,其主要设计内容包括模型设计和功能设计。
2.1 数据模型设计
构建数据平台的关键是开发数据对象模型服务,主要由数据源及属性定义、数据对象模型抽象、数据对象元模型设计、数据操作封装等环节组成(杨延双等,2007)。
(1)数据源属性定义:主要描述了从数据库中提取数据的方法和返回的结果集,是客户端通过数据平台获取数据的主要途径。
(2)数据对象模型抽象:实际上就是对应用系统特定业务逻辑和特定数据内容的抽象与定义,通过对数据对象元模型的组织,描述应用系统用户需求和各种数据间的特性与关联关系。
(3)数据对象元模型设计:设计存储数据对象元模型及其相互之间的关联关系的数据库表,其典型实现主要由数据库定义表、数据源管理表、属性定义表、数据源关联定义表、数据对象驱动定义表、数据源参数定义表、域定义表、分页管理表及分组管理表等组成。图2是数据平台的典型数据对象模型图。客户端开发人员创建、编辑、删除数据库对象及其属性,实际上就是操作“数据库定义表”中的数据记录;创建、编辑、删除表对象及其属性实际上就是操作“数据源管理表”的表数据;创建、编辑、删除表字段及其属性实际上就是操作“属性定义表”中的记录。
图2 模型驱动数据平台的数据对象模型图
(4)数据库操作封装:包括对数据的选择、更新、删除基本操作以及存储过程等复杂操作封装,以此将客户端与SQL语句进行剥离,降低数据平台对SQL的依赖性。例如,当客户端需要查询某个数据表里的数据时,只需要调用相应的服务接口,而不需要在代码中编写相应的SELECT语句。
“数据库定义表”描述了数据库的基本属性,定义了数据库类数据对象的数据结构,数据平台所涉及到的系统库和用户库的详细信息都以记录的形式存放在此表中。“数据源管理表”描述了数据源的基本属性,定义了数据源类数据对象的数据结构,以记录的形式存放数据源实例的详细信息。此表存放在数据平台的系统库中,数据源实例的具体内容存放在用户库中。对“数据源管理表”进行扩展,形成“SQL数据源定义表”和“数据源录入管理表”,分别定义了执行数据源所使用的SQL语句和执行数据源的方式。在“数据源录入管理表”元模型中,字段“包记录数”指定了执行数据源时每次获取的记录数,用于数据的分页显示;字段“数据表打开之前检查”指定了在数据源执行之前,预先执行的数据源,如复制前一天的数据作为拷贝;字段“新增数据条件检查”用于设定用户在需要新增数据时进行的存储过程检查,以判断用户是否能够新增数据;字段“数据提交后执行存储过程”指定了数据源保存成功后所要执行的数据源。“属性定义表”中定义了用户数据的所有数据库表字段名称、类型、长度、是否主外键,以及度量单位等信息。“数据源关联定义表”和“数据源属性关系定义表”定义了各个数据库表之间的相互对应关系,如“一对多”、“多对一”、“一对一”等。“数据对象驱动定义表”支持同一数据源中属性间的驱动,包括“前驱动”和“后驱动”两种驱动类型。“前驱动”是指一个字段在录入内容后,被驱动的字段可以自动获取数值并填充;“后驱动”是指一个字段在录入时,根据其它字段的录入内容来动态决定其录入内容。“数据源参数定义表”定义了执行数据源所需要的参数。其中,字段“参数名称”指定了具体参数名;“数据类型”指定了参数的类型;“默认值字段”指定了当传入参数为空时所使用的值;“参数表达式”用于模糊查询,填写“L”则表示在传入的值左边添加通配符“%”,“R”则表示在右边添加“%”,“LR”表示在左右两边都添加“%”。“域定义表”定义了数据项的域,包括范围域、列表域、条件域、编码域4种。范围域是指所录字段的内容必须包含在给定的范围之内,例如数字大于1小于100。列表域是指所录字段的内容是在某个列表内容中获取。
除了上述基本的数据对象模型外,在数据平台的具体实现中,还需要包括数据分组、分页等数据显示以及范围域、列表域等辅助数据对象模型。
2.2 平台功能设计
海洋环境数据平台的功能设计体现在两个层面,一是在服务器端的业务逻辑层,二是在客户端的应用表现层。在业务逻辑层,数据平台的服务对象是应用系统发出的服务请求,服务内容是数据对象;在应用表现层,服务对象是用户,服务内容是平台提供的查询、统计、分析、可视化等功能。
(1)业务逻辑层:①实现对数据对象元模型的存取。例如,当开发人员需要在数据库中新建一张表时,只需要调用新建数据源模型实例的方法即可实现;②实现对用户数据的存取。当服务端接收到来自客户端的数据请求时,则根据消息中传递的参数连接到相应的用户库,执行相关数据源,获取用户数据,再返回给客户端。
(2)应用表现层:在应用表现层,海洋环境数据平台的主要功能包括:①数据加载与更新;②按学科、空间范围、获取时间及手段查询检索;③按海区、学科或要素、时间范围统计与专题图制作;④数据站位时空分布可视化绘制;⑤数据占有率、更新率等分析计算;⑥数据与图表输出等辅助功能。
3 原型实现
根据上文所述的数据平台设计方法,本文采用J2EE框架体系,实现了集成网络服务(Web Service)技术的海洋环境数据平台原型系统,主要由数据库连接池、数据对象模型服务、操作系统缓存、Web Service接口等组成,其架构参见图3(范玉珍,2008;谭永明,2007;张艳春,2010)。
图3 模型驱动海洋环境数据平台架构
数据库连接池是数据对象模型服务获取数据库数据的通道。数据对象模型服务提供对数据库连接池的管理与监控,负责实现海洋环境数据对象模型的存取,以及通过客户端对数据对象的描述,来锁定并存取数据对象所描述的各种环境数据。为了提高平台响应效率,采用了OSCache,将数据从数据库中获取后,缓存到服务器的内存中,为数据对象模型服务提供缓存支持。Web Service接口是数据对象模型服务对外提供服务的表现,由可被客户端直接调用的一组服务接口所组成,客户端只需要调用相应的接口,即可完成数据操作。
表1-5为海洋环境数据平台具体实现的数据库表(部分字段进行了删减)。表1“数据库定义表”中定义了各种类型的用户数据库(如海洋水文数据库、海洋气象数据库等)和为管理这些用户数据库所需的系统库,即海洋环境数据对象模型库。
表1 数据库定义表
表2“数据源管理表”中定义了数据源及其属性,并通过字段“数据库标志”与表1“数据库定义表”相关联,通过字段“数据源标志”与表3“数据源录入管理表”、表4“SQL数据源定义表”、表5“属性定义表”、表7“数据源参数定义表”相关联。
表2 数据源管理表
表3“数据源录入管理表”中规定了各个数据源的执行方式。表4“SQL数据源定义表”则为执行数据源所具体使用的SQL语句,通过这个表解除系统代码与SQL语句的依赖,增强系统可维护性。
表3 数据源录入管理表
表4 SQL数据源定义表
表5存储了海洋环境数据平台中的所有用户数据的字段及其属性定义,比如名称、类型、长度、是否主键、度量单位等,并通过字段“域标志”与表6“域定义表”关联,明确每个字段的数据取值范围。
表5 属性定义表
表6 域定义表
图4为海洋环境数据平台的客户端原型实现(图中波浪调查站位数据为模拟结果)。原型在系统设计和编码实现上,全部采用模型驱动架构。基于服务器端构建的各种海洋环境数据模型库,实现了海洋环境业务化资料、专项资料等的航次查询、站位查询、站位绘制等功能模块。比如,选中ST03调查区块后,可直接绘制出该调查区块的所有站位,并逐个列出站位的具体信息,同时显示了这些站位资料经处理后形成的基础数据的元数据信息,以及数据使用服务情况。由于采用模型驱动,在服务器端数据库表中分类定义了数据的查询检索域值,可方便的实现海量数据的快速查询和结果页面跳转。
4 结语
与传统的直接面向最终用户业务数据的海洋环境数据库设计方法相比,本文提出的以数据对象模型为核心的海洋环境数据平台设计方法能够将用户数据和业务逻辑进行解耦,显著提高了数据平台的实用性、扩展性和通用性,为各种以海洋环境数据为基础的领域应用提供统一的数据环境支持,为海洋环境数据共享提供了一种新方法。目前,模型驱动的数据平台设计方法仍存在模型设计复杂、实现难度较大等缺点,只有在业务逻辑和数据交互较多的大型应用中,才能发挥其优势。后续研究中,应进一步在模型解耦、标准化设计等方面进行探索,以降低该方法的入门难度,促进其推广应用。
图4 模型驱动海洋环境数据平台原型客户端系统
范玉珍,2003.基于WebSphere平台的Web Service概念实践.计算机科学,(34):125-128.
冯士筰,李凤岐,李少菁,2000.海洋科学导论.北京:高等教育出版社.
刘金,朱吉才,姜晓轶,等,2011.海洋信息组织与存储模型研究及其在数字海洋中的应用.海洋通报,(30):73-78.
罗荣良,朱勇,2004.基于模型驱动架构的Web Services应用开发.计算机应用与软件,(21):110-112.
谭永明,苏斌,2007.面向服务架构体系的研究.计算机技术与发展,17(3):132-137.
杨延双,刚冬梅,辛爽,2005.面向服务的综合信息服务系统的设计与实现.北京工业大学学报,31(4):411-419.
张炜,2007.面向业务领域的模型驱动架构扩展应用.苏州:苏州大学.
张新,刘健,石绥祥,等,2010.中国数字海洋原型系统构建和运行的基础研究.海洋学报,(32):154-159.
张艳春,2010.基于SCA的SOA编程模型及安全策略的应用研究.郑州:郑州大学.
周骏,徐林,李征,2005.元模型驱动的企业建模.计算机工程与应用,(27):215-217.