异构数据迁移方法研究

2024-06-03

异构数据迁移方法研究(精选4篇)

异构数据迁移方法研究 篇1

0 引言

随着企业的发展, 企业原有的各种信息系统常常需要升级, 以性能更好、规模更大的系统替代原有的系统。例如企业常常考虑使用Oracle或DB2等大型数据库软件来代替MS SqlServer, 在信息系统升级中, 一个不可避免的问题就是数据迁移。而在不同数据库之间进行数据迁移是其中的一个难点, 因为不同厂商的数据库中定义的数据类型不尽相同, 企业可以选择一些数据库系统自带的工具软件进行数据迁移, 例如Oracle公司的Migration WorkBench、MS SQLServer的DTS (Data Transformation Service, 数据转换服务) 。但是这些工具的针对性不强, 不够灵活[1], 所以许多企业在升级数据库时, 常常自己编写软件来完成数据迁移。

本文设计的系统专门用于MS SQL Server和Oracle数据库之间的数据迁移, 本系统采用了Java为编程语言, 采用Oracle10g和SQL server2005作为数据库环境, 并利用Java语言的跨平台性和JDBC的无差异数据使用来为数据迁移提供技术支撑。

1 系统设计和实现

1.1 总体设计

为实现数据迁移功能, 将系统划分为下面几个步骤: (1) 读取源数据; (2) 生成数据转换的规则; (3) 使用Java语言实现操作[2]。

1.2 系统结构设计

系统结构用来描述系统内部各组成要素之间的相互联系、相互作用的方式或秩序, 即各要素在时间或空间上排列和组合的具体形式。系统功能结构设计如图1所示。下面依照这个结构图来描述各个软件功能模块。

(1) 连接模块。使用此系统之前, 必须先连接数据库。本功能模块用于连接SQL Server数据库和Oracle数据库, 通过输入数据库连接所需的用户名、密码、数据库名称等。

(2) Oracle数据区模块。该模块用于显示所连接的Oracle数据库及表的信息。用户通过连接模块进行数据库连接, 如果连接成功, 将在窗口中显示当前连接的服务器下各个Oracle数据库的结构, 采用树形结构显示。显示信息包括服务器、用户名和当前用户可以访问的表。用户可以查看表名称、表中的字段属性及约束条件等详细信息。

(3) SQL Server数据区模块。该模块用于显示所连接的SQL Server数据库及表的信息。用户通过连接模块进行数据库连接, 连接成功后将在窗口中显示各个数据库的结构, 以树形结构显示, 结构分3层, 最上面是现在已连接的SQL Server数据库的服务器名, 第2层为现在可以访问的数据库名。

(4) 操作模块。本模块的主要功能是对选中的表进行操作, 分为两个界面, 左边显示SQL Server数据库信息, 右边显示Oracle数据库信息。

迁移表的操作是新建表与删除表操作, 用户在界面左边选择SQL Server数据库中的一个表, 这时本系统会在连接的Oracle数据库中查找是否存在同样的表, 如果没有, 将会在Oracle数据库中新建立一个表, 表的字段、数据类型、约束条件、主键等信息全部通过读取相应的SQL Server数据库获得, 按照本系统预先建立的数据类型转换对应表, 生成SQL语句并在Oracle数据库中运行该语句以建立相应的表。这个过程完成了以下操作:读取SQL Server数据库->生成SQL语句->在Oracle数据中建立表, 这就相当于完成了从SQL Server到Oracle的表的迁移。

(5) 操作结果模块。本模块用于显示数据迁移完成后的结果。这些信息包括用户选中表中的各个字段信息、表中的具体数据, 还有根据数据类型转换规则执行后的一些字段信息和生成的SQL语句, 以及在目的数据库表中的新数据和系统本身记录下来的操作日志。

(6) 辅助功能。在迁移过程中显示迁移的时间进度表, 提示估计完成时间和剩余时间, 如果迁移过程中出现错误, 将中止迁移操作并且提示错误类型和出错位置等信息。

2 系统详细设计

详细设计的主要任务是设计每个模块的实现算法、所需的局部数据结构。详细设计的目标有两个:实现模块功能的算法逻辑上要正确且算法描述要简明易懂。这里仅描述这个阶段的关键步骤。

2.1 操作区模块

迁移模块主要完成的工作有:

(1) 连接Oracle和SQL Server数据库。

(2) 从SQL Server到Oracle数据库的迁移。该操作实现过程如下: (1) 从SQL Server数据库中获取到将要迁移的表; (2) 获得表的详细信息:表名、数据类型、约束条件、主键等; (3) 从Oracle数据库中寻找相应的数据库, 如果没有则重新建立新数据库; (4) 完成从SQL Server到Oracle的迁移; (5) 提示迁移成功消息框, 完成迁移日志记录。

(3) 从Oracle到SQL Server数据库的迁移。实现的方法和从SQL Server到Oracle数据库的迁移方法相似, 不再赘述。

2.2 大数据字段的迁移

在数据迁移过程中有一些大数据字段的迁移比较复杂, 所以单独在本节进行分析。例如, 在SQL Server表中有一种二进制数据类型是image, Oracle数据库中没有image数据类型, 但是Oracle有存储为二进制数据的类型, 比如BLOB类型, 这样就可以将SQL Server中的image类型转换为Oracle中的BLOB[4]。下面对步骤进行描述:

首先使用SQL语句以获得一个结果集, 然后调用这个结果集的getBinaryStream方法, 从而获得二进制数据, 接下来将此二进制数据写入到一个临时文件中。接下来, 就可以把数据转换成BLOB型存到Oracle表中[5]。

因为BLOB类型的特殊性, 这里写入BLOB字段与写入其它类型字段的方式不同。由于BLOB必须使用其自身的cursor才能对BLOB进行操作, 所以在写入BLOB之前需要获取cursor。

可以先插入一个空的BLOB, 这会创建一个BLOB的cursor, 接下来再将这个空的BLOB的cursor查询出来。这样通过两个步骤, 就间接获得了BLOB的cursor, 此时才能真正写入BLOB数据了, 代码编写需分成3个步骤来完成这个功能[6]。

(1) 插入空BLOB:

into javatest (name, content) values (?, empty_blob () ) ;

(2) 获得BLOB的cursor:

select content from javatest where name=?

(3) 用cursor写数据:

update javatest set content=?where name=?

通过上面几个步骤就能完成从image到BLOB的转换。而text到CLOB的方法, 以及ntext到NCLOB的转换, 因为都是二进制数据, 所以可以用相同的方法实现, 这里不再赘述。

3 系统测试

为了测试系统的有效性, 特设置测试环境[7]用于测试, 方法是从Oracle数据库中将较大的数据量迁移到SQL Server数据库中, 测试数据使用Oracle中样例数据库SH中的SH.SALES和SH.PRODUCTS两个表, 两个表的数据行约为100万行和1万行。实验主机配置为表1所示。

为了更好地比较, 测试中还选用了SQL Server自带的数据迁移工具DTS, 当迁移完成后记录测试中所花费的时间和内存资源, 如表2所示。

从表2可知, 使用DTS运行时占用内存资源比较稳定, 消耗内存资源比较少;而迁移系统在运行时仅耗内存资源50~120MB。当数据量比较小时, 所需内存资源比较小;当数据增加时, DTS所耗内存资源将随着迁移数据的增加而显著增加。

本系统对两个表的迁移都比SQL Server自带工具DTS要快, 并且数据量越大时, 效率越明显。虽然使用本系统将会耗费更多的内存, 但在目前机器内存普遍比较高的情况下, 多占用一些内存并不影响系统的有效性。

4 结语

文中对异构数据库进行了研究, 对SQL Server和Oracle数据库的数据类型进行了分析, 根据软件工程思想对系统进行了总体设计和详细设计, 并使用Java程序设计了语言实现系统。该系统可以在SQL Server和Oracle数据库之间进行数据迁移, 最后通过搭建测试环境证实了系统的有效性。

参考文献

[1]张玲.数据库迁移测试系统的设计与实现[D].大连:大连理工大学, 2005.

[2]陈海宁, 索旺.Java语言案例教程[M].北京:北京工业大学出版社, 2000.

[3]刘天时, 孟东升.信息系统数据迁移方法研究与应用[J].西北大学学报:自然科学版, 2006 (1) .

[4]于海涛.基于Java的异构数据库间数据迁移[D].长春:吉林大学, 2007.

[5]罗林球, 孟琦, 李晓.异构数据库迁移的设计和实现[J].计算机应用研究, 2006 (1) .

[6]余秋明.异构数据库间数据迁移[D].南昌:南昌大学, 2009.

[7]刁兴春, 严浩, 丁鲲.异构数据转换关键技术的实现[J].计算机工程, 2008 (17) .

异构数据迁移方法研究 篇2

随着信息化的快速发展,掌上电脑即PDA (Personal Digital Assistant) 的使用范围越来越广。PDA除了作为辅助个人工作的数字工具,提供记事、通讯录、名片交换及行程安排等功能外,已经在各行业得到广泛使用。如供水、供电、供气等服务行业的抄表机,就是PDA的一个典型应用,行业传统的手工抄表模式已经逐渐被抄表机替代。本文主要研究PDA数据如何与行业大型数据库实现数据快速交换的技术。

1、PDA概述

PDA就是个人数字助理的意思,作为电脑的外围助理,它的功能丰富,应用简便,可以满足日常多数需求,譬如看书,游戏,字典,学习,记事,看电影等等。它可用来管理个人信息如通讯录,他可以实现和电脑的数据传输。数据传输接口是掌上电脑与个人电脑等其他设备之间进行连接的接口。凭此接口PDA和其他设备之间能够实现上传下载、资料同步等功能。

2、抄表机发展

把PDA加上行业应用软件,就成了目前行业广泛应用的抄表机。我国上个世纪80年代就已经开始研究抄表机技术,由于技术和价格等因素,直到近十年才得到普及应用。今天抄表机C PU多采用32位内存可达到32M,通讯接口丰富,如RS232、红外、USB和蓝牙接口等。

由于供电、供水等行业都已经普及了MIS系统,而这些行业收费的依据是居民的用电用水数据。这些数据通常要在每月的某几天集中采集。传统方法使用纸质表卡抄表,录入工作量大,容易产生漏抄、估抄、以及一些违章等因素。而使用抄表机抄表,可以实现数据快速录入,并且准确度高,从而极大地提高了工作效率,这也是这几年抄表机得到普及的一个原因。

3、异构数据库迁移技术

目前在行业的各个信息化领域中, 由于信息化发展过程中步调不一致等因素限制,导致一个单位有多种数据库管理系统, 例如Oracle、SQL Server、Access、FoxPro等。而实际应用过程中往往需要共享不同数据库系统之间的数据。尽管像SQL Server数据库本身自带的DTS功能能够解决部分数据导入导出功能,但总是不能解决所有问题,而且通常需要专业人士来操作。例如行业中使用的抄表机通常使用的就是DBF表。而目前中小企业使用比较广泛的数据库产品是SQL Server。如何实现这两个不同数据库产品的数据快速导入导出是需要研究的问题。目前的研究大致有如下几种方法:1)采用SQL Server本身自带的DTS来实现转换;2)采用基于XML中间件实现异构数据的转换;3)采用程序设计语言通过循环来实现异构数据导入导出。第一种方法能够实现,但是通常在数据库后台去实现,对数据库知识要求过高,通常由数据库管理员来实现,而企业MIS系统使用期间,往往限制直接在后台操作数据库,即使不限制,使用起来也比较麻烦。第二种方法较为可行,但是实际使用起来对于大量数据来讲效率也不尽人意。第三种方法是放之四海而皆准的,但是对于几十万条或更多的数据来讲,程序循环就不是最好的选择了。

4、数据快速迁移技术实现

本研究通过BDE来实现对以上数据模型的解决方案,目前已经成功应用在抄表机数据的上传和下载,实践证明方法安全可靠,速度快,效率最高。

BDE是 (Borland Database Engine) 宝兰数据引擎的缩写,它不仅能访问本地的不同数据库,还可以将数据从本地上传到客户机-服务器系统,而且有很高的效率。这里以Delphi为例,介绍数据迁移的过程。

本文以供电公司前台电脑进行抄表机数据上传为例说明技术实现过程。模型后台数据库为SQL Server,抄表机为捷宝9800,其中数据为DBF格式数据。

首先,要安装BDE数据引擎,数据上传在这里分两步,先通过程序将DBF表拷贝到目标电脑指定文件夹,然后通过BDE引擎将数据导入到SQL Server的过程。这里主要介绍将数据通过BDE引擎导入到SQL Server的过程。

在Delphi窗体上加入Query, Session和两个别名分别为sql和dbf的database控件(如图1所示), 定义MyList:TStringList;GetAlias:TStringList;两个变量,来实现BDE别名的创建,创建SQL Server BDE别名代码如下:

本例以"d:data"文件夹存放DBF表为例子,来创建DBF表的BDE别名。代码如下:

别名创建好以后,我们利用query组件来实现DBF数据向SQL Server数据表导入数据。这里以SQL Server数据库中的一个名为Tmptable的数据表为例,进行数据导入。代码如下:

5、结论

从以上代码可以看出,我们利用BDE操作两种异构数据库,就像在同一数据库中利用sql语句来操作,实现记录的添加,修改,删除以及查询,从而简化了针对异构数据库的协同操作。将以上技术实现对抄表机的数据进行上传下载,实际使用中安全稳定,数据传输效率高。

参考文献

[1]李锐, 刘旭光, 娄智.安徽交通科技信息共享平台数据交换体系设计与实现[J].安徽农业大学学报, 2009, (03) .

[2]靖定国.SQL Server DTS在企业中的应用[J].科技信息, 2010, (04)

[3]王荧, 孙忠林, 田刚.异构关系型数据集成中间件研究[J].福建电脑, 2007, (01) .

[4]周洪波.手持抄表系统关键问题的研究[D].北京邮电大学, 2006

异构数据迁移方法研究 篇3

随着目前企业信息化进程的加速,企业数据中心的建设日益重要。很多企业的应用系统已经运行数年或者更长的时间,因此积累了大量的数据。如“中石油大庆油田公司A2施工总结数据”。数据迁移是将这些旧应用系统的数据迁移到新系统中,而有些旧系统还会继续运行,还会产生新的数据,根据实际情况迫切需要找到将历史数据实时合理地迁移到新系统中去的一种新方法.

2 介绍传统数据的迁移方法

四种传统的迁移方法有:先迁后录[1]、先录后迁、分次迁、一次性迁。

先迁后录是指:在系统单轨运行前通过市场用的迁移工具或自行开发的程序,将老系统数据转入到新系统模型中,再利用新系统功能,也可自行开发配套程序,把迁移到新系统中的老数据,再根据需要生成原有的结果数据。这种方法大大减少迁移量。

先录后迁是指:在系统单轨前,首先把部分数据输到新系统中,系统单轨时再把以前的老数据导入新系统数据库中。这种方法主要适用于新老系统数据结构差别很大情况,不能将重要的历史数据导入到新系统中。这些必须的重要数据在应用新系统前通过手工录入到新系统中。

分次迁移是指:利用市场用的迁移工具或自行开发的程序,把老数据库中的重要的历史数据分几次做迁移。这种方法把大任务分成小任务,避免了数据量大和宕机时间短之间的相矛盾的发生。这种方法的缺点是:由于数据多次合并导致了出错的概率升高,同时为了保持整体数据的一致性,这种方法要求把先导入的数据进行同步,由此使导入数据的难度增加。

一次迁移是指:利用市场用的迁移工具或自行开发的程序,把老数据库中的数据通过这种方法一次性全部导入到新数据库中。这种方法的优点是:过程用时短,与分次迁移相比较,问题涉及的较少,风险较低,其缺点是:迁移过程不太受控,而且劳动强度大。

而这些迁移策略不能够满足用户对于数据及时迁移的需要。因此本文提出了历史数据迁移、实时数据迁移、手动数据迁移多种策略,这些策略满足了数据进入新系统的及时性要求,目前此系统已经在中石油大庆油田井下数据中心中投入使用。

3 数据迁移策略框架体系模型设计

图1为基于多种迁移策略的迁移体系结构模型。对于历史数据和实时数据给予不同的迁移策略,实现了多种形式数据的迁移。

3.1 数据模型映射

数据模型映射[2]通过多种迁移方法来实现。什么是数据模型映射?它是通过一个映射规则,建立起一个目标模型和源模型之间的关系。在源模型和目标模型的描述已存在的情况下开始映射。模型映射即是数据映射。

一些数据映射关系的基本概念如下:

映射属性和映射实体。反映源系统与目标系统在概念模型上的对应关系[3]是用户可以见到的较高视图的映射实体。也是映射关系的最底层,属于规则处理的最小单位。表格与实体的对应,说明了引用和实体的完整性,属性映射是实现映射实体和映射属性的基础。不论引用完整性和实体完整性,都需要属性来实现。映射实体可分为目标映射实体和源映射实体;映射属性又可分为:分为目标映射属性和源映射属性。

映射关系

映射关系是指:目标实体和源实体属性之间的关系。有向线段和映射模式(MM)构成映射关系。映射源映射实体的映射属性就是映射关联起始节点,映射的目标实体的映射属性就是映射关联的目标节点。

三种形式 的映射模 式分别为 为 :语义映射 模式(SE-MA_MM)[4]、数据映射模式和算数映射模式。语义映射模式用于解决属性概念的语义计算。数据映射模式表示常量数值。算数映射用于表示属性间的加减等算数操作运算。

什么是数据映射关系

数据映射关系是:如M<STM,R>就是一个三元组,映射关系名称用M表示,映射关联集合用R表示,映射算子集合用MO表示。映射关系语法的表示方法可用BNF范式表示,术语符号用”...”:表示;尖括号表示必须选择项;定义为用::=表示;中括号用业表示可选项;大括号表示可重复无限次;左右两边的任意选择项用|:表示;分组用于(...)表示:;参数用斜体字表示。描述映射关系规则如下:映射关系的语法描述如下。

3.2 元数据设计

根据以上对映射关系描述,映射模式又可分类为:从源映射实体到目标映射实体间的映射关系,对每一类映射关系又可定义为一类映射模式。但是,每一类映射模式又是一类数据转换规则;通过对油田A2数据模型的研究,由映射模式的三大类,被细分为16种映射模式。由支撑元数据可定制映射模式元数据。对应数据库间对应字段的映射模式是映射模式元数据的核心,它定义了数据表结构的转换以及处理方式,这些信息集中存储在元模型中。映射元数据模型见图2映射元数据模型图。

3.3多策略数据迁移系统工具框架结构图

工具的总体设计思想是:由于迁移的数据量很大,首先对历史数据进行历史数据迁移;对于各个应用系统产生的实时数据,通过定时迁移模块进行定时触发迁移;还提供了手动触发迁移模式,在手动触发模块中用户可以通过选择表及其父表、选择实体(井、施工事件)实现实时数据迁移的触发。历史数据和实时数据在迁移的过程中产生的迁移日志存入相应的文件中(图3多策略数据迁移系统工具框架结构图)

4 工具实现与应用

4.1手动迁移模块的具体实现

手动迁移模块中提供了两种对象间的对应关系:实体对应关系;表格对应关系。

表格对应关系的实现:

定义表集合

单继承表:

筛选重复表:

在A2施工总结迁移工具中,不仅提供单表之间的对应关系还提供单表及其父表的对应关系。当用户在选择表的时候可能会出现多个表的父表重复的情况。如果对每一个被选择的表及其父表都进行迁移必然会增加系统负担,降低执行效率,因此需要对用户选择的所有表进行遍历,形成一个有序的集合进行迁移。

有两种基本机构:在初始化的过程中,把A2施工总结中所有的表组成一个顺序线性链表[5],每张表相当于树中的一个节点,每个节点存储着表代码(code)、确认标志(sign)、节点路径(path)三种节点信息。而树的继承关系由表的父子关系来描述的。(如图4表组成的有序树与节点所示)

步骤1:初始化树节点

当选择表格以后,首先对树的节点进行初始化,所有节点形成一个顺序线性链表。节点的顺序使用各个表所在的父子关系来描述。在映射表顺序信息中每个表的继承顺序采用目录方式进行存储,实现的SQL语句如下所示:

Select * from sequ_t t where t.sequence is not null order bylength(t.sequence),t.sequence

步骤2:得到被选择的一个表的顺序表

对于选择的第个节点使用递归方式找出其所有的父表,得到一个顺序表:。使用Li代表节点Ti的路径的目录数,prev()是获得上一级节点的函数,那么得到节点Ti根节点递归表达式为:

步骤3:修改顺序线性链表

然后与初始化得到的顺序数进行比对并修改确认标志。

重复以上的过程直到最后一个被选择的节点操作完毕。操作过程如图5筛选重复表流程

4.2实现历史迁移模块的过程

4.2.1、实时获取迁移信息

由于历史数据迁移量较大,客户端向服务器的请求时间很长,所以出现了页面失效的问题。故采用Ajax[7]异步方式使迁移模块在服务器后台运行来实现历史数据的迁移,并把迁移过程中产生的日志信息存入日志文件中。为了读取所产生的日志信息,采用Jquery[6]定时器定时以同步方式从服务器取回迁移信息,并在客户端进行显示,使用Jquery框架能够很好的实现前台与后台的交互。如图6同步获取迁移信息的流程

5 结束语

该文描述了一个基于多种迁移策略的数据迁移的架构,构建了元数据模型,点讨论了映射规则和具体的实现,解决了各个应用系统的历史数据和实时数据的迁移。以上提到的迁移策略在实际工作中已经被采用,顺利的实现的源系统与目标系统数据的迁移,保证了系统的正常运转。

摘要:该文从迁移策略上介绍了包括历史数据迁移、实时数据迁移、手动数据迁移多种策略。从迁移的形式上介绍了包括了从增量迁移和全量迁移;实际中采用了元数据驱动技术,构建从旧系统到新系统的映射元模型并制定了映射规则;技术上使用了优秀的Java Script框架——Jquery和SQL语句完成了数据库数据的迁移。目前该系统已在数据中心建设中得到应用。

异构数据库间数据同步的方法实现 篇4

为了提升业务管理平台的易维护性、可延展性、数据安全性, 大多数业务管理平台选择将数据分层管理, 以轻量级业务管理平台为例, 既只将数据分离为数据采集层和数据应用层两层。数据的分离意味着不同数据层之间为了实现数据交互以满足业务需要就必须按照业务规则将数据采集层的数据同步到数据应用层。

数据同步在时间维度上可以分为实时数据同步和非实时数据同步。实时数据同步要求数据存储到采集层与同步到应用层同步进行, 几乎不存在时间差。非实时数据同步要求数据存储到采集层与同步到应用层异步进行, 即将数据存储到采集层之后根据业务需要按照规定的触发时间 (固定周期的固定时间点) 将数据采集层的数据同步到数据应用层。

本文以石油行业信息系统数据统计模块中针对数据实时性的迫切需求为背景进行讨论。支撑系统的数据由数据采集层和数据应用层组成, 拥有各自独立的数据库进行数据的管理。数据采集层采用指标维度的组合方式存储数据, 即一个数据单元是由一个指标及其对应的维度组 (多个维度的组合) 来唯一存储定位。系统开发初期使用ETL工具进行两个异构数据库之间的数据同步。数据应用层采用维度组与指标组联合定义事实表结构, 事实表与维度组所对应的维表关联形成星形模型, 通过BI工具进行建模, 按照业务规则将各项数据灵活地展现出来。

ETL的工作方式是在一个固定的周期或固定的时间点 (例:每天晚上十二点整) 批量地将数据采集层按照相应的业务规则同步到数据应用层, 这种方式必然会造成两个数据库之间在某些时间周期内存在数据差异性的问题, 无法满足用户“即填即用”的业务需求。由于ETL方式对于实时性数据要求的局限性, 最后探讨并提出了通过存储过程实现部分数据实时同步、通过ETL方式实现部分数据非实时同步的数据同步方案。

一、相关技术分析

通过ETL技术进行数据同步, 可以对多种操作 (数据源的数据抽取、转换, 维护) 过程进行简化和自动化管理, 定期或按调度接收数据, 并将其输入数据集市或数据仓库目标数据库的集成工具。ETL可以从多个不同的业务系统、多个平台的数据源中抽取数据, 完成转换和清洗, 将结果数据装载到各种系统里面。其提供了图形化的开发环境, 可维护性较强, 能自如应对业务的复杂变化, 兼容多种数据源。

虽然ETL技术具有非常强大的数据处理能力, 但其无法实现数据的实时同步, 即无法满足用户在数据采集层进行数据填报后随即在数据应用层进行数据分析、查询等操作。

存储过程 (STORED PROCEDURE) 是一组为了完成特定功能的SQL语句集, 是数据库中的一种重要对象。它能够接受输入参数, 并以输出参数的形式将多个数据值返回给调用程序, 包括执行状态, 并能够执行其他存储过程, 经过第一次编译后再次调用不需要再次编译, 是一种高性能的数据操作。

虽然存储过程是一种高性能的数据操作, 但其后台需要大量的SQL语句支撑其实现, 没有成熟的开发工具支撑, 面对灵活多变的业务, 其维护难度极大。

系统中数据采集层与数据应用层为异构数据, 数据采集层同步到数据应用层的数据量庞大, 并且一部分数据必须满足实时同步的业务要求, 所以数据采集层到数据应用层的异构数据同步既要满足大数据同步的要求, 又要满足实时数据同步的要求。通过对实时数据相关业务的分析, 发现其业务具有很强的稳定性, 故采用存储过程的方式实现实时数据的同步, 其他非实时数据采用ETL技术实现数据同步。同时选择两种不同的异构数据同步方式既满足了数据实时性的要求, 又满足了大批量数据同步的现实业务要求。

二、数据结构描述

数据采集层的数据存储是以指标、维度组合的方式实现存储, 即一个数据单元由一个指标及其对应的维度组 (多个维度的组合) 唯一存储定位, 如表1。

数据应用层按照维度组与指标组组合定义事实表 (如表2) , 事实表与事实表中各个维度对应的维度表相关联形成星形模型 (如图1) 。其中, 事实表中的一行数据代表数据采集层中所有维度相同的指标的数值信息。

三、数据实时同步 (存储过程数据同步)

数据实时同步实现步骤。系统中存储过程通过数据采集层与数据应用层之间的业务关联性构建视图实现数据采集层与数据应用层的异构数据转换。根据数据结构描述章节中提到的两个异构数据库间表结构的特点, 在视图中应用“行转列”方式, 对数据采集层的数据进行抽取和转换, 生成满足数据应用层要求的数据集, 并将数据集数据存储到数据应用层对应事实表中。

1) 创建存储过程。填报机构、填报年份、填报月份、报表编号四个参数, 定位数据采集层中唯一的报表实体, 并支撑数据抽取和转化视图数据抓取范围。考虑到存储过程的使用效率, 故将其建立在数据应用层中, 并建立数据应用层到数据采集层的DATABASE LINK连接支撑数据抽取和转化视图数据抓取。

2) 数据抽取和转换。根据数据采集层与数据应用层的业务逻辑以及数据模型特点, 通过“行转列”方式实现从数据采集层到数据应用层的SQL逻辑视图。

维度根据指标分组, 并将其行转列。具体实现代码如下:

维度行转列的执行结果, 如表3所示。

指标根据行转列后的维度组分组, 并将其行转列。具体实现代码如下:

指标行转列的执行结果, 如表4所示。

3) 数据存储。将数据抽取与转化视图生成的结果数据集定义为一个游标对象CURSOR, 具体代码模型如下:

CURSOR游标名称IS SELECT*FROM结果数据集SQL

获取到游标对象后, 可以通过LOOP循环获取每行数据, 逐行数据进行插入操作, 具体实例实现代码如下:

4) 日志记录。事实表表结构发生变化或者机器网络故障等突发情况下, 存储过程执行势必会受到影响, 通过事实表存储过程调用已创建的日志记录存储过程来定位事实表存储过程的执行情况。

日志记录存储过程包含报表编号、填报机构、填报年份、填报月份四个参数, 该参数组定位唯一存储过程的执行情况, 如果执行有异常, 那么在EXCEPTION WHEN OTHERS THEN之后, 将SQLERRM错误信息作为返回结果参数传递给日志记录存储过程, 通过SQLERRM的内容, 能够很容易分辨出执行存储过程中存在的问题, 方便开发人员进行存储过程的问题跟踪。具体实例实现代码如下:

四、批量数据同步 (ETL工具)

数据准备区:考虑到数据采集层随时都可能进行更新等操作, 被频繁的访问, 为了不影响数据采集层对应数据库的IO性能, 所以建立数据准备区, 减少数据转换/清洗操作对采集层的影响。

CSV文件:对于一次维护并且较长时间不变的数据可以用CSV格式文件 (ETL工具也支持其他文件格式) 进行维护并通过ETL工具同步到数据应用层, 如系统中涉及到的维度, 维值。

批量数据同步实现步骤:

1) 数据抽取。通过ETL工具将数据采集层的数据抽取到数据准备区有两种方式:全量抽取和增量抽取。

全量抽取:ETL工具将所有数据采集层中的表、视图等数据对象抽取出来, 并转换为满足业务需要的表数据对象。

增量抽取:只抽取数据库中以上次抽取结束时间为起点的所有新增或修改的数据。

增量抽取较全量抽取应用更广, 如何捕获变化的数据是增量抽取的关键。对捕获方法一般有两点要求:准确性, 能够将业务系统中的变化数据按一定的频率准确地捕获到;性能, 不能对业务系统造成太大的压力, 影响现有业务。数据抽取如图3。

2) 数据转换、清洗、加载。数据转化、清洗由两部分组成, 第一部分数据准备区到数据应用层的数据转换/清洗, 第二部分CSV文件中数据到数据应用层的数据转换/清洗。

数据准备区到数据应用层的数据转换、清洗、加载, 如图4。

CSV文件中数据到数据应用层的数据加载, 如图5。

五、总结

随着信息时代的高速发展, 对于企业, 如何能使决策者随时查看生产过程数据, 以便快速地做出更为灵活的商业决策, 是企业信息化建设的关键, 但是面对不断膨大的海量数据, 结合企业自身业务的特点, 采用灵活的数据同步方法, 不仅降低了企业信息化建设费用, 同时也满足了企业对数据的需求。系统采用了数据存储过程和ETL工具数据同步两种数据同步方法, 即满足了数据实时性的要求, 又保留了大批量数据的处理能力, 同时为后续的业务扩展提供了空间。

摘要:本文针对系统中异构数据库间数据同步对数据实时性要求的不同, 提出了通过ETL实现非实时数据同步, 通过存储过程实现实时数据同步相结合的同步方法。该方法在实际使用过程中, 取得了良好的应用效果。

【异构数据迁移方法研究】推荐阅读:

数据中心迁移流程06-01

迁移运用07-17

迁移阅读07-18

迁移影响07-18

迁移原因05-18

概念迁移06-05

意义迁移06-07

迁移心理06-08

词汇迁移06-20

语音迁移07-26

上一篇:数字信号处理技术下一篇:嵌入式导航系统