CN110196880B - 异构数据库数据同步方法和装置、存储介质及电子装置 - Google Patents
异构数据库数据同步方法和装置、存储介质及电子装置 Download PDFInfo
- Publication number
- CN110196880B CN110196880B CN201810590146.4A CN201810590146A CN110196880B CN 110196880 B CN110196880 B CN 110196880B CN 201810590146 A CN201810590146 A CN 201810590146A CN 110196880 B CN110196880 B CN 110196880B
- Authority
- CN
- China
- Prior art keywords
- data
- database
- processing operation
- attribute
- hash values
- 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
- 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
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Abstract
本发明公开了一种异构数据库数据同步方法和装置、存储介质及电子装置。该方法包括:对第一部分数据和第二部分数据分别执行第一处理操作,得到第三部分数据和第四部分数据,第一数据库中的源数据被划分为第一部分数据和第二部分数据,第三部分数据以及第四部分数据被合并为第一数据;对第一部分数据和第二部分数据执行第二处理操作,得到第五部分数据和第六部分数据,第五部分数据以及第六部分数据被合并为第二数据;在第一数据与第二数据一致时,将第一数据作为第一目标数据存储在第二数据库中,第一数据库与第二数据库的类型不同。本发明解决了相关技术在实现异构数据库之间的数据同步时无法保证源数据库与目标数据库的数据一致性的技术问题。
Description
技术领域
本发明涉及数据处理领域,具体而言,涉及一种异构数据库数据同步方法和装置、存储介质及电子装置。
背景技术
目前,异构数据库同步主要采用以下方式:实时捕捉源数据库中数据的变化信息及该数据变化对应的事务,并将捕捉到的变化信息及事务保存到中间数据库中;根据中间数据库中保存的变化信息确定需要同步的目标数据库;将所述变化信息转换为对应所述目标数据库的目标数据;将对应同一事务的所有目标数据同时更新到所述目标数据库中。通过上述方式可以实现不同类型的数据库之间的数据同步,降低同步过程对系统资源的消耗,保证同步过程的可靠性。但是,采用中间数据库方式实现异构数据库之间的数据同步会存在以下缺点:当硬件或网络出现故障时,不能保证源数据库与目标数据库的数据一致性。
针对上述的问题,目前尚未提出有效的解决方案。
发明内容
本发明实施例提供了一种异构数据库数据同步方法和装置、存储介质及电子装置,以至少解决相关技术在实现异构数据库之间的数据同步时无法保证源数据库与目标数据库的数据一致性的技术问题。
根据本发明实施例的一个方面,提供了一种异构数据库数据同步方法,包括:对第一部分数据执行第一处理操作,得到第三部分数据,并对第二部分数据执行所述第一处理操作,得到第四部分数据,其中,第一数据库中的源数据被划分为所述第一部分数据和所述第二部分数据,所述第三部分数据以及所述第四部分数据被合并为第一数据;对所述第一部分数据执行第二处理操作,得到第五部分数据,并对所述第二部分数据执行所述第二处理操作,得到第六部分数据,其中,所述第五部分数据以及所述第六部分数据被合并为第二数据;在所述第一数据与所述第二数据一致的情况下,将所述第一数据作为第一目标数据存储在第二数据库中,其中,所述第一数据库与所述第二数据库的类型不同。
根据本发明实施例的另一方面,还提供了一种异构数据库数据同步装置,包括:第一处理单元,用于对第一部分数据执行第一处理操作,得到第三部分数据,并对第二部分数据执行所述第一处理操作,得到第四部分数据,其中,第一数据库中的源数据被划分为所述第一部分数据和所述第二部分数据,所述第三部分数据以及所述第四部分数据被合并为第一数据;第二处理单元,用于对所述第一部分数据执行第二处理操作,得到第五部分数据,并对所述第二部分数据执行所述第二处理操作,得到第六部分数据,其中,所述第五部分数据以及所述第六部分数据被合并为第二数据;第一存储单元,用于在所述第一数据与所述第二数据一致的情况下,将所述第一数据作为第一目标数据存储在第二数据库中,其中,所述第一数据库与所述第二数据库的类型不同。
根据本发明实施例的另一方面,还提供了一种存储介质,所述存储介质中存储有计算机程序,其中,所述计算机程序被设置为运行时执行本发明实施例中任意一种异构数据库数据同步方法。
根据本发明实施例的另一方面,还提供了一种电子装置,包括存储器和处理器,其中,所述存储器中存储有计算机程序,所述处理器被设置为通过所述计算机程序执行本发明实施例中任意一种异构数据库数据同步方法。
在本发明实施例中,通过对第一部分数据执行第一处理操作,得到第三部分数据,并对第二部分数据执行第一处理操作,得到第四部分数据,其中,第一数据库中的源数据被划分为第一部分数据和第二部分数据,第三部分数据以及第四部分数据被合并为第一数据;对第一部分数据执行第二处理操作,得到第五部分数据,并对第二部分数据执行第二处理操作,得到第六部分数据,其中,第五部分数据以及第六部分数据被合并为第二数据;在第一数据与第二数据一致的情况下,将第一数据作为第一目标数据存储在第二数据库中,其中,第一数据库与第二数据库的类型不同,达到了在进行异构数据库数据同步时保证源数据库与目标数据库的数据一致性的目的,从而实现了提高异构数据库数据同步的准确度的技术效果,进而解决了相关技术在实现异构数据库之间的数据同步时无法保证源数据库与目标数据库的数据一致性的技术问题。
附图说明
此处所说明的附图用来提供对本发明的进一步理解,构成本申请的一部分,本发明的示意性实施例及其说明用于解释本发明,并不构成对本发明的不当限定。在附图中:
图1是根据本发明实施例的异构数据库数据同步方法的硬件环境的示意图;
图2是根据本发明实施例的一种可选的异构数据库数据同步方法的流程图;
图3是根据本发明实施例的另一种可选的异构数据库数据同步方法的流程图;
图4是根据本发明实施例的异构数据库数据同步方法执行流程的示意图;
图5是根据本发明实施例的一种可选的异构数据库数据同步装置的示意图;以及
图6是根据本发明实施例的一种电子装置的结构框图。
具体实施方式
为了使本技术领域的人员更好地理解本发明方案,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分的实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都应当属于本发明保护的范围。
需要说明的是,本发明的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的本发明的实施例能够以除了在这里图示或描述的那些以外的顺序实施。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、系统、产品或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。
首先,在对本发明实施例进行描述的过程中出现的部分名词或者术语适用于如下解释:
异构数据库:兼指操作系统的异构、数据库管理系统(DBMS)的异构。例如Windows数据库和Linux数据库的异构;又如Oracle、SQLServer 等几种不同的数据库但同为关系型数据库的异构;DBMS的不同主要表现在表达结构和限制以及语义这两个方面。表达结构和限制方面:不同的数据模型提供不同的结构原语,例如相同的信息在关系模型中用关系表达,而在网络模型中用记录类型表达;不同的数据模型可能支持不同的限制,不同的数据模型通常对应不同的数据库语言,即使数据模型相同也可以有不同的语言。数据语义方面:包括数据逻辑表示和数据库互操作两方面,其中数据逻辑表示涉及到所使用的数据模式以及数据类型等。
数据库同步:是分布式环境下提高数据库性能、可靠性和可用性的关键技术。随着计算机技术,特别是分布式数据库技术的发展,各行各业都逐步实现了数据、信息的计算机化管理,但是这些信息和数据相对独立,甚至是相互隔离的,集成现有系统中的信息仍然是一项艰巨的任务。而且,随着应用系统复杂性提高,数据库异构程度不断加深,各种数据源之间由于存储方式、访问方式的差异,迫切需要特别的设施来考虑它们的共享问题。异构数据同步系统的研究是解决这类信息集成问题的一种重要方法。通过保持数据库之间同步,可以提高系统数据的可靠性,同时也为系统的升级、维护而不间断服务提供了方便。
根据本发明实施例的一个方面,提供了一种异构数据库数据同步方法。
可选地,在本实施例中,上述异构数据库数据同步方法可以应用于如图1所示的由服务器102和终端104所构成的硬件环境中。如图1所示,服务器102通过网络与终端104进行连接,上述网络包括但不限于:广域网、城域网或局域网,终端104并不限定于PC、手机、平板电脑等。本发明实施例的异构数据库数据同步方法可以由服务器102来执行。
可选地,服务器102执行本发明实施例的异构数据库数据同步方法的过程可以描述为:服务器102对第一部分数据执行第一处理操作,得到第三部分数据,并对第二部分数据执行第一处理操作,得到第四部分数据,其中,第一数据库中的源数据被划分为第一部分数据和第二部分数据,第三部分数据以及第四部分数据被合并为第一数据;服务器102对第一部分数据执行第二处理操作,得到第五部分数据,并对第二部分数据执行第二处理操作,得到第六部分数据,其中,第五部分数据以及第六部分数据被合并为第二数据;服务器102在第一数据与第二数据一致的情况下,将第一数据发送给第二数据库,以指示第二数据库将第一数据作为第一目标数据存储在第二数据库中,其中,第一数据库与第二数据库的类型不同。
下面将对本发明实施例的异构数据库数据同步方法进行详细说明。
图2是根据本发明实施例的一种可选的异构数据库数据同步方法的流程图,如图2所示,该方法可以包括以下步骤:
步骤S202,对第一部分数据执行第一处理操作,得到第三部分数据,并对第二部分数据执行第一处理操作,得到第四部分数据,其中,第一数据库中的源数据被划分为第一部分数据和第二部分数据,第三部分数据以及第四部分数据被合并为第一数据;
步骤S204,对第一部分数据执行第二处理操作,得到第五部分数据,并对第二部分数据执行第二处理操作,得到第六部分数据,其中,第五部分数据以及第六部分数据被合并为第二数据;
步骤S206,在第一数据与第二数据一致的情况下,将第一数据作为第一目标数据存储在第二数据库中,其中,第一数据库与第二数据库的类型不同。
通过上述步骤S202至步骤S206,通过对第一部分数据执行第一处理操作,得到第三部分数据,对第二部分数据执行第一处理操作,得到第四部分数据,其中,第一数据库中的源数据被划分为第一部分数据和第二部分数据,第三部分数据以及第四部分数据被合并为第一数据;对第一部分数据执行第二处理操作,得到第五部分数据,并对第二部分数据执行第二处理操作,得到第六部分数据,其中,第五部分数据以及第六部分数据被合并为第二数据;在第一数据与第二数据一致的情况下,将第一数据作为第一目标数据存储在第二数据库中,其中,第一数据库与第二数据库的类型不同,达到了在进行异构数据库数据同步时保证源数据库与目标数据库的数据一致性的目的,从而实现了提高异构数据库数据同步的准确度的技术效果,进而解决了相关技术在实现异构数据库之间的数据同步时无法保证源数据库与目标数据库的数据一致性的技术问题。
此处首先需要说明的是,本发明实施例中的第一数据库和第二数据库的类型不同,可选地,第一数据库可以为Hadoop集群,第二数据库可以为Sqlserver数据库。通过上述步骤,可以实现将Hadoop集群中的数据同步至Sqlserver数据库。
在步骤S202提供的技术方案中,第一数据库可以为Hadoop集群,第一数据库中的源数据可以包括多条数据,多条数据可以按照生成时间为标识存储在第一数据库中。第一数据库中的源数据被可以被划分为第一部分数据和第二部分数据,可选地,本发明实施例可以根据源数据的生成时间将源数据划分为第一部分数据和第二部分数据,其中,第一部分数据的生成时间晚于第二部分数据的生成时间。例如,可以将第一数据库中的仅两个季度的数据作为第一部分数据,将两个季度之前的数据作为第二部分数据。
在对第一数据库中的源数据进行划分之前,需要从第一数据库中获取源数据,可选地,本发明实施例可以从第一数据库中分别获取数据文本文件以及数据字典文件,其中,源数据可以包括数据文本文件以及数据字典文件,数据字典文件可以用于指示数据文本文件中数据的属性。本发明实施例通过将数据文本文件与数据字典文件分离传输,能够提高网络有效吞吐,又便于扩展数据同步类型。
可选地,在从第一数据库中分别获取数据文本文件以及数据字典文件之后,在获取到数据文本文件之后,若接收到第一数据库发送的第一指示信息,则可以确定成功获取到数据文本文件,其中,第一指示信息可以用于指示成功获取到数据文本文件;在获取到数据字典文件之后,若接收到第一数据库发送的第二指示信息,则可以确定成功获取到数据字典文件,其中,第二指示信息可以用于指示成功获取到数据字典文件;其中,只有在接收到第一指示信息与第二指示信息之后,才确定成功获取到源数据。
可选地,在获取到数据文本文件以及数据字典文件之后,若接收到第一数据库发送的第三指示信息,则可以直接确定成功获取到源数据,其中,第三指示信息可以用于指示成功获取到数据文本文件以及数据字典文件。
本发明实施例可以采用上述可选实施例中的任意一种方式确定是否从第一数据库中成功获取到源数据,此处不做具体限定。本发明实施例通过判断源数据是否获取成功,能够有效保证对源数据进行数据数据划分以及对源数据进行处理的准确度。
在从第一数据库中获取到源数据,并将源数据划分为第一部分数据和第二部分数据之后,本发明实施例可以对第一部分数据执行第一处理操作,得到第三部分数据,并对第二部分数据也执行第一处理操作,得到第四部分数据。需要说明的是,本发明实施例对第一部分数据和第二部分数据所执行的第一处理操作不做具体限定,例如第一处理操作可以包括但并不限于数据映射、校验以及转换等。
可选地,对第一部分数据执行第一处理操作,得到第三部分数据可以包括:将第一部分数据切分成多个数据块;由多个线程分别对多个数据块进行处理,其中,一个线程可以处理一个数据块;将多个线程的处理结果合并成第三部分数据。
可选地,对第二部分数据执行第一处理操作,得到第四部分数据可以包括:将第二部分数据切分成多个数据块;由多个线程分别对多个数据块进行处理,其中,一个线程可以处理一个数据块;将多个线程的处理结果合并成第四部分数据。
本发明实施例利用多线程并行处理第一部分数据和第二部分数据,能够达到充分利用服务器资源,又不产生阻塞的目的,同时,也能够达到提高数据处理效率的效果。
可选地,在对第一部分数据执行第一处理操作,得到第三部分数据,对第二部分数据执行第一处理操作,得到第四部分数据之后,本发明实施例可以将第三部分数据与第四部分数据进行合并,将两者合并为第一数据,并将第一数据存储在第一数据表中。需要说明的是,本发明实施例对第三部分数据与第四部分数据进行合并所采用的技术手段不做具体限定,例如可以将第四部分数据与第三部分数据直接进行行拼接。
本发明实施例基于实际需要同步的数据量较大,且历史数据基本不变的特点,将第一数据库中的源数据按照源数据的生成时间划分为第一部分数据和第二部分数据,并对第一部分数据与第二部分数据单独执行第一处理操作,这样可以实现有效控制数据同步负载的效果。
在步骤S204提供的技术方案中,在从第一数据库中获取到源数据,并将源数据划分为第一部分数据和第二部分数据之后,本发明实施例还可以对第一部分数据执行第二处理操作,得到第五部分数据,并对第二部分数据也执行第二处理操作,得到第六部分数据。需要说明的是,本发明实施例中对第一部分数据和第二部分数据所执行的第二处理操作与第一处理操作,但是本发明实施例对第二处理操作的类型不做具体限定,例如第二处理操作也可以包括但并不限于数据映射、校验以及转换等。
可选地,对第一部分数据执行第二处理操作,得到第五部分数据可以包括:将第一部分数据切分成多个数据块;由多个线程分别对多个数据块进行处理,其中,一个线程可以处理一个数据块;将多个线程的处理结果合并成第五部分数据。
可选地,对第二部分数据执行第二处理操作,得到第六部分数据可以包括:将第二部分数据切分成多个数据块;由多个线程分别对多个数据块进行处理,其中,一个线程可以处理一个数据块;将多个线程的处理结果合并成第六部分数据。
本发明实施例利用多线程并行处理第一部分数据和第二部分数据,能够达到充分利用服务器资源,又不产生阻塞的目的,同时,也能够达到提高数据处理效率的效果。
可选地,在对第一部分数据执行第二处理操作,得到第五部分数据,对第二部分数据执行第二处理操作,得到第六部分数据之后,本发明实施例可以将第五部分数据与第六部分数据进行合并,将两者合并为第二数据,并将第二数据存储在第二数据表中。需要说明的是,本发明实施例对第五部分数据与第六部分数据进行合并所采用的技术手段不做具体限定,例如可以将第六部分数据与第五部分数据直接进行行拼接。
本发明实施例基于实际需要同步的数据量较大,且历史数据基本不变的特点,将第一数据库中的源数据按照源数据的生成时间划分为第一部分数据和第二部分数据,并对第一部分数据与第二部分数据单独执行第二处理操作,这样可以实现有效控制数据同步负载的效果。
在步骤S206提供的技术方案中,在获取到第一数据与第二数据之后,为了保证异构数据库数据同步时第一数据库与第二数据库之间数据一致,本发明实施例可以对第一数据与第二数据进行一致性校验,在第一数据与第二数据一致的情况下,可以将第一数据或第二数据作为第一目标数据存储在第二数据库中,其中,第一目标数据为第二数据库中与第一数据库中的源数据对应的数据,第一目标数据与源数据的格式可以不同,但是实质是同一份数据,以实现第一数据库与第二数据库之间的数据同步;在第一数据与第二数据不一致的情况下,则说明第一数据库与第二数据库之间的数据同步过程出错,需要停止数据同步,以保证异构数据库之间数据同步的准确性。
可选地,对第一数据与第二数据进行一致性校验可以包括:分别获取存储有第一数据的第一数据表和存储有第二数据的第二数据表中每一行数据的哈希值,其中,每一行数据的哈希值为对每一行所有列数据做哈希运算得到的值。在第一数据表的哈希值个数与第二数据表的哈希值个数不相同的情况下,则可以直接确定第一数据与第二数据不一致。在第一数据表的哈希值个数与第二数据表的哈希值个数相同的情况下,如果在第一数据表中所有行数据的哈希值在第二数据表中均存在,则可以确定第一数据与第二数据一致;如果在第一数据表中所有行数据的哈希值中的至少一个在第二数据表中不存在,则可以确定第一数据与第二数据不一致。
可选地,在确定第一数据与第二数据不一致之后,本发明实施例还可以定位不一致数据,具体包括:遍历第一数据表和第二数据表中的所有属性,对每一个属性执行以下步骤,其中,每一个属性在执行以下步骤时被标记为第一属性:从第一数据表和第二数据表中筛选出第一属性对应的行数据;分别获取第一数据表中第一属性对应的行数据和第二数据表中第一属性对应的行数据的哈希值;在第一数据表中第一属性对应的哈希值个数和第二数据表中第一属性对应的哈希值个数相同的情况下,将下一个属性确定为第一属性;在第一数据表中第一属性对应的哈希值个数和第二数据表中第一属性对应的哈希值个数不相同的情况下,确定第一属性对应的行数据为第一数据与第二数据之间不一致的数据。
本发明实施例通过先判断第一数据表与第二数据表中的哈希值个数是否相同可以粗粒度判断第一数据与第二数据是否一致,如果第一数据表与第二数据表中的哈希值个数不相同,则直接可以确定第一数据与第二数据不一致;如果第一数据表与第二数据表中的哈希值个数相同,则可以进一步细粒度判断第一数据表和第二数据表中的哈希值是否相同,如果第一数据表与第二数据表中的哈希值不相同,则可以确定第一数据与第二数据不一致,如果第一数据表与第二数据表中的哈希值相同,则可以确定第一数据与第二数据一致。并且,在确定出第一数据与第二数据不一致时,本发明实施例还可以定位不一致数据,以便于对不一致数据进行分析。
本发明实施例通过对第一数据库中的源数据进行两种不同的处理操作,并比较处理后得到的数据是否一致,排除了处理操作因素带来的数据问题,大大减少了随机因素,确保了最终数据的准确性。而且,通过哈希值进行数据表之间数据一致性校验,实现了海量、无序数据一致性的高效校验。
可选地,基于第一数据库中的源数据可以划分为第一部分数据和第二部分数据,且第一部分数据的生成时间晚于第二部分数据的生成时间,如图3所示,本发明实施例可以首先判断是否满足第一条件,其中,第一条件可以包括:当前时间为非工作日,和/或当前数据处理量低于第一阈值。此处非工作日可以为周一至周五,第一阈值可以根据实际需求设定或调整。在满足第一条件的情况下,本发明实施例可以执行步骤S202至步骤S206 实现第一数据库与第二数据库之间的数据同步。在不满足第一条件的情况下,本发明实施例可以执行步骤S201至步骤S205实现第一数据库与第二数据库之间的数据同步,具体地:
步骤S201,对第一部分数据执行第一处理操作,得到第三部分数据,第三部分数据与第二部分数据被合并为第三数据;
步骤S203,对第一部分数据执行第二处理操作,得到第五部分数据,第五部分数据与第二部分数据被合并为第四数据;
步骤S205,在第三数据与第四数据一致的情况下,将第三数据作为第一目标数据存储在第二数据库中,其中,第一数据库与第二数据库的类型不同。
作为一种可选的示例,在工作日时,本发明实施例可以对第一部分数据和第二部分数据分别执行第一处理操作和第二处理操作,在非工作日时,本发明实施例可以仅对第一部分数据分别执行第一处理操作和第二处理操作。作为另一种可选的示例,在当前数据处理量低于第一阈值时,本发明实施例可以对第一部分数据和第二部分数据分别执行第一处理操作和第二处理操作,在当前数据处理量高于第一阈值时,本发明实施例可以仅对第一部分数据分别执行第一处理操作和第二处理操作。
本发明实施例通过设置第一条件,能够在满足第一条件时,通过执行步骤S202至步骤S206进行第一数据库与第二数据库之间的数据同步,在不满足第一条件时,通过执行步骤S201至步骤S205进行第一数据库与第二数据库之间的数据同步,这样可以实现有效控制数据同步负载,提高数据同步效率的效果。
此处需要说明的是,本发明实施例对步骤S202和步骤S204之间的执行顺序不做具体限定,步骤S202可以在步骤S204之前执行,步骤S202 也可以在步骤S204之后执行,或者步骤S202和步骤S204可以同时执行。同理,本发明实施例对步骤S201和步骤S203之间的执行顺序不做具体限定,步骤S201可以在步骤S203之前执行,步骤S201也可以在步骤S203 之后执行,或者步骤S201和步骤S203可以同时执行。
可选地,在第一数据库与第二数据库之间进行数据同步之后,本发明实施例还可以在第二数据库与第三数据库之间进行数据同步,可选地,第三数据库可以为Mysql数据库。在第二数据库与第三数据库之间进行数据同步的过程可以包括:将第二数据库中存储的第一目标数据进行数据转换,得到第二目标数据;将第二目标数据存储在第三数据库中。需要说明的是,本发明实施例将第二数据库中的第一目标数据转换为符合第三数据库格式的第二目标数据时,可以采用的技术手段包括但并不限于:openquery、链接服务器、数据转换映射逻辑、视图技术等。此处需要说明的是,本发明实施例对Sqlserver数据库与Mysql数据库之间的数据同步所采用的技术手段不做具体限定。
可选地,本发明实施例还可以将具有映射关系的第二目标数据以及第二目标数据的版本号存储在第三数据库中。本发明实施例通过将同步到 Mysql数据库的数据按照版本号进行备份,一旦线上数据有误,可以将数据版本号切换到最近一次的有效版本号,所有下游数据也全部按照版本号来查询,从而实现数据异常情况下的秒级回退。
本发明还提供了一种优选实施例,该优选实施例提供了一种品牌 CRM异构数据库环境下海量数据同步计算的方法。本方法实现了 Hadoop+MySQL+SqlServer三种异构数据库下的数据快速安全同步。
如图4所示,根据业务场景,将Hadoop数据分为冷热两份数据,热数据(即本发明实施例中的第一部分数据)每天同步一次,而冷数据(即本发明实施例中的第二部分数据)每周同步一次;通过Hadoop集群,导出纯文本数据文件和字典文件;接收到同步信号量后,通过脚本将数据文件切分成多个文件块,启动多进程处理数据块,提高文件处理效率;通过算法1处理数据文件的校验转换,并通过字典文件加以解析,最终将数据文件落地到sqlserver的临时中间表;数据同步到sqlserver后,通过预设的视图逻辑,并关联sqlserver上的其它业务数据,将临时中间表转换成落地数据插入sqlserver数据表1中;与此同时,通过算法2也生成落地数据并插入sqlserver数据表2中,此处需要说明的是,算法2也会进行冷热数据分离,然后分别对冷热数据进行数据处理,只是与算法1所执行的数据处理过程不相同而已,图4中算法2部分省略了冷热数据分离以及冷热数据处理结果合并的过程,具体参见图4中算法1部分。这样就有了通过两套算法生成的两张数据表;由于多进程并行插入的数据是无序的,数据表1 和数据表2通过HASH方法来比较无序数据,校验一致才能确认数据准确、可以放出展示(实际上就是通过两套算法来确保数据计算的准确性);sqlserver数据通过openquery、链接服务器、数据转换映射逻辑、视图技术同步到mysql;mysql数据按版本号完整备份后展示到页面;一旦线上数据有误,通过数据备份的版本号机制,实现数据异常情况下的秒级回退。
本方法,原理是详查业务、细分过程,找出此种场景下数据同步的关键瓶颈并加以突破。本方法的具体过程描述如下:
从Hadoop集群导出按季度切分的冷热数据,热数据包含最近两个季度的排期数据,冷数据包含两个季度之前的所有数据;冷热数据均直接以纯文本文件传输数据本体、并辅以数据字典文件作解析,数据本体和数据字典文件以文本形式存储到脚本服务器上面——这种冷热分离的同步方式可以总体控制热数据的传输量和传输时间,而数据本体与数据字典文件分离的同步方式也大大减少了网络传输量、同时便于数据字段的水平扩展。
通过文件锁和网络通知的双重校验,确保上述文件传输的时序;当确认传输成功后,启动文件处理脚本,将热数据文件进行切片,切片后的每个子文件包含原文件的一部分数据,接着启动与切片数量相同的脚本进程并行地做数据处理,然后存储到中间临时表中。
(同步前的准备)针对异构数据库间数据类型不一致、或者取值范围不一致的特点,同步之前先做数据校验和转换(例如将null数据按需赋予默认值(空字符或0),将字符串转换为GUID,整型数转换为非负整型数,将字符串补全到指定长度),并做数据字段映射(例如目标字段值可能与源字段一一对应、但字段值有某种算法映射关系,也可能是多个源字段的某种算法组合)。
将冷数据中间表和热数据中间表的数据合并,生成需要的完整数据。
针对CRM对数据准确性要求非常严格、不允许出错的业务特点,以及针对海量数据并行插入场景下的数据无序化、单条数据差异很小的数据特点,提出一种校验方法,解决了怎么比较无序数据和怎样快速比较的问题:1)通过两套不同的算法分别得到目标数据表1和目标数据表2;将目标数据表1和表2的所有列数据分别做HASH,比较时只返回HASH后的值,通过脚本统计各时间段数据的HASH值的条数(HASH值作key,条数作value),从而粗查数据一致性问题;当比较时发现某时间段内的HASH 数据条数不一致时,再根据定位到的时间段逐步缩小比较的数据范围,并逐步增加其它数据属性作为数据筛选条件,继续用HASH值进行比较,多次重复此过程可精确定位到某条不一致的数据、并打印出比较结果。
sqlserver数据通过openquery、链接服务器、数据转换映射逻辑、视图技术同步到mysql。
同步到mysql的数据按版本号完整备份,一旦线上数据有误,通过版本号机制,将数据版本号切换到最近一次的有效版本号,所有下游数据也全部按照版本号来查询,从而实现数据异常情况下的秒级回退。
本方法具有以下优点:
针对数据总量较大的情况,以及CRM业务中历史数据基本不变的特点,拆分为冷、热数据并独立同步,这样热数据部分的数据量固定、不随时间增长,从而有效控制数据同步负载。
数据文本文件直传并配合字典文件解析,既提高网络有效吞吐,又便于扩展数据同步类型。
多进程并行处理文件和插入数据,可以充分利用服务器资源、又不产生阻塞。
文件标记结合信号量判断数据同步完成状态,双重保障文件传输的时序和结果。
异构数据库同步前的数据映射、校验和转换,防止了异构数据库同步时由于数据类型不同、数据格式不同而产生错误。
数据同步逻辑以视图技术为主,Job与存储过程相结合而完成,使得数据映射逻辑清晰易维护、数据同步映射格式灵活可扩展、并优先保障业务关键路径。
通过两套算法同时处理源数据并比较计算结果,排除了算法因素带来的数据问题,大大减少随机因素,确保了最终数据的准确性。
通过HASH方法做同格式数据表之间的比较,实现了海量、无序数据一致性的高效校验。
数据备份和数据版本号机制,实现数据同步异常情况下的秒级回退。
需要说明的是,对于前述的各方法实施例,为了简单描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本发明并不受所描述的动作顺序的限制,因为依据本发明,某些步骤可以采用其他顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于优选实施例,所涉及的动作和模块并不一定是本发明所必须的。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到根据上述实施例的方法可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件,但很多情况下前者是更佳的实施方式。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质(如 ROM/RAM、磁碟、光盘)中,包括若干指令用以使得一台终端设备(可以是手机,计算机,服务器,或者网络设备等)执行本发明各个实施例所述的方法。
根据本发明实施例的另一个方面,还提供了一种用于实施上述异构数据库数据同步方法的异构数据库数据同步装置。图5是根据本发明实施例的一种可选的异构数据库数据同步装置的示意图,如图5所示,该装置可以包括:
第一处理单元22,用于对第一部分数据执行第一处理操作,得到第三部分数据,并对第二部分数据执行第一处理操作,得到第四部分数据,其中,第一数据库中的源数据被划分为第一部分数据和第二部分数据,第三部分数据以及第四部分数据被合并为第一数据;第二处理单元24,用于对第一部分数据执行第二处理操作,得到第五部分数据,并对第二部分数据执行第二处理操作,得到第六部分数据,其中,第五部分数据以及第六部分数据被合并为第二数据;第一存储单元26,用于在第一数据与第二数据一致的情况下,将第一数据作为第一目标数据存储在第二数据库中,其中,第一数据库与第二数据库的类型不同。
需要说明的是,该实施例中的第一处理单元22可以用于执行本申请实施例中的步骤S202,该实施例中的第二处理单元24可以用于执行本申请实施例中的步骤S204,该实施例中的第一存储单元26可以用于执行本申请实施例中的步骤S206。
此处需要说明的是,上述模块与对应的步骤所实现的示例和应用场景相同,但不限于上述实施例所公开的内容。需要说明的是,上述模块作为装置的一部分可以运行在如图1所示的硬件环境中,可以通过软件实现,也可以通过硬件实现。
可选地,该装置还可以包括:第一获取单元,用于在对第一部分数据执行第二处理操作,得到第五部分数据,并对第二部分数据执行第二处理操作,得到第六部分数据之后,分别获取存储有第一数据的第一数据表和存储有第二数据的第二数据表中每一行数据的哈希值,其中,每一行数据的哈希值为每一行所有列数据做哈希运算得到的值;第一确定单元,用于在第一数据表的哈希值个数与第二数据表的哈希值个数不相同的情况下,确定第一数据与第二数据不一致。
可选地,该装置还可以包括:第一执行单元,用于在确定第一数据与第二数据不一致之后,遍历第一数据表和第二数据表中的所有属性,对每一个属性执行以下步骤,其中,每一个属性在执行以下步骤时被标记为第一属性:从第一数据表和第二数据表中筛选出第一属性对应的行数据;分别获取第一数据表中第一属性对应的行数据和第二数据表中第一属性对应的行数据的哈希值;在第一数据表中第一属性对应的哈希值个数和第二数据表中第一属性对应的哈希值个数相同的情况下,将下一个属性确定为第一属性;在第一数据表中第一属性对应的哈希值个数和第二数据表中第一属性对应的哈希值个数不相同的情况下,确定第一属性对应的行数据为第一数据与第二数据之间不一致的数据。
可选地,该装置还可以包括:第二确定单元,用于在第一数据表的哈希值个数与第二数据表的哈希值个数相同的情况下,在第一数据表中所有行数据的哈希值在第二数据表中均存在的情况下,确定第一数据与第二数据一致;第三确定单元,用于在第一数据表中所有行数据的哈希值中的至少一个在第二数据表中不存在的情况下,确定第一数据与第二数据不一致。
可选地,第一数据库中的源数据被划分为第一部分数据和第二部分数据可以包括:根据源数据的生成时间将源数据划分为第一部分数据和第二部分数据,其中,第一部分数据的生成时间晚于第二部分数据的生成时间。
可选地,该装置还可以包括:第二执行单元,用于在对第一部分数据执行第一处理操作,得到第三部分数据,并对第二部分数据执行第一处理操作,得到第四部分数据之前,在满足第一条件的情况下,执行对第一部分数据执行第一处理操作,得到第三部分数据,并对第二部分数据执行第一处理操作,得到第四部分数据的步骤,其中,第一条件包括:当前时间为非工作日,和/或当前数据处理量低于第一阈值;第三执行单元,用于在不满足第一条件的情况下,对第一部分数据执行第一处理操作,得到第三部分数据,第三部分数据与第二部分数据被合并为第三数据;对第一部分数据执行第二处理操作,得到第五部分数据,第五部分数据与第二部分数据被合并为第四数据;在第三数据与第四数据一致的情况下,将第三数据作为第一目标数据存储在第二数据库中,其中,第一数据库与第二数据库的类型不同。
可选地,第一处理单元22可以用于:将第一部分数据切分成多个数据块;由多个线程分别对多个数据块进行处理,其中,一个线程处理一个数据块;将多个线程的处理结果合并成第三部分数据。
可选地,该装置还可以包括:第二获取单元,用于在对第一部分数据执行第一处理操作,得到第三部分数据,并对第二部分数据执行第一处理操作,得到第四部分数据之前,从第一数据库中分别获取数据文本文件以及数据字典文件,其中,源数据包括数据文本文件以及数据字典文件,数据字典文件用于指示数据文本文件中数据的属性。
可选地,该装置还可以包括:第四确定单元,用于在从第一数据库中分别获取数据文本文件以及数据字典文件之后,在获取到数据文本文件之后,若接收到第一数据库发送的第一指示信息,则确定成功获取到数据文本文件,其中,第一指示信息用于指示成功获取到数据文本文件;第五确定单元,用于在获取到数据字典文件之后,若接收到第一数据库发送的第二指示信息,则确定成功获取到数据字典文件,其中,第二指示信息用于指示成功获取到数据字典文件;其中,只有在接收到第一指示信息与第二指示信息之后,才确定成功获取到源数据;或者第六确定单元,用于在获取到数据文本文件以及数据字典文件之后,若接收到第一数据库发送的第三指示信息,则确定成功获取到源数据,其中,第三指示信息用于指示成功获取到数据文本文件以及数据字典文件。
可选地,该装置还可以包括:转换单元,用于在将第一数据作为第一目标数据存储在第二数据库中之后,将第一目标数据进行数据转换,得到第二目标数据;第二存储单元,用于将具有映射关系的第二目标数据以及第二目标数据的版本号存储在第三数据库中。
可选地,第三数据库为Mysql数据库。
可选地,第一数据库为Hadoop集群,第二数据库为Sqlserver数据库。
此处需要说明的是,上述模块与对应的步骤所实现的示例和应用场景相同,但不限于上述实施例所公开的内容。需要说明的是,上述模块作为装置的一部分可以运行在如图1所示的硬件环境中,可以通过软件实现,也可以通过硬件实现。
通过上述单元与模块,达到了在进行异构数据库数据同步时保证源数据库与目标数据库的数据一致性的目的,从而实现了提高异构数据库数据同步的准确度的技术效果,进而解决了相关技术在实现异构数据库之间的数据同步时无法保证源数据库与目标数据库的数据一致性的技术问题。
根据本发明实施例的又一个方面,还提供了一种用于实施上述异构数据库数据同步方法的电子装置。
图6是根据本发明实施例的一种电子装置的结构框图,如图6所示,该电子装置可以包括:一个或多个(图中仅示出一个)处理器201、存储器203,其中,存储器203中可以存储有计算机程序,处理器201可以被设置为运行所述计算机程序以执行本发明实施例的异构数据库数据同步方法。
其中,存储器203可用于存储计算机程序以及模块,如本发明实施例中的异构数据库数据同步方法和装置对应的程序指令/模块,处理器201 通过运行存储在存储器203内的计算机程序以及模块,从而执行各种功能应用以及数据处理,即实现上述的异构数据库数据同步方法。存储器203 可包括高速随机存储器,还可以包括非易失性存储器,如一个或者多个磁性存储装置、闪存、或者其他非易失性固态存储器。在一些实例中,存储器203可进一步包括相对于处理器201远程设置的存储器,这些远程存储器可以通过网络连接至终端。上述网络的实例包括但不限于互联网、企业内部网、局域网、移动通信网及其组合。
可选地,如图6所示,该电子装置还可以包括:传输装置205以及输入输出设备207。其中,传输装置205用于经由一个网络接收或者发送数据。上述的网络具体实例可包括有线网络及无线网络。在一个实例中,传输装置205包括一个网络适配器(Network InterfaceController,NIC),其可通过网线与其他网络设备与路由器相连从而可与互联网或局域网进行通讯。在一个实例中,传输装置205为射频(Radio Frequency,RF)模块,其用于通过无线方式与互联网进行通讯。
本领域普通技术人员可以理解,图6所示的结构仅为示意,电子装置可以是智能手机(如Android手机、iOS手机等)、平板电脑、掌上电脑以及移动互联网设备(MobileInternet Devices,MID)、PAD等终端设备。图6其并不对上述电子装置的结构造成限定。例如,电子装置还可以包括比图6中所示更多或者更少的组件(如网络接口、显示装置等),或者具有与图6所示不同的配置。
可选地,在本实施例中,上述存储器203可以用于存储计算机程序。
可选地,在本实施例中,上述处理器可以被设置为运行计算机程序,以执行以下步骤:对第一部分数据执行第一处理操作,得到第三部分数据,并对第二部分数据执行第一处理操作,得到第四部分数据,其中,第一数据库中的源数据被划分为第一部分数据和第二部分数据,第三部分数据以及第四部分数据被合并为第一数据;对第一部分数据执行第二处理操作,得到第五部分数据,并对第二部分数据执行第二处理操作,得到第六部分数据,其中,第五部分数据以及第六部分数据被合并为第二数据;在第一数据与第二数据一致的情况下,将第一数据作为第一目标数据存储在第二数据库中,其中,第一数据库与第二数据库的类型不同。
处理器201还用于执行下述步骤:在对第一部分数据执行第二处理操作,得到第五部分数据,并对第二部分数据执行第二处理操作,得到第六部分数据之后,分别获取存储有第一数据的第一数据表和存储有第二数据的第二数据表中每一行数据的哈希值,其中,每一行数据的哈希值为对每一行所有列数据做哈希运算得到的值;在第一数据表的哈希值个数与第二数据表的哈希值个数不相同的情况下,确定第一数据与第二数据不一致。
处理器201还用于执行下述步骤:在确定第一数据与第二数据不一致之后,遍历第一数据表和第二数据表中的所有属性,对每一个属性执行以下步骤,其中,每一个属性在执行以下步骤时被标记为第一属性:从第一数据表和第二数据表中筛选出第一属性对应的行数据;分别获取第一数据表中第一属性对应的行数据和第二数据表中第一属性对应的行数据的哈希值;在第一数据表中第一属性对应的哈希值个数和第二数据表中第一属性对应的哈希值个数相同的情况下,将下一个属性确定为第一属性;在第一数据表中第一属性对应的哈希值个数和第二数据表中第一属性对应的哈希值个数不相同的情况下,确定第一属性对应的行数据为第一数据与第二数据之间不一致的数据。
处理器201还用于执行下述步骤:在第一数据表的哈希值个数与第二数据表的哈希值个数相同的情况下,在第一数据表中所有行数据的哈希值在第二数据表中均存在的情况下,确定第一数据与第二数据一致;在第一数据表中所有行数据的哈希值中的至少一个在第二数据表中不存在的情况下,确定第一数据与第二数据不一致。
处理器201还用于执行下述步骤:根据源数据的生成时间将源数据划分为第一部分数据和第二部分数据,其中,第一部分数据的生成时间晚于第二部分数据的生成时间。
处理器201还用于执行下述步骤:在对第一部分数据执行第一处理操作,得到第三部分数据,并对第二部分数据执行第一处理操作,得到第四部分数据之前,在满足第一条件的情况下,执行对第一部分数据执行第一处理操作,得到第三部分数据,并对第二部分数据执行第一处理操作,得到第四部分数据的步骤,其中,第一条件包括:当前时间为非工作日,和 /或当前数据处理量低于第一阈值;在不满足第一条件的情况下,对第一部分数据执行第一处理操作,得到第三部分数据,第三部分数据与第二部分数据被合并为第三数据;对第一部分数据执行第二处理操作,得到第五部分数据,第五部分数据与第二部分数据被合并为第四数据;在第三数据与第四数据一致的情况下,将第三数据作为第一目标数据存储在第二数据库中,其中,第一数据库与第二数据库的类型不同。
处理器201还用于执行下述步骤:将第一部分数据切分成多个数据块;由多个线程分别对多个数据块进行处理,其中,一个线程处理一个数据块;将多个线程的处理结果合并成第三部分数据。
处理器201还用于执行下述步骤:在对第一部分数据执行第一处理操作,得到第三部分数据,并对第二部分数据执行第一处理操作,得到第四部分数据之前,从第一数据库中分别获取数据文本文件以及数据字典文件,其中,源数据包括数据文本文件以及数据字典文件,数据字典文件用于指示数据文本文件中数据的属性。
处理器201还用于执行下述步骤:在从第一数据库中分别获取数据文本文件以及数据字典文件之后,在获取到数据文本文件之后,若接收到第一数据库发送的第一指示信息,则确定成功获取到数据文本文件,其中,第一指示信息用于指示成功获取到数据文本文件;在获取到数据字典文件之后,若接收到第一数据库发送的第二指示信息,则确定成功获取到数据字典文件,其中,第二指示信息用于指示成功获取到数据字典文件;其中,只有在接收到第一指示信息与第二指示信息之后,才确定成功获取到源数据;或者在获取到数据文本文件以及数据字典文件之后,若接收到第一数据库发送的第三指示信息,则确定成功获取到源数据,其中,第三指示信息用于指示成功获取到数据文本文件以及数据字典文件。
处理器201还用于执行下述步骤:在将第一数据作为第一目标数据存储在第二数据库中之后,将第一目标数据进行数据转换,得到第二目标数据;将具有映射关系的第二目标数据以及第二目标数据的版本号存储在第三数据库中。
可选地,本实施例中的具体示例可以参考上述实施例中所描述的示例,本实施例在此不再赘述。
采用本发明实施例,提供了一种异构数据库数据同步方案。通过对第一部分数据执行第一处理操作,得到第三部分数据,对第二部分数据执行第一处理操作,得到第四部分数据,其中,第一数据库中的源数据被划分为第一部分数据和第二部分数据,第三部分数据以及第四部分数据被合并为第一数据;对第一部分数据执行第二处理操作,得到第五部分数据,并对第二部分数据执行第二处理操作,得到第六部分数据,其中,第五部分数据以及第六部分数据被合并为第二数据;在第一数据与第二数据一致的情况下,将第一数据作为第一目标数据存储在第二数据库中,其中,第一数据库与第二数据库的类型不同,达到了在进行异构数据库数据同步时保证源数据库与目标数据库的数据一致性的目的,从而实现了提高异构数据库数据同步的准确度的技术效果,进而解决了相关技术在实现异构数据库之间的数据同步时无法保证源数据库与目标数据库的数据一致性的技术问题。
根据本发明实施例的又一个方面,还提供了一种存储介质。该存储介质中存储有计算机程序,其中,该计算机程序被设置为运行时执行上述实施例中异构数据库数据同步方法的步骤。
可选地,在本实施例中,存储介质可以位于上述实施例所示的网络中的多个网络设备中的至少一个网络设备上。
可选地,在本实施例中,存储介质被设置为存储用于执行以下步骤的计算机程序:
S1,对第一部分数据执行第一处理操作,得到第三部分数据,并对第二部分数据执行第一处理操作,得到第四部分数据,其中,第一数据库中的源数据被划分为第一部分数据和第二部分数据,第三部分数据以及第四部分数据被合并为第一数据;
S2,对第一部分数据执行第二处理操作,得到第五部分数据,并对第二部分数据执行第二处理操作,得到第六部分数据,其中,第五部分数据以及第六部分数据被合并为第二数据;
S3,在第一数据与第二数据一致的情况下,将第一数据作为第一目标数据存储在第二数据库中,其中,第一数据库与第二数据库的类型不同。
可选地,存储介质还被设置为存储用于执行以下步骤的计算机程序:在对第一部分数据执行第二处理操作,得到第五部分数据,并对第二部分数据执行第二处理操作,得到第六部分数据之后,分别获取存储有第一数据的第一数据表和存储有第二数据的第二数据表中每一行数据的哈希值,其中,每一行数据的哈希值为对每一行所有列数据做哈希运算得到的值;在第一数据表的哈希值个数与第二数据表的哈希值个数不相同的情况下,确定第一数据与第二数据不一致。
可选地,存储介质还被设置为存储用于执行以下步骤的计算机程序:在确定第一数据与第二数据不一致之后,遍历第一数据表和第二数据表中的所有属性,对每一个属性执行以下步骤,其中,每一个属性在执行以下步骤时被标记为第一属性:从第一数据表和第二数据表中筛选出第一属性对应的行数据;分别获取第一数据表中第一属性对应的行数据和第二数据表中第一属性对应的行数据的哈希值;在第一数据表中第一属性对应的哈希值个数和第二数据表中第一属性对应的哈希值个数相同的情况下,将下一个属性确定为第一属性;在第一数据表中第一属性对应的哈希值个数和第二数据表中第一属性对应的哈希值个数不相同的情况下,确定第一属性对应的行数据为第一数据与第二数据之间不一致的数据。
可选地,存储介质还被设置为存储用于执行以下步骤的计算机程序:在第一数据表的哈希值个数与第二数据表的哈希值个数相同的情况下,在第一数据表中所有行数据的哈希值在第二数据表中均存在的情况下,确定第一数据与第二数据一致;在第一数据表中所有行数据的哈希值中的至少一个在第二数据表中不存在的情况下,确定第一数据与第二数据不一致。
可选地,存储介质还被设置为存储用于执行以下步骤的计算机程序:根据源数据的生成时间将源数据划分为第一部分数据和第二部分数据,其中,第一部分数据的生成时间晚于第二部分数据的生成时间。
可选地,存储介质还被设置为存储用于执行以下步骤的计算机程序:在对第一部分数据执行第一处理操作,得到第三部分数据,并对第二部分数据执行第一处理操作,得到第四部分数据之前,在满足第一条件的情况下,执行对第一部分数据执行第一处理操作,得到第三部分数据,并对第二部分数据执行第一处理操作,得到第四部分数据的步骤,其中,第一条件包括:当前时间为非工作日,和/或当前数据处理量低于第一阈值;在不满足第一条件的情况下,对第一部分数据执行第一处理操作,得到第三部分数据,第三部分数据与第二部分数据被合并为第三数据;对第一部分数据执行第二处理操作,得到第五部分数据,第五部分数据与第二部分数据被合并为第四数据;在第三数据与第四数据一致的情况下,将第三数据作为第一目标数据存储在第二数据库中,其中,第一数据库与第二数据库的类型不同。
可选地,存储介质还被设置为存储用于执行以下步骤的计算机程序:将第一部分数据切分成多个数据块;由多个线程分别对多个数据块进行处理,其中,一个线程处理一个数据块;将多个线程的处理结果合并成第三部分数据。
可选地,存储介质还被设置为存储用于执行以下步骤的计算机程序:在对第一部分数据执行第一处理操作,得到第三部分数据,并对第二部分数据执行第一处理操作,得到第四部分数据之前,从第一数据库中分别获取数据文本文件以及数据字典文件,其中,源数据包括数据文本文件以及数据字典文件,数据字典文件用于指示数据文本文件中数据的属性。
可选地,存储介质还被设置为存储用于执行以下步骤的计算机程序:在从第一数据库中分别获取数据文本文件以及数据字典文件之后,在获取到数据文本文件之后,若接收到第一数据库发送的第一指示信息,则确定成功获取到数据文本文件,其中,第一指示信息用于指示成功获取到数据文本文件;在获取到数据字典文件之后,若接收到第一数据库发送的第二指示信息,则确定成功获取到数据字典文件,其中,第二指示信息用于指示成功获取到数据字典文件;其中,只有在接收到第一指示信息与第二指示信息之后,才确定成功获取到源数据;或者在获取到数据文本文件以及数据字典文件之后,若接收到第一数据库发送的第三指示信息,则确定成功获取到源数据,其中,第三指示信息用于指示成功获取到数据文本文件以及数据字典文件。
可选地,存储介质还被设置为存储用于执行以下步骤的计算机程序:在将第一数据作为第一目标数据存储在第二数据库中之后,将第一目标数据进行数据转换,得到第二目标数据;将具有映射关系的第二目标数据以及第二目标数据的版本号存储在第三数据库中。
可选地,本实施例中的具体示例可以参考上述实施例中所描述的示例,本实施例在此不再赘述。
可选地,在本实施例中,本领域普通技术人员可以理解上述实施例的方法中的全部或部分步骤是可以通过程序来指令终端设备相关的硬件来完成,该程序可以存储于一计算机可读存储介质中,存储介质可以包括:闪存盘、只读存储器(Read-Only Memory,ROM)、随机存取器(Random Access Memory,RAM)、磁盘或光盘等。
上述本发明实施例序号仅仅为了描述,不代表实施例的优劣。
上述实施例中的集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在上述计算机可读取的存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在存储介质中,包括若干指令用以使得一台或多台计算机设备(可为个人计算机、服务器或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。
在本发明的上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述的部分,可以参见其他实施例的相关描述。
在本申请所提供的几个实施例中,应该理解到,所揭露的客户端,可通过其它的方式实现。其中,以上所描述的装置实施例仅仅是示意性的,例如所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,单元或模块的间接耦合或通信连接,可以是电性或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
以上所述仅是本发明的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视为本发明的保护范围。
Claims (14)
1.一种异构数据库数据同步方法,其特征在于,包括:
对第一时间段的第一部分数据执行第一处理操作,得到第三部分数据,并对第二时间段的第二部分数据执行所述第一处理操作,得到第四部分数据,其中,第一数据库中的源数据被划分为所述第一部分数据和所述第二部分数据,所述第一时间段位于所述第二时间段之后,所述第一处理操作包括按照第一算法进行的数据校验操作,所述第三部分数据以及所述第四部分数据被合并为第一数据;
对所述第一部分数据执行第二处理操作,得到第五部分数据,并对所述第二部分数据执行所述第二处理操作,得到第六部分数据,其中,所述第二处理操作包括按照第二算法进行的数据校验操作,所述第五部分数据以及所述第六部分数据被合并为第二数据;
在所述第一数据与所述第二数据一致的情况下,将所述第一数据作为第一目标数据存储在第二数据库中,其中,所述第一数据库与所述第二数据库的类型不同。
2.根据权利要求1所述的方法,其特征在于,在所述对所述第一部分数据执行第二处理操作,得到第五部分数据,并对所述第二部分数据执行所述第二处理操作,得到第六部分数据之后,所述方法还包括:
分别获取存储有所述第一数据的第一数据表和存储有所述第二数据的第二数据表中每一行数据的哈希值,其中,所述每一行数据的哈希值为对每一行所有列数据做哈希运算得到的值;
在所述第一数据表的哈希值个数与所述第二数据表的哈希值个数不相同的情况下,确定所述第一数据与所述第二数据不一致。
3.根据权利要求2所述的方法,其特征在于,在所述确定所述第一数据与所述第二数据不一致之后,所述方法还包括:
遍历所述第一数据表和所述第二数据表中的所有属性,对每一个属性执行以下步骤,其中,所述每一个属性在执行以下步骤时被标记为第一属性:
从所述第一数据表和所述第二数据表中筛选出所述第一属性对应的行数据;
分别获取所述第一数据表中所述第一属性对应的行数据和所述第二数据表中所述第一属性对应的行数据的哈希值;
在所述第一数据表中所述第一属性对应的哈希值个数和所述第二数据表中所述第一属性对应的哈希值个数相同的情况下,将下一个属性确定为所述第一属性;
在所述第一数据表中所述第一属性对应的哈希值个数和所述第二数据表中所述第一属性对应的哈希值个数不相同的情况下,确定所述第一属性对应的行数据为所述第一数据与所述第二数据之间不一致的数据。
4.根据权利要求2所述的方法,其特征在于,在所述第一数据表的哈希值个数与所述第二数据表的哈希值个数相同的情况下,所述方法还包括:
在所述第一数据表中所有行数据的哈希值在所述第二数据表中均存在的情况下,确定所述第一数据与所述第二数据一致;
在所述第一数据表中所有行数据的哈希值中的至少一个在所述第二数据表中不存在的情况下,确定所述第一数据与所述第二数据不一致。
5.根据权利要求1所述的方法,其特征在于,在所述对第一时间段的第一部分数据执行第一处理操作,得到第三部分数据,并对第二时间段的第二部分数据执行所述第一处理操作,得到第四部分数据之前,所述方法还包括:
在满足第一条件的情况下,执行所述对第一部分数据执行第一处理操作,得到第三部分数据,并对第二部分数据执行所述第一处理操作,得到第四部分数据的步骤,其中,所述第一条件包括:当前时间为非工作日,和/或当前数据处理量低于第一阈值;
在不满足所述第一条件的情况下,对所述第一部分数据执行所述第一处理操作,得到所述第三部分数据,所述第三部分数据与所述第二部分数据被合并为第三数据;对所述第一部分数据执行所述第二处理操作,得到所述第五部分数据,所述第五部分数据与所述第二部分数据被合并为第四数据;在所述第三数据与所述第四数据一致的情况下,将所述第三数据作为所述第一目标数据存储在所述第二数据库中,其中,所述第一数据库与所述第二数据库的类型不同。
6.根据权利要求1所述的方法,其特征在于,所述对第一时间段的第一部分数据执行第一处理操作,得到第三部分数据包括:
将所述第一部分数据切分成多个数据块;
由多个线程分别对所述多个数据块进行处理,其中,一个线程处理一个数据块;
将所述多个线程的处理结果合并成所述第三部分数据。
7.根据权利要求1所述的方法,其特征在于,在所述对第一时间段的第一部分数据执行第一处理操作,得到第三部分数据,并对第二时间段的第二部分数据执行所述第一处理操作,得到第四部分数据之前,所述方法还包括:
从所述第一数据库中分别获取数据文本文件以及数据字典文件,其中,所述源数据包括所述数据文本文件以及所述数据字典文件,所述数据字典文件用于指示所述数据文本文件中数据的属性。
8.根据权利要求7所述的方法,其特征在于,在所述从所述第一数据库中分别获取数据文本文件以及数据字典文件之后,所述方法还包括:
在获取到所述数据文本文件之后,若接收到所述第一数据库发送的第一指示信息,则确定成功获取到所述数据文本文件,其中,所述第一指示信息用于指示成功获取到所述数据文本文件;在获取到所述数据字典文件之后,若接收到所述第一数据库发送的第二指示信息,则确定成功获取到所述数据字典文件,其中,所述第二指示信息用于指示成功获取到所述数据字典文件;其中,只有在接收到所述第一指示信息与所述第二指示信息之后,才确定成功获取到所述源数据;或者
在获取到所述数据文本文件以及所述数据字典文件之后,若接收到所述第一数据库发送的第三指示信息,则确定成功获取到所述源数据,其中,所述第三指示信息用于指示成功获取到所述数据文本文件以及所述数据字典文件。
9.根据权利要求1所述的方法,其特征在于,在所述将所述第一数据作为第一目标数据存储在第二数据库中之后,所述方法还包括:
将所述第一目标数据进行数据转换,得到第二目标数据;
将具有映射关系的所述第二目标数据以及所述第二目标数据的版本号存储在第三数据库中。
10.根据权利要求9所述的方法,其特征在于,所述第三数据库为Mysql数据库。
11.根据权利要求1至10任一项所述的方法,其特征在于,所述第一数据库为Hadoop集群,所述第二数据库为Sqlserver数据库。
12.一种异构数据库数据同步装置,其特征在于,包括:
第一处理单元,用于对第一时间段的第一部分数据执行第一处理操作,得到第三部分数据,并对第二时间段的第二部分数据执行所述第一处理操作,得到第四部分数据,其中,第一数据库中的源数据被划分为所述第一部分数据和所述第二部分数据,所述第一时间段位于所述第二时间段之后,所述第一处理操作包括按照第一算法进行的数据校验操作,所述第三部分数据以及所述第四部分数据被合并为第一数据;
第二处理单元,用于对所述第一部分数据执行第二处理操作,得到第五部分数据,并对所述第二部分数据执行所述第二处理操作,得到第六部分数据,其中,所述第二处理操作包括按照第二算法进行的数据校验操作,所述第五部分数据以及所述第六部分数据被合并为第二数据;
第一存储单元,用于在所述第一数据与所述第二数据一致的情况下,将所述第一数据作为第一目标数据存储在第二数据库中,其中,所述第一数据库与所述第二数据库的类型不同。
13.一种存储介质,其特征在于,所述存储介质中存储有计算机程序,其中,所述计算机程序被设置为运行时执行所述权利要求1至11任一项中所述的方法。
14.一种电子装置,包括存储器和处理器,其特征在于,所述存储器中存储有计算机程序,所述处理器被设置为运行所述计算机程序以执行所述权利要求1至11任一项中所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810590146.4A CN110196880B (zh) | 2018-06-08 | 2018-06-08 | 异构数据库数据同步方法和装置、存储介质及电子装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810590146.4A CN110196880B (zh) | 2018-06-08 | 2018-06-08 | 异构数据库数据同步方法和装置、存储介质及电子装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN110196880A CN110196880A (zh) | 2019-09-03 |
CN110196880B true CN110196880B (zh) | 2023-05-12 |
Family
ID=67751358
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201810590146.4A Active CN110196880B (zh) | 2018-06-08 | 2018-06-08 | 异构数据库数据同步方法和装置、存储介质及电子装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN110196880B (zh) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112732839B (zh) * | 2021-01-21 | 2023-06-23 | 云账户技术(天津)有限公司 | 一种数据同步方法及装置 |
CN113326316A (zh) * | 2021-04-14 | 2021-08-31 | 深圳新贝奥数字科技有限公司 | 一种异构系统数据快捷同步方法 |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102662946A (zh) * | 2012-02-20 | 2012-09-12 | 北京地拓科技发展有限公司 | 一种自动监测数据库中记录变化的方法和系统 |
CN104462269A (zh) * | 2014-11-24 | 2015-03-25 | 中国联合网络通信集团有限公司 | 一种异构数据库数据交换方法及系统 |
CN106980636A (zh) * | 2016-07-22 | 2017-07-25 | 平安科技(深圳)有限公司 | 保单数据处理方法和装置 |
CN107122360A (zh) * | 2016-02-24 | 2017-09-01 | 阿里巴巴集团控股有限公司 | 数据迁移系统和方法 |
CN107807982A (zh) * | 2017-10-27 | 2018-03-16 | 中国农业银行股份有限公司 | 一种异构数据库的一致性校验方法及装置 |
CN108132949A (zh) * | 2016-12-01 | 2018-06-08 | 腾讯科技(深圳)有限公司 | 数据库集群中数据迁移的方法及装置 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9563522B2 (en) * | 2015-03-31 | 2017-02-07 | Oracle International Corporation | Data recovery for a relational database management system instance in a heterogeneous database system |
-
2018
- 2018-06-08 CN CN201810590146.4A patent/CN110196880B/zh active Active
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102662946A (zh) * | 2012-02-20 | 2012-09-12 | 北京地拓科技发展有限公司 | 一种自动监测数据库中记录变化的方法和系统 |
CN104462269A (zh) * | 2014-11-24 | 2015-03-25 | 中国联合网络通信集团有限公司 | 一种异构数据库数据交换方法及系统 |
CN107122360A (zh) * | 2016-02-24 | 2017-09-01 | 阿里巴巴集团控股有限公司 | 数据迁移系统和方法 |
CN106980636A (zh) * | 2016-07-22 | 2017-07-25 | 平安科技(深圳)有限公司 | 保单数据处理方法和装置 |
CN108132949A (zh) * | 2016-12-01 | 2018-06-08 | 腾讯科技(深圳)有限公司 | 数据库集群中数据迁移的方法及装置 |
CN107807982A (zh) * | 2017-10-27 | 2018-03-16 | 中国农业银行股份有限公司 | 一种异构数据库的一致性校验方法及装置 |
Non-Patent Citations (2)
Title |
---|
刘娟娟 ; 刘帅 ; .数据库同步技术的研究与实现.软件工程.2017,(01),全文. * |
范金锋 ; 叶敏 ; .一种支持异构数据库的同步与交换方法.电力信息化.2011,(09),全文. * |
Also Published As
Publication number | Publication date |
---|---|
CN110196880A (zh) | 2019-09-03 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN107783975B (zh) | 分布式数据库同步处理的方法和装置 | |
US9645736B2 (en) | Processing time series data from multiple sensors | |
US20150278030A1 (en) | Distributed Database Synchronization Method and System | |
US9251231B2 (en) | Merging an out of synchronization indicator and a change recording indicator in response to a failure in consistency group formation | |
US9542468B2 (en) | Database management system and method for controlling synchronization between databases | |
CN109376196B (zh) | 一种redo日志批量同步方法及装置 | |
CN103778136A (zh) | 一种跨机房数据库同步方法及系统 | |
CN105447046A (zh) | 一种分布式系统数据一致性处理方法、装置和系统 | |
CN106547643B (zh) | 异常数据的恢复方法及装置 | |
TW201933135A (zh) | 一種資料同步方法和分散式系統 | |
EP3200096A1 (en) | Remote replication method and apparatus based on duplicated data deletion | |
CN104809201A (zh) | 一种数据库同步的方法和装置 | |
CN106874281B (zh) | 实现数据库读写分离的方法和装置 | |
CN106648994B (zh) | 一种备份操作日志的方法,设备和系统 | |
CN104809200A (zh) | 一种数据库同步的方法和装置 | |
US9600514B2 (en) | Methods and systems for detecting data divergence and inconsistency across replicas of data within a shared-nothing distributed database | |
CN110737719B (zh) | 数据同步方法、装置、设备及计算机可读存储介质 | |
US20170199903A1 (en) | System for backing out data | |
CN110647531A (zh) | 数据同步方法、装置、设备及计算机可读存储介质 | |
CN110196880B (zh) | 异构数据库数据同步方法和装置、存储介质及电子装置 | |
EP3264291A1 (en) | Data block processing method and device | |
CN109145060A (zh) | 数据处理方法及装置 | |
CN103716384A (zh) | 跨数据中心实现云存储数据同步的方法和装置 | |
CN111625540A (zh) | 一种关系型数据库数据同步完整性校验方法和装置 | |
CN111338834B (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 |