一种基于逆拓扑的数据库数据迁移方法

文档序号:6638154阅读:147来源:国知局
一种基于逆拓扑的数据库数据迁移方法
【专利摘要】本发明公开了一种基于逆拓扑的数据库数据迁移方法,包括以下步骤:根据需要迁移的数据库,获取其拓扑关系图;根据拓扑关系图和模式转换模型,得出迁移过程中的扩展顺序序列;根据得到的扩展顺序序列,将数据和模式迁移至NoSQL中。本发明通过在进行数据转移同时,进行了模式转移,使得对有依赖关系的数据表的数据及逆行那个正确整合到迁移后的NoSQL数据库中,从而保证了迁移前的SQL数据库中的任何一个join查询都能在迁移后的NoSQL数据库中的单个表内查到正确结果,不再需要对多个表进行访问,有效提高了对迁移后NoSQL数据库的查询效率。本发明作为一种基于逆拓扑的数据库数据迁移方法可广泛应用于计算机领域中。
【专利说明】一种基于逆拓扑的数据库数据迁移方法

【技术领域】
[0001]本发明涉及计算机【技术领域】,尤其涉及一种基于逆拓扑的数据库数据迀移方法。

【背景技术】
[0002]目前现有的相关研宄工作中,主要有以下三方面:反规范化,数据转移和模式转换。反规范化工作主要是指针对传统关系型数据库的规范约束,进行适当冗余存储来提高查询效率等方式来设计数据库。数据转移工作主要指是在从SQL数据库到NoSQL数据库迀移仅仅是数据库中数据的搬迀,例如SQL数据库中某个表的数据单纯转储到MongoDB数据中的某个Collect1n或其他NoSQL数据库中的某个表,并没有进行模式转换,SQL数据库中的表的依赖关系并没有进行迀移。模式转换工作主要是指不仅是SQL数据库中的数据转储到NoSQL数据库中,相应的模式也进行了迀移。
[0003]在传统关系型数据库到NoSQL数据库的数据迀移方法中,目前很多研宄工作是单纯地迀移表的内容(数据转移),并没有进行模式转换,即迀移过程中丢失了迀移前的SQL数据库表之间的关联关系。那么这样迀移后的NoSQL数据库并不能支持在单个表内得出原有SQL数据库的join查询语句的结果,需要进行分开查询多次,导致查询效率低。


【发明内容】

[0004]为了解决上述技术问题,本发明的目的是提供一种能进行模式转换,提高迀移后查询效率的一种基于逆拓扑的数据库数据迀移方法。
[0005]本发明所采用的技术方案是:
一种基于逆拓扑的数据库数据迀移方法,包括以下步骤:
A、根据需要迀移的数据库,获取其拓扑关系图;
B、根据拓扑关系图和模式转换模型,得出迀移过程中的扩展顺序序列;
C、根据得到的扩展顺序序列,将数据和模式迀移至NoSQL中。
[0006]作为所述的一种基于逆拓扑的数据库数据迀移方法的进一步改进,所述步骤B包括:
B1、从拓扑关系图中的叶子节点集中任取一个节点作为初始节点;
B2、对所有以该初始节点为弧尾节点的边进行处理,得到其对应边的整合顺序;
B3、将该初始节点移出叶子节点集,放入孤立节点集;
B4、将处理过程得到的整合顺序加入至扩展顺序序列;
B5、返回执行步骤BI,直到叶子节点集为空集。
[0007]作为所述的一种基于逆拓扑的数据库数据迀移方法的进一步改进,所述步骤B2包括:
B21、任取以该初始节点为弧尾节点的任一条边,并对该边的弧头节点进行扩展整合,得到该边的整合顺序;
B22、判断该弧头节点是否在不包含该边的情况下是叶子节点,若是,则将该起点放入叶子节点集;否则,执行步骤B23 ;
B23、返回执行步骤B21,直到该初始节点为弧尾节点的所有边均处理完毕。
[0008]作为所述的一种基于逆拓扑的数据库数据迀移方法的进一步改进,所述步骤C包括:
Cl、将只出现在弧尾的节点的数据分别迀移到NoSQL数据库中对应的数据表中;
C2、根据扩展顺序序列,按照转换后的模式依次将剩余节点的数据迀移至NoSQL数据库中对应的数据表中。
[0009]作为所述的一种基于逆拓扑的数据库数据迀移方法的进一步改进,所述步骤C2包括:
C21、依次取出扩展顺序序列中的整合顺序;
C22、将取出的整合顺序中弧尾节点的信息融入弧头节点中并对弧头节点进行扩展; C23、将扩展后的弧头节点的数据迀移至NoSQL数据库中对应的数据表中。
[0010]本发明的有益效果是:
本发明一种基于逆拓扑的数据库数据迀移方法通过在进行数据转移同时,进行了模式转移,使得对有依赖关系的数据表的数据及逆行那个正确整合到迀移后的NoSQL数据库中,从而保证了迀移前的SQL数据库中的任何一个join查询都能在迀移后的NoSQL数据库中的单个表内查到正确结果,不再需要对多个表进行访问,有效提高了对迀移后NoSQL数据库的查询效率。

【专利附图】

【附图说明】
[0011]下面结合附图对本发明的【具体实施方式】作进一步说明:
图1是本发明一种基于逆拓扑的数据库数据迀移方法的步骤流程图;
图2是本发明一种基于逆拓扑的数据库数据迀移方法实施例一的模式转换示意图;
图3是本发明一种基于逆拓扑的数据库数据迀移方法实施例二的拓扑关系示意图。

【具体实施方式】
[0012]参考图1,本发明一种基于逆拓扑的数据库数据迀移方法,包括以下步骤:
A、根据需要迀移的数据库,获取其拓扑关系图;
B、根据拓扑关系图和模式转换模型,得出迀移过程中的扩展顺序序列;
C、根据得到的扩展顺序序列,将数据和模式迀移至NoSQL中。
[0013]作为所述的一种基于逆拓扑的数据库数据迀移方法的进一步改进,所述步骤B包括:
B1、从拓扑关系图中的叶子节点集中任取一个节点作为初始节点;
B2、对所有以该初始节点为弧尾节点的边进行处理,得到其对应边的整合顺序;
B3、将该初始节点移出叶子节点集,放入孤立节点集;
B4、将处理过程得到的整合顺序加入至扩展顺序序列;
B5、返回执行步骤BI,直到叶子节点集为空集。
[0014]作为所述的一种基于逆拓扑的数据库数据迀移方法的进一步改进,所述步骤B2包括: B21、任取以该初始节点为弧尾节点的任一条边,并对该边的弧头节点进行扩展整合,得到该边的整合顺序;
B22、判断该弧头节点是否在不包含该边的情况下是叶子节点,若是,则将该起点放入叶子节点集;否则,执行步骤B23 ;
B23、返回执行步骤B21,直到该初始节点为弧尾节点的所有边均处理完毕。
[0015]其中,步骤B的具体概述如下:
(1)从拓扑关系图中的叶子节点集P里任取出一个节点U;
(2)取出以该节点u为弧尾的任一条边〈V,u>,对该边的弧头节点V进行扩展,即把节点u的全部信息插进节点V中,循环处理完所有以u为弧尾的边;
(3)当节点V扩展完毕,即没有以该点为弧头的边,就把节点放入叶子节点集P。当叶子节点u不再被任何节点依赖,即没有以该节点为弧尾,就把该节点移出节点集P,放入孤立节点集T ;
(4)如此循环处理叶子节点集P,直到叶子节点集P为空集。
[0016]本发明步骤B的具体实施例一如下:
参考图2,例如要进行迀移的关系型数据库有表T3、T2、T1,依赖关系有Τ3对Τ2的外键依赖、Τ2对Tl的外键依赖。数据库的表和依赖关系表示成对应的有向无环图后有Τ3、Τ2、Tl三个节点和〈Τ3,Τ2>、< Τ2, Tl〉两条表。下面是本案例的所有具体步骤:
51、从叶子节点集P={Tl}里任取出一个节点Tl ;
52、取出以该节点Tl为弧尾的任一条边〈Τ2,Tl〉,对该边的弧头节点Τ2进行扩展整合,即把节点Tl的全部信息插进节点Τ2中。节点Τ2扩展完毕,即没有以该点为弧头的边,就把节点放入叶子节点集P,P= {Tl,Τ2}。当叶子节点Tl不再被任何节点依赖,即没有以该节点为弧尾,就把该节点移出节点集P,P= {Τ2},放入孤立节点集T,T= {Tl};
53、把整合顺序〈Τ2,Tl〉加入数据表的整合顺序结果的序列S中,S={〈Τ2,Tl〉};
54、继续从叶子节点集P={Τ2}里任取出一个节点Τ2 ;
55、取出以该节点Τ2为弧尾的任一条边<Τ3,Τ2>,对该边的弧头节点Τ3进行扩展整合,即把节点Τ2的全部信息插进节点Τ3中。节点Τ3扩展完毕,即没有以该点为弧头的边,就把节点放入叶子节点集Ρ,Ρ={Τ2,Τ3}。当叶子节点Τ2不再被任何节点依赖,即没有以该节点为弧尾,就把该节点移出节点集P,P= {Τ3},放入孤立节点集T,T= {Tl,Τ2};
56、把整合顺序<Τ3,Τ2>加入数据表的整合顺序结果的序列S中,S={〈T2,T1>,〈T3,T2>};
57、继续从叶子节点集P={T3}里任取出一个节点T3,没有以该节点T2为弧尾的边,把该节点移出节点集P,P=H,放入孤立节点集T,T= {Tl,T2, T3};
58、此时,P={},P为空集;
59、输出数据表的整合顺序结果的序列S,S={〈T2,Tl〉,<T3, Τ2>}。
[0017]作为所述的一种基于逆拓扑的数据库数据迀移方法的进一步改进,所述步骤C包括:
Cl、将只出现在弧尾的节点的数据分别迀移到NoSQL数据库中对应的数据表中;
C2、根据扩展顺序序列,按照转换后的模式依次将剩余节点的数据迀移至NoSQL数据库中对应的数据表中。
[0018]作为所述的一种基于逆拓扑的数据库数据迀移方法的进一步改进,所述步骤C2包括:
C21、依次取出扩展顺序序列中的整合顺序;
C22、将取出的整合顺序中弧尾节点的信息融入弧头节点中并对弧头节点进行扩展; C23、将扩展后的弧头节点的数据迀移至NoSQL数据库中对应的数据表中。
[0019]本发明步骤C的具体实施例二如下:
参考图3,其中,扩展顺序序列:
S=[<T2, Tl〉,<T3, Tl〉,<Τ6, Τ5>, <Τ3, Τ2>, <Τ6, Τ2>]。
[0020]1、先把所有叶子节点Τ1、Τ5中的数据转移到NoSQL数据库中的表Tl’和Τ5’中;
2、取出S中的元组第一个元组〈Τ2,Tl〉,把Tl的全部内容融入Τ2中,Τ2扩展后为Τ2”,把Τ2”的数据转移放到NoSQL数据库的Τ2’中;
3、重复步骤2的扩展方法处理S中剩下的扩展序列[〈Τ3,Tl〉,<Τ6,Τ5>, <Τ3, Τ2>, <Τ6,Τ2>]直到S为空集。
[0021]以上是对本发明的较佳实施进行了具体说明,但本发明创造并不限于所述实施例,熟悉本领域的技术人员在不违背本发明精神的前提下还可做作出种种的等同变形或替换,这些等同的变形或替换均包含在本申请权利要求所限定的范围内。
【权利要求】
1.一种基于逆拓扑的数据库数据迀移方法,其特征在于:包括以下步骤: 八、根据需要迀移的数据库,获取其拓扑关系图; 8、根据拓扑关系图和模式转换模型,得出迀移过程中的扩展顺序序列; 匕根据得到的扩展顺序序列,将数据和模式迀移至亂中。
2.根据权利要求1所述的一种基于逆拓扑的数据库数据迀移方法,其特征在于:所述步骤8包括: 81、从拓扑关系图中的叶子节点集中任取一个节点作为初始节点; 82、对所有以该初始节点为弧尾节点的边进行处理,得到其对应边的整合顺序; 83、将该初始节点移出叶子节点集,放入孤立节点集; 84、将处理过程得到的整合顺序加入至扩展顺序序列; 85、返回执行步骤81,直到叶子节点集为空集。
3.根据权利要求2所述的一种基于逆拓扑的数据库数据迀移方法,其特征在于:所述步骤82包括: 821、任取以该初始节点为弧尾节点的任一条边,并对该边的弧头节点进行扩展整合,得到该边的整合顺序; 822、判断该弧头节点是否在不包含该边的情况下是叶子节点,若是,则将该起点放入叶子节点集;否则,执行步骤823 ; 823、返回执行步骤821,直到该初始节点为弧尾节点的所有边均处理完毕。
4.根据权利要求1所述的一种基于逆拓扑的数据库数据迀移方法,其特征在于:所述步骤包括: 01、将只出现在弧尾的节点的数据分别迀移到如3亂数据库中对应的数据表中; 02、根据扩展顺序序列,按照转换后的模式依次将剩余节点的数据迀移至如3亂数据库中对应的数据表中。
5.根据权利要求4所述的一种基于逆拓扑的数据库数据迀移方法,其特征在于:所述步骤02包括: .021、依次取出扩展顺序序列中的整合顺序; .022、将取出的整合顺序中弧尾节点的信息融入弧头节点中并对弧头节点进行扩展;. 023、将扩展后的弧头节点的数据迀移至数据库中对应的数据表中。
【文档编号】G06F17/30GK104504012SQ201410758140
【公开日】2015年4月8日 申请日期:2014年12月10日 优先权日:2014年12月10日
【发明者】赵淦森, 林巧英, 李立波, 高晓杰, 周尚勤, 王欣明 申请人:华南师范大学
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1