摘要:对基于xml的多源异构数据融合、遥感数据存储、数据持久化以及用户访问控制技术进行了分析和设计;讨论了元数据管理系统的实现技术、设计思想和系统构架,注重系统的可移植性、可维护性和可扩展性;实现了基于j2ee技术的元数据管理系统。
关键词:java 2平台企业版;元数据管理;扩展标记语言
随着信息技术的发展,产生了海量的信息。如何有效地管理和组织这些海量信息已经成为一个突出的问题。元数据机制是解决这一问题的有效手段。一些部门已经针对数据在行业内部的应用特点来开发自己的管理系统[1]。目前,在元数据管理系统的建设中存在的主要问题是:基于不同操作系统和数据库的管理平台不可移植、安全性差、难以维护和扩展、缺乏统一的建设模式与内容服务提供方式[2,3]。
以j2ee平台为基础的各项技术的成熟为这些问题提供了良好的解决方案。j2ee是一种利用java2平台来简化诸多与多级解决方案的开发、部署和管理相关的复杂问题的体系结构。j2ee的核心技术是java2平台的标准版,具有java语言的特性,是一个开放的、跨平台的结构,提供了健全的意外事件处理机制,具有良好的可移植性和扩展性。
基于j2ee的元数据管理系统具有高效、稳定、可复用、易维护的特点;独立于平台,可以部署于microsoft windows、linux、unix等操作系统之上;可对oracle、sql server 2000、mysql等多种数据库进行操作。但是j2ee涉及的技术种类繁多,在实际应用中要根据需要准确使用,而且基于j2ee的系统需要具有良好的系统设计结构,才能最大限度地发挥优势。wWW.133229.cOM尽管基于j2ee平台的系统具有诸多优点,但目前j2ee还没有被广泛应用在元数据管理中。本文提出的基于j2ee架构的元数据管理系统建设方法和应用实例,是将j2ee引入元数据管理的一个初步尝试。
1关键技术研究
1.1基于xml的多源异构数据融合
各个部门采用了不同的元数据存储方式。由于缺乏统一的标准,很难对这些元数据进行有效的管理和发布。必须实现多源异构数据的融合。
采用简单文本文件作为中间介质的信息交换方法不能描述数据的结构,不适合用来进行复杂的元数据交换。 xml技术实现信息交换与共享已经成为一种发展趋势。孙君明等人[4]对基于xml的数据交换技术进行了研究。xml是采用线性语法描述树状结构的标志语言。作为一种数据交换的中间件,xml具有跨平台、结构化和自描述性强的特点。
用xml实现多源异构数据融合的过程如图1所示。
在图1中,首先各地的数据提供者通过浏览器将数据传送给服务器,由服务器端的xml引擎将这些数据转换成标准的xml文档;再由一些服务组件根据需要对xml文档进行处理,如建立索引等。这样,多源异构数据就被转换成了具有统一标准的xml文档;通过对这样具有固定结构的xml中间件的解析,实现从xml文档到数据库的转换,完成了多源异构数据的统一存储[4,5]。进行信息发布时,根据客户端的查询条件在数据库中提取相应的结果集,形成xml文档,将该文档发送至客户端;由客户端的格式化工具解析该xml文档,显示在客户端。
1.2遥感数据的分块存储
遥感数据(如dem、tm、aster等)具有数据量庞大的特点,应用数据库中的大数据类型存储,如oracle 9i中的blob、sql server 2000中的image。但是如果将它们直接存入数据库中会造成系统效率低下;可采用一种分块存储的策略,将原始数据分割成大小一致的若干块,一块一块地进行存储。分块大小要根据磁盘的读写性能和网络的传输性能确定,过大或过小都会导致系统运行效率低下[6]。每块数据以一条记录的方式进行存储,包含数据的编号、经纬度、步长、时间等信息,并且建立索引。
1.3数据持久化
为了能使系统部署在任意数据库系统上,加入了一个持久化层,作为连接java应用和关系数据库的通道。为数据库中的每张表建立一个java对象,定义好对象与表之间的对应关系,只需对java对象进行操作,不用关心sql语句和系统最终使用的数据库。持久层作为一个中间件,封装对数据库的操作,提供接口,隐藏数据访问的细节[7]。
1.4用户访问控制
元数据的使用人员级别复杂,用户管理困难。使用rbac(role-based access control,基于角色的访问控制)模型,可以提高管理的效率和安全性。rbac在传统的用户——权限模型中引入了角色的概念。角色是一组用户的集合,也是一个授权的集合,它将一组用户与权限联系起来。一个角色可以与多个用户对应,一个用户可以拥有多个角色,每个角色可以执行多种权限,每个权限可以被多个角色共享。对一个用户授予相应的角色,使用户可以进行相应的操作[8]。引入角色可以使系统的安全机制具有很大的灵活性,减少了权限管理的负担和代价,同时也增强了系统的可维护性。
2元数据管理系统的设计
使用本系统的各部门实际情况不同,系统可能被部署到不同的平台上,而且需要对该系统进行一定的扩展和改进。所以在系统设计上,需要充分考虑到系统的可移植性和可扩展性。
2.1系统设计
本系统基于j2ee平台,是一个浏览器/服务器(b/s)结构的系统,具有j2ee平台可以跨系统使用的特性,采用mvc(model-view-controller)应用框架。mvc设计框架的内部原理比较复杂,将mvc运用到应用程序中会带来大量的额外工作,增加应用的复杂性。但是mvc可以轻松地实现程序代码与html的分离,而且mvc的三个模块相互独立,可以构造良好的松耦合构件,提高应用系统的可维护性、可扩展性、可移植性和可复用性。从长远的应用考虑,应使用mvc设计框架[9]。
本系统在传统的b/s三层结构上作了一定的改进。
(1)表现层。在该层使用struts框架。struts是一个mvc模式的表现层应用框架。浏览器向web服务器提出请求后,web服务器会把请求交给控制器处理。actionservlet控制器根据请求的不同,将它们转发给不同的action实例。action实例在这里充当了用户请求与业务处理逻辑之间的适配器,它只负责控制整个程序的流程,不关心具体业务的实现,实现了请求与业务逻辑的分开。本系统使用一个高效的action类——dispatchaction类。只要继承该类,就可以在一个action中集成多个业务方法,有利于系统的维护。在视图显示方面,其大量使用了struts标签,用来控制显示的逻辑和内容。由于不同平台采取的编码方式不同,在进行系统移植时很容易出现中文乱码问题。在这里使用一个可插拔式的过滤器,实现对请求和响应的预处理及后处理,很好地解决了字符编码问题,使系统可以在不同的平台上进行移植。
(2)业务层。它处理用户请求和应用逻辑。在处理之前,将所有涉及到表现层的数据结构替换成更加通用的数据结构类型;使用通用的、与表现层无关的数据结构在这两层之间传递参数。表现层方法提交的参数类型主要是httpservletrequest和httpservletresponse;使用这样的参数会增加系统的耦合性,不利于代码的重用,所以要将它们处理成通用的数据类型,如数组。这一过程在action适配器进行转发之前完成,提供给业务层的参数是通用的数据类型[10]。业务层方法之间的通信也通过通用的参数类型进行,使得每个业务方法均独立存在于系统之中,在很大程度上减少了系统的耦合,提高了可复用性。