一种数据库海量数据比对的方法技术

技术编号:2826787 阅读:916 留言:0更新日期:2012-04-11 18:40
本发明专利技术公开了一种数据库海量数据比对的方法,应用于数据库领域,其包括步骤:从数据库中导出表数据文件;对所述表数据文件进行分片排序,生成海量数据排序文件;将所述海量数据排序文件中的主表海量数据排序文件与备表海量数据排序文件进行比对,生成表异常记录文件。本发明专利技术方法只需遍历一次主、备表海量数据排列文件就能得到比对结果,并且能够高效地完成海量数据的主、备数据库之间的数据检查,从而大大提高了数据库间海量数据的比对效率。

【技术实现步骤摘要】

麥专利技术涉及数据库应用领域,尤其涉及。
技术介绍
牟基于主数据库、备份数据库设计方案中,比如,现在广泛使用的异 地容灾备份策略,我们期望异地容灾备份数据库中的数据跟本地数据库的数据应该保持一致,但实践中由于种种原因,诸如通信、IO、应用逻辑等造成了主、备份数据库的不一致,因此如何快速找出主、备份数据库数据 的不一致成为方案中一个不可缺少的环节。为了解决上述问题,现有的数据库比对技术中有以下几种方法一种方法是采用直接数据库比对方法,先将主、备份数据库的数据 分别导入第三方介质上的数据库,然后执行SQL脚本,进行表与表之间的 差操作,得出两表之间的差异数据,写入数据库中,再将这部分数据倒出 进行分析,这种方法的优点是比较逻辑由数据库完成,正确性不用担心, 程序实现简单,缺点是操作步骤麻烦,还需要第三方设备上安装有数据库, 价格昂贵,并且需要进行全库导出导入操作,如果数据库数据量很大的话, 比对需要花费很大的时间而且主备数据之间的差异不容易观察;另一种方法是将主、备份数据库的数据导出为可读的表数据文件, 然后用merge工具进行文件比对,这种方法优点是比对差异明显,容易观 察,其缺点也是无法对海量数据文件进行比对。目前现有几种商用Merge软件都无法有效针对海量数据进行比对,而在NGN ( Next Generation Network,下 一代网络)核心网开发商用的实践中, 用户表数据常常达到上千万条记录,显然上述两种比对方法都不容乐观。 因此,现有技术有待于完善和发展。
技术实现思路
本专利技术的所要解决的问题在于提供, 该方法克服了直接数据库比对和现有merge工具比对的性能瓶颈,解决了 海量数据的快速比对问题。为了解决上述技术问题,本专利技术方法的技术方案包括,其包括如下步骤A、 从数据库中导出表数据文件;B、 对所述表数据文件进行分片排序,生成海量数据排序文件;C 、 将所述海量数据排序文件中的主表海量数据排序文件与备表 海量数据排序文件进行比对,生成表异常记录文件。所述方法,其中,所述步骤A中,所述表数据文件包括文件头及文件 体;所述文件头为数据表描述信息,该数据表描述信息包括数据库表名、 表字段、表数据记录总数及表主键;所述文件体为数据内容。所述方法,其中,所述表数据文件采用文本格式。所述方法,其中,所述步骤B中,所述海量数据排序文件的生成过程 包括如下步骤B1 、从导出的表数据文件中获取数据表描述信息;B2、根据所述数据表描述信息的记录总数,判断是否要对所述表数据 文件进行分片处理;B3、如果是,则对所述表数据文件进行分片排序。所述方法,其中,所述步骤B3中,对所述分片排序的处理过程包括如 下步骤B31、在读入所述表数据文件的源文件时,将所述源文件拆分为数据块文件;B32、按照所述表主键的排列方式,将拆分后的数据块文件直接进行排 序,并且输出成排列文件;B33、按照多路平衡归并方式,对所述排列文件进行归并排序,生成所 述海量数据排序文件。所述方法,其中,所述步骤B31中,所述拆分过程采用顺序拆分方式 进行。所述方法,其中,所述步骤C中,所述主表海量数据排序文件与备表 海量数据排序文件的比对过程包括如下步骤Cl、打开所述主表海量数据排列文件及备表海量数据排序文件;C2、按顺序依次比对所述主表海量数据排序文件及备表海量数据排序 文件,获得比对结果;C3、根据所述比对结果,生成所述表异常记录文件。所述方法,其中,所述步骤C2中,所述比对方式采用比对所述主表海 量数据排序文件及备表海量数据排序文件的关^t字或文件尾。所述方法,其中,所述步骤C3中,所述表异常记录文件包括主表异常 记录文件或备表异常记录文件。本专利技术方法只需遍历一次主、备表海量数据排列文件就能得到比对结 果,并且能够高效地完成海量数据的主、备数据库之间的数据检查,从而 大大提高了数据库间海量数据的比对效率。附图说明图1为本专利技术方法的实现流程图;图2是本专利技术方法的分片多路归并排序的实现流程图; 图3是本专利技术方法的海量数据排列文件比对的实现流程图。具体实施方式下面结合附图,对本专利技术的较佳实施例作进一步详细说明。 如图1所示,本专利技术提供了,其实现 流程包括如下步骤110、从主数据库及备数据库中分别导出各自的表数据文件;'其中,所 述表数据文件采用文本格式,且所述表数据文件包括文件头及文件体;所 述文件头为数据表描述信息,该数据表描述信息包括数据库表名、表字段、 表数据记录总数及表主键,所述文件体为数据内容120、从导出的主、备表数据文件中获取数据表描述信息,根据各个表 数据文件记录的大小(即各个表l史据文件的记录大于IOO万),判断是否要 对所述表数据文件进行分片处理,如果是,则转至步骤140,如果各个表数 据文件记录非常大(>100万),否则转至步骤130;130、采用直接快速排序的方式,对主、备表数据文件进行排序,分别 生成主、备表海量数据排序文件,并转至步骤160;140、在读入主、备表数据文件的源文件时,分别将各自对应的源文件 拆分为数据块文件,并按照所述表主键的排列方式,将拆分后的数据块文件 直接进行排序,并且输出成排列文件;同时^照多^ 各平tf归并方式,对所述 排列文件进行归并排序,生成所述海量数据排序文件;150、将所述表海量数据排序文件中的主海量数据排序文件与备海量数 据排序文件进行比对,生成表异常记录文件,并输出表异常记录文件;其 中,所述表异常记录文件为主表异常记录(TargetDiff)文件及备表异常记 录(SourceDiff)文件中的一个或两个,且在整个比对过程中,平均时间复 杂度为0 (nlogn)。其中,步骤140中,请参阅附图2,分片排序及多路平衡归并排序的整 个实现流禾呈如下141、 将主、备表数据文件进行分片排序输出,获得多个(即N个)有 序分片数据文件,并对1至N进行编号;142、 根据分片数据文件总数N,生成一棵叶子节点为N的平衡二叉树, 初始状态时,将每个非叶子节点置为关键字可能达到的最小值(MinKey), 且每一个叶子节点对应一个有序分片数据文件的编号;143、 从叶子节点读取对应编号的有序分片数据文件的第 一行数据;144、 从底向上对所有非叶子节点进行如下调整从非叶子节点移动到 根节点,其所经过的非叶子(包括根节点)节点指向其左右孩子关键字所 对应的大编号,当在根节点进行左右孩子比较时,变量S记录关键字所对应 的小编号;145、 调整完毕,输出变量S中记录编号中所对应的数据到外排序文件;146、 从对应S记录编号的叶子节点上读取对应有序分片数据文件的下 一行数据,当读取到文件尾时,置读取数据为关键字可能达到的最大值(Max Key);147、 从该叶子节点移动到根节点,其所经过的非叶子(包括根节点) 节点指向其左右孩子关键字所对应的大的编号,在根节点左右孩子比较时,变量S记录关键字所对应的小的编号;148、 判断变量S是否等于MaxKey,是则转至步骤149,否则转至步骤145;149、 分别生成主表、备表海量数据排序文件。其中,步骤150中,请参阅附图3,所述主、备海量数据排序文件比对 过程包括如下处理步骤151、 分别打开数据库中所述主表海量数据排列文件及备表海量数据排 序文件;本文档来自技高网...

【技术保护点】
一种数据库海量数据比对的方法,其包括如下步骤:A、从数据库中导出表数据文件;B、对所述表数据文件进行分片排序,生成海量数据排序文件;C、将所述海量数据排序文件中的主表海量数据排序文件与备表海量数据排序文件进行比对,生成表异常记录文件。

【技术特征摘要】
1、一种数据库海量数据比对的方法,其包括如下步骤A、从数据库中导出表数据文件;B、对所述表数据文件进行分片排序,生成海量数据排序文件;C、将所述海量数据排序文件中的主表海量数据排序文件与备表海量数据排序文件进行比对,生成表异常记录文件。2、 根据权利要求1所述的方法,其特征在于,所述步骤A中,所述 表数据文件包括文件头及文件体;所述文件头为数据表描述信息,该数据 表描述信息包括数据库表名、表字段、表数据记录总数及表主键;所述文 件体为数据内容。3、 根据权利要求2所述的方法,其特征在于,所述表数据文件采用 文本格式。4、 根据权利要求2所述的方法,其特征在于,所述步骤B中,所述 海量数据排序文件的生成过程包括如下步骤B1 、从导出的表数据文件中获取所述数据表描述信息;B2、根据所述数据表描述信息的记录总数,判断是否要对所述表数据文件进行分片处理; B3、如果是则对所述表数据文件进行分片排序。5、 根据权利要求4所述的方法,其特征在于,所述步骤B3中,对 所述分片排序的处理过程包括如下步骤B31、在读入所...

【专利技术属性】
技术研发人员:朱文琦郑杰
申请(专利权)人:中兴通讯股份有限公司
类型:发明
国别省市:94[中国|深圳]

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1