异构数据源集成的研究
本文作者:admin
点击:
2006-07-10 00:00
前言:
随着互联网的发展出现了大量异构的数据源,用户需要以统一的方式访问这些数据源,而无需知道它们实际的组成。本文提出了一个集成系统的框架,重点对模式集成及模式冲突进行了研究。把模式冲突分为3种情况(表结构冲突,属性冲突,数据冲突)分别加以讨论并给出解决策略。
随着互联网的发展出现了大量异构的数据源。如何使用户能够方便地使用这些已经存在的数据源是现在研究的热点问题之一。用户希望能够以统一的方式访问这些数据源,提取其所关心的数据,而不需要知道怎么样得到这些数据,也不需要知道数据源的具体组成。
集成系统用来管理分散的异构数据源。模式集成是构建系统的关键技术之一,其基本思想是,在构建集成系统时将各数据源的数据视图集成为全局模式,使用户能够按照全局模式透明地访问各数据源的数据。全局模式描述了数据源共享数据的结构、语义及操作等。用户直接在全局模式的基础上提交请求,由数据集成系统处理这些请求,转换成各个数据源在本地数据视图基础上能够执行的请求。模式集成方法的特点是直接为用户提供透明的数据访问方法。
相关工作
模式集成过程需要将原来异构的数据源模式作适当的转换,消除数据源间的异构性,映射成为全局模式。全局模式与数据源数据视图间映射的构建方法有以下两种:
1.全局视图法(Global-as-View,也称作global-centric)全局模式是在数据源数据视图基础上建立的,它由一系列元素组成,每个元素对应一个数据源,表示相应数据源的数据结构和操作。TSIMMIS,InterViso,and Garlic就是基于全局视图法。
2.局部视图法(Local-as-View,也有称作source-centric)首先构建全局模式,数据源的数据视图则是在全局模式基础上定义,由全局模式按一定的规则推理得到。Infomaster,Information Manifold,Agora等项目基于局部视图法。
用户在全局模式基础上查询请求需要被映射成各个数据源能够执行的查询请求,这一过程有很多算法,其中基于局部视图法的映射算法比较复杂,而基于全局视图法的映射算法则要简单许多。虽然有不少项目在模式集成方面做了大量工作,但是目前还没有较通用的实现。
集成系统框架
本文提出了一个集成系统框架,如图1所示。
1.系统组成
1)Portal:系统的门户,用户通过Portal访问集成系统。
2)查询处理器:查询处理器具有两个功能:①查询分解;②查询组合。查询分解就是把合法的查询分解到各个数据源上。查询组合就是把各个数据源的查询结果组合起来传给Portal,呈现给用户。
3)Wrapper:Wrapper具有两个功能,①把查询分解的结果转换成本地数据源可以利用的格式进行查询;②把本地数据源查询的结果转换成统一的格式以便于查询处理器的组合。
4)本地数据源:本地数据源主要是分布在不同地点的异构数据源。
2.系统的运作流程
1)用户通过Portal提交查询,由Portal验证查询的合法性,如合法,把查询传给查询处理器,否则,用户修改查询直至合法。
2)查询处理器接到合法查询后,把查询分解到不同数据源上。
3)Wrapper接受到分解后的查询以后转换为本地数据源上的能实际操作的查询。
4)本地数据源上查询的结果通过Wrapper转换为统一的格式传送给查询处理器。
5)查询处理器收到不同数据源的处理结果后进行组合,传给Portal,呈现给用户。
模式集成的研究
集成系统实现的关键就是如何进行查询分解和查询组合。模式集成可以很好地解决这些问题。本节首先给出一个模式集成的架构,在此架构下研究具体的模式集成冲突的解决方法。
1.模式集成架构
模式集成架构如图2所示。
全局模式就是能包含各个数据源基本内容的关系集。它是虚拟的,本身不存储任何数据。局部模式是各个数据源模式上抽象的一层模式,也是虚拟的。本地数据源模式是实际数据的存储模式,在该模式上才可以实现真正的查询,它存储数据。在这3层模式之间还有两个映射表,分别为全局模式和局部模式映射表(记为Global-Local Mapping,GLM)和局部模式和本地数据源模式映射表(Local-Source Mapping,LSM),用于实现不同模式之间的双向转化。
集成系统是根据模式集成架构构建的。用户提交的查询是针对全局模式提出的。查询处理器进行查询分解时候要用到GLM,分解后的查询实际上是局部模式上的查询。Wrapper要使用LSM,把局部模式上的查询转换为本地数据源上的查询。查询后的结果还要由Wrapper根据LSM转换为局部模式上的数据。然后由查询处理器转换为统一的全局模式上的数据,再根据一定的策略把不同数据源返回的结果进行组合,返回给用户需要的数据。
2.模式集成中冲突的解决办法
由于各个数据源由不同地方,不同组织建立的,所以很容易发生诸多层次的冲突。映射表的建立就是为了解决这些冲突而采用的一种办法。
由于GLM和LSM性质基本相同,为了描述方便,直接把全局模式和本地数据源模式建立映射就可以说明问题。本地与全局之间的模式冲突可以归结为如下几种:
表结构冲突:不同模式间的表T1和T2具有不同的属性集,即所对应的概念存在不一致,则它们之间存在表结构冲突。如全局模式表T1 = 学生基本情况表(学号,姓名,性别,家庭住址),对应本地模式表T2= student(id, name, sex),此时全局模式表的信息在本地模式的表中就有可能无法完全表示。
解决策略:考察T1、T2在集成中的语义,对其结构进行改变,即对T2的结构补充缺失属性,去除多余属性。在T2的语义无法覆盖T1的语义时,在其模式中添加其它表,组成表序列T2,T3,…,Tk,最终使得此序列组合成的概念完全覆盖T1的语义。上例即把T2 改为T2 = student(id, xm, xb, jtzz)实现T1与T2 的映射。
属性冲突:是指两个表在属性Tf1、Tf2定义上的冲突。如同名异义、异名同义等现象。属性冲突中又存在语法冲突和语义冲突的情况。如全局模式中学生成绩及格,用成绩=True表示,但是本地没有对应属性,而是通过表达式(期中考试×30%+期末考试×60%+平时成绩>=60)=True来表示。
解决策略:在建立全局模式时尽可能保持属性Tf1的高度抽象性,如果初始建立不当,需要后续修改,使得Tf1和本地模式的属性呈1:1或者1:n的形式。其中,一对多时,Tf1和本地模式中多个属性的运算表达式呈对应关系。上例即把全局的一个属性学生成绩与本地的多个属性的运算表达式建立对应关系。
数据冲突:T1.f和T2.f虽然形式一致,其逻辑概念可能还不一致,此时即为数据冲突。如数据类型不一致,度量单位不一致等。如本地性别用"男"、"女"表示,而非全局的"True"、"False"等,这属于数据内容冲突。
解决策略:根据全局模式T1.f的数据,分两种情况讨论。对于可枚举的数据,采用一一映射,如"男"对应"True";对于需要计算进行转化的,采用公式,如距离公式转换(1m=100cm)等。通过公式对每一条记录的相应数据进行转换。
3.查询转化的实例
下面举例来说明查询转化过程。假设用户查询所有计算机课程成绩不及格的学生基本信息,这里只考虑稍微简单的情况,只考虑一个数据源,其它数据源类似处理。
假设全局模式包含关系有:
xsb(xh,xm, xb, sg)表示学生表,含有属性依次为学号,姓名,性别,身高,此处性别用1表示男,用0表示女
cjb(xh,kcm,cj)表示成绩表,含有属性依次为学号,课程名,成绩,此处成绩用True表示及格,用False表示不及格
本地数据源模式包含关系有:
学生表(学号,姓名,性别) 此处性别的值为“男”或“女”
成绩表(学号,课程名,成绩) 此处成绩及格通过表达式“(期中考试×30%+期末考试×60%+平时成绩>=60)=True表示
体检表(学号,身高,…)
1)全局模式上构造的查询
Select T1.xm, T1.xb,T1.sg From xsb T1,cjb T2 ;
Where T2.kcm="计算机" and T2.cj=false and T1.xh=T2.xh
2)本地数据源模式上构造的查询
Select T1.姓名,T1.性别, T3.身高 From 学生表 T1, 成绩表 T2, 体检表 T3;
Where T2.课程名=“计算机” and (T2.期中考试×30%+T2.期末考试×60%+T2.平时成绩>=60)=false
and T1.id=T2.id and T2.id=T3.id
根据上面的SQL语句,由本地数据源得到结果集。必须将性别的"男"、"女"转换为"1"、"0"才可以返回给用户。
结语
本文分析了模式集成的一般方法,提出了一个集成系统,重点讨论了模式集成的内容,分析了模式冲突的3种类型并给出了行之有效的解决策略,实例表明该办法能很好地解决映射问题。