论文部分内容阅读
随着信息社会的到来,计算机应用已深入到人们日常工作与生活的各个应用领域,迫切需要建立由若干个子系统组成的集成计算机信息系统,以完成更复杂的功能,解决“信息孤岛”问题。这是当前异构数据库集成研究的关键问题之一。
一、CORBA与异构数据库集成
CORBA是国际组织OMG(Object ManagementGroup)发起和制定的面向分布式对象的技术规范,其目的是在分布异构环境下为应用软件的开发提供一个公共的框架,实现信息和资源的共享。CORBA提出基于不同平台、不同编程语言、不同网络协议的异质系统间互操作的“软件总线”概念,只要各资源插件满足该总线的规范要求,就可以实现不同资源的“即插即用”。
一个分布式计算机信息系统的异构性可划分为3个层次:最底层是平台层,如不同的硬件、操作系统或通信协议;中间层是系统层,如不同种类的数据库管理系统,甚至有文件系统,它们基于不同的数据模型,提供不同的语言;最上层是语义层,由于不同的数据库或文件是独立设计的,不同系统中的数据语义之间存在着冲突。CORBA解决了平台的异构性问题,提供了解决数据库系统异构的基础结构,面向对象数据库标准ODMG93中对象模型及查询语言(OQL)在一定程度上实现了对数据库语义异构性的支持。因此,采用CORBA方法和ODMG标准,可以实现具有良好互联性的面向对象多数据源系统的互操作和集成。
实现信息集成的主要途径之一是建立异构数据库集成系统。异构数据库集成系统为用户提供单一类型的数据定义和操作语言,允许同时访问多个独立的数据数据库。这是通过对成员数据库的相关部分进行转换和集成,为用户建立统一的集成模式(表示)和接口而完成的。
二、异构数据库集成的关键技术
建立基于CORBA的异构数据库集成系统,需要解决好几个关键的技术问题:异构模式的消除、局部数据库的IDL对象化、CORBA对象定位、查询处理。
1.异构模式的消除
数据库异构模式是集成系统第一个需要解决的问题,此问题主要通过建立全局统一的公共数据模式来解。即直接将异构的数据模式转换到一个统一的公共模式上。公共数据模型由三部分组成:名称(name)、类型(d_type)、值(value)。
任何在“ORB总线”上传输的数据,包括局部数据库返回全局库的结果数据、全局库返回用户的结果数据、用户发向全局库的修改数据或插入数据、全局库发向局部系统的修改数据或插入数据,都必须转换成该公共格式表示。包装器负责转换工作。全局库接受或发送的数据格式均为公共数据格式。转换的规则为:任何局部数据库类型都转换成Any类型传输。Any类型相当于一个容器,起到统一传输任何类型的作用。公共模型根据d_type的值规定了相应的操作方法。如模型规定:t_text对应到IDL的八位字节序列,使用序列的操作方法操作t_text型数据。
2.局部数据库的IDL对象化
当异构模式消解后,下一步所需考虑的一个重要问题就是如何将局部数据库插入“ORB总线”。该任务由局部数据库包装器来完成,即对局部数据库进行CORBA封装,屏蔽其异构性,以统一的CORBA对象提供全局访问接口。封装策略为:以数据库表为粒度的封装。局部数据库以数据表为最小粒度公布其全局共享数据。包装器将每个表包装成一个独立的CORBA服务对象,提供统一的访问接口,各表对象访问方法完全一样,只通过对象名称来区分彼此。而对象名称被封装表的名称具有一对应关系:以表名来命名对象。
该策略具体实现是这样的:虽然封装粒度是表,但每个局部数据库仍然只有一个包装器进程,所有该库中共享表的封装对象都运行在该库的包装器进程中;并且,对于每个局部数据库,只有一个表对象类,通过以不同的参数实例化该类,并指定不同的对象名称来为不同的本地表生成封装对象。
3.CORBA对象定位
数据表被封装成CORBA对象,对外提供服务;那么,客户机如何找到这些对象以使用其服务呢?也就是说,CORBA如何定位对象?
首先,服务器把许多对象公布到目录,提供一些能够以有意义的方式来识别对象的属性。接着,客户机在目录中查找对象。客户机向目录提供一系列所需属性,这样目录就可返回一系列对象。客户机得到对象后就可以使用这些对象。
客户通过表对象提供的统一接口访问被封装表中的数据。表对象内部实现以下功能:(1)完成公共数据格式和本地数据格式间的转换。将数据转换为公共格式输出到ORB总线上,或转换为本地格式输入到本地数据库中。(2)对查询操作而言,方法实现体还必须完成翻译全局SQL语言到本地SQL语言以进行相应的查询操作。(3)利用本地数据库专用API访问本对象对应的数据表,完成数据操作。
4.查询处理
异构数据库集成系统中的查询处理主要包括查询分解、查询变换和全局优化三部分。查询步骤如下:(1)语法检查:检查包括:关键词是否存在、列名和表名是否符合格式等。通过语法检查后进入查询分解阶段,将之分解为子查询。(2)查询分解:①确定请求的表对象存在并获得其对象引用。根据表名和表对象名的一一对应关系确定表对象是否存在:如存在则获得其对象引用,否则返回信息告知用户请求的表不存在。②获得各表元数据信息,检验请求合理性。③分解查询。将查询语句分解成针对各表的子查询,交给各表对象执行。(3)后处理查询:后处理包括检查局部返回结果的行数是否匹配:对返回结果进行连接运算,删除中间数据,归并汇总结果;按原始请求顺序对结果字段排序等。
总而言之,CORBA为设计和实现异构数据库集成提供了非常好的方法和中间件功能,并且大大减轻了开发工作量,使系统具有良好的开放性、可扩展性和可伸缩性。基于CORBA异构数据库的集成技术有着广泛的应用前景,有待进一步深入研究和开发。
一、CORBA与异构数据库集成
CORBA是国际组织OMG(Object ManagementGroup)发起和制定的面向分布式对象的技术规范,其目的是在分布异构环境下为应用软件的开发提供一个公共的框架,实现信息和资源的共享。CORBA提出基于不同平台、不同编程语言、不同网络协议的异质系统间互操作的“软件总线”概念,只要各资源插件满足该总线的规范要求,就可以实现不同资源的“即插即用”。
一个分布式计算机信息系统的异构性可划分为3个层次:最底层是平台层,如不同的硬件、操作系统或通信协议;中间层是系统层,如不同种类的数据库管理系统,甚至有文件系统,它们基于不同的数据模型,提供不同的语言;最上层是语义层,由于不同的数据库或文件是独立设计的,不同系统中的数据语义之间存在着冲突。CORBA解决了平台的异构性问题,提供了解决数据库系统异构的基础结构,面向对象数据库标准ODMG93中对象模型及查询语言(OQL)在一定程度上实现了对数据库语义异构性的支持。因此,采用CORBA方法和ODMG标准,可以实现具有良好互联性的面向对象多数据源系统的互操作和集成。
实现信息集成的主要途径之一是建立异构数据库集成系统。异构数据库集成系统为用户提供单一类型的数据定义和操作语言,允许同时访问多个独立的数据数据库。这是通过对成员数据库的相关部分进行转换和集成,为用户建立统一的集成模式(表示)和接口而完成的。
二、异构数据库集成的关键技术
建立基于CORBA的异构数据库集成系统,需要解决好几个关键的技术问题:异构模式的消除、局部数据库的IDL对象化、CORBA对象定位、查询处理。
1.异构模式的消除
数据库异构模式是集成系统第一个需要解决的问题,此问题主要通过建立全局统一的公共数据模式来解。即直接将异构的数据模式转换到一个统一的公共模式上。公共数据模型由三部分组成:名称(name)、类型(d_type)、值(value)。
任何在“ORB总线”上传输的数据,包括局部数据库返回全局库的结果数据、全局库返回用户的结果数据、用户发向全局库的修改数据或插入数据、全局库发向局部系统的修改数据或插入数据,都必须转换成该公共格式表示。包装器负责转换工作。全局库接受或发送的数据格式均为公共数据格式。转换的规则为:任何局部数据库类型都转换成Any类型传输。Any类型相当于一个容器,起到统一传输任何类型的作用。公共模型根据d_type的值规定了相应的操作方法。如模型规定:t_text对应到IDL的八位字节序列,使用序列的操作方法操作t_text型数据。
2.局部数据库的IDL对象化
当异构模式消解后,下一步所需考虑的一个重要问题就是如何将局部数据库插入“ORB总线”。该任务由局部数据库包装器来完成,即对局部数据库进行CORBA封装,屏蔽其异构性,以统一的CORBA对象提供全局访问接口。封装策略为:以数据库表为粒度的封装。局部数据库以数据表为最小粒度公布其全局共享数据。包装器将每个表包装成一个独立的CORBA服务对象,提供统一的访问接口,各表对象访问方法完全一样,只通过对象名称来区分彼此。而对象名称被封装表的名称具有一对应关系:以表名来命名对象。
该策略具体实现是这样的:虽然封装粒度是表,但每个局部数据库仍然只有一个包装器进程,所有该库中共享表的封装对象都运行在该库的包装器进程中;并且,对于每个局部数据库,只有一个表对象类,通过以不同的参数实例化该类,并指定不同的对象名称来为不同的本地表生成封装对象。
3.CORBA对象定位
数据表被封装成CORBA对象,对外提供服务;那么,客户机如何找到这些对象以使用其服务呢?也就是说,CORBA如何定位对象?
首先,服务器把许多对象公布到目录,提供一些能够以有意义的方式来识别对象的属性。接着,客户机在目录中查找对象。客户机向目录提供一系列所需属性,这样目录就可返回一系列对象。客户机得到对象后就可以使用这些对象。
客户通过表对象提供的统一接口访问被封装表中的数据。表对象内部实现以下功能:(1)完成公共数据格式和本地数据格式间的转换。将数据转换为公共格式输出到ORB总线上,或转换为本地格式输入到本地数据库中。(2)对查询操作而言,方法实现体还必须完成翻译全局SQL语言到本地SQL语言以进行相应的查询操作。(3)利用本地数据库专用API访问本对象对应的数据表,完成数据操作。
4.查询处理
异构数据库集成系统中的查询处理主要包括查询分解、查询变换和全局优化三部分。查询步骤如下:(1)语法检查:检查包括:关键词是否存在、列名和表名是否符合格式等。通过语法检查后进入查询分解阶段,将之分解为子查询。(2)查询分解:①确定请求的表对象存在并获得其对象引用。根据表名和表对象名的一一对应关系确定表对象是否存在:如存在则获得其对象引用,否则返回信息告知用户请求的表不存在。②获得各表元数据信息,检验请求合理性。③分解查询。将查询语句分解成针对各表的子查询,交给各表对象执行。(3)后处理查询:后处理包括检查局部返回结果的行数是否匹配:对返回结果进行连接运算,删除中间数据,归并汇总结果;按原始请求顺序对结果字段排序等。
总而言之,CORBA为设计和实现异构数据库集成提供了非常好的方法和中间件功能,并且大大减轻了开发工作量,使系统具有良好的开放性、可扩展性和可伸缩性。基于CORBA异构数据库的集成技术有着广泛的应用前景,有待进一步深入研究和开发。