CN101236554B - 一种数据库海量数据比对的方法 - Google Patents

一种数据库海量数据比对的方法 Download PDF

Info

Publication number
CN101236554B
CN101236554B CN2007100775537A CN200710077553A CN101236554B CN 101236554 B CN101236554 B CN 101236554B CN 2007100775537 A CN2007100775537 A CN 2007100775537A CN 200710077553 A CN200710077553 A CN 200710077553A CN 101236554 B CN101236554 B CN 101236554B
Authority
CN
China
Prior art keywords
file
data
mass data
active
sort
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
CN2007100775537A
Other languages
English (en)
Other versions
CN101236554A (zh
Inventor
朱文琦
郑杰
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Guangdong Decheng Science Co. Ltd.
Original Assignee
ZTE Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by ZTE Corp filed Critical ZTE Corp
Priority to CN2007100775537A priority Critical patent/CN101236554B/zh
Publication of CN101236554A publication Critical patent/CN101236554A/zh
Application granted granted Critical
Publication of CN101236554B publication Critical patent/CN101236554B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

本发明公开了一种数据库海量数据比对的方法,应用于数据库领域,其包括步骤:从数据库中导出表数据文件;对所述表数据文件进行分片排序,生成海量数据排序文件;将所述海量数据排序文件中的主表海量数据排序文件与备表海量数据排序文件进行比对,生成表异常记录文件。本发明方法只需遍历一次主、备表海量数据排列文件就能得到比对结果,并且能够高效地完成海量数据的主、备数据库之间的数据检查,从而大大提高了数据库间海量数据的比对效率。

Description

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

Claims (7)

1.一种数据库海量数据比对的方法,其包括如下步骤:
A、从主、备数据库中导出主、备表数据文件;
B、对所述主、备表数据文件进行分片排序,生成主、备表海量数据排序文件;
C、将所述海量数据排序文件中的主表海量数据排序文件与备表海量数据排序文件进行比对,生成表异常记录文件;
其中,所述步骤B具体包括:
B1、从导出的主、备表数据文件中获取数据表描述信息;
B2、根据所述数据表描述信息的记录总数,判断是否要对所述主、备表数据文件进行分片处理;
B3、如果是则对所述主、备表数据文件进行分片排序;在读入所述主、备表数据文件的源文件时,将所述源文件拆分为数据块文件;按照表主键的排列方式,将拆分后的数据块文件直接进行排序,并且输出成排列文件;按照多路平衡归并方式,对所述排列文件进行归并排序,生成所述主、备表海量数据排序文件;如果否则采用直接快速排序的方式对主、备表数据文件进行排序,分别生成主、备表海量数据排序文件。
2.根据权利要求1所述的方法,其特征在于,所述步骤A中,所述表数据文件包括文件头及文件体;所述文件头为数据表描述信息,该数据表描述信息包括数据库表名、表字段、表数据记录总数及表主键;所述文件体为数据内容。
3.根据权利要求2所述的方法,其特征在于,所述表数据文件采用文本格式。
4.根据权利要求1所述的方法,其特征在于,所述步骤B中,将所述源文件拆分为数据块文件的过程采用顺序拆分方式进行。
5.根据权利要求1所述的方法,其特征在于,所述步骤C中,所述主表海量数据排序文件与备表海量数据排序文件的比对过程包括如下步骤:
C1、打开所述主表海量数据排序文件及备表海量数据排序文件;
C2、按顺序依次比对所述主表海量数据排序文件及备表海量数据排序文件,获得比对结果;
C3、根据所述比对结果,生成所述表异常记录文件。
6.根据权利要求5所述的方法,其特征在于,所述步骤C2中,比对方式采用比对所述主表海量数据排序文件及备表海量数据排序文件的关键字或文件尾。
7.根据权利要求5所述的方法,其特征在于,所述步骤C3中,所述表异常记录文件包括主表异常记录文件或备表异常记录文件。
CN2007100775537A 2007-11-29 2007-11-29 一种数据库海量数据比对的方法 Active CN101236554B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN2007100775537A CN101236554B (zh) 2007-11-29 2007-11-29 一种数据库海量数据比对的方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN2007100775537A CN101236554B (zh) 2007-11-29 2007-11-29 一种数据库海量数据比对的方法

Publications (2)

Publication Number Publication Date
CN101236554A CN101236554A (zh) 2008-08-06
CN101236554B true CN101236554B (zh) 2011-05-11

Family

ID=39920177

Family Applications (1)

Application Number Title Priority Date Filing Date
CN2007100775537A Active CN101236554B (zh) 2007-11-29 2007-11-29 一种数据库海量数据比对的方法

Country Status (1)

Country Link
CN (1) CN101236554B (zh)

Families Citing this family (18)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102231161A (zh) * 2011-06-30 2011-11-02 北京新媒传信科技有限公司 数据库同步验证及监控方法
CN102236718B (zh) * 2011-07-20 2019-09-13 南京中兴新软件有限责任公司 一种数据查询的方法及装置
CN102830950B (zh) * 2012-08-03 2016-05-04 苏州迈科网络安全技术股份有限公司 监控数据的排序方法及系统
CN103970792A (zh) * 2013-02-04 2014-08-06 中国银联股份有限公司 一种基于索引进行文件比对的方法和装置
CN104111937A (zh) * 2013-04-18 2014-10-22 中兴通讯股份有限公司 主、备数据库及其数据一致性检测、修复方法和装置
CN103679002B (zh) * 2013-12-12 2016-09-28 小米科技有限责任公司 监控文件变化的方法、装置及服务器
CN104361001B (zh) * 2014-09-29 2017-12-05 株洲南车时代电气股份有限公司 一种lkj基础数据比对方法及系统
CN104317942A (zh) * 2014-10-31 2015-01-28 北京思特奇信息技术股份有限公司 一种基于Hadoop云平台的海量数据比对方法及系统
CN104376055B (zh) * 2014-11-04 2017-08-29 国电南瑞科技股份有限公司 一种基于分片技术的大模型数据比较方法
CN105653554B (zh) * 2014-11-14 2019-07-16 卓望数码技术(深圳)有限公司 一种文件数据比对方法和系统
CN105787041B (zh) * 2016-02-26 2019-08-13 中国银联股份有限公司 基于数据特征码的大文件比对方法以及比对系统
CN107133319B (zh) * 2017-05-03 2020-08-04 领猎网络科技(上海)有限公司 一种高效调整顺序的方法、装置及计算机可读存储介质
CN107301203B (zh) * 2017-05-27 2020-10-02 北京思特奇信息技术股份有限公司 一种海量数据的比对方法及系统
CN107633026B (zh) * 2017-08-30 2019-12-17 深圳云天励飞技术有限公司 数据同步异常处理方法、装置及服务器
CN107784102A (zh) * 2017-10-27 2018-03-09 中国电子科技集团公司第二十八研究所 一种基于Oracle数据库的数据差异比较方法
CN109633506B (zh) * 2018-11-12 2021-07-16 许继电气股份有限公司 直流输电系统中的数据采集校核方法与监测控制系统
CN110515964A (zh) * 2019-08-30 2019-11-29 百度在线网络技术(北京)有限公司 一种文件更新方法、装置、电子设备和介质
US11670424B2 (en) 2020-09-24 2023-06-06 International Business Machines Corporation Evaluation of reduction of disease risk and treatment decision

Also Published As

Publication number Publication date
CN101236554A (zh) 2008-08-06

Similar Documents

Publication Publication Date Title
CN101236554B (zh) 一种数据库海量数据比对的方法
US11977545B2 (en) Generation of an optimized query plan in a database system
Copeland MongoDB Applied Design Patterns: Practical Use Cases with the Leading NoSQL Database
CN103559217B (zh) 一种面向异构数据库的海量组播数据入库实现方法
CN104408159B (zh) 一种数据关联、加载、查询方法及装置
CN103177094B (zh) 一种物联网数据清洗方法
CN111367975B (zh) 一种多协议数据转换处理方法及装置
CN107784102A (zh) 一种基于Oracle数据库的数据差异比较方法
CN103646111A (zh) 大数据环境下实现实时数据关联的系统及方法
CN105631003A (zh) 支持海量数据分组统计的智能索引构建、查询及维护方法
US7765219B2 (en) Sort digits as number collation in server
CN103714086A (zh) 用于生成非关系数据库的模式的方法和设备
CN107622055A (zh) 一种快速实现数据服务发布的方法
CN103077192B (zh) 一种数据处理方法及其系统
US11809468B2 (en) Phrase indexing
CN114218218A (zh) 基于数据仓库的数据处理方法、装置、设备及存储介质
CN101833511B (zh) 数据管理方法、装置和系统
CN103345527B (zh) 数据智能统计系统
CN110175202A (zh) 用于数据库的表的外连接的方法和系统
CN104572730B (zh) 数字资源导入、导出方法及装置
WO2021004266A1 (zh) 数据插入方法、装置、设备和储存介质
CN108399251A (zh) 一种多层数据展现的智能生成器和数据展现方法
CN110321388B (zh) 一种基于Greenplum的快速排序查询方法及系统
WO2021000828A1 (zh) 数据聚合方法、装置、计算机设备及存储介质
US8229946B1 (en) Business rules application parallel processing system

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
C14 Grant of patent or utility model
GR01 Patent grant
ASS Succession or assignment of patent right

Owner name: GUANGDONG DECHENG NETWORK TECHNOLOGY CO., LTD.

Free format text: FORMER OWNER: ZTE CORPORATION

Effective date: 20150512

C41 Transfer of patent application or patent right or utility model
COR Change of bibliographic data

Free format text: CORRECT: ADDRESS; FROM: 518057 SHENZHEN, GUANGDONG PROVINCE TO: 526000 ZHAOQING, GUANGDONG PROVINCE

TR01 Transfer of patent right

Effective date of registration: 20150512

Address after: 526000, Guangdong, Duanzhou District, Guta Road, Zhaoqing city job training center building fifth South

Patentee after: GUANGDONG DECHENG NETWORK TECHNOLOGY CO., LTD.

Address before: 518057 Nanshan District Guangdong high tech Industrial Park, South Road, science and technology, ZTE building, Ministry of Justice

Patentee before: ZTE Corporation

CP03 Change of name, title or address
CP03 Change of name, title or address

Address after: 526000, Guangdong City, Zhaoqing province Guta road employment training center building fifth South

Patentee after: Guangdong Decheng Science Co. Ltd.

Address before: 526000, Guangdong, Duanzhou District, Guta Road, Zhaoqing city job training center building fifth South

Patentee before: GUANGDONG DECHENG NETWORK TECHNOLOGY CO., LTD.