CN115017229A - 数据库同步方法、装置及电子设备 - Google Patents
数据库同步方法、装置及电子设备 Download PDFInfo
- Publication number
- CN115017229A CN115017229A CN202210391243.7A CN202210391243A CN115017229A CN 115017229 A CN115017229 A CN 115017229A CN 202210391243 A CN202210391243 A CN 202210391243A CN 115017229 A CN115017229 A CN 115017229A
- Authority
- CN
- China
- Prior art keywords
- database
- data
- identifier
- deleted
- target
- 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
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
- G06F16/275—Synchronous replication
-
- 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/23—Updating
- G06F16/2365—Ensuring data consistency and integrity
Abstract
本申请公开了一种数据库同步方法、装置及电子设备,方法包括:获得数据处理指令,所述数据处理指令中至少包含待处理数据的第一标识;删除电子设备对应的第一数据库中与所述第一标识相对应的第一数据;在所述电子设备对应的第二数据库中,处理与所述第一标识相对应的第一数据;所述第二数据库与所述第一数据库关于数据库结构不同;其中,所述第二数据库中被处理后的第一数据用于写入所述第一数据库,以使得所述第一数据库与所述第二数据库之间至少关于所述第一数据相一致。
Description
技术领域
本申请涉及数据库技术领域,尤其涉及一种数据库同步方法、装置及电子设备。
背景技术
异构数据库的应用越来越广泛。例如,在同一系统中使用Redis数据库作为内存数据库,以提供实时服务,同时使用Oracle数据作为存储数据库,以保证数据存储的稳定性和安全性。而为了保证数据的一致性,在数据处理过程中,需要对异构数据库之间实现数据同步。但是,仍然可能存在异构数据库之间数据不一致的情况。
因此,亟需一种能够在异构数据库之间保证数据一致性的技术方案。
发明内容
有鉴于此,本申请提供一种数据库同步方法、装置及电子设备,用以解决现有技术中在异构数据库之间数据不一致的技术问题。
本申请提供了一种数据库同步方法,包括:
获得数据处理指令,所述数据处理指令中至少包含待处理数据的第一标识;
删除电子设备对应的第一数据库中与所述第一标识相对应的第一数据;
在所述电子设备对应的第二数据库中,处理与所述第一标识相对应的第一数据;所述第二数据库与所述第一数据库关于数据库结构不同;
其中,所述第二数据库中被处理后的第一数据用于写入所述第一数据库,以使得所述第一数据库与所述第二数据库之间至少关于所述第一数据相一致。
上述方法,优选的,所述方法还包括:
获得数据读取指令,所述数据读取指令中至少包含待读取数据的第二标识;
在所述第一数据库中查找与所述第二标识相对应的第二数据;
如果在所述第一数据库中没有查找到与所述第二标识相对应的第二数据,在所述第二数据库中查找与所述第二标识相对应的第二数据;
如果在所述第二数据库中查找到与所述第二标识相对应的第二数据,将所述第二数据库中查找到的所述第二数据返回;
将所述第二数据库中查找到的所述第二数据写入所述第一数据库。
上述方法,优选的,在处理与所述第一标识相对应的第一数据之前,所述方法还包括:
判断所述第一数据库中的所述第一数据是否被删除成功;
如果所述第一数据库中的所述第一数据被删除成功,执行所述步骤:在所述电子设备对应的第二数据库中,处理与所述第一标识相对应的第一数据;
如果所述第一数据库中的所述第一数据没有被删除成功,在待删除记录表中记录所述第一数据对应的所述第一标识,执行所述步骤:在所述电子设备对应的第二数据库中,处理与所述第一标识相对应的第一数据;
其中,所述待删除记录表中的标识用于删除对应的数据。
上述方法,优选的,在待删除记录表中记录所述第一数据对应的所述第一标识之后,所述方法还包括:
判断所述待删除记录表中是否记录所述第一标识成功;
如果所述待删除记录表中记录所述第一标识成功,执行所述步骤:在所述电子设备对应的第二数据库中,处理与所述第一标识相对应的第一数据;
如果所述待删除记录表中记录所述第一标识失败,结束当前对所述数据处理指令的处理流程。
上述方法,优选的,所述方法还包括:
在所述待删除记录表对应的删除条件被满足的情况下,从所述待删除记录表中读取至少一个目标标识;
在所述第一数据库中删除与所述目标标识对应的目标数据;
其中,所述删除条件包括:计时器记录的当前时长到达预设的时长阈值;所述计时器在其记录的当前时长在到达所述时长阈值时重新计时。
上述方法,优选的,所述目标标识被存储在目标列表中;
其中,在所述第一数据库中删除与所述目标标识对应的目标数据,包括:
判断所述目标列表是否为空;
如果所述目标列表为空,结束当前对所述待删除记录表的处理流程;
如果所述目标列表不为空,按照所述目标列表,在所述第一数据库中删除与所述目标标识相对应的目标数据。
上述方法,优选的,在从所述待删除记录表中读取至少一个目标标识之前,所述方法还包括:
判断所述第一数据库是否处于目标状态,所述目标状态下的第一数据库能够进行数据读写;
如果所述第一数据库处于所述目标状态,执行所述步骤:从所述待删除记录表中读取至少一个目标标识;
如果所述第一数据库没有处于所述目标状态,结束当前对所述待删除记录表的处理流程。
上述方法,优选的,在所述第一数据库中查找与所述第二标识相对应的第二数据之前,所述方法还包括:
判断所述第一数据库是否处于目标状态,所述目标状态下的第一数据库能够进行数据读写;
如果所述第一数据库处于所述目标状态,执行所述步骤:在所述第一数据库中查找与所述第二标识相对应的第二数据;
如果所述第一数据库没有处于所述目标状态,结束当前对所述数据读取指令的处理流程。
本申请还提供了一种数据库同步装置,包括:
指令获得单元,用于获得数据处理指令,所述数据处理指令中至少包含待处理数据的第一标识;
数据删除单元,用于删除电子设备对应的第一数据库中与所述第一标识相对应的第一数据;
数据处理单元,用于在所述电子设备对应的第二数据库中,处理与所述第一标识相对应的第一数据;所述第二数据库与所述第一数据库关于数据库结构不同;
数据写入单元,用于将所述第二数据库中被处理后的第一数据用于写入所述第一数据库,以使得所述第一数据库与所述第二数据库之间至少关于所述第一数据相一致。
本申请还提供了一种电子设备,包括:
存储器,用于存储计算机程序以及所述计算机程序运行所产生的数据;
处理器,用于执行所述计算机程序,以实现:获得数据处理指令,所述数据处理指令中至少包含待处理数据的第一标识;删除电子设备对应的第一数据库中与所述第一标识相对应的第一数据;在所述电子设备对应的第二数据库中,处理与所述第一标识相对应的第一数据;所述第二数据库与所述第一数据库关于数据库结构不同;其中,所述第二数据库中被处理后的第一数据用于写入所述第一数据库,以使得所述第一数据库与所述第二数据库之间至少关于所述第一数据相一致。
从上述技术方案可以看出,本申请公开的一种数据库同步方法、装置及电子设备中,在获得数据处理指令的情况下,先删除第一数据库中与待处理数据的第一标识对应的第一数据,再在与第一数据库异构的第二数据库中处理与第一标识对应的第一数据,进而第二数据库中被处理后的第一数据被写入到第一数据库之后,第一数据库与第二数据库之间能够在第一数据上保持一致。可见,本申请中在数据处理过程中,通过先删除第一数据库中的数据,再在第二数据库中处理数据,而第二数据库中处理后的数据再写入第一数据库,这样就可以保证第一数据库与第一数据库之间的数据一致性,避免在数据处理过程中异构数据库之间数据不一致的情况。
附图说明
为了更清楚地说明本申请实施例的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本申请实施例一提供的一种数据库同步方法的流程图;
图2为本申请所适用的应用服务器配置内存数据库和存储数据库的架构图;
图3为本申请实施例一提供的一种数据库同步方法的部分流程图;
图4及图5分别为本申请实施例一提供的一种数据库同步方法的另一流程图;
图6-图9分别为本申请实施例一提供的一种数据库同步方法的另一部分流程图;
图10为本申请实施例二提供的一种数据库同步装置的结构示意图;
图11为本申请实施例二提供的一种数据库同步装置的另一结构示意图;
图12为本申请实施例三提供的一种电子设备的结构示意图;
图13为本申请所适用的应用服务器配置Redis数据库和Oracle数据库之间的客户访问示例图;
图14为本申请所适用的应用服务器中的客户数据读取流程图;
图15为本申请所适用的应用服务器中的客户数据更新的流程图;
图16为本申请所适用的应用服务器中的补偿批量程序流程图。
具体实施方式
下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
参考图1所示,为本申请实施例一提供的一种数据库同步方法的实现流程图,该方法可以适用于配置有异构数据库且能够进行数据处理的电子设备中,如服务器等。本实施例中的技术方案主要用于保证数据处理过程中异构数据库之间的数据一致性。
具体的,本实施例中的方法可以包含以下步骤:
步骤101:获得数据处理指令。
其中,数据处理指令中至少包含待处理数据的第一标识。数据处理指令可以为数据写入指令、数据删除指令或数据修改指令,其中,数据写入指令用于指示写入第一标识对应的第一数据,数据删除指令用于指示删除第一标识对应的第一数据,数据修改指令用于指示将第一标识对应的第一数据进行数据修改,等等。
具体的,第一标识可以为能够唯一表征第一数据的标识,如key值等。数据处理指令可以在电子设备上用户需要进行数据处理并进行处理操作时生成,或者,数据处理指令也可以为电子设备运行过程中为实现相应功能所自动生成的指令。
步骤102:删除电子设备对应的第一数据库中与第一标识相对应的第一数据。
其中,第一数据库为电子设备所配置的内存库数据,另外,电子设备还配置有第二数据库,第二数据库为存储数据库,第一数据库与第二数据关于数据库结构不同。例如,第一数据库可以为Redis数据库,Redis数据库是内存数据库,具有主备机制,通过高性能、读速度快(可达110000次/s)的特点能够支持高并发查询,以保证高可用。第二数据库可以为Oracle数据库,Oracle数据库为关系型数据库管理系统,具有可移植性好、功能强大、可靠性高、性能稳定的特点。
具体的,本实施例中可以在获得到数据写入指令、数据删除指令或数据修改指令之后,先在第一数据库中查找到与第一标识相对应的第一数据,再将查找到的第一数据进行删除。
步骤103:在电子设备对应的第二数据库中,处理与第一标识相对应的第一数据。
具体的,本实施例中可以按照数据处理指令,在第二数据库中写入第一标识相对应的第一数据,或者,删除第二数据库中与第一标识相对应的第一数据,或者,对第二数据库中与第一标识相对应的第一数据进行数据修改,等等。
基于此,第二数据库中被处理后的第一数据用于写入所述第一数据库,以使得第一数据库中与第二数据库之间至少关于第一数据相一致。
如图2中所示,本实施例中,电子设备如应用服务器在需要处理第一数据时,先将内存数据库中的第一数据删除,以避免数据处理期间意外中断而导致数据不一致的情况,之后,在存储数据库中处理第一数据,以利用存储数据库的稳定性保证第一数据的安全性,而处理后的第一数据可以被写入内存数据库,由此,使得在实现数据处理的前提下,保证内存数据库与存储数据库之间至少关于第一数据相一致,进而随着数据处理的进行,内存数据库与存储数据库之间能够保证数据的一致性。
从上述技术方案可以看出,本申请实施例一提供的一种数据库同步方法,在获得数据处理指令的情况下,先删除第一数据库中与待处理数据的第一标识对应的第一数据,再在与第一数据库异构的第二数据库中处理与第一标识对应的第一数据,进而第二数据库中被处理后的第一数据被写入到第一数据库之后,第一数据库与第二数据库之间能够在第一数据上保持一致。可见,本申请中在数据处理过程中,通过先删除第一数据库中的数据,再在第二数据库中处理数据,而第二数据库中处理后的数据再写入第一数据库,这样就可以保证第一数据库与第一数据库之间的数据一致性,避免在数据处理过程中异构数据库之间数据不一致的情况。
在一种实现方式中,本实施例中的方法还可以包含如下步骤,如图3中所示:
步骤301:获得数据读取指令。
其中,数据读取指令中至少包含待读取的第二标识。数据读取指令用于指示读取第二标识对应的第二数据。第二标识可以为能够唯一表征第二数据的标识,如key值等。
具体的,数据读取指令可以在电子设备上用户需要进行数据读取并进行读取操作时生成,或者,数据读取指令也可以为电子设备运行过程中为实现相应功能所自动生成的指令。
步骤302:在第一数据库中查找与第二标识相对应的第二数据,如果在第一数据库中查找到第二标识对应的第二数据,执行步骤303,如果在第一数据库中没有查找到与第二标识相对应的第二数据,执行步骤304。
具体的,本实施例中可以在第一数据库中按照第二标识对第一数据库中所包含的数据进行标识比对,进而实现对第二数据的查找,如果在第一数据库中查找到第二数据,执行步骤303,如果在第一数据库中没有查找到第二数据,执行步骤304。
步骤303:将第一数据库中查找到的第二数据返回。
具体的,将第二数据从第一数据库中读取后返回给电子设备。例如,将从内存数据库读取到的第二数据返回给用户所使用的应用服务器。
步骤304:在第二数据库中查找与第二标识相对应的第二数据,如果在第二数据库中查找到与第二标识相对应的第二数据,执行步骤305。
具体的,本实施例中可以在第二数据库中按照第二标识对第二数据库中所包含的数据进行标识比对,进而实现对第二数据的查找,如果在第二数据库中查找到第二数据,执行步骤305以及步骤306,如果在第二数据库中没有查找到第二数据,则表明第二数据未被在任一数据库中处理过,此时结束当前流程。
步骤305:将第二数据库中查找到的第二数据返回。
具体的,将第二数据从第二数据库中读取后返回给电子设备。例如,在内存数据库中没有查到第二数据的情况下,将从存储数据库读取到的第二数据返回给用户所使用的应用服务器。
步骤306:将第二数据库中查找到的第二数据写入第一数据库。
具体的,将从第二数据库中读取到的第二数据写入第一数据库,以使得第一数据库与第二数据之间关于第二数据一致。例如,在内存数据库中没有查到第二数据的情况下,将从存储数据库读取到的第二数据返回给用户所使用的应用服务器,并将第二数据写入到内存数据库,由此,内存数据库与存储数据库之间关于第二数据一致。
需要说明的是,图3中的第二数据可以为图1中的第一数据,由此,在数据处理过程中为了保证数据的一致性而删除第一数据库中的数据之后,可以在数据读取过程中将读取到的数据写入到第一数据库中,由此,可以使得第一数据库中缓存数据,以提高数据的读取数量,以提高第一数据库的读操作命中率,保证高可用。
在一种实现方式中,基于图1中所示的实施例,在步骤103之前,还可以包含以下步骤,如图4中所示:
步骤104:判断第一数据库中的第一数据是否被删除成功,如果第一数据库中的第一数据被删除成功,执行步骤103以及后续步骤,如果第一数据库中的第一数据没有被删除成功,执行步骤105。
具体的,本实施例中可以通过监测步骤102的执行结果,以判断第一数据库中的第一数据是否被删除成功。
步骤105:在待删除记录表中记录第一数据对应的第一标识,执行步骤103以及后续步骤。
其中,待删除记录表中的标识用于删除对应的数据。由此,如果第一数据库中的第一数据没有被删除成功,可以通过待删除记录表所记录的标识再次去删除相应的数据,以保证第一数据库与第二数据库之间关于第一数据的一致性。
具体的,待删除记录表中所记录的内容可以为第一标识本身,也可以是第一标识对应的内容,如主键key和/或表名等内容,用以指向第一数据,如用户的存储数据。例如,在金融业务的数据处理过程中,在待删除记录表中记录客户号和k宝绑定表,用以指向一条该用户的金融存储数据。
进一步的,在步骤105之后,本实施例中还可以包含以下步骤,如图5中所示:
步骤106:判断待删除记录表中是否记录第一标识成功,如果待删除记录表中记录第一标识成功,执行所述步骤103,以在所述电子设备对应的第二数据库中,处理与所述第一标识相对应的第一数据;如果待删除记录表中记录第一标识失败,则结束当前对所述数据处理指令的处理流程。
也就是说,本实施例中如果记录第一标识到待删除记录表失败,则表明第一数据库中的第一数据后续也无法通过待删除记录表被成功删除,基于此,再继续根据数据处理指令进行数据处理流程会导致第一数据库与第二数据库之间关于第一数据不一致,因此,如果在待删除记录表中记录第一标识失败,那么结束当前处理流程,不再继续对数据处理指令进行响应,以避免第一数据库与第二数据库之间关于第一数据不一致的情况。
基于以上实现方式,本实施例中可以通过对待删除记录表对应的删除条件是否被满足进行监测,进而基于待删除记录表删除对应的数据,具体如下步骤,如图6中所示:
步骤601:判断待删除记录表对应的删除条件是否被满足,如果待删除记录表对应的删除条件被满足,执行步骤602,如果待删除记录表对应的删除条件没有被满足,返回继续执行步骤601,直到删除条件被满足。
其中,删除条件包括:计时器记录的当前时长到达预设的时长阈值;计时器在其记录的当前时长在到达时长阈值时重新计时。具体的,计时器可以在待删除记录表被创建时开始计时,并在其每记录的当前时长到达时长阈值时重新计时。也就是说,本实施例中可以每隔预设的时长阈值对待删除记录表执行一次相应的删除处理流程,即步骤602-步骤603。
需要说明的是步骤601持续在执行,也就是说,如果待删除记录表对应的删除条件被满足,也会返回继续执行步骤601,步骤601的执行不受步骤602和步骤603是否被执行的限制。
步骤602:从待删除记录中读取至少一个目标标识。
具体的,本实施例可以在待删除记录表中按照先进先出或先进后出的规则读取一个或多个目标标识。或者,本实施例可以在待删除记录表中按照预设的读取规则对应的读取次序读取一个或多个目标标识。
步骤603:在第一数据库中删除与目标标识对应的目标数据。
其中,本实施例中可以按照目标标识,在第一数据库中查找相应的目标数据,然后再对查找到的目标数据进行删除。
进一步的,在第一数据库中删除与目标标识相对应的目标数据之后,还将待删除记录表中相应的目标标识进行删除,以避免重复进行删除操作所导致的浪费运行资源的情况。
具体的,从待删除记录表中读取到的目标标识可以被存储到目标列表中,以实现对目标列表的缓存。基于此,步骤603可以通过以下方式实现,如图7所示:
步骤701:判断目标列表是否为空,如果目标列表为空,结束当前对待删除记录表的处理流程,如果目标列表不为空,执行步骤702。
步骤702:按照所述目标列表,在第一数据库中删除与目标标识相对应的目标数据。
具体的,本实施例中可以遍历目标列表中的目标标识,进而在每遍历到目标列表中的一个目标标识时,在第一数据库中删除与遍历到的目标标识对应的目标数据。
基于以上实现方式,在步骤602之前,本实施例中还可以包含如下步骤,如图8中所示:
步骤604:判断第一数据库是否处于目标状态,如果第一数据库处于目标状态,执行所述步骤602;如果第一数据库没有处于目标状态,结束当前对待删除记录表的处理流程。
其中,目标状态下的第一数据库能够进行数据读写,目标状态也可以理解为第一数据库的正常运行状态。
也就是说,如果第一数据库没有处于正常运行状态,那么对后续的数据读写和删除都可能存在不稳定的情况,导致对第一数据库中的数据删除可能存在不成功的情况,因此,如果第一数据库没有处于正常运行状态,那结束当前对待删除记录表的处理流程,直到第一数据库处于正常运行状态,再执行步骤602,以按照待删除记录表对第一数据库中对应的数据进行删除处理。
基于图3所示的实现方式,在步骤302之前,本实施例中还可以包含如下步骤,如图9中所示:
步骤307:判断第一数据库是否处于目标状态;如果第一数据库处于目标状态,执行步骤302;如果第一数据库没有处于目标状态,结束当前对数据读取指令的处理流程。
其中,目标状态下的第一数据库能够进行数据读写。也就是说,如果第一数据库没有处于正常运行状态,那么对后续的数据查找处理都可能存在不稳定的情况,导致在第一数据库中数据查找的结果可能存在不准确的情况,因此,如果第一数据库没有处于正常运行状态,那结束当前对数据读取指令的处理流程,直到第一数据库处于正常运行状态,再执行步骤302,以在第一数据库中查找与第二标识相对应的第二数据。
参考图10,为本申请实施例二提供的一种数据库同步装置的结构示意图,该装置可以适用于配置有异构数据库且能够进行数据处理的电子设备中,如服务器等。本实施例中的技术方案主要用于保证数据处理过程中异构数据库之间的数据一致性。
具体的,本实施例中的装置可以包含以下单元:
指令获得单元1001,用于获得数据处理指令,所述数据处理指令中至少包含待处理数据的第一标识;
数据删除单元1002,用于删除电子设备对应的第一数据库中与所述第一标识相对应的第一数据;
数据处理单元1003,用于在所述电子设备对应的第二数据库中,处理与所述第一标识相对应的第一数据;所述第二数据库与所述第一数据库关于数据库结构不同;
数据写入单元1004,用于将所述第二数据库中被处理后的第一数据用于写入所述第一数据库,以使得所述第一数据库与所述第二数据库之间至少关于所述第一数据相一致。
从上述技术方案可以看出,本申请实施例二提供的一种数据库同步装置,在获得数据处理指令的情况下,先删除第一数据库中与待处理数据的第一标识对应的第一数据,再在与第一数据库异构的第二数据库中处理与第一标识对应的第一数据,进而第二数据库中被处理后的第一数据被写入到第一数据库之后,第一数据库与第二数据库之间能够在第一数据上保持一致。可见,本申请中在数据处理过程中,通过先删除第一数据库中的数据,再在第二数据库中处理数据,而第二数据库中处理后的数据再写入第一数据库,这样就可以保证第一数据库与第一数据库之间的数据一致性,避免在数据处理过程中异构数据库之间数据不一致的情况。
在一种实现方式中,指令获得单元1001还用于获得数据读取指令,所述数据读取指令中至少包含待读取数据的第二标识,基于此,本实施例中的装置还可以包含如下单元,如图11中所示:
数据查找单元1005,用于在所述第一数据库中查找与所述第二标识相对应的第二数据;如果在所述第一数据库中没有查找到与所述第二标识相对应的第二数据,在所述第二数据库中查找与所述第二标识相对应的第二数据;如果在所述第二数据库中查找到与所述第二标识相对应的第二数据,将所述第二数据库中查找到的所述第二数据返回;
基于此,数据写入单元1004将第二数据库中查找到的所述第二数据写入所述第一数据库。
在一种实现方式中,在数据处理单元1003处理与所述第一标识相对应的第一数据之前,还用于:判断所述第一数据库中的所述第一数据是否被删除成功;如果所述第一数据库中的所述第一数据被删除成功,在所述电子设备对应的第二数据库中,处理与所述第一标识相对应的第一数据;如果所述第一数据库中的所述第一数据没有被删除成功,在待删除记录表中记录所述第一数据对应的所述第一标识,在所述电子设备对应的第二数据库中,处理与所述第一标识相对应的第一数据;
其中,所述待删除记录表中的标识用于删除对应的数据。
在一种实现方式中,数据处理单元1003在待删除记录表中记录所述第一数据对应的所述第一标识之后,还用于:判断所述待删除记录表中是否记录所述第一标识成功;如果所述待删除记录表中记录所述第一标识成功,在所述电子设备对应的第二数据库中,处理与所述第一标识相对应的第一数据;如果所述待删除记录表中记录所述第一标识失败,结束当前对所述数据处理指令的处理流程。
在一种实现方式中,数据处理单元1003还用于:在所述待删除记录表对应的删除条件被满足的情况下,从所述待删除记录表中读取至少一个目标标识;在所述第一数据库中删除与所述目标标识对应的目标数据;其中,所述删除条件包括:计时器记录的当前时长到达预设的时长阈值;所述计时器在其记录的当前时长在到达所述时长阈值时重新计时。
进一步的,所述目标标识被存储在目标列表中;数据处理单元1003在所述第一数据库中删除与所述目标标识对应的目标数据时,具体用于:判断所述目标列表是否为空;如果所述目标列表为空,结束当前对所述待删除记录表的处理流程;如果所述目标列表不为空,按照所述目标列表,在所述第一数据库中删除与所述目标标识相对应的目标数据。
在一种实现方式中,数据处理单元1003在从所述待删除记录表中读取至少一个目标标识之前,还用于:判断所述第一数据库是否处于目标状态,所述目标状态下的第一数据库能够进行数据读写;如果所述第一数据库处于所述目标状态,从所述待删除记录表中读取至少一个目标标识;如果所述第一数据库没有处于所述目标状态,结束当前对所述待删除记录表的处理流程。
在一种实现方式中,数据处理单元1003在所述第一数据库中查找与所述第二标识相对应的第二数据之前,还用于:判断所述第一数据库是否处于目标状态,所述目标状态下的第一数据库能够进行数据读写;如果所述第一数据库处于所述目标状态,在所述第一数据库中查找与所述第二标识相对应的第二数据;如果所述第一数据库没有处于所述目标状态,结束当前对所述数据读取指令的处理流程。
需要说明的是,本实施例中各单元的具体实现可以参考前文中的相应内容,此处不再详述。
参考图12,为本申请实施例三提供的一种电子设备的结构示意图,该电子设备可以为配置有异构数据库且能够进行数据处理的电子设备,如服务器等。本实施例中的技术方案主要用于保证数据处理过程中异构数据库之间的数据一致性。
具体的,本实施例中的电子设备可以包含以下结构:
存储器1201,用于存储计算机程序以及所述计算机程序运行所产生的数据;
处理器1202,用于执行所述计算机程序,以实现:获得数据处理指令,所述数据处理指令中至少包含待处理数据的第一标识;删除电子设备对应的第一数据库中与所述第一标识相对应的第一数据;在所述电子设备对应的第二数据库中,处理与所述第一标识相对应的第一数据;所述第二数据库与所述第一数据库关于数据库结构不同;其中,所述第二数据库中被处理后的第一数据用于写入所述第一数据库,以使得所述第一数据库与所述第二数据库之间至少关于所述第一数据相一致。
从上述技术方案可以看出,本申请实施例三提供的一种电子设备,在获得数据处理指令的情况下,先删除第一数据库中与待处理数据的第一标识对应的第一数据,再在与第一数据库异构的第二数据库中处理与第一标识对应的第一数据,进而第二数据库中被处理后的第一数据被写入到第一数据库之后,第一数据库与第二数据库之间能够在第一数据上保持一致。可见,本申请中在数据处理过程中,通过先删除第一数据库中的数据,再在第二数据库中处理数据,而第二数据库中处理后的数据再写入第一数据库,这样就可以保证第一数据库与第一数据库之间的数据一致性,避免在数据处理过程中异构数据库之间数据不一致的情况。
以应用服务器配置有Redis数据库和Oracle数据库为例,以下对本申请的技术方案进行详细说明:
首先,对多数据库系统来讲,数据一致性分为两种,强一致与弱一致或最终一致性。强一致性相应处理策略为当删除缓存失败时,交易失败。其缺点为入侵交易,系统受redis稳定性影响较大。弱一致或最终一致性处理策略为当删除缓存失败时,先置交易成功,后续采用补偿机制,删除旧数据。其缺点为在实际删除redis里旧数据之前,会读到旧数据,此时可能会造成数据不一致的情况。针对于此,本申请提出一种方案,即:在可容忍少量数据损失的非核心衍生类服务场景下,在高可用与数据一致性的平衡中,通过小概率上牺牲短暂时间的数据一致性,达成服务高可用的宗旨。具体涉及三个核心算法,详述如下:
以图13中所示的应用服务器与Redis数据库、Oracle数据库之间的客户访问为例,如图14中所示,为客户数据读取流程图,具体如下:
首先,判断Redis数据库的工作状态,如果异常即判断为假,则读取Oracle数据库中的数据;如果状态为正常,即判断为真,则读取Redis数据库中的数据,如用户信息等,如果记录存在即判断为真,则返回取到的信息,程序结束;如果Redis数据库中不存在该用户的信息即判断为假,则读取Oracle数据库中记录的用户信息,并将Oracle数据库中取到的用户信息写入Redis数据库。
如图15中所示,为客户数据更新的流程图,即前文中的数据处理流程,具体如下:
首先,在应用服务器上处理业务数据,准备需要写入数据库的字段,即数据处理指令中第一标识对应的第一数据;之后,维护Redis数据库即Redis缓存,即删除Redis数据库中的第一数据,如果维护失败即判断为假,则记入待删除记录表,即图中的待删除表,而如果记待删除表失败,则令交易失败,即数据更新失败,本次的交易业务结束;如果记待删除表成功或者Redis数据库维护成功即判断为真,则处理Oracle业务表,即前文中的在Oracle数据库中处理第一数据。
基于以上实现,如图16中所示,为补偿批量程序流程图,即前文中按照待删除记录表删除数据的流程,具体如下:
首先,判断Redis缓存数据库的工作状态,如果状态为异常则结束当前流程,如果状态为正常,去待删除记录表取前100条(也可以为其他数量)记录来处理,取到的记录存在列表delList即前文中的目标列表里。如果取到的目标列表为空即判断deList不为空为假,则表示待删除记录表里没有记录了,程序结束。如果列表不为空即判断deList不为空为真,则遍历列表delList中的记录,去Redis数据库删除相应的记录,如果删除成功,则删除待删除记录表中本条记录,这样应用服务器下次来访问这条数据的话,能够取到最新的值。按照该流程,直到判断待删除表为空为真,程序结束,否则在判断待删除表为空为假时均返回,以去待删除表中再次取前100条记录并记录到deList中,以此类推,直到待删除表为空。
需要说明的是,图16中所示的流程可以设置为间隔很短的时间(例如1分钟)运行一次。
可见,客户在应用服务器上数据读取时,如果在Redis数据库命中,则直接返回,避免了对Oracle数据库的访问。越是访问频繁的用户,其命中概率越大。如果在Redis数据库未命中,则访问Oracle数据库,并将在Oracle中取到的数据,写入Redis数据库,下次该用户来访问时,则能先命中Redis数据库。
对于Redis数据库的维护有两种方式,一种为修改,一种为删除。本实施例中采用删除的方式,在Redis数据库中数据被删除后,用户下次来访问将从oracle数据库读取最新的值存到缓存里,用户也将获得最新的值。
而客户数据更新时,首先维护Redis数据库,即直接删除redis中相应记录。如果Redis数据库中记录删除失败,或者此时Redis数据库不可用,则将记录加入到待删除记录表里。该表存在Oracle数据库里,如果向该表添加记录失败,则置整个交易失败,否则会发生数据丢失的现象。也就是说Redis数据库维护的成功与否,不影响系统的对外服务,还能够实现数据的最终一致性。程序继续执行,维护Oracle数据库中的用户信息,如果这步程序失败,则前一步redis中缓存删除了或者记入了待删除表都没有关系,多删数据(相比oracle数据库)或者多次删除redis缓存数据,不会影响系统的功能。
本实施例中的补偿批量程序,设为定时每隔很短的时间执行一次。执行时取待删除记录表里的数据,去再次尝试删除Redis数据库中的记录。作为用户在更新数据程序中,或者在Redis数据库服务不可用时,Redis数据库维护失败的补偿。一般情况下待删除记录表里的数据量不会太大。
上述三个算法相互配合,能够实现在Redis数据库服务可用时优先访问Redis数据库,当服务不可用或者Redis数据库未命中时,访问Oracle数据库作为保底。既充分利用Redis数据库读取速度快的优势,又规避了Redis数据库服务不稳定的劣势,还能够实现最终两个数据库之间数据一致。
可见,在本实施例中,两个异构数据库都可以同时被应用访问与使用,在绝大部分情况下提供实时服务。只有当Redis数据库因硬件不稳定这种极端情况而删除失败时即在很低概率下,才有短暂的数据不一致。后续采用的批量补偿机制简单易实现,又能够在很短时间内达到数据的最终一致性。从而确保了系统对外的高可用服务。
而且,本实施例中改进了典型CacheAside模式,在客户数据修改的流程中,在维护Oracle数据库之前先处理缓存,如果维护失败则记入待删除记录表,如果记表又失败置交易失败的策略,避免了给程序增加新的事务,就能保证数据的最终一致性。试想如果先维护Oracle数据库,如果成功了,后维护Redis数据库失败,然后记入待删除记录表又失败的话,此处就应该把整个流程放到同一个事务内,回滚或撤销对Oracle数据库用户数据的维护操作,不然会丢失应该删除的记录。而对于现在越来越广泛的数据分库存储,事务跨库的话很难做的事情。在单用户、单数据库环境下执行事务比较简单,但在分布式环境下,维护多个数据库的完整性就比较复杂。本实施例提出的策略避免了记入待删除记录表和处理Oracle数据库用户数据之间的事务一致性问题。同时也避免了无谓的Oracle数据库用户数据的写入和回滚或撤销,以及这些操作带来的oracle数据库的开销以及操作失败的问题。
综上,本申请为确保服务高可用而采用在客户数据读取和修改时弱一致性策略及相应的补偿机制。而且提供了客户数据修改算法和补偿批量程序算法。并且,对Redis数据库的典型CacheAside模式的改进,保证Redis数据库操作本身不影响正常业务流程,并可以对执行失败的Redis数据库操作进行溯源和补偿。
另外,需要说明的是,本实施例中的技术方案在日志监控服务器、消息队列集群、数据同步服务器中既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
本说明书中各个实施例采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似部分互相参见即可。对于实施例公开的装置而言,由于其与实施例公开的方法相对应,所以描述的比较简单,相关之处参见方法部分说明即可。
专业人员还可以进一步意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、计算机软件或者二者的结合来实现,为了清楚地说明硬件和软件的可互换性,在上述说明中已经按照功能一般性地描述了各示例的组成及步骤。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本申请的范围。
结合本文中所公开的实施例描述的方法或算法的步骤可以直接用硬件、处理器执行的软件模块,或者二者的结合来实施。软件模块可以置于随机存储器(RAM)、内存、只读存储器(ROM)、电可编程ROM、电可擦除可编程ROM、寄存器、硬盘、可移动磁盘、CD-ROM、或技术领域内所公知的任意其它形式的存储介质中。
对所公开的实施例的上述说明,使本领域专业技术人员能够实现或使用本申请。对这些实施例的多种修改对本领域的专业技术人员来说将是显而易见的,本文中所定义的一般原理可以在不脱离本申请的精神或范围的情况下,在其它实施例中实现。因此,本申请将不会被限制于本文所示的这些实施例,而是要符合与本文所公开的原理和新颖特点相一致的最宽的范围。
Claims (10)
1.一种数据库同步方法,其特征在于,包括:
获得数据处理指令,所述数据处理指令中至少包含待处理数据的第一标识;
删除电子设备对应的第一数据库中与所述第一标识相对应的第一数据;
在所述电子设备对应的第二数据库中,处理与所述第一标识相对应的第一数据;所述第二数据库与所述第一数据库关于数据库结构不同;
其中,所述第二数据库中被处理后的第一数据用于写入所述第一数据库,以使得所述第一数据库与所述第二数据库之间至少关于所述第一数据相一致。
2.根据权利要求1所述的方法,其特征在于,所述方法还包括:
获得数据读取指令,所述数据读取指令中至少包含待读取数据的第二标识;
在所述第一数据库中查找与所述第二标识相对应的第二数据;
如果在所述第一数据库中没有查找到与所述第二标识相对应的第二数据,在所述第二数据库中查找与所述第二标识相对应的第二数据;
如果在所述第二数据库中查找到与所述第二标识相对应的第二数据,将所述第二数据库中查找到的所述第二数据返回;
将所述第二数据库中查找到的所述第二数据写入所述第一数据库。
3.根据权利要求1或2所述的方法,其特征在于,在处理与所述第一标识相对应的第一数据之前,所述方法还包括:
判断所述第一数据库中的所述第一数据是否被删除成功;
如果所述第一数据库中的所述第一数据被删除成功,执行所述步骤:在所述电子设备对应的第二数据库中,处理与所述第一标识相对应的第一数据;
如果所述第一数据库中的所述第一数据没有被删除成功,在待删除记录表中记录所述第一数据对应的所述第一标识,执行所述步骤:在所述电子设备对应的第二数据库中,处理与所述第一标识相对应的第一数据;
其中,所述待删除记录表中的标识用于删除对应的数据。
4.根据权利要求3所述的方法,其特征在于,在待删除记录表中记录所述第一数据对应的所述第一标识之后,所述方法还包括:
判断所述待删除记录表中是否记录所述第一标识成功;
如果所述待删除记录表中记录所述第一标识成功,执行所述步骤:在所述电子设备对应的第二数据库中,处理与所述第一标识相对应的第一数据;
如果所述待删除记录表中记录所述第一标识失败,结束当前对所述数据处理指令的处理流程。
5.根据权利要求3所述的方法,其特征在于,所述方法还包括:
在所述待删除记录表对应的删除条件被满足的情况下,从所述待删除记录表中读取至少一个目标标识;
在所述第一数据库中删除与所述目标标识对应的目标数据;
其中,所述删除条件包括:计时器记录的当前时长到达预设的时长阈值;所述计时器在其记录的当前时长在到达所述时长阈值时重新计时。
6.根据权利要求5所述的方法,其特征在于,所述目标标识被存储在目标列表中;
其中,在所述第一数据库中删除与所述目标标识对应的目标数据,包括:
判断所述目标列表是否为空;
如果所述目标列表为空,结束当前对所述待删除记录表的处理流程;
如果所述目标列表不为空,按照所述目标列表,在所述第一数据库中删除与所述目标标识相对应的目标数据。
7.根据权利要求5所述的方法,其特征在于,在从所述待删除记录表中读取至少一个目标标识之前,所述方法还包括:
判断所述第一数据库是否处于目标状态,所述目标状态下的第一数据库能够进行数据读写;
如果所述第一数据库处于所述目标状态,执行所述步骤:从所述待删除记录表中读取至少一个目标标识;
如果所述第一数据库没有处于所述目标状态,结束当前对所述待删除记录表的处理流程。
8.根据权利要求2所述的方法,其特征在于,在所述第一数据库中查找与所述第二标识相对应的第二数据之前,所述方法还包括:
判断所述第一数据库是否处于目标状态,所述目标状态下的第一数据库能够进行数据读写;
如果所述第一数据库处于所述目标状态,执行所述步骤:在所述第一数据库中查找与所述第二标识相对应的第二数据;
如果所述第一数据库没有处于所述目标状态,结束当前对所述数据读取指令的处理流程。
9.一种数据库同步装置,其特征在于,包括:
指令获得单元,用于获得数据处理指令,所述数据处理指令中至少包含待处理数据的第一标识;
数据删除单元,用于删除电子设备对应的第一数据库中与所述第一标识相对应的第一数据;
数据处理单元,用于在所述电子设备对应的第二数据库中,处理与所述第一标识相对应的第一数据;所述第二数据库与所述第一数据库关于数据库结构不同;
数据写入单元,用于将所述第二数据库中被处理后的第一数据用于写入所述第一数据库,以使得所述第一数据库与所述第二数据库之间至少关于所述第一数据相一致。
10.一种电子设备,其特征在于,包括:
存储器,用于存储计算机程序以及所述计算机程序运行所产生的数据;
处理器,用于执行所述计算机程序,以实现:获得数据处理指令,所述数据处理指令中至少包含待处理数据的第一标识;删除电子设备对应的第一数据库中与所述第一标识相对应的第一数据;在所述电子设备对应的第二数据库中,处理与所述第一标识相对应的第一数据;所述第二数据库与所述第一数据库关于数据库结构不同;其中,所述第二数据库中被处理后的第一数据用于写入所述第一数据库,以使得所述第一数据库与所述第二数据库之间至少关于所述第一数据相一致。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210391243.7A CN115017229A (zh) | 2022-04-14 | 2022-04-14 | 数据库同步方法、装置及电子设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210391243.7A CN115017229A (zh) | 2022-04-14 | 2022-04-14 | 数据库同步方法、装置及电子设备 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN115017229A true CN115017229A (zh) | 2022-09-06 |
Family
ID=83066837
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202210391243.7A Pending CN115017229A (zh) | 2022-04-14 | 2022-04-14 | 数据库同步方法、装置及电子设备 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN115017229A (zh) |
-
2022
- 2022-04-14 CN CN202210391243.7A patent/CN115017229A/zh active Pending
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US6772155B1 (en) | Looking data in a database system | |
CN108664359B (zh) | 一种数据库恢复方法、装置、设备及存储介质 | |
US7139927B2 (en) | Journaling and recovery method of shared disk file system | |
EP2478442B1 (en) | Caching data between a database server and a storage system | |
US7584204B2 (en) | Fuzzy lookup table maintenance | |
US20150213100A1 (en) | Data synchronization method and system | |
WO2020181810A1 (zh) | 应用于集群内多级缓存的数据处理方法和装置 | |
JPH0212460A (ja) | 索引木への並列アクセスのためのデータ・アクセス方法およびデータ処理システム | |
WO2018040167A1 (zh) | 数据缓存方法及装置 | |
US11461267B2 (en) | Method, device and computer readable medium for accessing files | |
CN107092628B (zh) | 时间序列数据的处理方法和装置 | |
CN111708755A (zh) | 数据迁移方法、装置、系统、电子设备以及可读存储介质 | |
WO2013091167A1 (zh) | 日志存储方法及系统 | |
CN111694863B (zh) | 一种数据库缓存的刷新方法、系统和装置 | |
CN113239012B (zh) | 一种数据库迁移方法、装置、电子设备和存储介质 | |
US11061889B2 (en) | Systems and methods of managing manifest refresh in a database | |
US7051051B1 (en) | Recovering from failed operations in a database system | |
CN113590379A (zh) | Redis数据持久化方法及系统 | |
US7240065B2 (en) | Providing mappings between logical time values and real time values | |
US11003540B2 (en) | Method, server, and computer readable medium for index recovery using index redo log | |
CN111694806A (zh) | 一种事务日志的缓存方法、装置、设备和存储介质 | |
CN110134340B (zh) | 一种元数据更新的方法、装置、设备以及存储介质 | |
US7251660B2 (en) | Providing mappings between logical time values and real time values in a multinode system | |
CN114780489B (zh) | 一种实现分布式块存储底层gc的方法及装置 | |
CN115017229A (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 |