论文部分内容阅读
摘要 数据集成是企业应用的最基本功能,OpenAdaptor是基于组件的框架结构,能够在异构的数据源之间构建数据适配器,快速实现异构数据源间的数据交换,为企业的业务集成奠定了基础,本文基于OpenAdaptor的结构,设计实现了能够实现数据抽取和转换功能的适配器。
关键词:数据适配器 OpenAdaptor
中图分类号:TP311 文献标识码:A
一、引言
企业的信息系统往往是各部门在不同的时间实现的多个不同的子系统,这些子系统往往没有遵守统一的数据定义,这给子系统间的数据交换带来很多困难,企业的信息系统形成各自为阵的“信息孤岛”,而现在市场竞争要求企业必须提高自身的业务整合能力,这就要求企业信息系统能够适应企业内部、甚至企业之间的快速的信息共享和业务整合。数据集成功能是满足这类应用的最基本的需求。OpenAdaptor是基于组件的数据适配器框架,能快速完成数据集成功能,具有组件化的优点和快速开发、易于定制的特点,本文基于OpenAdaptor结构,设计实现了具有数据抽取和转换功能的数据适配器。
二、OpenAdaptor的原理
异构数据源之间的数据迁移可以分为三个阶段:抽取,转换和加载[1]。OpenAdaptor将这三类功能组件化,sources内置组件读取源端数据并将其转化为公共数据表示,pipes内置组件完成数据过滤、加密、数据转换等,sinks内置组件完成数据加载,将公共数据转化为目的数据格式,将数据写入目的端。OpenAdaptor提供了支持多种标准的sources组件和sinks组件,包括文本文件类型,套接字,数据库,中间件,JMS等[2]。
三、异构数据库间数据适配器的设计与实现
关系数据库依然是现在数据存储的主流方式,下面以读取SQL Server数据库贷款表数据为例,分析适配器的设计,重点讲述数据抽取的设计与实现,此适配器最终将数据发布到JMS消息中间件。
MSSqlSource读出SQL Server数据库数据,AliasePipeLine改变属性名和增加新的属性,JMSSink将消息发布到JMS和FileSink将消息写入XML文件,FileSink文件用于检验数据的正确性。
此适配器的需求分析如下:适配器完成相应的数据集成服务(对应一个服务名),数据库表对应一个适配器服务名,读取出的数据库表数据需要转换为公共数据类型,由此对应一个公共数据类型名。
为了能够访问不同的数据库表中的记录,需在数据库中设计新的对象,包括数据表BCG_Msg、字典表BCG_MsgType、BCG_MsgService和三个存储过程BCG_GetNextQueuedMsg、BCG_GetNextMsgInFull、BCG_SetMsgQueueStatus。
三个表的说明如下:
BCG_Msg:信息表,记录数据库表关键码的值和该库表对应的适配器服务号,公共数据类型号,消息状态等。消息状态分为“new”、 “pending”、 “sent”。
BCG_MsgService:适配器服务表,该表记录适配器相关信息,与适配器配置文件里的服务器名一致。
BCG_MsgType:消息类型表,记录消息类型名,即公共数据类型名,读取此消息的数据集所需的存储过程名。
三个存储过程作用如下:
BCG_GetNextQueuedMsg获取BCG_Msg中最近的“new”消息,
BCG_SetMsgQueueStatus修改消息状态,BCG_GetNextMsgInFull起协调作用。
MSSqlSource读取过程如图1所示:
图1 MSSqlSource消息生成时序图
MSSqlSource读取适配器配置文件里的服务名,从适配器服务表里对应的服务号MsgServiceId,根据MsgServiceId,调用BCG_GetNextMsgInFull,BCG_GetNextMsgInFull调用BCG_GetNextQueuedMsg,获得最早的状态为“new”的消息,调用BCG_SetMsgQueueStatus 将该消息状态修改为“pending”,BCG_GetNextMsgInFull根据消息类型号获得需调用的存储过程名sp_get_loan_deposit(读取贷款表记录),sp_get_loan_deposit根据传入的参数,执行查询,MSSqlSource根据返回的结果集和公共数据类型名生成公共数据,传入传输管道,待数据提交成功后调用BCG_SetMsgQueueStatus将消息状态改为“sent”。MSSqlSource定期重复以上过程。
增加数据字典项:绑定贷款表与对应的适配器服务号和公共数据类型号
insert BCG_MsgService (MsgServiceName, MsgServiceDesc)
values ("Example", "Another Service")
insert BCG_MsgType (MsgTypeName, MsgTypeDesc, MsgSprocName)
values(‘GetLoanDeposit’,’Loanexample’, ‘sp_get_loan_deposit’)
源端系统编写触发器,将新增贷款记录的主键值,数据字典表中服务ID和消息类型ID,当前时间,“new”状态写入BCG_Msg表。
四 结论
OpenAdaptor基于组件的数据集成适配器框架,只需编写很少的代码量就可以完成开发,使用OpenAdaptor适配器编程,可以满足任何两个系统之间的数据迁移,降低了复杂业务系统之间的数据集成的复杂性。本文介绍了异构数据库之间数据集成的设计和实现方法,具有较好的应用价值。
参考文献:
[1] 钟华, 冯文澜, 面向数据集成的ETL系统设计与实现 计算机科学,2004Vol.31NO.9:88-89
[2] OpenAdaptor Progammer’s guide V1.7.2.2 July 2006
关键词:数据适配器 OpenAdaptor
中图分类号:TP311 文献标识码:A
一、引言
企业的信息系统往往是各部门在不同的时间实现的多个不同的子系统,这些子系统往往没有遵守统一的数据定义,这给子系统间的数据交换带来很多困难,企业的信息系统形成各自为阵的“信息孤岛”,而现在市场竞争要求企业必须提高自身的业务整合能力,这就要求企业信息系统能够适应企业内部、甚至企业之间的快速的信息共享和业务整合。数据集成功能是满足这类应用的最基本的需求。OpenAdaptor是基于组件的数据适配器框架,能快速完成数据集成功能,具有组件化的优点和快速开发、易于定制的特点,本文基于OpenAdaptor结构,设计实现了具有数据抽取和转换功能的数据适配器。
二、OpenAdaptor的原理
异构数据源之间的数据迁移可以分为三个阶段:抽取,转换和加载[1]。OpenAdaptor将这三类功能组件化,sources内置组件读取源端数据并将其转化为公共数据表示,pipes内置组件完成数据过滤、加密、数据转换等,sinks内置组件完成数据加载,将公共数据转化为目的数据格式,将数据写入目的端。OpenAdaptor提供了支持多种标准的sources组件和sinks组件,包括文本文件类型,套接字,数据库,中间件,JMS等[2]。
三、异构数据库间数据适配器的设计与实现
关系数据库依然是现在数据存储的主流方式,下面以读取SQL Server数据库贷款表数据为例,分析适配器的设计,重点讲述数据抽取的设计与实现,此适配器最终将数据发布到JMS消息中间件。
MSSqlSource读出SQL Server数据库数据,AliasePipeLine改变属性名和增加新的属性,JMSSink将消息发布到JMS和FileSink将消息写入XML文件,FileSink文件用于检验数据的正确性。
此适配器的需求分析如下:适配器完成相应的数据集成服务(对应一个服务名),数据库表对应一个适配器服务名,读取出的数据库表数据需要转换为公共数据类型,由此对应一个公共数据类型名。
为了能够访问不同的数据库表中的记录,需在数据库中设计新的对象,包括数据表BCG_Msg、字典表BCG_MsgType、BCG_MsgService和三个存储过程BCG_GetNextQueuedMsg、BCG_GetNextMsgInFull、BCG_SetMsgQueueStatus。
三个表的说明如下:
BCG_Msg:信息表,记录数据库表关键码的值和该库表对应的适配器服务号,公共数据类型号,消息状态等。消息状态分为“new”、 “pending”、 “sent”。
BCG_MsgService:适配器服务表,该表记录适配器相关信息,与适配器配置文件里的服务器名一致。
BCG_MsgType:消息类型表,记录消息类型名,即公共数据类型名,读取此消息的数据集所需的存储过程名。
三个存储过程作用如下:
BCG_GetNextQueuedMsg获取BCG_Msg中最近的“new”消息,
BCG_SetMsgQueueStatus修改消息状态,BCG_GetNextMsgInFull起协调作用。
MSSqlSource读取过程如图1所示:
图1 MSSqlSource消息生成时序图
MSSqlSource读取适配器配置文件里的服务名,从适配器服务表里对应的服务号MsgServiceId,根据MsgServiceId,调用BCG_GetNextMsgInFull,BCG_GetNextMsgInFull调用BCG_GetNextQueuedMsg,获得最早的状态为“new”的消息,调用BCG_SetMsgQueueStatus 将该消息状态修改为“pending”,BCG_GetNextMsgInFull根据消息类型号获得需调用的存储过程名sp_get_loan_deposit(读取贷款表记录),sp_get_loan_deposit根据传入的参数,执行查询,MSSqlSource根据返回的结果集和公共数据类型名生成公共数据,传入传输管道,待数据提交成功后调用BCG_SetMsgQueueStatus将消息状态改为“sent”。MSSqlSource定期重复以上过程。
增加数据字典项:绑定贷款表与对应的适配器服务号和公共数据类型号
insert BCG_MsgService (MsgServiceName, MsgServiceDesc)
values ("Example", "Another Service")
insert BCG_MsgType (MsgTypeName, MsgTypeDesc, MsgSprocName)
values(‘GetLoanDeposit’,’Loanexample’, ‘sp_get_loan_deposit’)
源端系统编写触发器,将新增贷款记录的主键值,数据字典表中服务ID和消息类型ID,当前时间,“new”状态写入BCG_Msg表。
四 结论
OpenAdaptor基于组件的数据集成适配器框架,只需编写很少的代码量就可以完成开发,使用OpenAdaptor适配器编程,可以满足任何两个系统之间的数据迁移,降低了复杂业务系统之间的数据集成的复杂性。本文介绍了异构数据库之间数据集成的设计和实现方法,具有较好的应用价值。
参考文献:
[1] 钟华, 冯文澜, 面向数据集成的ETL系统设计与实现 计算机科学,2004Vol.31NO.9:88-89
[2] OpenAdaptor Progammer’s guide V1.7.2.2 July 2006