基于SAAS的数据迁移系统.pdf

上传人:柴****2 文档编号:4755710 上传时间:2018-11-07 格式:PDF 页数:9 大小:389.45KB
返回 下载 相关 举报
摘要
申请专利号:

CN201110431449.X

申请日:

2011.12.21

公开号:

CN103176988A

公开日:

2013.06.26

当前法律状态:

撤回

有效性:

无权

法律详情:

发明专利申请公布后的视为撤回IPC(主分类):G06F 17/30申请公布日:20130626|||公开

IPC分类号:

G06F17/30

主分类号:

G06F17/30

申请人:

上海博腾信息科技有限公司

发明人:

蒋志勇

地址:

201315 上海市浦东新区康弘路515弄18号1103

优先权:

专利代理机构:

代理人:

PDF下载: PDF下载
内容摘要

本发明提出的一种基于SaaS的数据迁移系统,包括用户界面模块,预迁移检查模块,数据迁移模块,预迁移检查模块判断元数据是否可以迁移并生成数据检查成果表,数据迁移模块根据数据检查成果表转换元数据的数据类型再进行数据转移,并通过中间表策略对在元数据中在隔离状态的共享表进行数据复制,以此加强了数据迁移的稳定性并把数据迁移对租户的影响减小到了最少的程度。

权利要求书

权利要求书
1.   一种基于SaaS的数据迁移系统,其特征在于,包括:
用户界面模块,用户界面模块是系统用户和系统进行交互的窗口,通过该模块用户可以使用系统的相应功能;
预迁移检查模块,预迁移检查模块在数据迁移前提取元数据信息并文件以此对元数据进行验证,生成数据检查结果;
数据迁移模块,根据数据检查结果文件对元数据的分解进行数据的迁移,所述数据迁移包括数据提取、数据转换和数据装载三个步骤。

2.   如权利要求1所述的基于SaaS的数据迁移系统,其特征在于,所述预迁移检查模块提取的元数据信息包括数据库的连接信息、表信息、列信息和键信息等,所述预迁移检查模块通过上述信息,对源数据库和目标数据库进行对比验证。

3.   如权利要求2所述的基于SaaS的数据迁移系统,其特征在于,所述预迁移检查模块对元数据和目标数据库的表的每个字段的类型进行数据类型验证。

4.   如权利要求3所述的基于SaaS的数据迁移系统,其特征在于,所述预迁移检查模块根据元数据和目标数据库的数据类型的验证结果生成一个转换数据类型以解决双方数据类型产生冲突的静态数据表。

5.   如权利要求4所述的基于SaaS的数据迁移系统,其特征在于,所述预迁移检查模块将数据验证信息,数据类型验证信息及静态数据表保存入数据检查结果文件。

6.   如权利要求5所述的基于SaaS的数据迁移系统,其特征在于,所述数据迁移模块根据数据检查结果文件判断元数据中的数据表是否可以迁移,并对可以进行数据迁移的数据表进行数据提取、数据转换和数据装载。

7.   如权利要求6所述的基于SaaS的数据迁移系统,其特征在于,所述数据迁移模块在进行数据转换时,根据数据检查结果文件的静态数据表进行数据转化。

8.   如权利要求7所述的基于SaaS的数据迁移系统,其特征在于,所述数据迁移模块在进行数据装载时,首先判断元数据的数据表是否为隔离状态中的共享表,如不是共享表则进行数据迁移,如是共享表则将共享表的数据结构复制到一张新建的中间表之中并将共享表中的数据插入到中间表之中,等到数据插入完毕再将中间表的数据复制到目标数据库中。

说明书

说明书基于SaaS的数据迁移系统
技术领域
本发明涉及SaaS技术,尤其涉及一种基于SaaS的数据迁移系统。
背景技术
SaaS是Softwa re‑as‑a‑Service(软件即服务)的简称,它是一种通过Internet提供软件的模式,用户基于网络向提供商租用软件来进行经营活动的管理,且无需进行对软件维护和硬件投入,服务提供商则全权管理和维护软件。这种全新的软件模式具有很大的成本优势、管理优势及数据安全性优势等,正因为如此,有越来越多的软件提供商都采用SaaS的方式来为客户提供服务。
伴随着SaaS应用的广泛推广,成熟度模型的概念也被引入其中,它将一个SaaS应用按照一定的条件划分为四个等级。采用多租户模式的SaaS应用属于成熟度模型中的第三个等级。多租户模式下的应用是被多个租户所共享的,包括软件的共享和硬件的共享,但是数据安全性是有很好的保证,这种保证是建立在一定数据隔离策略的基础上。一般情况下,SaaS多租户模式下数据隔离采用如下三种数据隔离策略:独立数据库模式、独立Schema模式和共享表模式。
由于三种隔离策略的存在,当用户自身的业务需求发生变化的时候,数据隔离策略就存在变化的可能。因为用户会根据自身的条件调整数据的隔离策略来降低成本,同时也会存在SaaS应用本身进行调整而需要改变用户的隔离策略情况,当这种调整发生时,就必须对处于不同隔离策略下的数据进行迁移,然而由于可能存在异构性,在迁移过程中必须要考虑这种情况,所以,开发基于SaaS多租户模式的数据迁移工具就非常有必要。由于SaaS应用和传统软件存在一定的差别,尤其在多租户模式的情况下,数据处于不同数据隔离方式时有自己独有的特点,传统数据迁移方案诸如采用数据库自带的工具或利用ETL工具等,它们在处理多租户模式下的不同数据隔离方式的迁移会遇到诸多问题,例如如何处理异构数据源情况下迁移的稳定性,如何处理共享表情况下迁移操作对其他租户影响的最小化等。
传统的数据迁移的过程可分为三个步骤:数据提取、数据转换和数据装载。在源数据库和目标数据库同构情况下,数据转换工作将会减少很多,但是在异构的情况下,数据转换将涉及很多内容和步骤。
目前进行在异构状态下进行数据迁移的方法有很多种,如利用数据管道、利用中间数据库或中间文件,还有利用ETL工具进行迁移等,这些方法在处理传统数据迁移场景时各有优势,但这些方法可能会在数据转换过程中进行一下数据加工操作,但是在进行数据提取之前并没有对数据本身进行详细的分析,虽然有的方案会提前制定一些数据转换表应对数据转换的需要,但是这种方法是一种后置验证的方法,即数据是否能够通过验证进而插入到目标数据库中是未知的,只有通过迁移后才能确定。当迁移过程因为数据问题发生异常时再中断迁移,才对数据进行相关操作,可以看出验证后置的数据迁移由于对数据本身没有事先进行检查,会造成迁移的整体过程存在突然中断的可能性,那么随之数据迁移过程的连贯性就会降低。此外,由于数据装载并没有区分应用是否是多个租户共享的情况,所以直接进行迁移很可能会造成对其他租户无法正常使用系统,这对于SaaS多租户模式的应用来说是不可取的。
发明内容
为应对多租户状态下SAAS数据迁移的的需要,本发明提出了一种新型的基于SaaS的数据迁移系统,包括:
用户界面模块,用户界面模块是系统用户和系统进行交互的窗口,通过该模块用户可以使用系统的相应功能;
预迁移检查模块,预迁移检查模块在数据迁移前提取元数据信息并文件以此对元数据进行验证,生成数据检查结果;
数据迁移模块,根据数据检查结果文件对元数据的分解进行数据的迁移,所述数据迁移包括数据提取、数据转换和数据装载三个步骤。
所述预迁移检查模块提取的元数据信息包括数据库的连接信息、表信息、列信息和键信息等,所述预迁移检查模块通过上述信息,对源数据库和目标数据库进行对比验证。
所述预迁移检查模块对元数据和目标数据库的表的每个字段的类型进行数据类型验证。
所述预迁移检查模块根据元数据和目标数据库的数据类型的验证结果生成一个转换数据类型以解决双方数据类型产生冲突的静态数据表。
所述预迁移检查模块将数据验证信息,数据类型验证信息及静态数据表保存入数据检查结果文件。
所述数据迁移模块根据数据检查结果文件判断元数据中的数据表是否可以迁移,并对可以进行数据迁移的数据表进行数据提取、数据转换和数据装载。
所述数据迁移模块在进行数据转换时,根据数据检查结果文件的静态数据表进行数据转化。
所述数据迁移模块在进行数据装载时,数据迁移模块在进行数据装载时,首先判断元数据的数据表是否为隔离状态中的共享表,如不是共享表则进行数据装载,如是共享表则将共享表的数据结构复制到一张新建的中间表之中并将共享表中的数据插入到中间表之中,等到数据插入完毕再将中间表的数据复制到目标数据库中。
本发明的一种基于SaaS的数据迁移系统,包括用户界面模块,预迁移检查模块,数据迁移模块,预迁移检查模块判断元数据是否可以迁移并生成数据检查成果表,数据迁移模块根据数据检查成果表转换元数据的数据类型再进行数据转移,并通过中间表策略对在元数据中在隔离状态的共享表进行数据复制,以此加强了数据迁移的稳定性并把数据迁移对租户的影响减小到了最少的程度。
附图说明
附图主要是用于提供对本发明进一步的理解。附图示出了本发明的实施例,并与本说明书一起起到解释本发明原理的作用。附图中:
图1示意性地示出了根据本发明的基于SaaS的数据迁移系统的框图。
具体实施方式
以下结合附图详细描述本发明的技术方案。
图1示意性地示出了根据本发明的基于SaaS的数据迁移系统10的框图。如图1所示,本发明的基于SaaS的数据迁移系统10,包括:用户界面模块11,预迁移检查模块12,数据迁移模块13。
用户界面模块11是系统用户和系统进行交互的窗口,通过该模块用户可以使用系统的相应功能。首先,该模块提供一个登录页面,用于识别登录的用户,此外还接收用户输入数据迁移的基本信息,包括源数据库和目标数据库的相关信息,将这些信息传递到后续模块进行处理。另外系统还对权限做了控制,在不同的阶段只能操纵不同的功能模块。此外,在迁移过程中系统利用Ajax技术异步读取数据迁移的状态,动态显示迁移过程,增加了用户体验。
作为本发明的一个实施例,预迁移检查模块12在迁移之前对数据进行严格的判断和验证,判断是否存在迁移异常的风险,如数据类型冲突等情况,通过对元数据的分析来预先判断,一旦出现类型冲突则提前制定类型转换程序,同时这些处理程序是可以永久保存的,未来进行其他的迁移项目时依然可用。通过前置验证后,迁移过程中将很少因为数据类型的原因而导致迁移中断。预迁移检查模块12利用XML平台无关性、自描述行特点,通过建立数据验证的模板同时存储验证的结果以判断最终数据是否能够进行迁移。利用XML验证前置策略的数据迁移步骤无关性、自描述行特点,通过建立数据验证的结果同时存储验证的结果以判断最终数据是否能够进行迁移。
基于XML验证前置的执行过程如下:
首先在查询元数据的时候就可以获得源和目标表中的所:有数据库表,程序应该在界面上列出所有在目标表中存在的源数据库表供数据迁移人员选择,从该列表中所选的数据库表即为待迁移表。获得待迁移表后通过遍历这个表,以及该表所对应的所有列的信息,可以找出待迁移表中哪些列是和目标数据库中对应的列是数据类型不一样的,也可以制定哪些列是大对象字段需要处理的,同时通过遍历也可以得到源数据表和目标数据表在结构上是否存在差异,以此来判断迁移类型是标准的不同隔离模式下的迁移还是非标准的。如果是非标准的,还要把目标表中必须赋值而源表中没有字段与之对应的字段列出来。如果检查的过程中遇到数据类型不匹配的情况,系统应该首先判断是否已经存在处理当前类型和目标类型冲突的程序,如果存在,就可以进行继续判断其他列,如果不存在,系统会利用相关的技术自动生成处理程序框架,对该程序进行构建并测试,然后再重新进行数据类型检查。
在经过了以上步骤的操作之后,系统最终生成的基于XML的迁移检查结果文件如下:


其中根元素<DBMigrationConfig>包含了六个属性:tenantId、SourceDBName、targetDBName、SourceIsolationType、targetIso‑lationType、isDBCanMigrate,它们分别表示租户的标示、元数据库名称、目标数据库名称、源数据隔离方式、目标数据隔离方式以及当前整个数据库是否可以进行迁移。子元素<tableMigrate>中的内容对应的是源数据库一个表的迁移结果检查的信息。包括了该表的名称,该表是否可以迁移(其中0表示否,1表示是)。同时也包括了源表中所有列的信息,如列的名称,该列是否要进行迁移(0表示否,1表示是),该列的类型是否是大对象,该列所对应的源数据和目标数据的类型是否匹配(0表示不匹配,1表示匹配,2表示虽然不匹配但有程序可以处理)。另外,还记录了每个字段的数据类型,以及该类型所对应的JDBC类型还有对应的Java类名称,以及该字段在目标表中对应的这些信息。
预迁移检查模块12获得元数据相关的信息,包括数据库的连接信息、表信息、列信息和键信息等,通过获得这些信息,可以对源数据库和目标数据库进行对比,获得这两者之间在数据类型等方面的联系,为以后的处理做准备。元数据的获取有多种途径,比较好的方式是通过一致的访问接口来
这样所述预迁移检查模块12提取的元数据信息包括数据库的连接信息、表信息、列信息和键信息等,所述预迁移检查模块12通过上述信息,对源数据库和目标数据库进行对比验证。所述预迁移检查模块12根据元数据和目标数据库的数据类型的验证结果生成一个转换数据类型以解决双方数据类型产生冲突的静态数据表。
作为本发明的一个实施例,数据迁移模块13首先对元数据进行提取,提取数据的策略是非常重要的,因为它对迁移系统的性能问题有很大的影响。这里有两种策略:第一种策略是直接从数据库表中取出所有数据,利用SQL语句可以完成操作,例如select*from TableName。第二种策略是利用分页读取的方式,这种方式是批量操作方式。分页读取数据就是说在操作数据库时每次都批量地读取一定的数据,当这些数据处理完之后再接着读取下一批数据直到数据读完为止。这样就降低了I/O的操作频率,同时也将一定量的数据保存在内存中提高了处理速度。
数据转换过程的主要工作就是将源数据库表中所读取的每一条记录的每一个字段与目标数据库表的字段进行对比并调用进行相关处理,首先字段对比已经在预迁移检查时进行过了,直接根据检查结果的XML文件进行遍历即可。在该过程中要处理大字段(大对象)类型数据、数据类型冲突问题等。对于大字段或大对象类型的,根据其具体类型,利用不同的方式进行读取和于插入操作,代码如下:
targetPstmt.setBlob(j,sourceRS.getBlob(columnName))
targetPstmt.setClob(j,sourceRS.getClob(columnName))
对于产生类型冲突的情况,利用在预迁移前置阶段已经通过编写程序解决了该问题,此处程序会利用Java反射机制调用该程序进行处理即可。
数据库装载是迁移主过程的最后一个步骤,从效率和性能角度看数据装载对数据迁移整体性能的影响是非常大的。在数据装载这部分也有两种策略可以选择。第一种策略是即时插入策略,即每生成一个insert sql语句,就立即通过JDBC相关接口执行插入操作,将数据添加到目标数据库中。这种方法会使得系统与目标数据库之间频繁地进行I/O操作,会严重影响系统的性能。第二种策略是批量插入策略,与第一种策略不同,该策略
每次执行插入操作时是插入一批数据。这样的策略在效率和性能上比第一种即时插入方式大大提高。而且JDBC提供了专门的批量操作接口,如:PreparedStatement.addBatch()和Pre‑paredStatement.executeBatch()。本发明是采用第二种批量插入策略来提高数据迁移系统的性能。同时执行批量操作过程中出现错误时候,可以捕获BatchUpdateException判断哪些数据出现了错误。
中间表复制迁移方案包括两个阶段,第一个阶段是在数据迁移主过程之前判断如果目标数据的隔离方式是共享表类型,那么就复制目标表的表结构,可以通过SQL语句进行实现。对应MySQL数据库,例如要复制一个newTable表和origTable的结构完全一致,就可以用如下SQL语句实现:create tablenewTable as select*from origTable where 1<>1;对于SQLServer可以用如下语句:select*into newTable from origTablewhere 0=1。通过这样的操作之后,就可以把源数据首先迁移到这个复制的表中,然后再将这个中间表的数据批量地复制到最终的目标表中,复制内容的SQL语句如下:
Insert into TargetTable Select*from MiddleTable
其中TargetTable就是最终的目标表,而MiddleTable是中间存储的目标表。这样做首先保证了迁移到最终目标表的数据是正确的,不会因为数据异常而对该表进行频繁操作而影响其他租户的数据,另外从中间表将数据复制到目标表的效率是很高的,可以将对目标表的操作时间降到最低。然而,将中间表复制到目标表是有条件的,就是保证中间表的数据是完全正确的才能进行迁移。
采用中间复制策略的优点有以下几个方面:
(1)最大限度地降低大数据量情况下直接插入目标表对其他租户正常使用SaaS应用造成影响的时间。(2)由于从中间表将数据复制到目标表的前提是源数据迁移到中间表的过程是完全正确的,这就保证了导入到目标数据表的数据是正确的,从而避免了由于迁移异常而引起的对目标数据库表的反复操作。
(3)最终迁移至目标表的时机具有可控性。在确保了数据已经正确地迁移到了复制的中间表后,选择什么时间向目标数据库表中复制数据就具有了可控性,或者可以采用在对其他租户影响最小的时间点进行迁移。
上述实施例是提供给本领域普通技术人员来实现或使用本发明的,本领域普通技术人员可在不脱离本发明的发明思想的情况下,对上述实施例做出种种修改或变化,因而本发明的保护范围并不被上述实施例所限,而应该是符合权利要求书提到的创新性特征的最大范围。

基于SAAS的数据迁移系统.pdf_第1页
第1页 / 共9页
基于SAAS的数据迁移系统.pdf_第2页
第2页 / 共9页
基于SAAS的数据迁移系统.pdf_第3页
第3页 / 共9页
点击查看更多>>
资源描述

《基于SAAS的数据迁移系统.pdf》由会员分享,可在线阅读,更多相关《基于SAAS的数据迁移系统.pdf(9页珍藏版)》请在专利查询网上搜索。

1、(10)申请公布号 CN 103176988 A (43)申请公布日 2013.06.26 CN 103176988 A *CN103176988A* (21)申请号 201110431449.X (22)申请日 2011.12.21 G06F 17/30(2006.01) (71)申请人 上海博腾信息科技有限公司 地址 201315 上海市浦东新区康弘路 515 弄 18 号 1103 (72)发明人 蒋志勇 (54) 发明名称 基于 SaaS 的数据迁移系统 (57) 摘要 本发明提出的一种基于 SaaS 的数据迁移系 统, 包括用户界面模块, 预迁移检查模块, 数据迁 移模块, 预迁移检。

2、查模块判断元数据是否可以迁 移并生成数据检查成果表, 数据迁移模块根据数 据检查成果表转换元数据的数据类型再进行数据 转移, 并通过中间表策略对在元数据中在隔离状 态的共享表进行数据复制, 以此加强了数据迁移 的稳定性并把数据迁移对租户的影响减小到了最 少的程度。 (51)Int.Cl. 权利要求书 1 页 说明书 6 页 附图 1 页 (19)中华人民共和国国家知识产权局 (12)发明专利申请 权利要求书1页 说明书6页 附图1页 (10)申请公布号 CN 103176988 A CN 103176988 A *CN103176988A* 1/1 页 2 1. 一种基于 SaaS 的数据迁移。

3、系统, 其特征在于, 包括 : 用户界面模块, 用户界面模块是系统用户和系统进行交互的窗口, 通过该模块用户可 以使用系统的相应功能 ; 预迁移检查模块, 预迁移检查模块在数据迁移前提取元数据信息并文件以此对元数据 进行验证, 生成数据检查结果 ; 数据迁移模块, 根据数据检查结果文件对元数据的分解进行数据的迁移, 所述数据迁 移包括数据提取、 数据转换和数据装载三个步骤。 2. 如权利要求 1 所述的基于 SaaS 的数据迁移系统, 其特征在于, 所述预迁移检查模块 提取的元数据信息包括数据库的连接信息、 表信息、 列信息和键信息等, 所述预迁移检查模 块通过上述信息, 对源数据库和目标数据。

4、库进行对比验证。 3. 如权利要求 2 所述的基于 SaaS 的数据迁移系统, 其特征在于, 所述预迁移检查模块 对元数据和目标数据库的表的每个字段的类型进行数据类型验证。 4. 如权利要求 3 所述的基于 SaaS 的数据迁移系统, 其特征在于, 所述预迁移检查模块 根据元数据和目标数据库的数据类型的验证结果生成一个转换数据类型以解决双方数据 类型产生冲突的静态数据表。 5. 如权利要求 4 所述的基于 SaaS 的数据迁移系统, 其特征在于, 所述预迁移检查模块 将数据验证信息, 数据类型验证信息及静态数据表保存入数据检查结果文件。 6. 如权利要求 5 所述的基于 SaaS 的数据迁移系。

5、统, 其特征在于, 所述数据迁移模块根 据数据检查结果文件判断元数据中的数据表是否可以迁移, 并对可以进行数据迁移的数据 表进行数据提取、 数据转换和数据装载。 7. 如权利要求 6 所述的基于 SaaS 的数据迁移系统, 其特征在于, 所述数据迁移模块在 进行数据转换时, 根据数据检查结果文件的静态数据表进行数据转化。 8. 如权利要求 7 所述的基于 SaaS 的数据迁移系统, 其特征在于, 所述数据迁移模块 在进行数据装载时, 首先判断元数据的数据表是否为隔离状态中的共享表, 如不是共享表 则进行数据迁移, 如是共享表则将共享表的数据结构复制到一张新建的中间表之中并将共 享表中的数据插入。

6、到中间表之中, 等到数据插入完毕再将中间表的数据复制到目标数据库 中。 权 利 要 求 书 CN 103176988 A 2 1/6 页 3 基于 SaaS 的数据迁移系统 技术领域 0001 本发明涉及 SaaS 技术, 尤其涉及一种基于 SaaS 的数据迁移系统。 背景技术 0002 SaaS 是 Softwa re-as-a-Service( 软件即服务 ) 的简称, 它是一种通过 Internet 提供软件的模式, 用户基于网络向提供商租用软件来进行经营活动的管理, 且无需进行对 软件维护和硬件投入, 服务提供商则全权管理和维护软件。这种全新的软件模式具有很大 的成本优势、 管理优势及。

7、数据安全性优势等, 正因为如此, 有越来越多的软件提供商都采用 SaaS 的方式来为客户提供服务。 0003 伴随着SaaS应用的广泛推广, 成熟度模型的概念也被引入其中, 它将一个SaaS应 用按照一定的条件划分为四个等级。采用多租户模式的 SaaS 应用属于成熟度模型中的第 三个等级。多租户模式下的应用是被多个租户所共享的, 包括软件的共享和硬件的共享, 但是数据安全性是有很好的保证, 这种保证是建立在一定数据隔离策略的基础上。一般 情况下, SaaS 多租户模式下数据隔离采用如下三种数据隔离策略 : 独立数据库模式、 独立 Schema 模式和共享表模式。 0004 由于三种隔离策略的存。

8、在, 当用户自身的业务需求发生变化的时候, 数据隔离策 略就存在变化的可能。因为用户会根据自身的条件调整数据的隔离策略来降低成本, 同时 也会存在 SaaS 应用本身进行调整而需要改变用户的隔离策略情况, 当这种调整发生时, 就 必须对处于不同隔离策略下的数据进行迁移, 然而由于可能存在异构性, 在迁移过程中必 须要考虑这种情况, 所以, 开发基于 SaaS 多租户模式的数据迁移工具就非常有必要。由于 SaaS 应用和传统软件存在一定的差别, 尤其在多租户模式的情况下, 数据处于不同数据隔 离方式时有自己独有的特点, 传统数据迁移方案诸如采用数据库自带的工具或利用 ETL 工 具等, 它们在处。

9、理多租户模式下的不同数据隔离方式的迁移会遇到诸多问题, 例如如何处 理异构数据源情况下迁移的稳定性, 如何处理共享表情况下迁移操作对其他租户影响的最 小化等。 0005 传统的数据迁移的过程可分为三个步骤 : 数据提取、 数据转换和数据装载。 在源数 据库和目标数据库同构情况下, 数据转换工作将会减少很多, 但是在异构的情况下, 数据转 换将涉及很多内容和步骤。 0006 目前进行在异构状态下进行数据迁移的方法有很多种, 如利用数据管道、 利用中 间数据库或中间文件, 还有利用 ETL 工具进行迁移等, 这些方法在处理传统数据迁移场景 时各有优势, 但这些方法可能会在数据转换过程中进行一下数据。

10、加工操作, 但是在进行数 据提取之前并没有对数据本身进行详细的分析, 虽然有的方案会提前制定一些数据转换表 应对数据转换的需要, 但是这种方法是一种后置验证的方法, 即数据是否能够通过验证进 而插入到目标数据库中是未知的, 只有通过迁移后才能确定。当迁移过程因为数据问题发 生异常时再中断迁移, 才对数据进行相关操作, 可以看出验证后置的数据迁移由于对数据 本身没有事先进行检查, 会造成迁移的整体过程存在突然中断的可能性, 那么随之数据迁 说 明 书 CN 103176988 A 3 2/6 页 4 移过程的连贯性就会降低。此外, 由于数据装载并没有区分应用是否是多个租户共享的情 况, 所以直接。

11、进行迁移很可能会造成对其他租户无法正常使用系统, 这对于 SaaS 多租户模 式的应用来说是不可取的。 发明内容 0007 为应对多租户状态下 SAAS 数据迁移的的需要, 本发明提出了一种新型的基于 SaaS 的数据迁移系统, 包括 : 0008 用户界面模块, 用户界面模块是系统用户和系统进行交互的窗口, 通过该模块用 户可以使用系统的相应功能 ; 0009 预迁移检查模块, 预迁移检查模块在数据迁移前提取元数据信息并文件以此对元 数据进行验证, 生成数据检查结果 ; 0010 数据迁移模块, 根据数据检查结果文件对元数据的分解进行数据的迁移, 所述数 据迁移包括数据提取、 数据转换和数据。

12、装载三个步骤。 0011 所述预迁移检查模块提取的元数据信息包括数据库的连接信息、 表信息、 列信息 和键信息等, 所述预迁移检查模块通过上述信息, 对源数据库和目标数据库进行对比验证。 0012 所述预迁移检查模块对元数据和目标数据库的表的每个字段的类型进行数据类 型验证。 0013 所述预迁移检查模块根据元数据和目标数据库的数据类型的验证结果生成一个 转换数据类型以解决双方数据类型产生冲突的静态数据表。 0014 所述预迁移检查模块将数据验证信息, 数据类型验证信息及静态数据表保存入数 据检查结果文件。 0015 所述数据迁移模块根据数据检查结果文件判断元数据中的数据表是否可以迁移, 并对。

13、可以进行数据迁移的数据表进行数据提取、 数据转换和数据装载。 0016 所述数据迁移模块在进行数据转换时, 根据数据检查结果文件的静态数据表进行 数据转化。 0017 所述数据迁移模块在进行数据装载时, 数据迁移模块在进行数据装载时, 首先判 断元数据的数据表是否为隔离状态中的共享表, 如不是共享表则进行数据装载, 如是共享 表则将共享表的数据结构复制到一张新建的中间表之中并将共享表中的数据插入到中间 表之中, 等到数据插入完毕再将中间表的数据复制到目标数据库中。 0018 本发明的一种基于 SaaS 的数据迁移系统, 包括用户界面模块, 预迁移检查模块, 数据迁移模块, 预迁移检查模块判断元。

14、数据是否可以迁移并生成数据检查成果表, 数据迁 移模块根据数据检查成果表转换元数据的数据类型再进行数据转移, 并通过中间表策略对 在元数据中在隔离状态的共享表进行数据复制, 以此加强了数据迁移的稳定性并把数据迁 移对租户的影响减小到了最少的程度。 附图说明 0019 附图主要是用于提供对本发明进一步的理解。附图示出了本发明的实施例, 并与 本说明书一起起到解释本发明原理的作用。附图中 : 0020 图 1 示意性地示出了根据本发明的基于 SaaS 的数据迁移系统的框图。 说 明 书 CN 103176988 A 4 3/6 页 5 具体实施方式 0021 以下结合附图详细描述本发明的技术方案。。

15、 0022 图 1 示意性地示出了根据本发明的基于 SaaS 的数据迁移系统 10 的框图。如图 1 所示, 本发明的基于 SaaS 的数据迁移系统 10, 包括 : 用户界面模块 11, 预迁移检查模块 12, 数据迁移模块 13。 0023 用户界面模块 11 是系统用户和系统进行交互的窗口, 通过该模块用户可以使用 系统的相应功能。首先, 该模块提供一个登录页面, 用于识别登录的用户, 此外还接收用户 输入数据迁移的基本信息, 包括源数据库和目标数据库的相关信息, 将这些信息传递到后 续模块进行处理。 另外系统还对权限做了控制, 在不同的阶段只能操纵不同的功能模块。 此 外, 在迁移过程。

16、中系统利用 Ajax 技术异步读取数据迁移的状态, 动态显示迁移过程, 增加 了用户体验。 0024 作为本发明的一个实施例, 预迁移检查模块 12 在迁移之前对数据进行严格的判 断和验证, 判断是否存在迁移异常的风险, 如数据类型冲突等情况, 通过对元数据的分析来 预先判断, 一旦出现类型冲突则提前制定类型转换程序, 同时这些处理程序是可以永久保 存的, 未来进行其他的迁移项目时依然可用。 通过前置验证后, 迁移过程中将很少因为数据 类型的原因而导致迁移中断。预迁移检查模块 12 利用 XML 平台无关性、 自描述行特点, 通 过建立数据验证的模板同时存储验证的结果以判断最终数据是否能够进行。

17、迁移。利用 XML 验证前置策略的数据迁移步骤无关性、 自描述行特点, 通过建立数据验证的结果同时存储 验证的结果以判断最终数据是否能够进行迁移。 0025 基于 XML 验证前置的执行过程如下 : 0026 首先在查询元数据的时候就可以获得源和目标表中的所 : 有数据库表, 程序应该 在界面上列出所有在目标表中存在的源数据库表供数据迁移人员选择, 从该列表中所选的 数据库表即为待迁移表。获得待迁移表后通过遍历这个表, 以及该表所对应的所有列的信 息, 可以找出待迁移表中哪些列是和目标数据库中对应的列是数据类型不一样的, 也可以 制定哪些列是大对象字段需要处理的, 同时通过遍历也可以得到源数据。

18、表和目标数据表在 结构上是否存在差异, 以此来判断迁移类型是标准的不同隔离模式下的迁移还是非标准 的。 如果是非标准的, 还要把目标表中必须赋值而源表中没有字段与之对应的字段列出来。 如果检查的过程中遇到数据类型不匹配的情况, 系统应该首先判断是否已经存在处理当前 类型和目标类型冲突的程序, 如果存在, 就可以进行继续判断其他列, 如果不存在, 系统会 利用相关的技术自动生成处理程序框架, 对该程序进行构建并测试, 然后再重新进行数据 类型检查。 0027 在经过了以上步骤的操作之后, 系统最终生成的基于 XML 的迁移检查结果文件如 下 : 0028 说 明 书 CN 103176988 A。

19、 5 4/6 页 6 0029 0030 其中根元素 包含了六个属性 : tenantId、 SourceDBName、 targetDBName、 SourceIsolationType、 targetIso-lationType、 isDBCanMigrate, 它们分别 表示租户的标示、 元数据库名称、 目标数据库名称、 源数据隔离方式、 目标数据隔离方式以 及当前整个数据库是否可以进行迁移。子元素 中的内容对应的是源数据 库一个表的迁移结果检查的信息。包括了该表的名称, 该表是否可以迁移 ( 其中 0 表示否, 1 表示是 )。同时也包括了源表中所有列的信息, 如列的名称, 该列是否要。

20、进行迁移 (0 表示 否, 1 表示是 ), 该列的类型是否是大对象, 该列所对应的源数据和目标数据的类型是否匹 配(0表示不匹配, 1表示匹配, 2表示虽然不匹配但有程序可以处理)。 另外, 还记录了每个 字段的数据类型, 以及该类型所对应的JDBC类型还有对应的Java类名称, 以及该字段在目 标表中对应的这些信息。 0031 预迁移检查模块 12 获得元数据相关的信息, 包括数据库的连接信息、 表信息、 列 说 明 书 CN 103176988 A 6 5/6 页 7 信息和键信息等, 通过获得这些信息, 可以对源数据库和目标数据库进行对比, 获得这两者 之间在数据类型等方面的联系, 为。

21、以后的处理做准备。 元数据的获取有多种途径, 比较好的 方式是通过一致的访问接口来 0032 这样所述预迁移检查模块 12 提取的元数据信息包括数据库的连接信息、 表信息、 列信息和键信息等, 所述预迁移检查模块 12 通过上述信息, 对源数据库和目标数据库进行 对比验证。所述预迁移检查模块 12 根据元数据和目标数据库的数据类型的验证结果生成 一个转换数据类型以解决双方数据类型产生冲突的静态数据表。 0033 作为本发明的一个实施例, 数据迁移模块 13 首先对元数据进行提取, 提取数据的 策略是非常重要的, 因为它对迁移系统的性能问题有很大的影响。这里有两种策略 : 第一 种策略是直接从数。

22、据库表中取出所有数据, 利用 SQL 语句可以完成操作, 例如 select*from TableName。第二种策略是利用分页读取的方式, 这种方式是批量操作方式。分页读取数据 就是说在操作数据库时每次都批量地读取一定的数据, 当这些数据处理完之后再接着读取 下一批数据直到数据读完为止。这样就降低了 I/O 的操作频率, 同时也将一定量的数据保 存在内存中提高了处理速度。 0034 数据转换过程的主要工作就是将源数据库表中所读取的每一条记录的每一个字 段与目标数据库表的字段进行对比并调用进行相关处理, 首先字段对比已经在预迁移检查 时进行过了, 直接根据检查结果的 XML 文件进行遍历即可。。

23、在该过程中要处理大字段 ( 大 对象 ) 类型数据、 数据类型冲突问题等。对于大字段或大对象类型的, 根据其具体类型, 利 用不同的方式进行读取和于插入操作, 代码如下 : 0035 targetPstmt.setBlob(j, sourceRS.getBlob(columnName) 0036 targetPstmt.setClob(j, sourceRS.getClob(columnName) 0037 对于产生类型冲突的情况, 利用在预迁移前置阶段已经通过编写程序解决了该问 题, 此处程序会利用 Java 反射机制调用该程序进行处理即可。 0038 数据库装载是迁移主过程的最后一个步骤,。

24、 从效率和性能角度看数据装载对数据 迁移整体性能的影响是非常大的。在数据装载这部分也有两种策略可以选择。第一种策略 是即时插入策略, 即每生成一个 insert sql 语句, 就立即通过 JDBC 相关接口执行插入操 作, 将数据添加到目标数据库中。这种方法会使得系统与目标数据库之间频繁地进行 I/O 操作, 会严重影响系统的性能。第二种策略是批量插入策略, 与第一种策略不同, 该策略 0039 每次执行插入操作时是插入一批数据。这样的策略在效率和性能上比第一种即 时插入方式大大提高。而且 JDBC 提供了专门的批量操作接口, 如 : PreparedStatement. addBatch(。

25、) 和 Pre-paredStatement.executeBatch()。本发明是采用第二种批量插入 策略来提高数据迁移系统的性能。同时执行批量操作过程中出现错误时候, 可以捕获 BatchUpdateException 判断哪些数据出现了错误。 0040 中间表复制迁移方案包括两个阶段, 第一个阶段是在数据迁移主过程之前判断如 果目标数据的隔离方式是共享表类型, 那么就复制目标表的表结构, 可以通过 SQL 语句进 行实现。对应 MySQL 数据库, 例如要复制一个 newTable 表和 origTable 的结构完全一致, 就可以用如下 SQL 语句实现 : create tablen。

26、ewTable as select*from origTable where 11 ; 对于 SQLServer 可以用如下语句 : select*into newTable from origTablewhere 0 1。通过这样的操作之后, 就可以把源数据首先迁移到这个复制的表中, 然后再将这个中 说 明 书 CN 103176988 A 7 6/6 页 8 间表的数据批量地复制到最终的目标表中, 复制内容的 SQL 语句如下 : 0041 Insert into TargetTable Select*from MiddleTable 0042 其中 TargetTable 就是最终的目标。

27、表, 而 MiddleTable 是中间存储的目标表。这 样做首先保证了迁移到最终目标表的数据是正确的, 不会因为数据异常而对该表进行频繁 操作而影响其他租户的数据, 另外从中间表将数据复制到目标表的效率是很高的, 可以将 对目标表的操作时间降到最低。 然而, 将中间表复制到目标表是有条件的, 就是保证中间表 的数据是完全正确的才能进行迁移。 0043 采用中间复制策略的优点有以下几个方面 : 0044 (1) 最大限度地降低大数据量情况下直接插入目标表对其他租户正常使用 SaaS 应用造成影响的时间。(2) 由于从中间表将数据复制到目标表的前提是源数据迁移到中间 表的过程是完全正确的, 这就。

28、保证了导入到目标数据表的数据是正确的, 从而避免了由于 迁移异常而引起的对目标数据库表的反复操作。 0045 (3) 最终迁移至目标表的时机具有可控性。在确保了数据已经正确地迁移到了复 制的中间表后, 选择什么时间向目标数据库表中复制数据就具有了可控性, 或者可以采用 在对其他租户影响最小的时间点进行迁移。 0046 上述实施例是提供给本领域普通技术人员来实现或使用本发明的, 本领域普通技 术人员可在不脱离本发明的发明思想的情况下, 对上述实施例做出种种修改或变化, 因而 本发明的保护范围并不被上述实施例所限, 而应该是符合权利要求书提到的创新性特征的 最大范围。 说 明 书 CN 103176988 A 8 1/1 页 9 图 1 说 明 书 附 图 CN 103176988 A 9 。

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 物理 > 计算;推算;计数


copyright@ 2017-2020 zhuanlichaxun.net网站版权所有
经营许可证编号:粤ICP备2021068784号-1