1 引言
今天,越来越多的应用需要访问各种异构数据源,对于企业应用来说,这既是企业内部发展的需要也是企业外部环境的需要。
企业在发展过程中积累了大量 数据,并为存储和管理这些数据不断投资。然而,由于实施数据管理系统的阶段性、技术性以及其它经济和人为因素的影响,以至即使在一个单独企业,采用的数据管理系统也大大相同,从简单的文件数据库到复杂的网络数据库,它们构成了企业的异构数据源。尽管这些数据管理系统能够满足数据存储和管理要求,但是在许多 情况下,为完成一项工作,企业应用可能需要访问分析在网络不同位置上的多个数据管理系统中的数据。例如,某公司需要了解一套型架的生产和使用情况,那么,相关应用首先必须访问生产准备科、工装所、以及使用车间的不同的数据库系统来提取相关数据,然后进行处理。
很显然,原有的数据管理系统并不能提供 这种支持,需要一个强大的系统能够集成存在于分布数据源的数据。
不仅如此,随着生存环境的不断变化,企业在把握机遇的同时也面临着许多挑战。网络的发展使企业逐渐从一个孤立节点发展成为不断与网络交换信息和进行商务事务的实体,企业数据集成也从企业内部集成走向了企业间集成。现在的企业比以往任何时候都需要将内部数据进行发布和交换,这必然导致越来越多的企业应用需要 访问各种异构数据源,并且这些数据源可能分布在网络上的任何地方。为了满足这种需求,必须有一种系统能够支持异构数据源的数据集成。
2 异构数据库的概念和特征
在大型企业中,由于生产自动化进程的阶段性,一般都存在基于多种数据库管理系统(dbms)的应用程序系统,如基于microsoft access的底层生产过程控制系统、基于oracle或者sql server的高层企业资源计划系统(erp)等等,这些系统的数据库一般都只在本系统内部存取,而不能被其他系统访问。这种状况导致企业不同层次信息孤 岛的出现,严重影响信息传递的实时性、加大信息维护的成本。
这些现存的数据库系统的异构主要体现在以下几个层次[1]:
(1) 操作系统的异构与网络平台的异构;
(2) 数据模型的异构,查询语言的异构,事务管理、并发控制机制的异构和查询优化方法的异构等;
(3) 模式冲突,数据库和运行方法的异构;
(4) 数据库系统的开发环境和运行环境的不同,以及所使用的编程语言的不同。
我们所要集成的多源异构数据库系统是相关的多个数据库系统的集合,应该实现数据的共享和透明访问,每个数据库系统在加入异构数据库系统之前本身就已经存在,拥有自己的dbms。异构数据库的各个组成部分具有自身的自治性,实现数据共享的同时,每个数据库系统仍保有自己的应用特性、完整性控制和安全性控制。
3 异构数据库数据集成的几类方法
实现异构数据库的集成,首先要对加入的数据库资源实现完全透明的访问,既要保证全局数据的共享,又要保证各数据库管理系统的自治,确保基于异种系统平台实现对异构数据库的查询和联合使用,并提供一个独立于特定的数据库管理系统的统一编程界面。
根据不同的应用,一般有以下三种不同的异构数据库交互技术[2]。
3.1 中介层方式
中介层方式提供一个应用程序负责专用的数据转化与共享访问,这个程序是特定的、专用的、复杂的。这种特定的方式适合于企业间的相互合作。
3.2 数据仓库方式
数据仓库方式将各个分布场地的数据提取到企业的中心数据仓库中,那么这种方法的一个显然特点就是数据仓库对于各个分布场地的数据的高度控制权。因此,这种方式适合于企业合并。
3.3 中间数据方式
中间数据方式与数据仓库的一个明显不同在于保留各个分布场地的高度自治权,因此该方式适合于internet的电子商务方式,各个网站将自己的数据按照一 定的通用格式提供出来,这样就方便了网上检索的需要。
在这些方法中,我们都必须用到一个统一的访问各个异构数据库的方式,具体说来一般有odbc、jdbc、corba三种。下面简要介绍一下在应用程序中使用较多的odbc方式。
odbc是微软(microsoft)为方便异构数据库之间进行数据共享,专门提出一个用于数据库访问的应用程序编程接口(api)。它使用结构化查询语 言(sql)作为其数据库访问语言。odbc是依靠分层结构来实现的,这样可以保证其标准性、开放性[3]。图1为odbc的体系结构。

图1 odbc体系结构
它通过使用驱动程序来提供数据源的独立性,上层应用程序与具体数据源无关,而驱动程序与具体的数据源有关,它是一个用以支持odbc函数调用的模块,应用 程序通过调用驱动程序所支持的函数来操作数据源,若想使应用程序操作不同类型的数据源,就要动态地链接到不同的驱动程序上,由驱动程序完成odbc函数调 用并与数据源对话。
jdbc与odbc有相似的原理,只不过是应用于java平台的应用程序。
4 一种异构数据库数据转化方法的实现
前面讲述了异构数据库的概念、特征,以及在一个系统中集成异构数据库数据的几类方法、用到的关键技术等,下面就介绍一例氧化铝化验数据管理系统与生产过程优化系统的异构数据库数据转化的方法实现。
氧化铝生产中,需要及时准确地化验生产过程中物料的化学成分,并尽快发布给各工作岗位和领导层,从而指导生产的顺利进行。为实现化验数据的及时快速发布,建立了一套基于b/s模式的化验数据管理系统。该系统采用oracle数据库和java平台,其中关键的化验报告数据字典如图2所示。

图2 氧化铝化验数据管理系统简化e/r图
从上图可以看出,为实现某物料指标可以灵活增减和修改,物料基础信息字典(物料信息字典和指标信息字典)和报告信息字典(报告主信息字典和报告明细信息字典)都采用了一种主明细的结构,将不变的信息存储主表一条记录,将可变的信息存储明细表的若干条记录。如某一个物料的一条化验报告主信息(包括采样时间、 采样班次、样品属性等)以一条记录的形式存储在报告主信息字典中;而其详细的指标化验数据(指标值、修改时间等)以每个指标一条记录的方式存储在报告明细信息字典中。通过编程实现存储与读取的行列转换,可以实现系统维护的灵活性和良好的适应性。
而共享这些化验结果数据的生产过程优化系统则采取了完全不一样的数据结构。如图3所示。

图3 氧化铝生产过程优化系统简化e/r图
由于生产过程优化系统一般是工艺流程专用,而且应该考虑读取数据库的速度,所以如上图所示采用了将各个固定指标作为字段的形式。该系统采用了 microsoft access作为底层数据库和windows应用程序方式。
两者数据库结构的差别是存储方式的不同,化验数据管理系统指标数据是列向存储,而且不管何种物料统一存储,只通过连接报告主信息表和报告明细信息表的报告 id,得到该条指标值所属物料的id(见图2)。而生产过程优化控制系统则针对某种物料定制表,以一条记录存储该物料全部指标值。要实现数据的相互转化, 就必须实现从化验数据管理系统数据库数据和生产过程优化系统数据库数据的映射。
我们采用了上述中介层的方式。通过一段在逻辑上独立于两个系统的程序完成数据的转化。
另外通过odbc方式访问两方数据库,如图4所示。'

图4 数据转化框架结构图
其中“数据转化模块”和odbc配置都在生产过程优化系统服务器上。我们在化验数据管理系统数据库中定义如图5所示对应表,完成两个系统数据的映射关系。

图5 对照表及相关信息字典简化e/r图
通过将化验数据管理系统中的物料信息、指标信息、对应表、化验数据主信息、化验数据明细信息几个字典做自然连接查询,得到图6所示数据集。

图6 综合查询得到数据集
通过对数据集做循环,组织好形如insert into ripestuff(sampledate,sampleclass,sio2,…) values(‘2004-10-10’,‘1’,11.13,…)的插入语句。
5 结束语
异构数据库数据集成在各大企业和科研部门中都有很重要的作用和现实意义,研究异构数据库交互技术对于消除企业信息孤岛,提高数据利用效率,减少数据管理成本等都有及其重要的作用。




