CN114138739A - 一种数据库表内容快速比对*** - Google Patents
一种数据库表内容快速比对*** Download PDFInfo
- Publication number
- CN114138739A CN114138739A CN202111303582.7A CN202111303582A CN114138739A CN 114138739 A CN114138739 A CN 114138739A CN 202111303582 A CN202111303582 A CN 202111303582A CN 114138739 A CN114138739 A CN 114138739A
- Authority
- CN
- China
- Prior art keywords
- crc32
- data
- database
- target
- source
- 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.)
- Pending
Links
- 238000013507 mapping Methods 0.000 claims description 13
- 238000003780 insertion Methods 0.000 claims description 6
- 230000037431 insertion Effects 0.000 claims description 6
- 230000001174 ascending effect Effects 0.000 claims description 4
- 230000003993 interaction Effects 0.000 claims description 3
- 239000000126 substance Substances 0.000 claims description 2
- 238000012360 testing method Methods 0.000 claims description 2
- 238000000605 extraction Methods 0.000 claims 1
- 238000012163 sequencing technique Methods 0.000 claims 1
- 238000011161 development Methods 0.000 abstract description 3
- 238000000034 method Methods 0.000 description 8
- 230000008569 process Effects 0.000 description 3
- 230000006870 function Effects 0.000 description 2
- 238000010586 diagram Methods 0.000 description 1
- 230000006872 improvement Effects 0.000 description 1
- 230000005012 migration Effects 0.000 description 1
- 238000013508 migration Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
Images
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/21—Design, administration or maintenance of databases
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/08—Error detection or correction by redundancy in data representation, e.g. by using checking codes
- G06F11/10—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
- G06F11/1004—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's to protect a block of data words, e.g. CRC or checksum
-
- 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/22—Indexing; Data structures therefor; Storage structures
-
- 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/24558—Binary matching operations
- G06F16/2456—Join operations
-
- 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/2458—Special types of queries, e.g. statistical queries, fuzzy queries or distributed queries
- G06F16/2465—Query processing support for facilitating data mining operations in structured databases
-
- 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/248—Presentation of query results
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2201/00—Indexing scheme relating to error detection, to error correction, and to monitoring
- G06F2201/80—Database-specific techniques
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Databases & Information Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Data Mining & Analysis (AREA)
- Computational Linguistics (AREA)
- Software Systems (AREA)
- Probability & Statistics with Applications (AREA)
- Mathematical Physics (AREA)
- Fuzzy Systems (AREA)
- Computer Security & Cryptography (AREA)
- Quality & Reliability (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明提供一种数据库表内容快速比对***,属于Java Web应用开发及SQL数据库表领域,本发明加入了Web前端页面,能够进行两个不同数据库表中字段的自由选择,配对比较,并且通过异步同时计算CRC32值并默认存储,大幅提高了比对速度,同时通过使用全量比对,大大增加了两个表内容比对的正确率。
Description
技术领域
本发明涉及Java Web应用开发及SQL数据库表领域,尤其涉及一种数据库表内容快速比对***。
背景技术
在数据库中,两个表内容的比对在当前的数据库迁移和数据库表内容比较差异中具有非常重要的作用,特别针对于百万,千万甚至上亿的数据量的表。当前许多市面上的数据库比对工具,比较数据库中的两张相同表结构的表内容的方法,大致通过sql语法组合拼接sql语句进行全量对比,这种方式虽然可以保证比对的高正确率,但是受制于表结构的统一,不能够对于两张不同表结构的内容进行比较,其次不能自由选择比对表各自所需要的字段,使用起来十分不便,往往不能满足用户比对的需求。其次,对于呈千万级别或者上亿级别的两个表的数据对比,效率十分低下,造成用户体验不佳。
发明内容
为了解决以上技术问题,本发明提供了一种数据库表内容快速比对***,旨在保证两个表内容全量对比的基础之上,解决两表结构不统一和比对速度低下的问题,实现一种保持高正确率而快速进行表内容比对的目标。
本发明的技术方案是:
本发明提供了一种数据库表内容快速比对***,目的是在保证两个表内容全量对比的基础之上,应用Java Web开发,比对用户所选择的数据内容,提高用户体验,解决两表结构不统一和大量数据下比对速度低下的难题。
在交互过程中包含三个方面:Html页面,默认数据库,应用服务器层。
其中,
Html页面即网页前端页面,主要用途是***和用户的交互。
默认数据库是服务器层后端所默认链接的数据库,主要用途是建立目标表CRC32存储表和源表CRC32存储表(CRC32存储表的数据结构设计为:库表地址名,表名,批次号,创建时间,任务名称,主键最小值,主键最大值,CRC32值),并用来存储源表和目标表的计算结果及相关。
应用服务层的主要工作模块是数据库的链接,表名字段名的获取,controller层的异步并行计算CRC32值,数据库的创建***和具体内容差异逻辑上的比较。
进一步的,
Html页面输入源数据库和目标数据库的地址,端口,用户名和密码,将这些信息发送到应用服务器。应用服务器使用jdbc分别连接源数据库和目标数据库,通过本发明拼接的sql分别获取两个数据库每个表名称,并回传到html页面。接下来,Html页面上所选择要对比的两个表格会请求应用服务器层,应用服务器层通过拼接好的sql获得源库和数据库的字段名,类型,长度;其中非常重要的一点是获得两个表的主键,通过确保两个主键类型和长度一致来确保两个表的主键可以唯一确定;将字段名(不包含主键名)回传到Html页面,并在主页显示;分别通过html的文本框,先选择源数据库表的字段,然后选择目标数据库表的字段,点击映射按钮,将源表字段名-目标表字段名这种格式添加到第三个html文本框(起名映射关系);将所需要映射的字段逐一添加到映射表文本框;通过数据对比按钮将映射关系发送到应用服务层,应用服务器将映射关系拆解为源表字段和目标表字段。
在应用服务层会分别获取两个表唯一的主键,在默认数据库分别创建目标表的CRC32存储表和源表的CRC32存储表,主要包含主键id,表名称,批量字号,最小主键,最大主键,CRC32值这些字段。将用户所选择的目标表和源表所映射的字段对应的数据先通过主键ID的字典顺序进行数据的升序排序,然后使用sql限制数据条数(数量由用户自己限定),分批取出(实际使用中其取出速度受限于sql所部署的机器性能和sql数据库的版本,本***的get_CheckSum函数通过sql语句进行数据限制取出测试,循环运行10000次,依次记录取出对应次数的数据量所使用的时间,并存list表,最后会相互比较获得速度最快的次数即数据条数。这里给予一个参考值:2000条,追求性能者可应用本***get_CheckSum函数进行计算,并自己限定),计算本批的CRC32的值,并且记录下这一批2000条数据计算组的最大编号作为最大主键。由于计算目标表和源表的CRC32的值和***数据是异步执行且同时进行的,所以相对应的CRC32值,主键最小值,记录的最大主键和批量字号等会同时***到所对应的CRC32存储表。计算***完成后,由于在计算CRC32值前已经根据主键id进行了升序排序,所以在保证顺序的情况下可以分别取目标表和源表的CRC32值进行比对,如若目标表和源表的CRC32值比对完成全部相同,则返回此次比对结果(即此次比对,两个表的数据完全相同),若值不同,记录不同值的这条数据相关信息(即源表和目标表数据此条CRC32值不同的完整一条)。
当得到CRC32值不同的完整序列后,开始比对挖掘出某条具体数据不同。需要首先获得目标表和源表两者较大的主键,并且获取目标表和源表的所有字段名,通过上面比对得到的CRC32值不同的数据得到所记录的表名,开始值,最后值。分别再次逐条计算开始值和最后值这个范围内每一行数据的CRC32的值(这个过程和上面第一次异步并行计算的过程相同)。最后通过每一条数据的CRC32值是否相等判断出具体目标表和源表不同的数据。
本发明的有益效果是
本发明与现有技术相比,能够自由选择字段进行匹配,将数据以2000条一组,多线程异步同时批量计算CRC32值,解决了两表结构不统一和大数据下比对速度低下的难题。通过使用可以发现,全量对比使得比对准确率达到100%。而从数据来看,1w条数据的对比用时在9s左右,10w条数据的对比用时约在16s左右,50w条数据的对比用时在49s左右,100w条数据的对比用时在110s左右,其比对速度大幅度提高。
附图说明
图1是本发明的工作流程示意图。
具体实施方式
为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例,基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动的前提下所获得的所有其他实施例,都属于本发明保护的范围。
本发明提供了一种数据库表内容快速比对***,由Html页面,默认数据库,应用服务器层相结合,批量计算CRC32值,异步执行存储,全量比较来达到大量数据的快速比对出具体差异内容。
由Html页面进行连接原数据库和目标数据库,选择目标表和源表,映射对应字段,提高了用户体验,满足对比表的结构不同。
以2000为一组进行CRC32值的批量计算,得到CRC32值,主键最小值及最大值,提高批量计算的效率。
由默认数据库创建目标表的CRC32存储表和源表的CRC32存储表,然后异步执行,同时存储到相应表,大幅度提高计算存储的速度。
把CRC32值进行主键最小值与最大值差的同范围比较,逐条对比查出具体差异。
如图1所示,以比较出具体某条数据不同为例说明技术原理,具体说明如下:
1、用户在html页面连接目标表和源表,并选择字段映射,发送应用服务器层相应信息。
2、应用服务器层分批次计算源表和目标表CRC32值,同时将数据存储到默认数据库。
3、在默认数据库端取出相对应的CRC32值进行比较
4、返回比较结果,若结果正确直接返回数据相同给html页面,若不正确进行第五步
5、将不正确的结果拿出来,计算最小值和最大值范围内的CRC32值,同时将数据存储到默认数据库。
6、在默认数据库端逐条取出相对应的CRC32值进行比较
7、返回具体两表不一样的数据给应用服务器层
8、应用服务器层返回具体比对结果给html页面显示。
以上所述仅为本发明的较佳实施例,仅用于说明本发明的技术方案,并非用于限定本发明的保护范围。凡在本发明的精神和原则之内所做的任何修改、等同替换、改进等,均包含在本发明的保护范围内。
Claims (9)
1.一种数据库表内容快速比对***,其特征在于,
包括Html页面,默认数据库,应用服务器层,
其中,
Html页面即网页前端页面,主要用途是***和用户的交互;
默认数据库是服务器层后端所默认链接的数据库,主要用途是建立目标表CRC32存储表和源表CRC32存储表,并用来存储源表和目标表的计算结果;
应用服务层的主要工作模块是数据库的链接,表名字段名的获取,controller层的异步并行计算CRC32值,数据库的创建***和具体内容差异逻辑上的比较。
2.根据权利要求1所述的***,其特征在于,
CRC32存储表的数据结构设计为:库表地址名,表名,批次号,创建时间,任务名称,主键最小值,主键最大值,CRC32值。
3.根据权利要求1或2所述的***,其特征在于,
由Html页面进行连接原数据库和目标数据库,选择目标表和源表,映射对应字段。
4.根据权利要求3所述的***,其特征在于,
Html页面输入源数据库和目标数据库的地址,端口,用户名和密码,将这些信息发送到应用服务器;
应用服务器使用jdbc分别连接源数据库和目标数据库,通过拼接的sql分别获取两个数据库的每个表名称,并回传到html页面;
接下来,Html页面上所选择要对比的两个表格会请求应用服务器层,应用服务器层通过拼接好的sql获得源库和数据库的字段名,类型,长度;
其中非常重要的一点是获得两个表的主键,通过确保两个主键类型和长度一致来确保两个表的主键可以唯一确定;将字段名(不包含主键名)回传到Html页面,并在主页显示;分别通过html的文本框,先选择源数据库表的字段,然后选择目标数据库表的字段,点击映射按钮,将源表字段名-目标表字段名这种格式添加到第三个html文本框(起名映射关系);将所需要映射的字段逐一添加到映射表文本框;通过数据对比按钮将映射关系发送到应用服务层,应用服务器将映射关系拆解为源表字段和目标表字段。
5.根据权利要求4所述的***,其特征在于,
在应用服务层会分别获取两个表唯一的主键,在默认数据库分别创建目标表的CRC32存储表和源表的CRC32存储表,包含主键id,表名称,批量字号,最小主键,最大主键,CRC32值这些字段。
6.根据权利要求5所述的***,其特征在于,
将用户所选择的目标表和源表所映射的字段对应的数据先通过主键ID的字典顺序进行数据的升序排序,然后使用sql限制数据条数,分批取出。
7.根据权利要求6所述的***,其特征在于,
通过sql语句进行数据限制取出测试,循环运行N次(N>1),依次记录取出对应次数的数据量所使用的时间,并存list表,最后会相互比较获得速度最快的次数即数据条数。
8.根据权利要求7所述的***,其特征在于,
计算本批的CRC32的值,并且记录下这一批数据计算组的最大编号作为最大主键;由于计算目标表和源表的CRC32的值和***数据是异步执行且同时进行的,所以相对应的CRC32值,主键最小值,记录的最大主键和批量字号同时***到所对应的CRC32存储表;
计算***完成后,由于在计算CRC32值前已经根据主键id进行了升序排序,所以在保证顺序的情况下可以分别取目标表和源表的CRC32值进行比对,如若目标表和源表的CRC32值比对完成全部相同,则返回此次比对结果;若值不同,记录不同值的这条数据相关信息。
9.根据权利要求8所述的***,其特征在于,
当得到CRC32值不同的完整序列后,开始比对挖掘出具体数据不同;
需要首先获得目标表和源表两者较大的主键,并且获取目标表和源表的所有字段名,通过上面比对得到的CRC32值不同的数据得到所记录的表名,开始值,最后值;分别再次逐条计算开始值和最后值这个范围内每一行数据的CRC32的值;最后通过每一条数据的CRC32值是否相等判断出具体目标表和源表不同的数据。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111303582.7A CN114138739A (zh) | 2021-11-05 | 2021-11-05 | 一种数据库表内容快速比对*** |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111303582.7A CN114138739A (zh) | 2021-11-05 | 2021-11-05 | 一种数据库表内容快速比对*** |
Publications (1)
Publication Number | Publication Date |
---|---|
CN114138739A true CN114138739A (zh) | 2022-03-04 |
Family
ID=80392420
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202111303582.7A Pending CN114138739A (zh) | 2021-11-05 | 2021-11-05 | 一种数据库表内容快速比对*** |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN114138739A (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116150179A (zh) * | 2023-04-14 | 2023-05-23 | 天津南大通用数据技术股份有限公司 | 一种数据库间的数据一致性比对方法及装置 |
-
2021
- 2021-11-05 CN CN202111303582.7A patent/CN114138739A/zh active Pending
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116150179A (zh) * | 2023-04-14 | 2023-05-23 | 天津南大通用数据技术股份有限公司 | 一种数据库间的数据一致性比对方法及装置 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN103902698B (zh) | 一种数据存储***和存储方法 | |
CN103810224B (zh) | 信息持久化和查询方法及装置 | |
CN101937448A (zh) | 用于主存储器列存储装置的基于字典的保持顺序的串压缩 | |
CN112364024B (zh) | 一种表数据批量自动比对的控制方法及装置 | |
CN108228657B (zh) | 一种关键字检索的实现方法及装置 | |
CN111814442A (zh) | 一种基于SpringBoot的excel数据处理方法 | |
CN114138739A (zh) | 一种数据库表内容快速比对*** | |
CN116452123A (zh) | 清单项目特征值的生成方法、装置和计算机设备 | |
CN115757629A (zh) | 多源异构数据增量同步方法、***、存储介质和电子设备 | |
KR101358793B1 (ko) | 인덱스 파일 생성방법, 사전 인덱스 파일을 이용한 데이터 검색 방법 및 데이터 관리 시스템, 기록매체 | |
CN116501758B (zh) | 一种NetCDF数据的查询方法及终端 | |
CN111984673B (zh) | 一种电网电能量计量***树形结构模糊检索方法和装置 | |
CN111984745A (zh) | 数据库字段动态扩展方法、装置、设备及存储介质 | |
CN105786990A (zh) | 数据库数据存储和快速查询的方法及装置 | |
CN114281845A (zh) | 索引生成方法、装置、电子设备及可读存储介质 | |
CN112463896B (zh) | 档案编目数据处理方法、装置、计算设备及存储介质 | |
CN111259003B (zh) | 一种数据库建立方法及装置 | |
US11074401B2 (en) | Merging delta object notation documents | |
US20210124799A1 (en) | Generation and application of object notation deltas | |
GB2585757A (en) | Retroreflective join graph generation for relational database queries | |
CN111782958A (zh) | 推荐词确定方法、装置、电子装置及存储介质 | |
KR100505111B1 (ko) | 데이터베이스 연산용 프로그램 소스 생성 장치 및 그방법과 이를 이용한 컴퓨터 프로그램 제품 | |
CN115840786B (zh) | 一种数据湖数据同步方法及装置 | |
Huber | From Sierra to FOLIO: Cataloging perspectives on migration and post-implementation impact | |
CN114238326A (zh) | 数据批量对比方法、装置、设备及存储介质 |
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 |