APP下载

基于元数据驱动的异构数据模型映射算法1)

2011-06-13陈星童

东北林业大学学报 2011年12期
关键词:主键字段数据模型

袁 满 陈星童

(东北石油大学,大庆,163318)

目前,企业日趋信息化、标准化的发展方向,决定当前企业中的大量生产信息及管理数据的集成与转换成为亟待解决的问题。由于石油领域生产、管理、科研上地域分散的特点,使得企业内存在大量采用不同数据库存储的异构数据,各个企业应用之间存在信息壁垒,阻碍信息之间的共享。完整的数据迁移系统包括数据抽取、数据转换和数据加载[1],当前的迁移方法包括:①利用PowerBuilder的数据管道(Data Pipe-Line)技术[2]、数据窗口(DataWindows)和动态 SQL 语句实现[3]。数据管道技术虽然简单,但对于大量且模型结构复杂的数据,不提供纠错和质量控制机制;采用动态SQL语句虽然适用范围广,但在进行迁移过程中,对于数据模型复杂或数据量庞大的情况,使迁移任务繁琐且效率低下,缺少可视化操作界面。②采用源数据库自带的导出工具和目标数据库的导入工具,中间需要经过必要的转换处理;采用手工迁移和数据库自带工具进行迁移需要编写大量辅助程序,要求迁移人员对源库与目标库的结构和业务规则有比较透彻的了解,增加了用户的工作量。③采用已有的一些数据迁移软件,如SQL Server的DTS工具、Delphi中的DataPump工具等。④特殊的数据库提供的一些特别的迁移方法,如PHP实现MYSQL的迁移等。⑤通用数据迁移工具,其中用到基于相似度计算[4]的映射工具,但对于具有复杂映射关系的数据仍不能满足。这些方法各有利弊。传统的ETL体系结构,数据转换的描述信息包括对数据源位置与基本属性的描述、转换规则信息等,缺少控制数据转换行为的描述,使得整个转换过程要依赖程序代码控制实现,导致转换工具的实现复杂度增加。随着企业信息化的深入、新行业标准的引入,新旧数据模型差异逐渐加大,导致新的映射关系不断出现,传统方案只能不断增加或者修改代码来适应这种情况,不但增加了维护的难度,且可能导致软件重新开发。然而,用元数据描述映射模式的设计思路实现的数据转换系统具有以下优点:①具有良好的扩展性,不同数据模型之间出现一种新的映射模式只需编写单独的转换规则函数,配置函数接口及参数信息,定制对应字段间映射模式元数据后,即可使用新映射模式,不需要更改程序代码,降低了工具开发复杂度的同时,提高了工具的质量。②通过元数据形式描述数据库之间的映射模式,构建用于映射模式元数据模型实现数据转换过程,使得数据转换行为能够灵活控制,更易于维护。

1 映射模式表示及算法

1.1 映射关系分析

映射关系[5]是指同一数据领域内,存储相关数据的不同关系数据库数据模型之间的对应关系。映射关系分为3个层次:

①实体映射。反映了两个数据库概念模型上的差别,由一个或多个属性描述。

②表映射。是实体映射的充分反映,为数据模型数据表之间的对应关系,在应用中表映射分为一对一映射、一对多映射、多对一映射等情况,对于多对多表交叉映射则可通过前3种映射描述。

③属性映射[6]。关系数据库中,属性映射对应的是数据表中的字段映射。它是映射关系的最底层,是数据转换规则处理的最小单位。

了解进行数据转换的异构数据源的概念模型,以及数据源数据之间的对应关系,将这种关系进行分类和细化,并且给出明确的定义和解释,最终确定满足从源向目标库进行数据转换的数据映射模式。

1.2 映射模式及相关定义

映射模式[7]为源数据库数据表字段到目标数据库数据表字段之间的映射关系,每一类映射关系为一类映射模式。每一类映射模式的实质是一类数据转换的规则,将每一类映射模式抽象为一个数据转换规则函数。笔者通过分析关系数据库数据模型,确定15种映射模式,包括:直接映射、主键映射、外关键字映射、多级映射、间接外键映射、自关联外键映射、类型转换映射、单位转换映射、拼接映射、计算映射、截取映射、代码表映射、源代码表映射、目标代码表映射、筛选条件。在这些映射的基础上,可能会增加新的映射模式来满足数据转换需求。

定义1.映射关系:源数据库中实体ES的某一个属性或属性集A(数据表的某一个或一组字段)到与含义相同的目标数据库实体ET的属性或属性集B的对应关系,为A到B的映射关系,记为f(A,B),或

定义3.反向映射:根据数据转换需求,需要满足将目标库向源库的数据迁移,将A属性设定为源到属性B的映射关系称为正向映射关系,基于该正向映射关系,确定以B属性为源到以A属性为目标属性为反向映射关系,则该映射关系记为,f与 f-1互为逆映射,对应转换规则函数为 F-1(bi,ai)或 ai=F-1(bi)。例:

②拼接映射关系f2([序号,阶段],求产序号)。

③计算映射关系f3([射孔顶深-射孔底深],厚度)。

1.3 转换规则函数及算法描述

1.3.1 转换规则函数

为提高数据映射行为的重用性,对油田现有业务数据库模型分析,如勘探开发数据库、A2数据库。将数据处理对象及其属性进行抽取,抽象为转换规则函数。以下是对部分映射模式及其转换规则函数进行详细分析。

①直接映射:无需任何转换处理,直接将源字段中数据向目标字段迁移。

转换规则函数:F直接(S<字段>,T<字段>),函数参数:S<字段>:源表字段;T<字段>:目标表字段。

②主键映射,源表中的主键字段在目标表中仍是主键,在目标表中主关键字段的值发生了变化。由于描述内容不同,需要将源主键值转变为目标主键值,同时构建中间代码表保存源主键值与新目标主键值之间的对应关系。

转换规则函数:F主键(S<主键字段>,T<主键字段>,MID<代码表>),函数参数:S<主键字段>:源主键字段;T<主键字段>:目标主键字段;MID<代码表>:中间代码表。

③外关键字映射,源表中某字段所存储的信息,在目标表中用一个外关键字段来代替。

转换规则函数:F外键(T<参照引用表>.T<参照引用字段>,T<字段>)

外关键字段映射过程,首先确定目标表中外键字段引用的表,即确定 T<参照引用表>,通过源字段中的数据,在引用表T<参照引用表>中相应字段 T<参照引用字段>数据作对照,获取目标字段T<字段>的值。函数参数:T<参照引用表>:目标库中的参照引用表;T<参照引用字段>:参照表中的参照字段。

④常量映射,目标字段值是常量值,不需要源表字段参与数据转换处理。

转换规则函数:F常量(T<字段>,常量值),函数参数:T<字段>:目标字段。

⑤多级映射,由于模型复杂的层级结构和繁多的数据量,通过单次映射往往不能正确、有效获取目标字段值,导致了数据冗余或错误数据等问题。对于一些复杂目标字段的获取需通过多次中间值的查询和转换处理来解决。可能通过外关键字映射、源表字段值、目标字段值、指定常量值等方式获取。在处理过程中,下一次映射的启动依赖于上一次的映射结果,形成嵌套的映射结构。转换规则函数:F'多级(F多级(F外键(T<参照引用表>.T<参照引用字段>,T<字段>),T<参照字段值>),T'<参照字段值>,S<参照字段值>)函数参数:T<参照字段值>:F多级多级映射的目标参照字段值;T'<参照字段值>:F'多级多级映 射 的 目 标 参 照字段值;S<参照字段值>:F'多级多级映射的源参照字段值。

通过描述这些转换规则函数及参数的元数据,实现异构数据模型字段间映射关系的描述,使得该基于映射关系的数据库之间的数据转换得到灵活实现。

1.3.2 映射转换算法

算法1:识别映射模式,调用对应映射转换规则函数,实现映射识别与转换过程的自动处理算法。

前提需要:ES{A1,A2…Ai};ET{B1,B2,…,Bi};

Ai{a1,a2,…,ai};Bi{b1,b2,…,bi};

一组映射集合S-T《D》

开始:

算法2:基于外关键字段映射规则的数据转换处理过程算法。

F外键(T<参照引用表>.T<参照引用字段>,T<字段>)

{前提需要:来自目标表的一组数据集合P;

开始:

P=φ;

IF目标表中对应字段值为空THEN执行INSERT语句插入目标值;

ELSE IF执行UPDATE相关语句更新数据;

}

2 支撑元模型构建

2.1 元数据驱动

元数据驱动[8]:数据在程序中不是被加工的对象,而是通过元数据值的改变来改变程序的行为,控制程序的运行,这样称为元数据驱动。按照传统的定义,元数据是描述数据的数据。元数据的典型表现为对象的描述,即对数据库、表、列、列属性(类型、格式、约束等)以及主键/外键关联等的描述。

2.2 支撑元数据存储模型

2.2.1 支撑元模型构建

基于元数据驱动映射工具,数据库中需存储大量的元数据信息,将这些元数据进行分类,存储在对应模型中,通过元数据模型对元数据进行管理与维护。重点在于构建映射元数据存储模型,元数据的模型中主要实现进行数据转换的数据源位置、属性描述与映射函数参数信息的配置。具体元数据信息包括:

①数据源数据库信息,包含数据库类型、数据库版本号、数据库名、访问数据库的URL、访问数据库的用户名密码等信息;

②源数据库与目标数据库的对应关系,描述为数据库之间的映射关系,库级映射;

③源—目标表的对应关系,描述为表间的映射关系,表级映射;

④数据源表的字段信息和目标表字段信息,如字段的名称、代码、类型、宽精度等信息;

⑤源—目标字段的对应关系,描述为字段之间的映射关系,字段级映射;

⑥映射函数参数信息,包含各个映射模式函数的接口参数、控制条件、映射转换规则等信息。

2.2.2 配置元数据

配置元数据包括定义源、目标数据源的位置及各个数据源的属性、确定从源数据到目标数据的对应映射转换规则、确定数据处理相关的业务逻辑、在数据实际加载前的其他必要的准备工作。这些情况都是在配置元数据阶段要考虑的问题,在具体模型进行转换的过程中,通过配置元数据实现映射规则函数与转换规则的扩展,满足用户对数据转换过程更为复杂的需求。通过对元数据的配置来控制其整个异构数据转换任务。

元数据是基于配置的,基于元数据驱动技术的开发实际上就是基于配置的元数据的开发。针对业务数目较多的情况,仅需要增加元数据的数量,实现通过修改元数据来满足用户对程序的变更需求,配置相应元数据代替修改程序的过程,使得这种基于配置元数据的方式更为高效。这样,不仅减少了应用人员工作量,并使得程序具有良好的开发性能。

3 算法实现

3.1 ETL 技术

ETL(Extraction-Transformation-Loading)分为 3个步骤,Extraction:数据抽取是从数据源中抽取数据的过程。Transformation:数据转换是将抽取出来源数据转换为目标数据的数据处理过程。Loading:数据加载是将转换和处理后的数据加载到目标库中。如图1使用元数据驱动ETL的这3个步骤行为实现,使得该处理流程易于扩充及维护。本研究按照ETL体系结构中的数据转换部分展开,在数据处理过程中,基于映射关系调用相应映射模式的数据转换函数,完成数据的转换。因此基于ETL框架技术[9]能够很好实现异构关系模型数据间的数据转换。

图1 元数据存储模型

3.2 系统的体系结构

该系统是基于ETL的体系结构实现的,图2为数据转换体系结构。

①数据源:源数据的数据库或文件。

②目标库:存储从源数据库中抽取出来经过数据转换后的数据库或文件。

③通用访问接口:采用OLEDB和ODBC技术[10]进行访问的接口程序。

④数据抽取模块:抽取源数据库中的源数据。

⑤数据转换模块:将源数据转化为目标数据。

⑥数据加载模块:负责配置数据加载环境,将转换后的数据加载到目标数据库。

⑦元数据定制模块:获取源、目标库的结构信息及映射模式等信息,定制映射模式元数据。

⑧元数据库:作为框架核心,元数据库存储支撑元数据与驱动元数据。

3.3 系统实现

该基于元数据驱动的数据转换系统采用.NET平台,使用C#语言编程实现。

①映射规则定义:选择源数据库中的一个数据表,确定该表的迁移流程,选择与其对应的一个目标表,选取表中需要建立映射关系的字段建立映射,如果一个源表对应多个目标表,可以对该源表重复建立映射。定制映射规则界面如图3所示。

图2 ETL体系结构

图3 映射规则定义功能界面

②数据转换与加载:首先获取驱动元数据,从源数据库中抽取源数据,根据对应映射规则,调用转换函数,对数据中转区中的数据进行编译处理。其次,解析映射模式元数据中的目标库结构信息、加载方式信息,构造加载的SQL语句,在目标库中执行,并记录执行结果,最终存储到数据库中,同时反馈给用户。数据转换功能界面与数据加载界面如图4、图5所示。

图4 数据转换功能界面

4 结论与展望

结合油田企业中异构数据模型间数据转换的问题,研究基于元数据驱动的数据转换技术,构建了用于描述和存储映射策略的系列支撑元模型,对各种映射模式进行了详细的定义,并对映射模式的表示方法及转换规则函数进行详细描述,实现了相应模式的映射转换算法。在油田项目中得到灵活应用,具有可扩展性、灵活性等优点。

图5 数据加载界面

本研究还存在许多需要进一步研究和解决的问题,这也是下一步需要研究的内容:在映射规则构建过程中,用户手工定制工作量较大,人工定制过程依赖性强;映射规则的自治构建。

[1]钟华,冯文澜,谭红星,等.面向数据集成的ETL系统设计与实现[J].计算机科学,2004,31(9):87-90.

[2]Meng Xiaofeng,Zhou Longxiang,Wang Shan.State of the art and trends in database research[J].Journal of Software,2004,15(12):1822-1834.

[3]钱菁,黄光明.异构数据库间数据迁移的实现方法[J].微型电脑应用,2002,18(3):10-12.

[4]Xu L,Embley D W.A composite approach to automating direct and indirect schema mappings[J].Information Systems,2006,31(8):697-732.

[5]Zhao Jian,Chen Songqiao.Research of data mapping relationship and data object for a data integration tool[J].Microcomputer Development,2005,15(3):76-78.

[6]George Fletcher H L,Catharine Wyss M.Towards a general framework for effective solutions to the data mapping problem[J].Data Semantics,2009,14(1):37-73.

[7]熊辉,刘彦峰,郭大庆.分布式异构数据库迁移系统的设计与实现[J].计算机工程,2008,34(4):57-59.

[8]宋杰,王大玲,鲍玉斌.一种元数据驱动的ETL方法研究[J].小型微型计算机系统,2007,28(12):2167-2173.

[9]吴远红.ETL执行过程的优化研究[J].计算机科学,2007,34(1):81-83.

[10]Wang Yuanzhen,Li Haibo.Design and implementation of data ETL tools basing on OLEDB[J].Mini-Micro Systems,2002,23(4):453-455.

猜你喜欢

主键字段数据模型
基于Go 实现的分布式主键系统研究
图书馆中文图书编目外包数据质量控制分析
基于外键的E-R图绘制方法研究
面板数据模型截面相关检验方法综述
财政支出效率与产业结构:要素积累与流动——基于DEA 和省级面板数据模型的实证研究
CNMARC304字段和314字段责任附注方式解析
无正题名文献著录方法评述
基于分位数回归的电力负荷特性预测面板数据模型
关于CNMARC的3--字段改革的必要性与可行性研究
数据库主键设置探讨