一种基于表关联分析的数据表迁移的方法

文档序号:6374914阅读:212来源:国知局
专利名称:一种基于表关联分析的数据表迁移的方法
技术领域
本发明涉及数据处理技术领域,尤其涉及一种基于表关联分析的数据表迁移的方法。
背景技术
随着云计算的兴起,有着大量的用户数据都存储到了云端数据库中。但当一个云平台或者云端的存储系统需要升级改造或者兼容合并或者是处于安全的考虑,都将会用到数据迁移技术。数据迁移技术就是将用户数据从一个数据库中迁移到另一个数据库的过程。一个数据迁移系统的设计必须考虑迁移过程的稳定性和可持续性以及对用户正常使用数据库的影响应该是越小越好的。现有的数据迁移方法有数据管道,数据库工具方法,备份复制,磁盘内复制等方 法。它们应用于不同的场景,各具优势。一般将数据迁移,发生在一个数据库到另外一个数据库时,会包含三个主要的步骤数据提取、数据转换和数据装载,其结构和流程示意如图I所示。Stepl :数据提取。需要迁移的数据从源数据库中进行提取。和一般的读取数据库操作一样,可以用jdbc或者odbc等方式,一般和所用的数据库系统以及编程语言相关。Step2 :数据转换。包括对数据的整理和转换以及一些额外的数据加工,以满足设计者的特殊用途。Step3 :数据装载。将经过转换的数据插入到目标数据库中的目标表中的过程。现有技术方案一般没有在迁移前进行迁移检查,很容易导致迁移过程因为数据类型的不一致而导致迁移中断的问题。有的虽然加入了迁移的预检查,但是并没有分析迁移数据表之间的关联性,这样需要用户手工的去判断需要迁移的依赖数据,大大的影响了迁移的效率和准确性。有的是基于单线程的方案,在分布式的云端不易扩展,也就制约了系统的并发性。

发明内容
本发明的目的是为了克服现有技术的缺陷,提供一种基于表关联分析的数据表迁移的方法,通过方法可以提高系统并行性,更加适用于分布式系统。在迁移过程采用复制表策略,将对正常用户的影响降到最低。—种基于表关联分析的数据表迁移的方法,该方法在预迁移检查模块引入表关联性分析,自动识别需要迁移数据,并采用多线程并行机制进行迁移检查;具体步骤如下Stepl :确认迁移,用户确认需要迁移的用户数据;Step2 :预迁移检查,根据检查结果预先制定完善的转换规则和程序;Step3 :数据提取,从源数据库中提取出数据;Step4:数据转换,将源数据按照预处理制定的转换程序进行类型等的转换,产生目标数据;
Step5:根据目标数据,先判断是否需要建立新的表,如果要则建立新表,否则直接跳过;Step6 :是否进行共享表的特殊处理,若是转Step7,否则转Step8 ;Step7 :复制表处理,对共享表采用复制表策略,提高系统的并发性能;StepS :数据装载,最终将目标数据装载到目标数据库的目标表中,完毕。预迁移检查的具体流程如下Step21 :用户确认迁移;用户通过用户界面和系统交互,确认需要进行迁移的用户数据;Step22 :分析表的关联;一个用户的数据往往不止和一个表相关;表与表之间通过外键相关联,迁移一个用户数据可能需要迁移多个表;
St印23 :提取表元数据信息;主要包含数据库信息,连接接口信息,Schema信息,表信息,约束信息和列类型信息;Step24 :根据表个数分配线程;采用多线程机制可以加快对元数据的解析速度,并在大规模并行系统中适用;St印25 :数据隔离模式匹配检查;St印26 :表层数据检查;检查表一级别的信息,包含一些约束信息;St印27 :列层信息检查;在每个表中逐列的进行匹配检查,主要是类型的匹配和兼容检查;St印28 :生成检查结果文件XML。涉及到表关联性的分析时本发明的方法能够自动识别需要进行迁移的相关表格,具体步骤如下Stepl :读取中心表元数据信息;St印2:读取列信息;St印3:判断该列是否为外键;在数据库中可以通过检查表信息的SQL语句foreign key (id) references outTable (id))方式即可识别,在元数据中记录;Step4 :读取关联表信息;通过外键,读取以该外键为键的数据表;Step5 :迁移必要性计算;主要有迁移的关联深度因素,迁移的权限以及迁移的成本;当系统设定迁移关联深度为3时,超过的不予考虑;当数据表权限设定不可以迁移时,不能迁移;当在目标数据库没有该表时,需要新建该表则需要考虑在目标数据库新建该表带来的成本和影响;Step6 :是否需要迁移;根据迁移必要性计算,得出是否需要迁移该表;如果否则忽略该表,否则将该关联表加入到需要迁移的队列中;St印7 :是否还有列,如果有转Step2,否则结束。本发明是采用多线程机制的,因为云数据中心一般是多机多线程的,所以采用多线程机制不仅有利于提高检查速度而且也是符合分布运算需求,具体流程如下Stepl :主线程对象获取迁移列表中元素,getltems (),返回迁移列表;Step2 :根据迁移列表创建等量的子线程,子进程对象返回创建成功;Step3:分配任务。遍历迁移列表,把每个表对应一个子线程的分配;Step4 :子进程分配到任务,读取表的元数据信息;
Step5 :进行匹配检查,每个子线程各自进行表的匹配检查,主要是模式、表约束、列类型检查,源与目标的匹配检查;Step6 :子线程生成检查结果文件XML,并通知父线程;Step7 :父线程接收到通知并建立一个XML文件,文件中引用各个子线程的XML文件,完毕。在经过转换后的目标数据在装载到目标表之前多了一步,表复制,具体为根据目标表信息新建一个结构完全一样的MidTable中间表格,然后将转换后的目标数据先写入到该MidTable中,当所有数据都迁移完毕后,再一次性的将MidTable中的数据写入到目标表TargetTable中;因为MidTable和TargetTable是同一个数据库内,所以数据传输速率非常快,这样就避免了直接将目标数据装载到TargetTable导致的长时间锁住TargetTable的问题,经过复制表策略的处理,将数据迁移对用户正常使用SaaS服务的影响降到了最低。
本发明技术方案带来的有益效果I、将验证前置,即在数据迁移之前做好类型转换等工作,这样避免了传统的数据迁移方法在迁移进行后突然因为数据类型不兼容或者模式不兼容等问题导致的中断。和现有的技术相比,增加了数据表相关性的分析,自动的识别需要一并迁移的数据表,不需要用户指定。对于不熟悉该数据库设计的用户而言,人工指定是比较困难的一个工作。往往需要耗费较长时间,并且不能保证正确。2、提高系统的并行性。在检查模块中采用多线程机制,使得模块不仅运行速度提升,而且方便移植到分布式等并行系统中。在数据迁移过程中引入复制表策略也提高了系统的并行性能。


为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其它的附图。图I是现有技术中数据迁移的结构流程图;图2是本发明系统结构图;图3是本发明预迁移检查的流程图;图4是本发明中自动分析表格关联性方法流程图;图5是本发明中多线程并发预迁移检查序列图;图6是本发明数据迁移系统流程图;图7是本发明中复制表策略的示意图。
具体实施例方式下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。本发明在预迁移检查模块引入表关联性分析,自动识别需要迁移数据,并采用多线程并行机制进行迁移检查,提高系统并行性,更加适用于分布式系统。在迁移过程采用复制表策略,将对正常用户的影响降到最低。本发明针对云计算中SaaS中的用户数据迁移问题提出,系统架构包含三大模块用户界面、预迁移检查模块和迁移主模块,如图2所示。用户界面模块是系统用户和迁移系统进行交互的接口。预迁移检查模块完成数据迁移之前的表关联性检查、类型检查和模式检查等匹配检查的模块,其结果采用XML存储。迁移主模块是完成迁移的真正过程,包含数据提取,转换和装载。在现有技术中一种适应SaaS多租户模式的数据迁移方法中也提出了一种预检查方法,也是用XML进行数据的持久化,但本发明增加了重要的数据关联性的分析,使得用户不需要人工指定所有需要迁移的数据表。如果一些表没有迁移,那么所迁移的数据不够完整也将导致在目标数据库中不能够使用。此外,本发明采用多线程技术,使得系统并行性增加而且适合云计算平台。
图3是预迁移检查的流程图,是一种按照由数据库模式到表列逐层检查的过程。具体步骤如下Stepl :用户确认迁移;用户通过用户界面和系统交互,确认需要进行迁移的用户数据;Step2 :分析表的关联;一个用户的数据往往不止和一个表相关;表与表之间通过外键相关联,迁移一个用户数据可能需要迁移多个表;Step3 :提取表元数据信息;主要包含数据库信息,连接接口信息,Schema信息,表信息,约束信息和列类型信息等;Step4 :根据表个数分配线程;采用多线程机制可以加快对元数据的解析速度,并在大规模并行系统中可以适用;St印5 :数据隔离模式匹配检查;一般SaaS的数据都可能涉及到不同模式的存储,现在主流的有三种,独立数据库、独立Schema和共享表的数据隔离;Step6 :表层数据检查;检查表一级别的信息,包含一些约束信息;Step7 :列层信息检查;在每个表中逐列的进行匹配检查;主要是类型的匹配和兼容检查;St印8 :生成检查结果文件XML。在上述流程中涉及到表关联性的分析。在现有的技术中需要用户指定表格才能够进行,而本发明的方法能够自动识别需要进行迁移的相关表格。如图4所示,具体如下Stepl :读取中心表元数据信息。St印2 :读取列信息。St印3 :判断该列是否为外键。在数据库中可以通过检查表信息的SQL语句foreign key (id) references outTable (id));等方式即可识别,可以在元数据中记录。Step4 :读取关联表信息。通过外键,读取以该外键为键的数据表。Step5 :迁移必要性计算。主要有迁移的关联深度因素,迁移的权限以及迁移的成本。当系统设定迁移关联深度为3时,超过的不予考虑。当数据表权限设定不可以迁移时,不能迁移。当在目标数据库没有该表时,需要新建该表则需要考虑在目标数据库新建该表带来的成本和影响。Step6 :是否需要迁移。根据迁移必要性计算,得出是否需要迁移该表。如果否则忽略该表,否则将该关联表加入到需要迁移的队列中。St印7 :是否还有列,如果有转Step2,否则结束。上述步骤中提到本发明是采用多线程机制的,因为云数据中心一般是多机多线程的,所以采用多线程机制不仅有利于提高检查速度而且也是符合分布运算需求。如图5所示,具体流程如下。Stepl :主线程对象获取迁移列表中元素,getltems O。返回迁移列表。Step2 :根据迁移列表创建等量的子线程。子进程对象返回创建成功。Step3:分配任务。遍历迁移列表,把每个表对应一个子线程的分配。
Step4 :子进程分配到任务,读取表的元数据信息。Step5 :进行匹配检查。每个子线程各自进行表的匹配检查。主要是模式、表约束、列类型等检查,源与目标的匹配检查。St印6 :子线程生成检查结果文件XML,并通知父线程。Step7 :父线程接收到通知并建立一个XML文件,文件中引用各个子线程的XML文件。完毕。在引入了预迁移检测的迁移方法其方法流程如图6所示。在数据提取之前增加了预迁移检查,在数据转换和数据装载之间增加了是否新建表和共享表的特殊处理过程。具体过程如下Stepl :确认迁移。用户确认需要迁移的用户数据。Step2 :预迁移检查。根据检查结果预先制定完善的转换规则和程序。St印3:数据提取。从源数据库中提取出数据。Step4 :数据转换。将源数据按照预处理制定的转换程序进行类型等的转换,产生目标数据。Step5:根据目标数据,先判断是否需要建立新的表,如果要则建立新表,否则直接跳过;Step6 :是否进行共享表的特殊处理,若是转Step7,否则转Step8 ;Step7:复制表处理。对共享表采用复制表策略,提高系统的并发性能。StepS:数据装载。最终将目标数据装载到目标数据库的目标表中,完毕。上述过程提及复制表策略,图7是复制表策略的示意图。在源数据库中的数据表sourceTable需要进行迁移,它首先经过检查处理和数据转换,这部分内容在上述章节已经有过详细的说明。而我们的策略在于在经过转换后的目标数据在装载到目标表之前多了一步,表复制。具体为根据目标表信息新建一个结构完全一样的MidTable中间表格。然后将转换后的目标数据先写入到该MidTable中,当所有数据都迁移完毕后,再一次性的将MidTable中的数据写入到目标表TargetTable中。因为MidTable和TargetTable是同一个数据库内,所以数据传输速率非常快。这样就避免了直接将目标数据装载到TargetTable导致的长时间锁住TargetTable的问题。经过复制表策略的处理,将数据迁移对用户正常使用SaaS服务的影响降到了最低。
本发明的优点I、将验证前置,即在数据迁移之前做好类型转换等工作,这样避免了传统的数据迁移方法在迁移进行后突然因为数据类型不兼容或者模式不兼容等问题导致的中断。和现有的技术相比,增加了数据表相关性的分析,自动的识别需要一并迁移的数据表,不需要用户指定。对于不熟悉该数据库设计的用户而言,人工指定是比较困难的一个工作。往往需要耗费较长时间,并且不能保证正确。2、提高系统的并行性。在检查 模块中采用多线程机制,使得模块不仅运行速度提升,而且方便移植到分布式等并行系统中。在数据迁移过程中引入复制表策略也提高了系统的并行性能。以上对本发明实施例所提供的一种基于表关联分析的数据表迁移的方法,进行了详细介绍,本文中应用了具体个例对本发明的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本发明的方法及其核心思想;同时,对于本领域的一般技术人员,依据本发明的思想,在具体实施方式
及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本发明的限制。
权利要求
1.一种基于表关联分析的数据表迁移的方法,其特征在于,该方法在预迁移检查模块引入表关联性分析,自动识别需要迁移数据,并采用多线程并行机制进行迁移检查;具体步骤如下 Stepl :确认迁移,用户确认需要迁移的用户数据; Step2 :预迁移检查,根据检查结果预先制定完善的转换规则和程序; Step3 :数据提取,从源数据库中提取出数据; Step4 :数据转换,将源数据按照预处理制定的转换程序进行类型等的转换,产生目标数据; Step5 :根据目标数据,先判断是否需要建立新的表,如果要则建立新表,否则直接跳过; Step6 :是否进行共享表的特殊处理,若是转Step7,否则转Step8 ; Step7 :复制表处理,对共享表采用复制表策略,提高系统的并发性能; StepS :数据装载,最终将目标数据装载到目标数据库的目标表中,完毕。
2.如权利要求I所述的方法,其特征在于,预迁移检查的具体流程如下 Step21 :用户确认迁移;用户通过用户界面和系统交互,确认需要进行迁移的用户数据; Step22 :分析表的关联;一个用户的数据往往不止和一个表相关;表与表之间通过外键相关联,迁移一个用户数据可能需要迁移多个表; Step23 :提取表元数据信息;主要包含数据库信息,连接接口信息,Schema信息,表信息,约束信息和列类型信息; Step24 :根据表个数分配线程;采用多线程机制可以加快对元数据的解析速度,并在大规模并行系统中适用; Step25 :数据隔离模式匹配检查; Step26 :表层数据检查;检查表一级别的信息,包含一些约束信息; St印27 :列层信息检查;在每个表中逐列的进行匹配检查,主要是类型的匹配和兼容检查; St印28 :生成检查结果文件XML。
3.如权利要求I或2所述的方法,其特征在于,涉及到表关联性的分析时本发明的方法能够自动识别需要进行迁移的相关表格,具体步骤如下 Stepl :读取中心表元数据信息; St印2 :读取列信息; Step3 :判断该列是否为外键;在数据库中可以通过检查表信息的SQL语句foreignkey (id) references outTable (id))方式即可识别,在元数据中记录; Step4 :读取关联表信息;通过外键,读取以该外键为键的数据表; Step5 :迁移必要性计算;主要有迁移的关联深度因素,迁移的权限以及迁移的成本;当系统设定迁移关联深度为3时,超过的不予考虑;当数据表权限设定不可以迁移时,不能迁移;当在目标数据库没有该表时,需要新建该表则需要考虑在目标数据库新建该表带来的成本和影响;Step6 :是否需要迁移;根据迁移必要性计算,得出是否需要迁移该表;如果否则忽略该表,否则将该关联表加入到需要迁移的队列中; Step7 :是否还有列,如果有转Step2,否则结束。
4.如权利要求2所述的方法,其特征在于,本发明是采用多线程机制的,因为云数据中心一般是多机多线程的,所以采用多线程机制不仅有利于提高检查速度而且也是符合分布运算需求,具体流程如下 Stepl :主线程对象获取迁移列表中元素,getltems O ,返回迁移列表; Step2 :根据迁移列表创建等量的子线程,子进程对象返回创建成功; Step3 :分配任务。遍历迁移列表,把每个表对应一个子线程的分配; Step4 :子进程分配到任务,读取表的元数据信息; Step5 :进行匹配检查,每个子线程各自进行表的匹配检查,主要是模式、表约束、列类型检查,源与目标的匹配检查; Step6 :子线程生成检查结果文件XML,并通知父线程; Step7 :父线程接收到通知并建立一个XML文件,文件中引用各个子线程的XML文件,完毕。
5.如权利要求I所述的方法,其特征在于,在经过转换后的目标数据在装载到目标表之前多了一步,表复制,具体为根据目标表信息新建一个结构完全一样的MidTable中间表格,然后将转换后的目标数据先写入到该MidTable中,当所有数据都迁移完毕后,再一次性的将MidTable中的数据写入到目标表TargetTable中;因为MidTable和TargetTable是同一个数据库内,所以数据传输速率非常快,这样就避免了直接将目标数据装载到TargetTable导致的长时间锁住TargetTable的问题,经过复制表策略的处理,将数据迁移对用户正常使用SaaS服务的影响降到了最低。
全文摘要
本发明公开了一种基于表关联分析的数据表迁移的方法,该方法在预迁移检查模块引入表关联性分析,自动识别需要迁移数据。并采用多线程并行机制进行迁移检查,最后进行数据提取及数据转换产生目标数据,根据目标数据建立新的表以及进行共享表的特殊处理,对共享表进行复制表策略,提高系统并行性,更加适用于分布式系统。在迁移过程采用复制表策略,将对正常用户的影响降到最低。
文档编号G06F17/30GK102831211SQ20121028919
公开日2012年12月19日 申请日期2012年8月14日 优先权日2012年8月14日
发明者罗笑南, 曾金龙, 林谋广, 孟思明, 林格 申请人:中山大学
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1