CN109033186B - 数据一致性检测方法、装置、存储介质及电子设备 - Google Patents
数据一致性检测方法、装置、存储介质及电子设备 Download PDFInfo
- Publication number
- CN109033186B CN109033186B CN201810681119.8A CN201810681119A CN109033186B CN 109033186 B CN109033186 B CN 109033186B CN 201810681119 A CN201810681119 A CN 201810681119A CN 109033186 B CN109033186 B CN 109033186B
- Authority
- CN
- China
- Prior art keywords
- data
- change
- database
- transaction
- 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.)
- Active
Links
Images
Abstract
本公开涉及一种数据一致性检测方法、装置、存储介质及电子设备,能够在不影响正常业务的前提下,提升数据一致性检测的效率以及时效性。所述方法包括:在确定源数据库与目标数据库初始数据一致后,通过监测所述源数据库的事务日志获取源数据库变更数据,以及通过监测所述目标数据库的事务日志获取目标数据库变更数据;通过比对所述源数据库变更数据及所述目标数据库变更数据,实时确定所述源数据库与所述目标数据库数据是否一致。
Description
技术领域
本公开涉及计算机技术领域,具体地,涉及一种数据一致性检测方法、装置、存储介质及电子设备。
背景技术
在数据集成业务场景中,数据从源数据库流转到目标数据库,中间存在很多环节,过程中一旦出现配置错误、软件缺陷等问题,很可能导致目标数据库不满足预期,或者缺少数据,因此校验进行数据同步的源端和目标端数据是否一致是用户关注的核心问题。
目前,在比对源端与目标端数据是否一致时,通常是先对源数据库及目标数据库进行锁定,然后进行基于结果的逐字段比对。这样的方式耗时较长,且数据量越大,耗时越长,而且,目前的比对方式时效性差,只能定期进行检测,同时,锁表的方式进行数据一致性检测,会影响正常业务的进行。
发明内容
本公开的目的是提供一种数据一致性检测方法、装置、存储介质及电子设备,能够在不影响正常业务的前提下,提升数据一致性检测的效率以及时效性。
根据本公开实施例的第一方面,提供一种数据一致性检测方法,包括:
在确定源数据库与目标数据库初始数据一致后,通过监测所述源数据库的事务日志获取源数据库变更数据,以及通过监测所述目标数据库的事务日志获取目标数据库变更数据;
通过比对所述源数据库变更数据及所述目标数据库变更数据,实时确定所述源数据库与所述目标数据库数据是否一致。
可选的,通过监测所述源数据库的事务日志获取源数据库变更数据,以及通过监测所述目标数据库的事务日志获取目标数据库变更数据,包括:
解析所述源数据库的事务日志,从中提取包括事务信息、所有者、数据表、变更操作、及具体数据的源数据库变更数据,并将所述源数据库变更数据交付至第一队列;
解析所述目标数据库的事务日志,从中提取包括事务信息、所有者、数据表、变更操作、及具体数据的目标数据库变更数据,并将所述目标数据库变更数据交付至第二队列。
可选的,所述方法还包括:
在所述第一队列中,按照事务信息对所述源数据库变更数据进行分堆,以及在每一堆数据中,按照所有者以及数据表进行二次分堆;
以事务为整体,将完成分堆的源数据库变更数据交付至源端变更事务队列;
在所述第二队列中,按照事务信息对所述目标数据库变更数据进行分堆,以及在每一堆数据中,按照所有者以及数据表进行二次分堆;
以事务为整体,将完成分堆的目标数据库变更数据交付至目标端变更事务队列;
通过比对所述源数据库变更数据及所述目标数据库变更数据,实时确定所述源数据库与所述目标数据库数据是否一致,包括:
将所述源端变更事务队列中的记录与所述目标端变更事务队列中的记录进行比对,以确定所述源数据库与所述目标数据库数据是否一致,其中,所述源端变更事务队列与所述目标端变更事务队列中的每一条记录对应一个事务。
可选的,所述方法还包括:
构建包括操作类型字段、所有者字段、表名称字段、数据唯一标识字段、数据内容字段、差异来源字段、及时间戳字段的差异过程数据表;
将所述源端变更事务队列与所述目标端变更事务队列之间的差异数据存入所述差异过程数据表。
可选的,将所述源端变更事务队列与所述目标端变更事务队列之间的差异数据存入所述差异过程数据表,包括:
在所述差异数据为所述源数据库的变更记录时:
针对插入记录,将所述插入记录直接存入所述差异过程数据表;
针对更新记录,根据所述更新记录,更新所述差异过程数据表中按照更新前的字段值计算出的数据唯一标识所对应的差异记录;
针对删除记录,删除所述差异过程数据表中,删除的字段值计算出的数据唯一标识对应的差异记录;
在所述差异数据为所述目标数据库的变更记录时:
若所述差异过程数据表中存在变更的字段值计算出的数据唯一标识所对应的差异记录,则删除该差异记录;若所述差异过程数据表中不存在变更的字段值计算出的数据唯一标识所对应的差异记录,则将该变更记录存入所述差异过程数据表;其中,对于所述目标数据库的更新记录,通过更新后的字段值计算出的数据唯一标识查找是否存在对应的差异记录。
根据本公开实施例的第二方面,提供一种数据一致性检测装置,包括:
源端日志解析模块,用于在确定源数据库与目标数据库初始数据一致后,监测源数据库的事务日志,以获取源数据库变更数据;
目标端日志解析模块,用于在确定源数据库与目标数据库初始数据一致后,监测目标数据库的事务日志,以获取目标数据库变更数据;
数据差异分析模块,用于通过比对所述源数据库变更数据及所述目标数据库变更数据,实时确定所述源数据库与所述目标数据库数据是否一致。
可选的,所述源端日志解析模块用于:
解析所述源数据库的事务日志,从中提取包括事务信息、所有者、数据表、变更操作、及具体数据的源数据库变更数据,并将所述源数据库变更数据交付至第一队列;
所述目标端日志解析模块用于:
解析所述目标数据库的事务日志,从中提取包括事务信息、所有者、数据表、变更操作、及具体数据的目标数据库变更数据,并将所述目标数据库变更数据交付至第二队列。
可选的,所述装置还包括:
增量数据收集模块,用于:
在所述第一队列中,按照事务信息对所述源数据库变更数据进行分堆,以及在每一堆数据中,按照所有者以及数据表进行二次分堆;
以事务为整体,将完成分堆的源数据库变更数据交付至源端变更事务队列;
在所述第二队列中,按照事务信息对所述目标数据库变更数据进行分堆,以及在每一堆数据中,按照所有者以及数据表进行二次分堆;
以事务为整体,将完成分堆的目标数据库变更数据交付至目标端变更事务队列;
所述数据差异分析模块用于:
将所述源端变更事务队列中的记录与所述目标端变更事务队列中的记录进行比对,以确定所述源数据库与所述目标数据库数据是否一致,其中,所述源端变更事务队列与所述目标端变更事务队列中的每一条记录对应一个事务。
可选的,所述装置还包括:
差异数据存储模块,用于构建包括操作类型字段、所有者字段、表名称字段、数据唯一标识字段、数据内容字段、差异来源字段、及时间戳字段的差异过程数据表;及,将所述源端变更事务队列与所述目标端变更事务队列之间的差异数据存入所述差异过程数据表。
可选的,所述差异数据存储模块用于:
在所述差异数据为所述源数据库的变更记录时:
针对插入记录,将所述插入记录直接存入所述差异过程数据表;
针对更新记录,根据所述更新记录,更新所述差异过程数据表中按照更新前的字段值计算出的数据唯一标识所对应的差异记录;
针对删除记录,删除所述差异过程数据表中,删除的字段值计算出的数据唯一标识对应的差异记录;
在所述差异数据为所述目标数据库的变更记录时:
若所述差异过程数据表中存在变更的字段值计算出的数据唯一标识所对应的差异记录,则删除该差异记录;若所述差异过程数据表中不存在变更的字段值计算出的数据唯一标识所对应的差异记录,则将该变更记录存入所述差异过程数据表;其中,对于所述目标数据库的更新记录,通过更新后的字段值计算出的数据唯一标识查找是否存在对应的差异记录。
根据本公开实施例的第三方面,提供一种计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时实现第一方面中任一项所述方法的步骤。
根据本公开实施例的第四方面,提供一种电子设备,包括:
存储器,其上存储有计算机程序;
处理器,用于执行所述存储器中的所述计算机程序,以实现第一方面中任一项所述方法的步骤。
本公开实施例中,在确保源数据库与目标数据库的初始数据一致的前提下,可以监测源数据库的事务日志来获取源数据库变更数据,以及监测目标数据库的事务日志来获取目标数据库变更数据,那么通过对源数据库变更数据与目标数据库变更数据进行比对,即可实时确定源数据库与目标数据库的数据是否一致。可见,本公开是基于变更过程来检测数据的一致性,无需对两端数据库包含的全部数据进行逐字段比对,提高了检测效率,同时,无需对数据库进行锁表的操作,不会影响正常业务的进行。
本公开的其他特征和优点将在随后的具体实施方式部分予以详细说明。
附图说明
附图是用来提供对本公开的进一步理解,并且构成说明书的一部分,与下面的具体实施方式一起用于解释本公开,但并不构成对本公开的限制。在附图中:
图1是根据一示例性实施例示出的一种数据一致性检测方法的流程图;
图2是根据一示例性实施例示出的事务信息分堆效果示意图;
图3是根据一示例性实施例示出的差异数据分析的过程示意图;
图4是根据一示例性实施例示出的一种数据一致性检测装置的框图;
图5是根据一示例性实施例示出的一种数据一致性检测装置的另一框图;
图6是根据一示例性实施例示出的一种数据一致性检测装置的另一框图;
图7是根据一示例性实施例示出的一种电子设备的框图。
具体实施方式
以下结合附图对本公开的具体实施方式进行详细说明。应当理解的是,此处所描述的具体实施方式仅用于说明和解释本公开,并不用于限制本公开。
图1是根据一示例性实施例示出的一种数据一致性检测方法的流程图,如图1所示,该数据一致性检测方法可以应用于计算机中,包括以下步骤。
步骤S11:在确定源数据库与目标数据库初始数据一致后,通过监测所述源数据库的事务日志获取源数据库变更数据,以及通过监测所述目标数据库的事务日志获取目标数据库变更数据。
步骤S12:通过比对所述源数据库变更数据及所述目标数据库变更数据,实时确定所述源数据库与所述目标数据库数据是否一致。
源数据库与目标数据库即为需要检测数据是否一致的两端,由于本公开是基于数据的变更过程的比对来检测数据的一致性,因此在执行本公开的数据一致性检测方法之前,需要确保源数据库与目标数据库的初始数据是一致的。
数据库的事务日志是一组顺序写入、追加型的文件,存储数据库中的数据库表的变更过程,主要用来当数据库发生故障后进行数据恢复的重要依据。在事务日志中存储有变更产生所属的事务信息、变更作用的数据表所属者、变更发生的数据表、变更类型、变更的数据。
在确定源数据库与目标数据库的初始数据一致后,可以通过分别对源数据库和目标数据库的事务日志进行监测,从而分别获取源数据库变更数据及目标数据库变更数据。可选的,获取源数据库变更数据及目标数据库变更数据可以是解析所述源数据库的事务日志,从中提取包括事务信息、所有者、数据表、变更操作、及具体数据的源数据库变更数据,并将所述源数据库变更数据交付至第一队列,以及解析所述目标数据库的事务日志,从中提取包括事务信息、所有者、数据表、变更操作、及具体数据的目标数据库变更数据,并将所述目标数据库变更数据交付至第二队列。
即,针对源数据库以及目标数据库均执行解析数据库事务日志的步骤,从中提取事务信息(XID),所有者(OWNER),数据表(TABLE),具体变更操作:插入(I)、更新(U)、删除(D),具体的数据(DATA)。同时,源数据库变更数据会交付至队列Q1(即第一队列),目标数据库变更数据会交付至队列Q2(即第二队列)。通过这样的方式,便于后续对源数据库及目标数据库两端的增量数据进行比对,从而确定两端的数据是否一致。
可选的,在得到队列Q1及队列Q2后,还可以在Q1中,按照事务信息对所述源数据库变更数据进行分堆,以及在每一堆数据中,按照所有者以及数据表进行二次分堆,然后以事务为整体,将完成分堆的源数据库变更数据交付至源端变更事务队列(TQ1)。在Q2中,按照事务信息对所述目标数据库变更数据进行分堆,以及在每一堆数据中,按照所有者以及数据表进行二次分堆,然后以事务为整体,将完成分堆的目标数据库变更数据交付至目标端变更事务队列(TQ2)。那么,在进行增量数据比对时,可以直接比对TQ1与TQ2中的记录。
本公开实施例中,由于同一个事务可能包含多条事件,而事务日志是按照事件的发生顺序来排列的,因此,属于同一事务的多条事件的记录可能并没有相邻排列,那么可以按照事务信息分别对解析的源数据库变更数据和目标数据库变更数据进行分堆处理,同时,还可以在按照事务信息分出的每一堆数据中,按照所有者+数据表的方式进行二次分堆,以便于后续能够更为方便快捷地进行增量数据比对步骤。
例如,对队列Q1中的源数据库变更数据进行分堆,按照事务信息分堆得到n个事务(XID1~XIDn),将分堆后的源数据库变更数据以事务为整体交付至源端变更事务队列TQ1。分堆后的效果示意图如图2所示。
在得到源端变更事务队列TQ1以及目标端变更事务队列TQ2,便可进行差异数据的分析,基于队列具有先进先出的规则,差异数据分析的过程如图3的流程图所示:
步骤301:从TQ1中取出记录X1;
步骤302:判断X1是否为空,如果是的话返回步骤301,否的话执行步骤303;
步骤303:从TQ2中取出记录X2;
步骤304:判断X2是否为空,如果是的话执行步骤305,否的话执行步骤306;
步骤305:将X1包含的表记录作为差异数据进行存储,并返回步骤301;
步骤306:从X1中遍历数据表变更T1;
步骤307:判断T1是否为空,如果是的话执行步骤308,否的话执行步骤310;
步骤308:从X2中检查是否有剩余数据,如果是的话执行步骤309,否的话返回步骤301;
步骤309:将X2中的剩余数据作为差异数据进行存储,完成后返回步骤306;
步骤310:从X2中查询相同表的变更T2;
步骤311:判断T2是否为空,是的话执行步骤312,否的和执行步骤313;
步骤312:将T1中的记录作为差异数据进行存储,完成后返回步骤306;
步骤313:比较T1与T2是否一致,是的话返回步骤306,否的话执行步骤314;
步骤314:存储T1与T2之间的差异数据。
通过以上方式,可以实时根据源数据库以及目标数据库的变更数据,来实时比对源数据库与目标数据库的数据是否一致,同时还能实时反映源数据库与目标数据库之间的差异数据。
可选的,还可以构建包括操作类型字段、所有者字段、表名称字段、数据唯一标识字段、数据内容字段、差异来源字段、及时间戳字段的差异过程数据表,那么可以将所述源端变更事务队列与所述目标端变更事务队列之间的差异数据存入所述差异过程数据表。
源端变更事务队列TQ1与目标端变更事务队列TQ2之间的差异数据即为源数据库与目标数据库的差异过程数据,也即是说,为了直观反映源数据库与目标数据库之间变更数据的差异,可以构造一个用来存储差异过程数据的差异过程数据表,由操作类型、所有者、表名称、数据唯一标识、数据内容、差异来源以及时间戳7个字段组成。其中数据唯一标识字段记录的数据唯一标识可以是利用所有数据内容字段联合起来计算出的结果,不同数据对应的数据唯一标识不同。数据唯一标识可以使用唯一算法生成,该唯一算法要求输入相同输出相同,输入不同输出一定不同,比如MD5(消息摘要算法第五版)算法。差异来源字段的值可以包括SRC和TGT,SRC表示来自源数据库的差异,TGT表示来自目标数据库的差异。
可选的,将所述源端变更事务队列与所述目标端变更事务队列之间的差异数据存入所述差异过程数据表,可以通过以下方式:
在所述差异数据为所述源数据库的变更记录时:
针对插入记录,将所述插入记录直接存入所述差异过程数据表;
针对更新记录,根据所述更新记录,更新所述差异过程数据表中按照更新前的字段值计算出的数据唯一标识所对应的差异记录;
针对删除记录,删除所述差异过程数据表中,删除的字段值计算出的数据唯一标识对应的差异记录;
在所述差异数据为所述目标数据库的变更记录时:
若所述差异过程数据表中存在变更的字段值计算出的数据唯一标识所对应的差异记录,则删除该差异记录;若所述差异过程数据表中不存在变更的字段值计算出的数据唯一标识所对应的差异记录,则将该变更记录存入所述差异过程数据表;其中,对于所述目标数据库的更新记录,通过更新后的字段值计算出的数据唯一标识查找是否存在对应的差异记录。
也就是说,分析出源端变更事务队列TQ1与目标端变更事务队列TQ2之间的差异数据后,首先分析来源以及变更类型,如果是源数据库的插入记录,则直接存储;如果是源数据库的更新记录,则用修改前的字段值计算出来的数据唯一标识进行更新,并将差异数据过程记录更新至最新的数据唯一标识值;如果是源数据库的删除记录,则使用删除字段值计算出来的数据唯一标识值删除对应的差异过程记录。如果是目标数据库的插入/更新/删除记录,则首先从差异过程记录中定位是否存在一致的数据唯一标识,如果存在则直接删除对应记录,如果不存在则存储,其中目标数据库的更新记录使用修改后的字段值计算数据唯一标识。通过以上步骤,差异过程数据表中存储的数据即为当前两端数据库存在的数据差异内容,用户能够通过差异数据表直观地、实时地获知源数据库与目标数据库之间的数据差异。
应当理解的是,针对目标数据库是专门用来对源数据库进行备份的情况,目标数据库中数据的更改是随着源数据库的更改而更改,因此,未在差异过程数据表中找到差异记录时,对于目标数据库的删除记录,也无需进行存储。差异过程数据表可以实时反映源数据库与目标数据库之间的数据差异,如果差异数据表中存在记录,则说明当前这一刻两端数据库存在差异。如果数据来源是SRC,表示目标数据库缺少对应的数据;如果差异数据来源是TGT,表示目标数据库多数据。
以下将通过不同的同步方法举例说明差异数据分析及差异过程记录表的记录过程。
第一种同步方法:基于事务日志的同步工具进行数据复制。
源数据库和目标数据库之间通过基于事务日志的同步工具进行数据复制,那么目标数据库会按照源数据库的变更过程进行数据提交,例如输出的某个数据表的结果,将会如下所示。
源数据库:
目标数据库:
变更类型 | 数据 |
I(插入) | 1,1,1 |
U(更新) | 1,1,1→1,2,2 |
U(更新) | 1,2,2→1,3,3 |
D(删除) | 1,3,3 |
经过差异数据分析,因为源数据库和目标数据库的变更记录能够一一对应,所以将不会接收到差异过程数据,差异过程记录表中没有记录,因此也表示两端数据是一致的。
第二种同步方式:通过批量同步工具进行增量数据同步。
源数据库和目标数据库之间通过批量同步工具进行增量数据同步,这种同步方式的特点是基于源数据库的现有结果向目标数据库进行同步,且做不到实时,通常是进行周期性同步,如5分钟或者隔天等情况。例如输出的某个数据表的结果,将会如下所示。
源数据库:
变更类型 | 数据 |
I(插入) | 1,1,1 |
U(更新) | 1,1,1→1,2,2 |
U(更新) | 1,2,2→1,3,3 |
D(删除) | 1,3,3 |
目标数据库:
变更类型 | 数据 |
经过差异数据分析,在处理源数据库的记录过程中,会不断的输出差异数据,第一条是插入会在“差异过程数据表”中生成一条,如下所示。
再处理第二条~第三条变更记录后,因为是更新操作,因此会对差异过程数据表中之前插入数据1,1,1的记录进行更新,更新后的结果如下所示。
操作类型 | 所有者 | 表名称 | 数据唯一标识 | 数据内容 | 来源 | 时间戳 |
U | O1 | T1 | 3 | 1,3,3 | SRC | 2018/4/9 |
处理最后一条,操作是删除,则也会按照数据唯一标识(利用数据1,3,3计算得到的唯一标识)进行删除,则经过处理后,差异数据过程表中将没有记录如下所示。
操作类型 | 所有者 | 表名称 | 数据唯一标识 | 数据内容 | 来源 | 时间戳 |
经过以上处理和分析后,两端数据库也是一致的。
请参见图4,基于同一发明构思,本公开实施例提供一种数据一致性检测装置400,该装置400可以包括:
源端日志解析模块401,用于在确定源数据库与目标数据库初始数据一致后,监测源数据库的事务日志,以获取源数据库变更数据;
目标端日志解析模块402,用于在确定源数据库与目标数据库初始数据一致后,监测目标数据库的事务日志,以获取目标数据库变更数据;
数据差异分析模块403,用于通过比对所述源数据库变更数据及所述目标数据库变更数据,实时确定所述源数据库与所述目标数据库数据是否一致。
可选的,所述源端日志解析模块401用于:
解析所述源数据库的事务日志,从中提取包括事务信息、所有者、数据表、变更操作、及具体数据的源数据库变更数据,并将所述源数据库变更数据交付至第一队列;
所述目标端日志解析模块402用于:
解析所述目标数据库的事务日志,从中提取包括事务信息、所有者、数据表、变更操作、及具体数据的目标数据库变更数据,并将所述目标数据库变更数据交付至第二队列。
可选的,如图5所示,所述装置400还包括:
增量数据收集模块404,用于:
在所述第一队列中,按照事务信息对所述源数据库变更数据进行分堆,以及在每一堆数据中,按照所有者以及数据表进行二次分堆;
以事务为整体,将完成分堆的源数据库变更数据交付至源端变更事务队列;
在所述第二队列中,按照事务信息对所述目标数据库变更数据进行分堆,以及在每一堆数据中,按照所有者以及数据表进行二次分堆;
以事务为整体,将完成分堆的目标数据库变更数据交付至目标端变更事务队列;
所述数据差异分析模块403用于:
将所述源端变更事务队列中的记录与所述目标端变更事务队列中的记录进行比对,以确定所述源数据库与所述目标数据库数据是否一致,其中,所述源端变更事务队列与所述目标端变更事务队列中的每一条记录对应一个事务。
可选的,如图6所示,所述装置400还包括:
差异数据存储模块405,用于构建包括操作类型字段、所有者字段、表名称字段、数据唯一标识字段、数据内容字段、差异来源字段、及时间戳字段的差异过程数据表;及,将所述源端变更事务队列与所述目标端变更事务队列之间的差异数据存入所述差异过程数据表。
可选的,所述差异数据存储模块405用于:
在所述差异数据为所述源数据库的变更记录时:
针对插入记录,将所述插入记录直接存入所述差异过程数据表;
针对更新记录,根据所述更新记录,更新所述差异过程数据表中按照更新前的字段值计算出的数据唯一标识所对应的差异记录;
针对删除记录,删除所述差异过程数据表中,删除的字段值计算出的数据唯一标识对应的差异记录;
在所述差异数据为所述目标数据库的变更记录时:
若所述差异过程数据表中存在变更的字段值计算出的数据唯一标识所对应的差异记录,则删除该差异记录;若所述差异过程数据表中不存在变更的字段值计算出的数据唯一标识所对应的差异记录,则将该变更记录存入所述差异过程数据表;其中,对于所述目标数据库的更新记录,通过更新后的字段值计算出的数据唯一标识查找是否存在对应的差异记录。
关于上述实施例中的装置,其中各个模块执行操作的具体方式已经在有关该方法的实施例中进行了详细描述,此处将不做详细阐述说明。应当理解的是,本公开以上述各个模块集成在一台计算机中进行说明,在实际应用中,各模块可以有不同的分布方式,比如每一个模块分布在一台计算机中,本公开实施例对此不作限定。
图7是根据一示例性实施例示出的一种电子设备700的框图。如图7所示,该电子设备700可以包括:处理器701,存储器702。该电子设备700还可以包括多媒体组件703,输入/输出(I/O)接口704,以及通信组件705中的一者或多者。
其中,处理器701用于控制该电子设备700的整体操作,以完成上述的数据一致性检测方法中的全部或部分步骤。存储器702用于存储各种类型的数据以支持在该电子设备700的操作,这些数据例如可以包括用于在该电子设备700上操作的任何应用程序或方法的指令,以及应用程序相关的数据,例如联系人数据、收发的消息、图片、音频、视频等等。该存储器702可以由任何类型的易失性或非易失性存储设备或者它们的组合实现,例如静态随机存取存储器(Static Random Access Memory,简称SRAM),电可擦除可编程只读存储器(Electrically Erasable Programmable Read-Only Memory,简称EEPROM),可擦除可编程只读存储器(Erasable Programmable Read-Only Memory,简称EPROM),可编程只读存储器(Programmable Read-Only Memory,简称PROM),只读存储器(Read-Only Memory,简称ROM),磁存储器,快闪存储器,磁盘或光盘。多媒体组件703可以包括屏幕和音频组件。其中屏幕例如可以是触摸屏,音频组件用于输出和/或输入音频信号。例如,音频组件可以包括一个麦克风,麦克风用于接收外部音频信号。所接收的音频信号可以被进一步存储在存储器702或通过通信组件705发送。音频组件还包括至少一个扬声器,用于输出音频信号。I/O接口704为处理器701和其他接口模块之间提供接口,上述其他接口模块可以是键盘,鼠标,按钮等。这些按钮可以是虚拟按钮或者实体按钮。通信组件705用于该电子设备700与其他设备之间进行有线或无线通信。无线通信,例如Wi-Fi,蓝牙,近场通信(Near FieldCommunication,简称NFC),2G、3G或4G,或它们中的一种或几种的组合,因此相应的该通信组件705可以包括:Wi-Fi模块,蓝牙模块,NFC模块。
在一示例性实施例中,电子设备700可以被一个或多个应用专用集成电路(Application Specific Integrated Circuit,简称ASIC)、数字信号处理器(DigitalSignal Processor,简称DSP)、数字信号处理设备(Digital Signal Processing Device,简称DSPD)、可编程逻辑器件(Programmable Logic Device,简称PLD)、现场可编程门阵列(Field Programmable Gate Array,简称FPGA)、控制器、微控制器、微处理器或其他电子元件实现,用于执行上述的数据一致性检测方法。
在另一示例性实施例中,还提供了一种包括程序指令的计算机可读存储介质,该程序指令被处理器执行时实现上述的数据一致性检测方法的步骤。例如,该计算机可读存储介质可以为上述包括程序指令的存储器702,上述程序指令可由电子设备700的处理器701执行以完成上述的数据一致性检测方法。
以上结合附图详细描述了本公开的优选实施方式,但是,本公开并不限于上述实施方式中的具体细节,在本公开的技术构思范围内,可以对本公开的技术方案进行多种简单变型,这些简单变型均属于本公开的保护范围。另外需要说明的是,在上述具体实施方式中所描述的各个具体技术特征,在不矛盾的情况下,可以通过任何合适的方式进行组合,为了避免不必要的重复,本公开对各种可能的组合方式不再另行说明。
此外,本公开的各种不同的实施方式之间也可以进行任意组合,只要其不违背本公开的思想,其同样应当视为本公开所公开的内容。
Claims (6)
1.一种数据一致性检测方法,其特征在于,所述方法包括:
在确定源数据库与目标数据库初始数据一致后,解析所述源数据库的事务日志,从中提取包括事务信息、所有者、数据表、变更操作、及具体数据的源数据库变更数据,并将所述源数据库变更数据交付至第一队列;
解析所述目标数据库的事务日志,从中提取包括事务信息、所有者、数据表、变更操作、及具体数据的目标数据库变更数据,并将所述目标数据库变更数据交付至第二队列;
通过比对所述源数据库变更数据及所述目标数据库变更数据,实时确定所述源数据库与所述目标数据库数据是否一致;
所述方法还包括:
在所述第一队列中,按照事务信息对所述源数据库变更数据进行分堆,以及在每一堆数据中,按照所有者以及数据表进行二次分堆;
以事务为整体,将完成分堆的源数据库变更数据交付至源端变更事务队列;
在所述第二队列中,按照事务信息对所述目标数据库变更数据进行分堆,以及在每一堆数据中,按照所有者以及数据表进行二次分堆;
以事务为整体,将完成分堆的目标数据库变更数据交付至目标端变更事务队列;
通过比对所述源数据库变更数据及所述目标数据库变更数据,实时确定所述源数据库与所述目标数据库数据是否一致,包括:
将所述源端变更事务队列中的记录与所述目标端变更事务队列中的记录进行比对,以确定所述源数据库与所述目标数据库数据是否一致,其中,所述源端变更事务队列与所述目标端变更事务队列中的每一条记录对应一个事务。
2.根据权利要求1所述的方法,其特征在于,所述方法还包括:
构建包括操作类型字段、所有者字段、表名称字段、数据唯一标识字段、数据内容字段、差异来源字段、及时间戳字段的差异过程数据表;
将所述源端变更事务队列与所述目标端变更事务队列之间的差异数据存入所述差异过程数据表。
3.根据权利要求2所述的方法,其特征在于,将所述源端变更事务队列与所述目标端变更事务队列之间的差异数据存入所述差异过程数据表,包括:
在所述差异数据为所述源数据库的变更记录时:
针对插入记录,将所述插入记录直接存入所述差异过程数据表;
针对更新记录,根据所述更新记录,更新所述差异过程数据表中按照更新前的字段值计算出的数据唯一标识所对应的差异记录;
针对删除记录,删除所述差异过程数据表中,删除的字段值计算出的数据唯一标识对应的差异记录;
在所述差异数据为所述目标数据库的变更记录时:
若所述差异过程数据表中存在变更的字段值计算出的数据唯一标识所对应的差异记录,则删除该差异记录;若所述差异过程数据表中不存在变更的字段值计算出的数据唯一标识所对应的差异记录,则将该变更记录存入所述差异过程数据表;其中,对于所述目标数据库的更新记录,通过更新后的字段值计算出的数据唯一标识查找是否存在对应的差异记录。
4.一种数据一致性检测装置,其特征在于,包括:
源端日志解析模块,用于在确定源数据库与目标数据库初始数据一致后,监测源数据库的事务日志,以获取源数据库变更数据;
目标端日志解析模块,用于在确定源数据库与目标数据库初始数据一致后,监测目标数据库的事务日志,以获取目标数据库变更数据;
数据差异分析模块,用于通过比对所述源数据库变更数据及所述目标数据库变更数据,实时确定所述源数据库与所述目标数据库数据是否一致;
其中,所述源端日志解析模块用于:
解析所述源数据库的事务日志,从中提取包括事务信息、所有者、数据表、变更操作、及具体数据的源数据库变更数据,并将所述源数据库变更数据交付至第一队列;
所述目标端日志解析模块用于:
解析所述目标数据库的事务日志,从中提取包括事务信息、所有者、数据表、变更操作、及具体数据的目标数据库变更数据,并将所述目标数据库变更数据交付至第二队列;
所述装置还包括:
增量数据收集模块,用于:
在所述第一队列中,按照事务信息对所述源数据库变更数据进行分堆,以及在每一堆数据中,按照所有者以及数据表进行二次分堆;
以事务为整体,将完成分堆的源数据库变更数据交付至源端变更事务队列;
在所述第二队列中,按照事务信息对所述目标数据库变更数据进行分堆,以及在每一堆数据中,按照所有者以及数据表进行二次分堆;
以事务为整体,将完成分堆的目标数据库变更数据交付至目标端变更事务队列;
所述数据差异分析模块用于:
将所述源端变更事务队列中的记录与所述目标端变更事务队列中的记录进行比对,以确定所述源数据库与所述目标数据库数据是否一致,其中,所述源端变更事务队列与所述目标端变更事务队列中的每一条记录对应一个事务。
5.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,该程序被处理器执行时实现权利要求1-3中任一项所述方法的步骤。
6.一种电子设备,其特征在于,包括:
存储器,其上存储有计算机程序;
处理器,用于执行所述存储器中的所述计算机程序,以实现权利要求1-3中任一项所述方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810681119.8A CN109033186B (zh) | 2018-06-27 | 2018-06-27 | 数据一致性检测方法、装置、存储介质及电子设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810681119.8A CN109033186B (zh) | 2018-06-27 | 2018-06-27 | 数据一致性检测方法、装置、存储介质及电子设备 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN109033186A CN109033186A (zh) | 2018-12-18 |
CN109033186B true CN109033186B (zh) | 2020-11-27 |
Family
ID=65520566
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201810681119.8A Active CN109033186B (zh) | 2018-06-27 | 2018-06-27 | 数据一致性检测方法、装置、存储介质及电子设备 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN109033186B (zh) |
Families Citing this family (17)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109669989A (zh) * | 2018-12-29 | 2019-04-23 | 江苏满运软件科技有限公司 | 数据校验方法、系统、设备以及介质 |
CN110347746B (zh) * | 2019-06-13 | 2020-06-26 | 武汉达梦数据库有限公司 | 一种异构数据库同步数据一致性校验方法及装置 |
CN110515958A (zh) * | 2019-07-23 | 2019-11-29 | 平安科技(深圳)有限公司 | 基于大数据的数据一致性方法、装置、设备和存储介质 |
CN110442564B (zh) * | 2019-07-23 | 2022-02-08 | 福建天泉教育科技有限公司 | 增量数据校验方法、存储介质 |
CN110502563B (zh) * | 2019-08-26 | 2023-09-29 | 腾讯科技(深圳)有限公司 | 一种多数据源的数据的处理方法及装置、存储介质 |
CN110674213A (zh) * | 2019-08-30 | 2020-01-10 | 中国人民财产保险股份有限公司 | 一种数据同步方法及装置 |
CN110928891B (zh) * | 2019-11-08 | 2023-01-03 | 中国工商银行股份有限公司 | 数据一致性检测方法、装置、计算设备以及介质 |
CN111177165B (zh) * | 2019-12-23 | 2020-12-18 | 拉扎斯网络科技(上海)有限公司 | 数据一致性检测的方法、装置及设备 |
CN113312330A (zh) * | 2020-02-27 | 2021-08-27 | 华为技术有限公司 | 一种数据处理方法、装置、设备及介质 |
CN113407551A (zh) * | 2020-03-17 | 2021-09-17 | 北京同邦卓益科技有限公司 | 数据一致性确定方法、装置、设备及存储介质 |
CN111639132B (zh) * | 2020-05-29 | 2023-06-06 | 中国联合网络通信集团有限公司 | 日志同步方法及设备 |
CN111797104A (zh) * | 2020-06-12 | 2020-10-20 | 中国建设银行股份有限公司 | 数据变更情况的获取方法、装置及电子设备 |
CN113886404A (zh) * | 2020-07-03 | 2022-01-04 | 北京达佳互联信息技术有限公司 | 更新数据的方法、装置、电子设备和存储介质 |
CN112162989B (zh) * | 2020-09-24 | 2023-09-15 | 北京人大金仓信息技术股份有限公司 | 数据库数据一致性检测方法、装置、介质和电子设备 |
CN112363995A (zh) * | 2020-10-30 | 2021-02-12 | 北京新数科技有限公司 | 基于日志解析的增量数据比对方法、装置和电子设备 |
CN113220666B (zh) * | 2021-05-24 | 2024-03-08 | 中国工商银行股份有限公司 | 数据库迁移后批量处理日志回放方法、装置及系统 |
CN113779141A (zh) * | 2021-08-10 | 2021-12-10 | 携程商旅信息服务(上海)有限公司 | 商旅酒店信息同步存储方法、电子设备和介质 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101697169A (zh) * | 2009-10-23 | 2010-04-21 | 中兴通讯股份有限公司 | 源数据库和目的数据库之间数据同步的方法、装置及系统 |
CN104268291A (zh) * | 2014-10-23 | 2015-01-07 | 税友软件集团股份有限公司 | 一种数据一致性处理方法和系统 |
CN104573122A (zh) * | 2015-02-09 | 2015-04-29 | 浪潮电子信息产业股份有限公司 | 一种从AIX平台向K-UX平台迁移的Oracle数据库迁移工具 |
CN104899333A (zh) * | 2015-06-24 | 2015-09-09 | 浪潮(北京)电子信息产业有限公司 | 一种Oracle数据库跨平台迁移方法和系统 |
CN107391628A (zh) * | 2017-06-30 | 2017-11-24 | 北京奇虎科技有限公司 | 数据同步方法及装置 |
-
2018
- 2018-06-27 CN CN201810681119.8A patent/CN109033186B/zh active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101697169A (zh) * | 2009-10-23 | 2010-04-21 | 中兴通讯股份有限公司 | 源数据库和目的数据库之间数据同步的方法、装置及系统 |
CN104268291A (zh) * | 2014-10-23 | 2015-01-07 | 税友软件集团股份有限公司 | 一种数据一致性处理方法和系统 |
CN104573122A (zh) * | 2015-02-09 | 2015-04-29 | 浪潮电子信息产业股份有限公司 | 一种从AIX平台向K-UX平台迁移的Oracle数据库迁移工具 |
CN104899333A (zh) * | 2015-06-24 | 2015-09-09 | 浪潮(北京)电子信息产业有限公司 | 一种Oracle数据库跨平台迁移方法和系统 |
CN107391628A (zh) * | 2017-06-30 | 2017-11-24 | 北京奇虎科技有限公司 | 数据同步方法及装置 |
Also Published As
Publication number | Publication date |
---|---|
CN109033186A (zh) | 2018-12-18 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109033186B (zh) | 数据一致性检测方法、装置、存储介质及电子设备 | |
EP2988220B1 (en) | Computer system, computer-system management method, and program | |
JP6711884B2 (ja) | ソースデータベースの負荷を最小化したデータ整合性検証方法およびシステム | |
CN111949710B (zh) | 数据存储方法、装置、服务器及存储介质 | |
CN108205560B (zh) | 一种数据同步方法以及装置 | |
JP5531583B2 (ja) | ログ出力装置、ログ出力方法、ログ出力用プログラム | |
US20120323871A1 (en) | Method for Indexed-Field Based Difference Detection and Correction | |
US11249975B2 (en) | Data archiving method and system using hybrid storage of data | |
US20170199903A1 (en) | System for backing out data | |
CN111078672A (zh) | 数据库的数据对比方法及装置 | |
EP3131041A1 (en) | Testing of enterprise resource planning systems | |
CN109918439B (zh) | 数据同步方法及其应用的环路检测方法和相关装置 | |
US8381234B2 (en) | System and method for managing applications having logical pointer and flag | |
CN109165259B (zh) | 基于网络附属存储的索引表更新方法、处理器及存储装置 | |
CN107168822B (zh) | Oracle streams的异常修复系统及方法 | |
CN115878592A (zh) | 一种政务数据治理方法、装置、存储介质及电子设备 | |
CN114896641A (zh) | 数据校验方法、装置、电子设备及计算机可读存储介质 | |
US20200112621A1 (en) | Method and system for tracking chain of custody on unstructured data | |
US11232121B2 (en) | Method, apparatus, and computer-readable medium for data transformation pipeline optimization | |
US8650209B1 (en) | System, method, and computer program for determining most of the non duplicate records in high performance environments in an economical and fault-tolerant manner | |
CN111625853B (zh) | 一种快照处理方法、装置、设备及可读存储介质 | |
JP2005250819A (ja) | レプリケーションdb整合性確認方法 | |
CN117131071B (zh) | 一种数据处理方法、装置、电子设备及计算机可读介质 | |
CN114036002A (zh) | 区块链数据备份方法、装置、存储介质及电子设备 | |
CN116756164A (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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant |