CN107145522B - 一种数据库数据内容比对方法 - Google Patents
一种数据库数据内容比对方法 Download PDFInfo
- Publication number
- CN107145522B CN107145522B CN201710232612.7A CN201710232612A CN107145522B CN 107145522 B CN107145522 B CN 107145522B CN 201710232612 A CN201710232612 A CN 201710232612A CN 107145522 B CN107145522 B CN 107145522B
- Authority
- CN
- China
- Prior art keywords
- data
- primary key
- key field
- target table
- source table
- 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
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/24—Querying
- G06F16/245—Query processing
- G06F16/2455—Query execution
- G06F16/24553—Query execution of query operations
- G06F16/24554—Unary operations; Data partitioning operations
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Computational Linguistics (AREA)
- Data Mining & Analysis (AREA)
- Databases & Information Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明公开了一种数据库数据内容比对方法,包括获取数据库源表和目标表,分别对源表和目标表中的数据排序;获取源表中最小主键字段A和最大主键字段B,获取目标表中最小主键字段C和最大主键字段D;根据A、B、C、D的大小,定义若干个区间,根据各条数据主键字段的大小,对源表和目标表中的数据进行区间划分;比较同一区间内源表和目标表中的数据。通过该方法可以快速高效的比对两端数据差异,强化数据一致性检查手段,可以对数据复制过程中产生的不一致及时做出调整,对确保数据库的安全稳定的运行,具有重要的实际意义。
Description
技术领域
本发明涉及一种数据库数据内容比对方法,属于数据库数据复制技术领域。
背景技术
随着信息技术的深入发展,应用系统的不断升级,系统之间的集成贯通越来越多的需要数据交互,数据复制已经逐步成为了信息系统融合的关键部分。然而,所有针对数据复制与交互都包含着一个基本的要求——源端与目标端数据复制一致,数据库数据内容比对技术正是在这种要求下产生的。国内外关系型数据库数据比对技术主要采用串行数据比较的方法实现两端数据比对,此类比对方法在面对海量数据时,不能较好的解决数据库数据比对效率问题,严重影响用户体验。
发明内容
为了解决上述技术问题,本发明提供了一种数据库数据内容比对方法。
为了达到上述目的,本发明所采用的技术方案是:
一种数据库数据内容比对方法,包括以下步骤,
获取数据库源表和目标表,分别对源表和目标表中的数据排序;
获取源表中最小主键字段A和最大主键字段B,获取目标表中最小主键字段C和最大主键字段D;
根据A、B、C、D的大小,定义若干个区间,根据各条数据主键字段的大小,对源表和目标表中的数据进行区间划分;
比较同一区间内源表和目标表中的数据。
区间的划分如下,
当A≤C、B≤D,则定义的区间为[A,C]、[C,B]、[B,D];根据各条数据主键字段的大小,源表中的数据被划分成[A,C]和[C,B]两个区间,目标表中的数据被划分成[B,D]和[C,B]两个区间;
当A≤C、B≥D,则定义的区间为[A,C]、[C,D]、[D,B];根据各条数据主键字段的大小,源表中的数据被划分成[A,C]、[C,D]和[D,B]三个区间,目标表中的数据被划分成[C,D]一个区间;
当A≥C、B≤D,则定义的区间为[C,A]、[A,B]、[B,D];根据各条数据主键字段的大小,源表中的数据被划分成[A,B]一个区间,目标表中的数据被划分成[C,A]、[A,B]和[B,D]三个区间;
当A≥C、B≥D,则定义的区间为[C,A]、[A,D]、[D,B];根据各条数据主键字段的大小,源表中的数据被划分成[A,D]和[D,B]二个区间,目标表中的数据被划分成[C,A]和[A,D]二个区间。
比较同一区间内源表和目标表中数据的过程为,
S41,分别获取源表和目标表中的一条数据;
S42,判断两条数据是否全部为空,如果是,则结束;如果不是则转至S43;
S43,判断两条数据是否全部不为空,如果是,则依次进行主键字段比较和非主键字段比较,如果从源表获取的数据为空,则判定目标表数据大于源表数据,分别获取源表和目标表中的下一条数据,转至步骤S42,如果从目标表获取的数据为空,则判定源表数据大于目标表数据,分别获取源表和目标表中的下一条数据,转至步骤S42。
主键字段比较的过程为,
比较两条数据的主键字段类型,如果类型不相同,则判定两条数据不相等,如果是相同类型,则进行主键字段内容比较,具体如下:
当源表数据主键字段内容大于目标表数据主键字段内容,判定源表数据大于目标表数据,分别获取源表和目标表中的下一条数据进行比较;
当源表数据主键字段内容小于目标表数据主键字段内容,判定源表数据小于目标表数据,分别获取源表和目标表中的下一条数据进行比较;
当源表数据主键字段内容等于目标表数据主键字段内容,进行非主键字段比较。
非主键字段比较的过程为,
比较两条数据的非主键字段类型,如果类型不相同,则判定两条数据不相等,如果是相同类型,则进行非主键字段内容比较,具体如下:
当源表数据非主键字段内容大于目标表数据主键字段内容,判定源表数据大于目标表数据,分别获取源表和目标表中的下一条数据进行比较;
当源表数据非主键字段内容小于目标表数据主键字段内容,判定源表数据小于目标表数据,分别获取源表和目标表中的下一条数据进行比较;
当源表数据非主键字段内容等于目标表数据非主键字段内容,判定两条数据相等,分别获取源表和目标表中的下一条数据进行比较。
比较过程可在预先定义的比较器内进行,比较器的大小根据实际计算资源、存储资源配置情况动态调整。
本发明所达到的有益效果:本发明通过对源端与目标端数据的批量提取并对数据分区批量比对,从而较快速的完成数据库两端数据比对;通过该方法可以快速高效的比对两端数据差异,强化数据一致性检查手段,可以对数据复制过程中产生的不一致及时做出调整,对确保数据库的安全稳定的运行,具有重要的实际意义。
附图说明
图1为本发明的流程图;
图2为数据对比的流程图;
图3为数据对比的架构图。
具体实施方式
下面结合附图对本发明作进一步描述。以下实施例仅用于更加清楚地说明本发明的技术方案,而不能以此来限制本发明的保护范围。
如图1所示,一种数据库数据内容比对方法,包括以下步骤:
步骤1,获取数据库源表和目标表,分别对源表和目标表中的数据排序。
具体过程为:
S11,检查数据库源表与目标表是否有主键,如果没有则通过添加附加日志的方式增加主键;
S12,采用JDBC或者ODBC等方式获取数据库源表与目标表;
S13,采用执行SQL排序或者自定义排序的方式对数据排序。
步骤2,获取源表中最小主键字段A和最大主键字段B,获取目标表中最小主键字段C和最大主键字段D。
步骤3,根据A、B、C、D的大小,定义若干个区间,根据各条数据主键字段的大小,对源表和目标表中的数据进行区间划分。
具体如下:
当A≤C、B≤D,则定义的区间为[A,C]、[C,B]、[B,D];源表中的数据被划分成[A,C]和[C,B]两个区间,目标表中的数据被划分成[B,D]和[C,B]两个区间;
当A≤C、B≥D,则定义的区间为[A,C]、[C,D]、[D,B];源表中的数据被划分成[A,C]、[C,D]和[D,B]三个区间,目标表中的数据被划分成[C,D]一个区间;
当A≥C、B≤D,则定义的区间为[C,A]、[A,B]、[B,D];源表中的数据被划分成[A,B]一个区间,目标表中的数据被划分成[C,A]、[A,B]和[B,D]三个区间;
当A≥C、B≥D,则定义的区间为[C,A]、[A,D]、[D,B];源表中的数据被划分成[A,D]和[D,B]二个区间,目标表中的数据被划分成[C,A]和[A,D]二个区间。
步骤4,比较同一区间内源表和目标表中的数据,位于不同区间的则认为数据不同。
根据上述划分,当A≤C、B≤D时,比较[C,B]区间内源表和目标表中的数据;当A≤C、B≥D时,比较[C,D]区间内源表和目标表中的数据;当A≥C、B≤D时,比较[A,B]区间内源表和目标表中的数据;当A≥C、B≥D时,比较[A,D]区间内源表和目标表中的数据。
如图2所示,比较过程如下:
S41,分别获取源表和目标表中的一条数据(图中rowSource为源表数据,rowTarget为目标表数据);
S42,判断两条数据是否全部为空,如果是,则结束;如果不是则转至S43;
S43,判断两条数据是否全部不为空,如果是,则依次进行主键字段比较和非主键字段比较,如果从源表获取的数据为空,则判定目标表数据大于源表数据,分别获取源表和目标表中的下一条数据,转至步骤S42,如果从目标表获取的数据为空,则判定源表数据大于目标表数据,分别获取源表和目标表中的下一条数据,转至步骤S42。
其中,主键字段比较的过程为:
比较两条数据的主键字段类型,如果类型不相同,则判定两条数据不相等,如果是相同类型,则进行主键字段内容比较,具体如下:
当源表数据主键字段内容大于目标表数据主键字段内容,判定源表数据大于目标表数据,返回1,分别获取源表和目标表中的下一条数据进行比较;
当源表数据主键字段内容小于目标表数据主键字段内容,判定源表数据小于目标表数据,返回-1,分别获取源表和目标表中的下一条数据进行比较;
当源表数据主键字段内容等于目标表数据主键字段内容,返回0,进行非主键字段比较。
非主键字段比较的过程为:
比较两条数据的非主键字段类型,如果类型不相同,则判定两条数据不相等,如果是相同类型,则进行非主键字段内容比较,具体如下:
当源表数据非主键字段内容大于目标表数据主键字段内容,判定源表数据大于目标表数据,返回1,分别获取源表和目标表中的下一条数据进行比较;
当源表数据非主键字段内容小于目标表数据主键字段内容,判定源表数据小于目标表数据,返回-1,分别获取源表和目标表中的下一条数据进行比较;
当源表数据非主键字段内容等于目标表数据非主键字段内容,判定两条数据相等,返回-0,分别获取源表和目标表中的下一条数据进行比较。
上述的比较过程可在预先定义的比较器内进行,对数据进行比较,比较器的大小根据实际计算资源、存储资源配置情况动态调整;比较器可采用Java、C/C++等编程语言自带的比较函数,也可以采用重写比较方法实现数据比对。
上述方法的原理如图3所示,通过对源端与目标端数据的提取,对数据分区比对,从而较快速的完成数据库两端数据比对;通过该方法可以快速高效的比对两端数据差异,强化数据一致性检查手段,可以对数据复制过程中产生的不一致及时做出调整,对确保数据库的安全稳定的运行,具有重要的实际意义。
以上所述仅是本发明的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明技术原理的前提下,还可以做出若干改进和变形,这些改进和变形也应视为本发明的保护范围。
Claims (2)
1.一种数据库数据内容比对方法,其特征在于:包括以下步骤,
获取数据库源表和目标表,分别对源表和目标表中的数据排序;
获取源表中最小主键字段A和最大主键字段B,获取目标表中最小主键字段C和最大主键字段D;
根据A、B、C、 D的大小,定义若干个区间,根据各条数据主键字段的大小,对源表和目标表中的数据进行区间划分;
区间的划分如下:
当A≤C、B≤D,则定义的区间为[A,C]、[C,B]、[B,D];根据各条数据主键字段的大小,源表中的数据被划分成[A,C]和[C,B]两个区间,目标表中的数据被划分成[B,D]和[C,B]两个区间;
当A≤C、B≥D,则定义的区间为[A,C]、[C,D]、[D,B];根据各条数据主键字段的大小,源表中的数据被划分成[A,C]、[C,D]和[D,B]三个区间,目标表中的数据被划分成[C,D]一个区间;
当A≥C、B≤D,则定义的区间为[C,A]、[A,B]、[B,D];根据各条数据主键字段的大小,源表中的数据被划分成[A,B]一个区间,目标表中的数据被划分成[C,A]、[A,B]和[B,D]三个区间;
当A≥C、B≥D,则定义的区间为[C,A]、[A,D]、[D,B];根据各条数据主键字段的大小,源表中的数据被划分成[A,D]和[D,B]二个区间,目标表中的数据被划分成[C,A]和[A,D]二个区间;
比较同一区间内源表和目标表中的数据,位于不同区间的则判定源表和目标表中的数据不同;
比较同一区间内源表和目标表中数据的过程为:
S41,分别获取源表和目标表中的一条数据;
S42,判断两条数据是否全部为空,如果是,则结束;如果不是则转至S43;
S43,判断两条数据是否全部不为空,如果是,则依次进行主键字段比较和非主键字段比较,如果从源表获取的数据为空,则判定目标表数据大于源表数据,分别获取源表和目标表中的下一条数据,转至步骤S42,如果从目标表获取的数据为空,则判定源表数据大于目标表数据,分别获取源表和目标表中的下一条数据,转至步骤S42;
主键字段比较的过程为,
比较两条数据的主键字段类型,如果类型不相同,则判定两条数据不相等,如果是相同类型,则进行主键字段内容比较,具体如下:
当源表数据主键字段内容大于目标表数据主键字段内容,判定源表数据大于目标表数据,分别获取源表和目标表中的下一条数据进行比较;
当源表数据主键字段内容小于目标表数据主键字段内容,判定源表数据小于目标表数据,分别获取源表和目标表中的下一条数据进行比较;
当源表数据主键字段内容等于目标表数据主键字段内容,进行非主键字段比较;
非主键字段比较的过程为,
比较两条数据的非主键字段类型,如果类型不相同,则判定两条数据不相等,如果是相同类型,则进行非主键字段内容比较,具体如下:
当源表数据非主键字段内容大于目标表数据主键字段内容,判定源表数据大于目标表数据,分别获取源表和目标表中的下一条数据进行比较;
当源表数据非主键字段内容小于目标表数据主键字段内容,判定源表数据小于目标表数据,分别获取源表和目标表中的下一条数据进行比较;
当源表数据非主键字段内容等于目标表数据非主键字段内容,判定两条数据相等,分别获取源表和目标表中的下一条数据进行比较。
2.根据权利要求1所述的一种数据库数据内容比对方法,其特征在于:比较过程在预先定义的比较器内进行,比较器的大小根据实际计算资源、存储资源配置情况动态调整。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710232612.7A CN107145522B (zh) | 2017-04-11 | 2017-04-11 | 一种数据库数据内容比对方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710232612.7A CN107145522B (zh) | 2017-04-11 | 2017-04-11 | 一种数据库数据内容比对方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN107145522A CN107145522A (zh) | 2017-09-08 |
CN107145522B true CN107145522B (zh) | 2019-12-31 |
Family
ID=59773684
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201710232612.7A Active CN107145522B (zh) | 2017-04-11 | 2017-04-11 | 一种数据库数据内容比对方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN107145522B (zh) |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107918679A (zh) * | 2018-01-04 | 2018-04-17 | 国网福建省电力有限公司 | 数据仓库模型技术层面差异比对方法 |
CN112100227A (zh) * | 2020-09-22 | 2020-12-18 | 国网辽宁省电力有限公司电力科学研究院 | 一种基于多级异构数据存储的大数据处理方法 |
CN112182119A (zh) * | 2020-09-30 | 2021-01-05 | 中国平安财产保险股份有限公司 | 数据仓库维度表的校验方法及装置 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103810247A (zh) * | 2014-01-10 | 2014-05-21 | 国网信通亿力科技有限责任公司 | 基于分桶算法的灾备数据比对方法 |
CN106326398A (zh) * | 2016-08-19 | 2017-01-11 | 东软集团股份有限公司 | 数据一致性对比的方法及装置 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP6025149B2 (ja) * | 2013-11-06 | 2016-11-16 | インターナショナル・ビジネス・マシーンズ・コーポレーションInternational Business Machines Corporation | データを管理するシステムおよび方法 |
-
2017
- 2017-04-11 CN CN201710232612.7A patent/CN107145522B/zh active Active
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103810247A (zh) * | 2014-01-10 | 2014-05-21 | 国网信通亿力科技有限责任公司 | 基于分桶算法的灾备数据比对方法 |
CN106326398A (zh) * | 2016-08-19 | 2017-01-11 | 东软集团股份有限公司 | 数据一致性对比的方法及装置 |
Also Published As
Publication number | Publication date |
---|---|
CN107145522A (zh) | 2017-09-08 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN106897322B (zh) | 一种数据库和文件系统的访问方法和装置 | |
CN107451214B (zh) | 一种非主键查询方法和分布式NewSQL数据库系统 | |
CN110908997B (zh) | 数据血缘构建方法、装置、服务器及可读存储介质 | |
EP3098730B1 (en) | Aggregating database entries by hashing | |
US9280568B2 (en) | Zero downtime schema evolution | |
CN108427684B (zh) | 数据查询方法、装置及计算设备 | |
CN108536761A (zh) | 报表数据查询方法及服务器 | |
CN107145522B (zh) | 一种数据库数据内容比对方法 | |
US20180081956A1 (en) | Method for automatically synchronizing multi-source heterogeneous data resources | |
CN106970929B (zh) | 数据导入方法及装置 | |
US11526475B2 (en) | Code generator platform for data transformation | |
WO2015142548A1 (en) | Dependency-aware transaction batching for data replication | |
WO2017088666A1 (zh) | 一种数据存储方法和协调节点 | |
US10671565B2 (en) | Partitioning target data to improve data replication performance | |
CN102629269A (zh) | 一种嵌入式数据库的检索及存储方法 | |
CN107016115B (zh) | 数据导出方法、装置、计算机可读存储介质及电子设备 | |
US11366821B2 (en) | Epsilon-closure for frequent pattern analysis | |
CN111897808A (zh) | 一种数据处理方法、装置、计算机设备及存储介质 | |
CN111767320A (zh) | 数据血缘关系确定方法及装置 | |
CN110781197A (zh) | 一种hive离线同步校验方法、装置及电子设备 | |
CN103902592A (zh) | 基于MapReduce实现分析函数的方法及系统 | |
CN108073641B (zh) | 查询数据表的方法和装置 | |
CN112199443B (zh) | 数据同步方法、装置、计算机设备和存储介质 | |
CN110955712A (zh) | 基于多数据源的开发api处理方法及装置 | |
US10185757B2 (en) | Non-uniform multi-row text file loading |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |