CN110134694B - 一种双活数据库中表数据的快速比对装置及方法 - Google Patents
一种双活数据库中表数据的快速比对装置及方法 Download PDFInfo
- Publication number
- CN110134694B CN110134694B CN201910418151.1A CN201910418151A CN110134694B CN 110134694 B CN110134694 B CN 110134694B CN 201910418151 A CN201910418151 A CN 201910418151A CN 110134694 B CN110134694 B CN 110134694B
- Authority
- CN
- China
- Prior art keywords
- data
- compared
- comparison
- source
- table data
- 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
Images
Classifications
-
- 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/14—Error detection or correction of the data by redundancy in operation
- G06F11/1402—Saving, restoring, recovering or retrying
- G06F11/1446—Point-in-time backing up or restoration of persistent data
-
- 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
- G06F16/2282—Tablespace storage structures; Management thereof
-
- 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/24564—Applying rules; Deductive queries
-
- 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/25—Integrating or interfacing systems involving database management systems
- G06F16/254—Extract, transform and load [ETL] procedures, e.g. ETL data flows in data warehouses
-
- 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/27—Replication, distribution or synchronisation of data between databases or within a distributed database system; Distributed database system architectures therefor
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)
- Computing Systems (AREA)
- Software Systems (AREA)
- Quality & Reliability (AREA)
- Computational Linguistics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明公开了一种双活数据库中表数据的快速比对装置及方法,该装置包括:抽取模块,用于抽取源端与目标端数据库中待比对数据表的表数据,并将抽取到的表数据根据预设的比对语句规则组织成的待比对表数据发送至比对控制模块;比较池,用于区分存放源端数据库与目标端数据库待比对数据表中不一致的表数据;比对控制模块,用于对获得的待比对表数据的内容进行解析,判断待比对表数据的数据来源,根据判断结果于较池中遍历与其数据来源相反的数据记录进行匹配,根据匹配结果于比较池中插入或删除待比对表数据的数据记录;比较结果输出模块,用于于比对控制模块将源端与目标端数据库的所有待比对表数据全部比对处理后,将比较池的剩余记录输出显示。
Description
技术领域
本发明涉及数据库管理系统的双活备份容灾领域,特别是涉及一种双活数据库中表数据的快速比对装置及方法。
背景技术
随着信息化建设的高速发展,信息系统已经成为企业维持业务运转的关键,企业迫切需要提高信息系统的可用性,保证业务的连续性,最大限度地减少因灾难或故障所带来的损失。另一方面,多样化的业务类型导致数据访问需求的日趋复杂化,数据量的急剧攀升也导致数据库服务器不堪重负,企业同样迫切需要提高信息系统的运行效率。目前,常用采用双活数据中心的容灾解决方案解决系统的容灾问题以提升系统的运行效率。
双活数据库管理系统复制技术是一种基于关系型数据库的重做日志的逻辑复制技术。关系型数据库的重做日志是用于保障数据库数据一致性的一种机制,一般记录了关系型数据库所有数据文件的变化。从这些变化中可以解析出数据库管理系统中表的数据变化,将这些变化及时的复制到另一套数据库管理系统中,从而达到了数据复制的目的。该复制技术所复制的目标端是一个和源端完全不相关的数据库管理系统,因此可以很好的应用于数据库管理系统的读写分离、双活容灾、数据流动整合的应用场景。
由于数据库管理系统的数据内容需要通过数据库管理软件提供的接口来获取和使用,因此双活数据库管理系统的容灾技术中有一个较大的挑战是如何快速的校验出源端数据库和目标端数据库的表数据的一致性。现有的对双活数据中心的容灾系统的校验工作存在以下的缺陷:
在意外事件发生时,例如监测技术不到位、系统平台不健康、两数据中心网络波动性中断等因素的发生,使得两个数据中心一体化的业务系统会分裂成两个独立的数据中心,使用户很难分辨哪个数据中心的数据为正确的;当出现数据同步失败或者丢失的情况,根据目前的日志排查的方法检查对于大数据量中不同步的数据或者丢失的数据,检查效率较低而且准确性较低。
发明内容
为克服上述现有技术存在的不足,本发明之目的在于提供一种双活数据库中表数据的快速比对装置及方法,以提高双活备份容灾中源端数据库和目标端数据库的表数据检查的效率和准确性,为两个数据库的数据恢复提供准确依据。
为达上述目的,本发明提出一种双活数据库中表数据的快速比对装置,包括:
抽取模块,用于抽取源端数据库管理系统与目标端数据库管理系统中待比对数据表的表数据,并将抽取到的表数据根据预先确定的比对语句规则组织成待比对表数据结构的待比对表数据发送至比对控制模块;
比较池,用于区分存放源端数据库管理系统与目标端数据库管理系统待比对数据表中不一致的表数据;
比对控制模块,用于对获得的待比对表数据的内容进行解析,判断该待比对表数据的数据来源,并根据判断结果于所述比较池中遍历与其数据来源相反的数据记录进行匹配,根据遍历匹配结果于所述比较池中插入或删除该待比对表数据的数据记录;
比较结果输出模块,用于于所述比对控制模块将源端数据库与目标端数据库的所有待比对表数据全部比对处理完毕后,将所述比较池的剩余记录输出显示。
优选地,所述装置还包括:
比对语句规则配置模块,用于获取源端数据库管理系统与目标端数据库管理系统中待比对表的表结构的数据字典信息,根据所述数据字典信息,组织其中的字段和关键信息,配置待比对表数据的比对语句规则。
优选地,所述抽取模块将抽取到的表数据组织成如下待比对表数据结构:
数据来源位置+关键信息+比对内容
其中,数据来源位置指的是该表数据是来自源端数据库管理系统或目标端数据库管理系统,所述比对内容为利用MD5算法对原数据进行数学变换后得到的MD5码。
优选地,所述比较池由list指针数组构成,数组的元素的数量定义为常量N,其中数组的偶数位置用于存放来自源端数据库的、与目标端数据库不一致的表数据,数组的奇数位置用于存放来自目标数据库的、与源端数据库不一致的表数据,或者,数组的奇数位置用于存放来自源端数据库的、与目标端数据库不一致的表数据,数组的偶数位置用于存放来自目标数据库的、与源端数据库不一致的表数据。
优选地,所述比较控制模块进一步包括:
哈希单元,用于将所述待比对表数据中比对内容的MD5码哈希成一个整型值并与(N/2)-1求余得到M,其中,N为所述比较池的数组的元素的数量;
数据来源判断单元,用于对获得的待比对表数据进行解析,判断其数据来源;
遍历匹配单元,用于根据所述数据来源判断单元的判断结果以及所述哈希单元的哈希结果遍历比较池中数据来源与其相反的数据记录,并将其与所述待比对表数据进行匹配,根据遍历匹配结果于比较池中插入或删除该待比对表数据对应的数据记录。
优选地,若所述比较池的list指针数组的偶数位置存放来自源端数据库的、与目标端数据库不一致的表数据,奇数位置用于存放来自目标数据库的、与源端数据库不一致的表数据,若所述数据来源判断单元判断出该待比对表数据的数据来源为源端数据库,则遍历所述比较池的数组成员(M*2)+1所指向的list,若有与所述待比对表数据的MD5码相同的记录,则删除掉该list指针数组中与所述待比对表数据的MD5码相同的记录,并将该记录丢弃,若没有找到与待比对表数据相同MD5码的记录,则将该待比对表数据作为一条新的数据记录插入所述比较池位置为M*2的所述list指针数组中;若所述数据来源判断单元判断数据来源为目标端数据库,则遍历所述比较池的数组成员M*2所指向的list,若有与所述待比对表数据的MD5码相同的记录,则删除掉该list指针数组中与所述待比对表数据的MD5码相同的记录,并将该记录丢弃,若没有找到与所述待比对表数据相同MD5码的记录,则将该待比对表数据作为一条新的数据记录插入该比较池位置为(M*2)+1的所述list指针数组中。
优选地,所述装置还包括并发控制模块,所述并发控制模块利用锁机制使所述比对控制模块对源端数据库和目标端数据库的待比对表数据进行并发处理。
优选地,假设源端和目标端的总抽取线程数为X,所述并发控制模块将所述比较池的list指针数组分为X个范围,当所述比对控制模块需向所述比较池插入待比对表数据或删除相应数据记录时,所述并发控制模块先申请对应的锁,所述比对控制模块再执行对比较池的修改工作,修改完后由所述并发控制模块释放掉对应的锁。
优选地,所述装置还包括:
待比对数据表获取模块,用于获取预设的双活比对配置信息的待比对表信息,根据所述待比对表信息从源端数据库管理系统及目标端数据库管理系统中提取与所述待比表信息对应的待比对数据表。
为达到上述目的,本发明还提供一种双活数据库中表数据的快速比对方法,包括如下步骤:
步骤S1,利用抽取模块抽取源数据库管理系统与目标端数据库管理系统中待比对数据表的表数据,并将抽取到的表数据根据预先确定的比对语句规则组织成待比对表数据结构的待比对表数据;
步骤S2,利用比对控制模块对获得的待比对表数据的内容进行解析,判断该待比对表数据的数据来源,并根据判断结果于比较池中遍历与其数据来源相反的数据记录进行匹配,根据遍历匹配结果于比较池中插入或删除该待比对表数据的数据记录;
步骤S3,于将源端数据库与目标端数据库的所有待比对表数据全部比对处理完后,将所述比较池的剩余记录输出显示。
与现有技术相比,本发明一种双活数据库中表数据的快速比对装置及方法通过利用抽取模块抽取源数据库管理系统与目标端数据库管理系统中待比对数据表的表数据,并将抽取到的表数据根据预先确定的比对语句规则组织成待比对表数据结构的待比对表数据,然后再利用比对控制模块对获得的待比对表数据的内容进行解析,判断该待比对表数据的数据来源,并根据判断结果于比较池中遍历与其数据来源相反的数据记录进行匹配,根据遍历匹配结果于比较池中插入或删除该待比对表数据对应的数据记录,实现了提高双活备份容灾中源端数据库和目标端数据库的表数据检查的效率和准确性的目的,为两个数据库的数据恢复提供准确依据。
附图说明
图1为本发明一种双活数据库中表数据的快速比对装置一实施例的结构示意图;
图2为本发明具体实施例中比对控制模块的细部结构图;
图3为本发明一种双活数据库中表数据的快速比对方法一实施例的步骤流程图;
图4为本发明具体实施例中步骤S2的细部流程图;
图5为本发明一种双活数据库中表数据的快速比对方法另一实施例的步骤流程图;
图6为本发明具体实施例双活数据库中表数据的快速比对的总流程图;
图7为本发明具体实施例中采用锁机制的并发控制示意图。
具体实施方式
以下通过特定的具体实例并结合附图说明本发明的实施方式,本领域技术人员可由本说明书所揭示的内容轻易地了解本发明的其它优点与功效。本发明亦可通过其它不同的具体实例加以施行或应用,本说明书中的各项细节亦可基于不同观点与应用,在不背离本发明的精神下进行各种修饰与变更。
图1为本发明一种双活数据库中表数据的快速比对装置的结构示意图。如图1所示,本发明一种双活数据库中表数据的快速比对装置,包括:
抽取模块101,用于抽取源数据库管理系统与目标数据库管理系统中待比对数据表的表数据,并将抽取到的表数据根据预先确定的比对语句规则组织成待比对表数据结构的待比对表数据发送至比对控制模块102。
在本发明具体实施例中,所述预先确定的比对语句规则是通过获取待比对表的表结构的数据字典信息,根据字典信息,组织其中的字段和关键信息,例如可选物理主键信息如oracle数据库中的rowid信息或逻辑主键信息,配置形成的,所述预先确定的比对语句规则至少包括表数据的来源、关键信息以及比对内容。在本发明具体实施例中,所述抽取模块101将抽取到的表数据组织成如下待比对表数据结构:
数据来源位置+关键信息+比对内容
其中,数据来源位置指的是该表数据是来自源端数据库管理系统或目标端数据库管理系统,在本发明具体实施例中,所述比对内容为利用公开的MD5算法对表中数据进行数学变换后得到的MD5码,但本发明不以此为限,关键信息例如为可选物理主键信息如oracle数据库中的rowid信息或逻辑主键信息,其可用于对比对结果的解释和修复,例如可以定位哪个是相同主键但内容不同的记录。
比较池102,用于根据数据来源不同区分存放源数据库管理系统与目标数据库管理系统中不一致的表数据,在本发明具体实施例,比较池102由list指针数组组成,数组的元素的个数定义为一个常量N,可通过对数组的位置区分存放源数据库管理系统与目标数据库管理系统待比对数据表中不一致的表数据,例如,将数组的偶数位置用于存放来自源端数据库的、与目标数据库待比对表数据不一致的表数据,数组的奇数位置用于存放来自目标数据库的、与源端数据库待比对表数据不一致的表数据,当然,反之亦然,本发明则不以此为限。
比对控制模块103,用于对获得的待比对表数据的内容进行解析,判断该待比对表数据的数据来源,并根据判断结果于比较池102中遍历与其数据来源相对的数据记录进行匹配,根据遍历匹配结果于比较池102中插入或删除该待比对表数据相应的数据记录,其中,所述的与其数据来源相对的数据记录指的是与其数据来源相反的数据记录,例如若待比对表数据的数据来源为源端,则遍历比较池102中存储的数据来源为目标数据库的数据记录与其进行比对,若比对成功,则删除比较池102中的该条记录,否则,则确定该待比对表数据应插入的与其数据来源相应的比较池102中的数据记录的插入位置,并将所述待比对表数据插入所述插入位置,这里所述的与待比对表数据的数据来源相应的数据记录指的是与其数据来源相同的数据记录,例如,若待比对表数据的数据来源为源端,若遍历比较池102中数据来源为目标数据库的数据记录都未匹配到与待比对表数据比对内容相同的数据记录,则确定该待比对表数据于该比较池102的数据来源为源端数据库的数据记录的位置,并将其插入该位置。
具体地,如图2所示,比对控制模块103进一步包括:
哈希单元1031,用于将待比对表数据中比对内容的MD5码哈希成一个整型(int)值并与(N/2)-1求余得到M,其中,N为比较池102的数组的元素的数量;
数据来源判断单元1032,用于对获得的待比对表数据进行解析,判断其数据来源,即判断该待比对表数据是来自源端数据库还是目标数据库。
遍历匹配单元1033,用于根据数据来源判断单元1032的判断结果以及哈希单元1031的哈希结果遍历比较池102中数据来源与其对应(或称之相反)的数据记录,并将其与待比对表数据进行匹配,根据遍历匹配结果于比较池102中插入或删除该待比对表数据对应的数据记录。
在本发明具体实施例中,以比较池102的list指针数组的偶数位置用于存放来自源端数据库的、与目标数据库不一致的表数据,数组的奇数位置用于存放来自目标数据库的、与源端数据库不一致的表数据为例,若数据来源判断单元1032判断出该待比对表数据的数据来源为源端,则在插入比较池102前,遍历比较池102的数组成员(M*2)+1所指向的list,如果有与待比对表数据的MD5码相同的记录,则删除掉该list指针数组中与待比对表数据的MD5码相同的记录,并将此记录丢弃,如果没有找到与待比对表数据相同MD5码的记录,则将该待比对表数据作为一条新的数据记录插入该比较池102位置为M*2的list指针数组中;若数据来源判断单元1032判断数据来源为目标端数据库,则在插入比较池102前,遍历比较池102的数组成员M*2所指向的list,如果有与待比对表数据的MD5码相同的记录,则删除掉该list指针数组中与待比对表数据的MD5码相同的记录,并将此记录丢弃,如果没有找到与待比对表数据相同MD5码的记录,则将该待比对表数据作为一条新的数据记录插入该比较池102位置为(M*2)+1的list指针数组中。
优选地,比对控制模块103对源端数据库和目标端数据库的待比对表数据向比较池102插入/删除的过程是并发的过程,因此本发明之双活数据库中表数据的快速比对装置还包括并发控制模块,在本发明具体实施例中,所述并发控制模块利用锁机制使比对控制模块103对源端数据库和目标端数据库的待比对表数据进行并发处理。具体地说,假设源端和目标端的总抽取线程数为X,并发控制模块将比较池102的list指针数组分为X个范围,当比对控制模块103需要向比较池插入待比对表数据或删除相应数据记录时,并发控制模块先申请对应的锁,然后比对控制模块103再执行对比较池102的修改工作,修改完后由并发控制模块释放掉对应的锁。不同的线程产生的MD5值在一个时间点通常是不同的,因此可以得到并发度约等于X的并发性能,单个范围内的MD5值是不冲突的,可以同时插入数据库,减少锁争抢。
比较结果输出模块104,用于于比对控制模块103将源端数据库与目标端数据库的所有待比对表数据全部比对处理完后,将比较池102的剩余记录输出显示。也就是说,当比对控制模块103将源端数据库的表数据和目标端数据库的表数据全部插入/删除比较池后,比较池102中仅剩余源端数据库与目标端数据库不一致的表数据,则将该不一致的表数据记录通过比较结果输出模块104输出。若输出结果无内容则表示源端数据库与目标端数据库的表中数据一致,若输出结果有内容表示源端数据库与目标端数据库的表数据不一致,输出的结果为比较池102中的偶数位置则为源端数据库中的剩余记录,奇数位置为目标端数据库中的剩余记录。
优选地,本发明一种双活数据库中表数据的快速比对装置,还包括:
比对语句规则配置模块,用于获取待比对表的表结构的数据字典信息,根据字典信息,组织其中的字段和关键信息,配置待比对表数据的比对语句规则,例如可选物理主键信息如oracle数据库中的rowid信息或逻辑主键信息作为关键信息。也就是说,比对语句规则配置模块首先访问源端数据库和目标端数据库自带的数据字典信息,从数据字典信息中获取待比对表的字段及关键信息等,根据该数据字典信息配置所述待比对表数据的比对语句规则,这里需说明的是,本发明中的数据库可以为关系型数据库,但本发明不以此为限。
优选地,本发明一种双活数据库中表数据的快速比对装置,还包括:
待比对数据表获取模块,用于获取预设的双活比对配置信息的待比对表信息,根据所述待比对表信息从源端数据库管理系统及目标端数据库管理系统中提取与所述待比表信息对应的待比对数据表。所述预设的双活比对配置信息可以包括多个待比对表信息,所述待比对表信息至少包括待比对表的表名及数据格式;所述待比对数据表获取模可根据所述待比对表的表名查找到对应的待比对数据表。也就是说,本发明通过在所述预设的双活比对配置信息设置多个待比对表信息,可以实现同时对多个待比对表同时进行一致性比对检查,进一步提高两个数据中心的表数据比对的效率。
图3为本发明一种双活数据库中表数据的快速比对方法的步骤流程图。如图3所示,本发明一种双活数据库中表数据的快速比对方法,包括如下步骤:
步骤S1,利用抽取模块抽取源数据库管理系统与目标端数据库管理系统中待比对数据表的表数据,并将抽取到的表数据根据预先确定的比对语句规则组织成待比对表数据结构的待比对表数据。
在本发明具体实施例中,所述预先确定的比对语句规则是通过获取待比对表的表结构的数据字典信息,根据字典信息,组织其中的字段和关键信息,例如可选物理主键信息如oracle数据库中的rowid信息或逻辑主键信息,配置形成的,所述预先确定的比对语句规则至少包括表数据的来源、关键信息以及比对内容。在本发明具体实施例中,所述抽取模块将抽取到的表数据组织成如下待比对表数据结构:
数据来源位置+关键信息+比对内容
其中,数据来源位置指的是该表数据是来自源端数据库管理系统或目标端数据库管理系统,在本发明具体实施例中,所述比对内容为利用公开的MD5算法对原数据进行数学变换后的到的MD5码,但本发明不以此为限。
步骤S2,利用比对控制模块对获得的待比对表数据的内容进行解析,判断该待比对表数据的数据来源,并根据判断结果于比较池中遍历与其数据来源对应的数据记录进行匹配,根据遍历匹配结果于比较池中插入或删除该待比对表数据对应的数据记录,其中,所述的与其数据来源对应的数据记录指的是与其数据来源相反的数据记录,例如若待比对表数据的数据来源为源端,则遍历比较池中存储的数据来源为目标数据库的数据记录与其进行比对,若比对成功,则删除比较池中的该条记录,否则,则确定该待比对表数据应插入的与其数据来源相应的比较池中的数据记录的插入位置,将所述待比对表数据插入所述插入位置,这里所述的与待比对表数据数据来源相应的数据记录指的是与其数据来源相同的数据记录,例如,若待比对表数据的数据来源为源端,若遍历比较池中数据来源为目标数据库的数据记录都未匹配到比对内容相同的数据记录,则确定该待比对表数据于该比较池的数据来源为源端数据库的数据记录的位置,并将其插入该位置。
在本发明中,比较池用于根据数据来源不同区分存放源数据库管理系统与目标数据库管理系统待比对数据表中不一致的表数据,具体地,比较池由list指针数组组成,数组的元素的数量定义为一个常量N,其中数组的偶数位置用于存放来自源端数据库的、与目标数据库不一致的表数据,数组的奇数位置用于存放来自目标数据库的、与源端数据库不一致的表数据,当然,反之亦可,本发明不以此为限
具体地,如图4所示,步骤S2进一步包括:
步骤S200,将待比对表数据中比对内容的MD5码哈希成一个整型(int)值并与(N/2)-1求余得到M,其中,N为比较池102的数组的元素的数量;
步骤S201,对获得的待比对表数据进行解析,判断其数据来源,即判断该待比对表数据是来自源端数据库还是目标数据库。
步骤S202,根据步骤S201的判断结果以及步骤S200的哈希结果遍历比较池中数据来源与其对应(或称之相反)的数据记录,并将其与待比对表数据进行匹配,根据遍历匹配结果于比较池中插入或删除该待比对表数据相应的数据记录。
在本发明具体实施例中,以比较池的list指针数组的偶数位置用于存放来自源端数据库的、与目标数据库不一致的表数据,数组的奇数位置用于存放来自目标数据库的、与源端数据库不一致的表数据为例,若步骤S201判断出该待比对表数据的数据来源为源端,则在插入比较池前,遍历比较池的数组成员(M*2)+1所指向的list,如果有与待比对表数据的MD5码相同的记录,则删除掉该list指针数组中与待比对表数据的MD5码相同的记录,并将此记录丢弃,如果没有找到与待比对表数据相同MD5码的记录,则将该待比对表数据作为一条新的数据记录插入该比较池位置为M*2的list指针数组中;若步骤S201判断数据来源为目标端数据库,则在插入比较池前,遍历比较池102的数组成员M*2所指向的list,如果有与待比对表数据的MD5码相同的记录,则删除掉该list指针数组中与待比对表数据的MD5码相同的记录,并将此记录丢弃,如果没有找到与待比对表数据相同MD5码的记录,则将该待比对表数据作为一条新的数据记录插入该比较池位置为(M*2)+1的list指针数组中。
优选地,于步骤S202,对源端数据库和目标端数据库的待比对表数据向比较池插入/删除的过程采用并发控制,这里的并发控制采用锁控制机制,具体地说,假设源端和目标端的总抽取线程数为X,将比较池的list指针数组分为X个范围,当需要向比较池插入待比对表数据或删除相应数据记录时,先申请对应的锁,然后再执行对比较池的修改工作,修改完后再释放掉对应的锁。不同的线程产生的M值在一个时间点通常是不同的,因此可以得到并发度约等于X的并发性能。
步骤S3,于将源端数据库与目标端数据库的所有待比对表数据全部比对处理完后,将比较池的剩余记录输出显示。也就是说,当比对控制模块将源端数据库的表数据和目标端数据库的表数据全部插入/删除比较池后,比较池中仅剩余源端数据库与目标端数据库不一致的表数据,则将该不一致的表数据记录输出。若输出结果无内容则表示源端数据库与目标端数据库的表中数据一致,若输出结果有内容表示源端数据库与目标端数据库的表数据不一致,输出的结果为比较池中的偶数位置则为源端数据库中的剩余记录,奇数位置为目标端数据库中的剩余记录。
优选地,如图5所示,本发明一种双活数据库中表数据的快速比对方法,还包括:
步骤S0,获取待比对表的表结构的数据字典信息,根据字典信息,组织其中的字段和关键信息,配置待比对表数据的比对语句规则,例如可选物理主键信息如oracle数据库中的rowid信息或逻辑主键信息作为关键信息。也就是说,比对语句规则配置模块首先访问源端数据库和目标端数据库自带的数据字典信息,从数据字典信息中获取待比对表的字段及关键信息等,根据该数据字典信息配置所述待比对表数据的比对语句规则。
优选地,本发明一种双活数据库中表数据的快速比对方法,还包括如下步骤:
步骤S0’,获取预设的双活比对配置信息的待比对表信息,根据所述待比对表信息从源端数据库管理系统及目标端数据库管理系统中提取与所述待比表信息对应的待比对数据表。所述预设的双活比对配置信息可以包括多个待比对表信息,所述待比对表信息至少包括待比对表的表名及数据格式;所述待比对数据表获取模可根据所述待比对表的表名查找到对应的待比对数据表。也就是说,本发明通过在所述预设的双活比对配置信息设置多个待比对表信息,可以实现同时对多个待比对表同时进行一致性比对检查,进一步提高两个数据中心的表数据比对的效率。
图6为本发明具体实施例双活数据库中表数据的快速比对的总流程图,以下通过一具体实施例来进一步说明本发明:
1、抽取模块获得待比对数据的表的表结构的数据字典信息。
2、根据字典信息,组织字段和关键信息(可选物理主键信息如oracle数据库中的rowid信息或逻辑主键信息)的相关语句,配置比对语句规则。
3、抽取模块将抽到的表中数据根据比对语句规则组织成待比对表数据结构的待比对表数据,其结构如下:
来源位置(源端或目标端)+关键信息+数据的MD5码,
并将该待比对表数据发送给比对控制模块。
4、建立比较池,该比较池由list指针数组组成,数组的元素的数量定义为一个常量N。
5、将待比对表数据的MD5码哈希(hash)成一个整型(int)值并与(N/2)-1求余得到M。
6、比对控制模块解析获得待比对表数据,判断其数据来源,如果数据来源是源端数据库,在插入比较池前,遍历数组成员(M*2)+1所指向的list,如果有与该待比对表数据的MD5码相同的记录,删除掉list中与待比对表数据的MD5码相同的记录,并将此记录丢弃,如果没有找到相同MD5码的记录,则将此记录插入比较池M*2位置的list中。
7、如果数据来源是目标端数据库,在插入比较池前,遍历数组成员M*2所指向的list,如果有与该待比对表数据的MD5码相同的记录,删除掉list中记录,并将此记录丢弃,如果没有找到与该待比对表数据的MD5码相同的记录,则将此记录插入比较池(M*2)+1位置的list中。
8、源端和目标端向比较池插入的过程是并发插入的过程,因此需要锁。如果源端和目标端的总抽取线程数为X,锁的方法是将比较池的list指针数组分为X个范围,如图7所示,当向比较池插入时,先申请是对应的锁,例如待比对表数据的MD5码为0~X1,则申请对应的0号锁,再执行对比较池的修改工作,然后释放锁;不同的线程产生的M值在一个时间点通常是不同的,因此可以得到并发度约等于X的并发性能,如图7所示。
9、待源端数据库的数据和目标端数据库的数据全部插入比较池后,将比较池剩余记录输出到比较结果输出模块。
10、比较结果输出如果无内容表示源端数据库与目标端数据库的表中数据一致,如果有内容表示两者的表数据不一致,若输出内容为比较池的偶数位置则为源端数据库的剩余记录,若输出内容为比较池的奇数位置则为目标端数据库的剩余记录。
综上所述,本发明一种双活数据库中表数据的快速比对装置及方法通过利用抽取模块抽取源数据库管理系统与目标端数据库管理系统中待比对数据表的表数据,并将抽取到的表数据根据预先确定的比对语句规则组织成待比对表数据结构的待比对表数据,然后再利用比对控制模块对获得的待比对表数据的内容进行解析,判断该待比对表数据的数据来源,并根据判断结果于比较池中遍历与其数据来源相反的数据记录进行匹配,根据遍历匹配结果于比较池中插入或删除该待比对表数据对应的数据记录,实现了提高双活备份容灾中源端数据库和目标端数据库的表数据检查的效率和准确性的目的,为两个数据库的数据恢复提供准确依据。相比现有技术,本发明具有高速且对比结果对修复数据有意义的特点,目前已在oracle数据库管理系统上实现。
上述实施例仅例示性说明本发明的原理及其功效,而非用于限制本发明。任何本领域技术人员均可在不违背本发明的精神及范畴下,对上述实施例进行修饰与改变。因此,本发明的权利保护范围,应如权利要求书所列。
Claims (7)
1.一种双活数据库中表数据的快速比对装置,包括:
抽取模块,用于抽取源端数据库管理系统与目标端数据库管理系统中待比对数据表的表数据,并将抽取到的表数据根据预先确定的比对语句规则组织成待比对表数据结构的待比对表数据发送至比对控制模块;
比较池,用于区分存放源端数据库管理系统与目标端数据库管理系统的待比对数据表中不一致的表数据,所述比较池由list指针数组构成,数组的元素的数量定义为常量N,其中数组的偶数位置用于存放来自源端数据库的、与目标端数据库不一致的表数据,数组的奇数位置用于存放来自目标数据库的、与源端数据库不一致的表数据,或者,数组的奇数位置用于存放来自源端数据库的、与目标端数据库不一致的表数据,数组的偶数位置用于存放来自目标数据库的、与源端数据库不一致的表数据;
比对控制模块,用于对获得的待比对表数据的内容进行解析,判断该待比对表数据的数据来源,并根据判断结果于所述比较池中遍历与其数据来源相反的数据记录进行匹配,根据遍历匹配结果于所述比较池中插入或删除该待比对表数据的数据记录;
比较结果输出模块,用于于所述比对控制模块将源端数据库与目标端数据库的所有待比对表数据全部比对处理完毕后,将所述比较池的剩余记录输出显示,
所述比对控制模块进一步包括:
哈希单元,用于将所述待比对表数据中比对内容的MD5码哈希成一个整型值并与(N/2)-1求余得到M,其中,N为所述比较池的数组的元素的数量;
数据来源判断单元,用于对获得的待比对表数据进行解析,判断其数据来源;
遍历匹配单元,用于根据所述数据来源判断单元的判断结果以及所述哈希单元的哈希结果遍历比较池中数据来源与其相反的数据记录,并将其与所述待比对表数据进行匹配,根据遍历匹配结果于比较池中插入或删除该待比对表数据对应的数据记录;
于所述遍历匹配单元中,若所述比较池的list指针数组的偶数位置存放来自源端数据库的、与目标端数据库不一致的表数据,奇数位置用于存放来自目标数据库的、与源端数据库不一致的表数据,若所述数据来源判断单元判断出该待比对表数据的数据来源为源端数据库,则遍历所述比较池的数组成员(M*2)+1所指向的list,若有与所述待比对表数据的MD5码相同的记录,则删除掉该list指针数组中与所述待比对表数据的MD5码相同的记录,并将该记录丢弃,若没有找到与待比对表数据相同MD5码的记录,则将该待比对表数据作为一条新的数据记录插入所述比较池位置为M*2的所述list指针数组中;若所述数据来源判断单元判断数据来源为目标端数据库,则遍历所述比较池的数组成员M*2所指向的list,若有与所述待比对表数据的MD5码相同的记录,则删除掉该list指针数组中与所述待比对表数据的MD5码相同的记录,并将该记录丢弃,若没有找到与所述待比对表数据相同MD5码的记录,则将该待比对表数据作为一条新的数据记录插入该比较池位置为(M*2)+1的所述list指针数组中;反之亦然。
2.如权利要求1所述的一种双活数据库中表数据的快速比对装置,其特征在于,所述装置还包括:
比对语句规则配置模块,用于获取源端数据库管理系统与目标端数据库管理系统中待比对表的表结构的数据字典信息,根据所述数据字典信息,组织其中的字段和关键信息,配置待比对表数据的比对语句规则。
3.如权利要求2所述的一种双活数据库中表数据的快速比对装置,其特征在于:所述抽取模块将抽取到的表数据组织成如下待比对表数据结构:
数据来源位置+关键信息+比对内容
其中,数据来源位置用于表示该表数据是来自源端数据库管理系统还是目标端数据库管理系统,所述比对内容为利用MD5算法对原数据进行数学变换后得到的MD5码,所述关键信息为可选物理主键信息。
4.如权利要求3所述的一种双活数据库中表数据的快速比对装置,其特征在于:所述装置还包括并发控制模块,所述并发控制模块利用锁机制使所述比对控制模块对源端数据库和目标端数据库的待比对表数据进行并发处理。
5.如权利要求4所述的一种双活数据库中表数据的快速比对装置,其特征在于:假设源端和目标端的总抽取线程数为X,所述并发控制模块将所述比较池的list指针数组分为X个范围,当所述比对控制模块需向所述比较池插入待比对表数据或删除相应数据记录时,所述并发控制模块先申请对应的锁,所述比对控制模块再执行对比较池的修改工作,修改完后由所述并发控制模块释放掉对应的锁。
6.如权利要求1所述的一种双活数据库中表数据的快速比对装置,其特征在于,所述装置还包括:
待比对数据表获取模块,用于获取预设的双活比对配置信息的待比对表信息,根据所述待比对表信息从源端数据库管理系统及目标端数据库管理系统中提取与所述待比对 表信息对应的待比对数据表。
7.一种双活数据库中表数据的快速比对方法,包括如下步骤:
步骤S1,利用抽取模块抽取源数据库管理系统与目标端数据库管理系统中待比对数据表的表数据,并将抽取到的表数据根据预先确定的比对语句规则组织成待比对表数据结构的待比对表数据;
步骤S2,利用比对控制模块对获得的待比对表数据的内容进行解析,将所述待比对表数据中比对内容的MD5码哈希成一个整型值并与(N/2)-1求余得到M,其中,N为比较池的数组的元素的数量,该比较池用于区分存放源端数据库管理系统与目标端数据库管理系统的待比对数据表中不一致的表数据,判断该待比对表数据的数据来源,并根据判断结果于比较池中遍历与其数据来源相反的数据记录进行匹配,根据遍历匹配结果于比较池中插入或删除该待比对表数据的数据记录,若所述比较池的list指针数组的偶数位置存放来自源端数据库的、与目标端数据库不一致的表数据,奇数位置用于存放来自目标数据库的、与源端数据库不一致的表数据,若判断出该待比对表数据的数据来源为源端数据库,则遍历所述比较池的数组成员(M*2)+1所指向的list,若有与所述待比对表数据的MD5码相同的记录,则删除掉该list指针数组中与所述待比对表数据的MD5码相同的记录,并将该记录丢弃,若没有找到与待比对表数据相同MD5码的记录,则将该待比对表数据作为一条新的数据记录插入所述比较池位置为M*2的所述list指针数组中;若所述数据来源判断单元判断数据来源为目标端数据库,则遍历所述比较池的数组成员M*2所指向的list,若有与所述待比对表数据的MD5码相同的记录,则删除掉该list指针数组中与所述待比对表数据的MD5码相同的记录,并将该记录丢弃,若没有找到与所述待比对表数据相同MD5码的记录,则将该待比对表数据作为一条新的数据记录插入该比较池位置为(M*2)+1的所述list指针数组中;反之亦然;
步骤S3,于将源端数据库与目标端数据库的所有待比对表数据全部比对处理完后,将所述比较池的剩余记录输出显示。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910418151.1A CN110134694B (zh) | 2019-05-20 | 2019-05-20 | 一种双活数据库中表数据的快速比对装置及方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910418151.1A CN110134694B (zh) | 2019-05-20 | 2019-05-20 | 一种双活数据库中表数据的快速比对装置及方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN110134694A CN110134694A (zh) | 2019-08-16 |
CN110134694B true CN110134694B (zh) | 2020-04-17 |
Family
ID=67571338
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910418151.1A Active CN110134694B (zh) | 2019-05-20 | 2019-05-20 | 一种双活数据库中表数据的快速比对装置及方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN110134694B (zh) |
Families Citing this family (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111090648B (zh) * | 2019-12-07 | 2023-05-16 | 杭州安恒信息技术股份有限公司 | 一种关系型数据库数据同步冲突解决方法 |
CN113407551A (zh) * | 2020-03-17 | 2021-09-17 | 北京同邦卓益科技有限公司 | 数据一致性确定方法、装置、设备及存储介质 |
CN111581217B (zh) * | 2020-05-12 | 2024-02-13 | 东莞盟大集团有限公司 | 数据检测方法、装置、计算机设备和存储介质 |
CN113190536B (zh) * | 2021-03-02 | 2023-01-17 | 上海英方软件股份有限公司 | 一种对双活数据库管理复制系统的快速修复方法及装置 |
CN113177044B (zh) * | 2021-04-08 | 2022-05-27 | 武汉达梦数据库股份有限公司 | 一种基于数据库b树快速对比数据的方法和装置 |
CN113377778B (zh) * | 2021-07-01 | 2022-04-22 | 上海英方软件股份有限公司 | 一种数据库表的差异比较方法及装置 |
CN115640170B (zh) * | 2022-12-26 | 2023-03-21 | 交通运输部公路科学研究所 | 一种大数据同步备份及校验方法 |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103176989A (zh) * | 2011-12-21 | 2013-06-26 | 中国银联股份有限公司 | 基于数据字典和可变规则的数据库表级比较方法和系统 |
CN104021132A (zh) * | 2013-12-08 | 2014-09-03 | 郑州正信科技发展股份有限公司 | 主备数据库数据一致性核查备份方法及其系统 |
CN104111937A (zh) * | 2013-04-18 | 2014-10-22 | 中兴通讯股份有限公司 | 主、备数据库及其数据一致性检测、修复方法和装置 |
CN104268291A (zh) * | 2014-10-23 | 2015-01-07 | 税友软件集团股份有限公司 | 一种数据一致性处理方法和系统 |
CN108334578A (zh) * | 2018-01-24 | 2018-07-27 | 广州江南科友科技股份有限公司 | 一种数据库双活检查方法与装置 |
CN108629002A (zh) * | 2018-05-03 | 2018-10-09 | 山东汇贸电子口岸有限公司 | 一种基于kettle的大数据比对方法及装置 |
Family Cites Families (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20070208918A1 (en) * | 2006-03-01 | 2007-09-06 | Kenneth Harbin | Method and apparatus for providing virtual machine backup |
US20080235176A1 (en) * | 2007-03-22 | 2008-09-25 | Microsoft Corporation | Data comparator |
US20160063050A1 (en) * | 2014-08-28 | 2016-03-03 | Joerg Schoen | Database Migration Consistency Checker |
CN106295250B (zh) * | 2016-07-28 | 2019-03-29 | 北京百迈客医学检验所有限公司 | 二代测序短序列快速比对分析方法及装置 |
-
2019
- 2019-05-20 CN CN201910418151.1A patent/CN110134694B/zh active Active
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103176989A (zh) * | 2011-12-21 | 2013-06-26 | 中国银联股份有限公司 | 基于数据字典和可变规则的数据库表级比较方法和系统 |
CN104111937A (zh) * | 2013-04-18 | 2014-10-22 | 中兴通讯股份有限公司 | 主、备数据库及其数据一致性检测、修复方法和装置 |
CN104021132A (zh) * | 2013-12-08 | 2014-09-03 | 郑州正信科技发展股份有限公司 | 主备数据库数据一致性核查备份方法及其系统 |
CN104268291A (zh) * | 2014-10-23 | 2015-01-07 | 税友软件集团股份有限公司 | 一种数据一致性处理方法和系统 |
CN108334578A (zh) * | 2018-01-24 | 2018-07-27 | 广州江南科友科技股份有限公司 | 一种数据库双活检查方法与装置 |
CN108629002A (zh) * | 2018-05-03 | 2018-10-09 | 山东汇贸电子口岸有限公司 | 一种基于kettle的大数据比对方法及装置 |
Also Published As
Publication number | Publication date |
---|---|
CN110134694A (zh) | 2019-08-16 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110134694B (zh) | 一种双活数据库中表数据的快速比对装置及方法 | |
CN106815326B (zh) | 一种检测无主键数据表一致性的系统及方法 | |
US9928281B2 (en) | Lightweight table comparison | |
EP3495961B1 (en) | System and methods for migrating database data by using an image copy | |
CN110569214B (zh) | 用于日志文件的索引构建方法、装置及电子设备 | |
CN103514223B (zh) | 一种数据仓库数据同步方法和系统 | |
US8560500B2 (en) | Method and system for removing rows from directory tables | |
US20100257138A1 (en) | Data change ordering in multi-log based replication | |
CN111259004B (zh) | 一种存储引擎中数据索引的方法以及相关装置 | |
US10866865B1 (en) | Storage system journal entry redaction | |
JP6711884B2 (ja) | ソースデータベースの負荷を最小化したデータ整合性検証方法およびシステム | |
US10866968B1 (en) | Compact snapshots of journal-based storage systems | |
CN112307124A (zh) | 数据库同步验证方法、装置、设备及存储介质 | |
KR101549220B1 (ko) | 데이터베이스 관리 방법, 시스템 및 데이터베이스 트리 구조 | |
EP3264291A1 (en) | Data block processing method and device | |
CN106326222A (zh) | 一种数据处理方法和装置 | |
US20150081745A1 (en) | Database insert with deferred materialization | |
US10235422B2 (en) | Lock-free parallel dictionary encoding | |
Kvet et al. | Master index access as a data tuple and block locator | |
CN107402920B (zh) | 确定关系数据库表关联复杂度的方法和装置 | |
CN113190536B (zh) | 一种对双活数据库管理复制系统的快速修复方法及装置 | |
US11609890B1 (en) | Schema management for journal-based storage systems | |
CN114443625A (zh) | 数据库的处理方法、装置 | |
CN116150264A (zh) | 数据库副本数据主备一致性校验方法、装置、设备及介质 | |
US12032592B2 (en) | Method, database host, and medium for database b-tree branch locking |
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 |