一种检测数据库数据一致性的方法、装置及数据库系统的制作方法

文档序号:6380268阅读:235来源:国知局
专利名称:一种检测数据库数据一致性的方法、装置及数据库系统的制作方法
技术领域
本发明涉及计算机应用领域,尤其涉及一种检测数据库数据一致性的方法、装置及数据库系统。
背景技术
对于大型且可靠性要求高的数据库系统,为了保证系统的正常运行,数据库系统采用建立主、备两套数据库的方式。同时,为了保证数据库访问的效率,数据库系统会缓存数据库中的数据以实现数据的快速访问,并且缓存数据与数据库实时保持一致。
在数据库系统运行过程中,主数据库和备用数据库进行周期或者实时的数据同步,但是,由于网络不稳定或者延时等原因,难以保证主数据库和备用数据库的一致性。当主数据库失效,由备用数据库接管数据提供数据服务,但是,由于主数据库和备用数据库的不一致性,使得数据库系统不能正常运行。
现有技术中,为了保证数据库系统的正常运行,数据库系统的每个应用程序独立检测主数据库和备用数据库的倒换,并在每个应用程序检测到主数据库和备用数据库倒换后,每个应用程序都将该应用程序对应的内存中的多份缓存数据与备用数据库中对应的数据进行比较,并将不一致的数据持久化到备份数据库中。这样的处理方式,没有统一的检测主数据库和备用数据库倒换的方法,同时,每个应用程序将该应用程序对应的所有缓存数据与备用数据库中对应的数据进行比较,使得数据库系统处理数据库倒换耗时长、效率低, 并且对资源的消耗较大。发明内容
本发明的实施例提供一种检测数据库数据一致性的方法、装置及数据库系统,可以提高数据库系统处理数据库倒换的效率、减少数据库系统对资源的消耗。
为达到上述目的,本发明的实施例采用如下技术方案
—方面,提供了一种检测数据库数据一致性的方法,该方法应用于数据库系统,该数据库系统至少包括一个主数据库和与所述主数据库对应的备用数据库,所述数据库被至少一个应用程序访问,该方法包括所述数据库系统更新每个应用程序访问的所述主数据库的数据表的第一更新标识和第二更新标识,所述第一更新标识指示与所述数据表对应的缓存中的数据表的更新状态,所述第二更新标识指示与所述数据表对应的备用数据库中的数据表的更新状态;在所述主数据库与备用数据库进行倒换后,将每个所述数据表的第一更新标识和第二更新标识进行比较,获得第一更新标识和第二更新标识不一致的第一数据表;对所述备用数据库和缓存中的与所述第一数据表对应的数据表进行一致性处理,以使得所述备用数据库和缓存中的数据同步。
第二方面,本发明实施例提供了一种检测数据库数据一致性的装置,该装置包括更新单元、获取单元和处理单元;所述更新单元,用于更新每个应用程序访问的所述主数据库的数据表的第一更新标识和第二更新标识,所述第一更新标识指示与所述数据表对应的缓存中的数据表的更新状态,所述第二更新标识指示与所述数据表对应的备用数据库中的数据表的更新状态;所述获取单元,用于在所述主数据库与备用数据库进行倒换后,将每个所述数据表的第一更新标识和第二更新标识进行比较,获得第一更新标识和第二更新标识不一致的第一数据表;所述处理单元,用于对所述备用数据库和缓存中的与所述第一数据表对应的数据表进行一致性处理,以使得所述备用数据库和缓存中的数据同步。
第三方面,本发明实施例提供了一种数据库系统,所述数据库系统包括至少一个主数据库、与所述主数据库对应的备用数据库、数据库访问装置、倒换监控装置和检测数据库数据一致性的装置;所述主数据库,用于存储应用程序需要访问的数据;所述备用数据库,用于当所述主数据库失效时,由所述备用数据库为所述应用程序提供数据;所述数据库访问装置,用于接收所述应用程序对所述主数据库或所述备用数据库的访问请求,根据所述访问请求从所述主数据库或所述备用数据库中获取对应的数据;所述倒换监控装置,用于监控所述主数据库与备用数据库是否倒换,并在所述主数据库与备用数据库倒换后,通知所述检测数据库数据一致性的装置进行数据一致性处理;所述检测数据库数据一致性的装置,用于更新每个应用程序访问的所述主数据库的数据表的第一更新标识和第二更新标识,所述第一更新标识指示与所述数据表对应的缓存中的数据表的更新状态,所述第二更新标识指示与所述数据表对应的备用数据库中的数据表的更新状态;所述检测数据库数据一致性的装置,还用于在所述倒换监控装置监控到所述主数据库与备用数据库进行倒换后,将每个所述数据表的第一更新标识和第二更新标识进行比较,获得第一更新标识和第二更新标识不一致的第一数据表;所述检测数据库数据一致性的装置,还用于对所述备用数据库和缓存中的与所述第一数据表对应的数据表进行一致性处理,以使得所述备用数据库和缓存中的数据同步。
可见,本发明实施例提供一种检测数据库一致性的方法、装置及数据库系统,该方法具体包括所述数据库系统更新每个应用程序访问的所述主数据库的数据表的第一更新标识和第二更新标识,在所述主数据库与备用数据库进行倒换后,所述数据库系统将每个所述数据表的第一更新标识和第二更新标识进行比较,获得第一更新标识和第二更新标识不一致的第一数据表,并对所述备用数据库和缓存中的与所述第一数据表对应的数据表进行一致性处理,以使得所述备用数据库和缓存中的数据同步。在主数据库和备用数据库倒换后,由于该数据库系统只对应用程序访问的数据的第一更新标识和第二更新标识进行比较检测,而不需要对数据库中的所有数据依次进行比较,从而,提高了数据库系统处理数据库倒换的效率、减小了数据库系统对资源的消耗。


为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图I为本发明实施例提供的一种检测数据库数据一致性的方法流程示意图2为本发明实施例提供的另一种检测数据库数据一致性的方法流程示意图3为本发明实施例提供的另一种检测数据库数据一致性的方法流程示意图4为本发明实施例提供的一种检测数据库数据一致性的装置结构示意图5为本发明实施例提供的另一种检测数据库数据一致性的装置结构示意图6为本发明实施例提供的一种数据库系统的结构示意图7为本发明实施例提供的一种数据库系统检测数据库数据一致性的交互示意图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
实施例一、
本发明实施例提供一种检测数据库数据一致性的方法,该方法应用于数据库系统,该数据库系统的数据库至少包括一个主数据库和所述主数据库对应的备用数据库,所述数据库被至少一个应用程序访问。所述每个应用程序在运行时需要访问主数据库中数据表,为了提高应用程序的处理速度,所述应用程序通常将要访问主数据库中的数据表预先缓存在运行所述应用程序的装置的缓存中。为了保证系统正常运行,所述数据库中的数据应当与所述缓存数据保持实时一致。例如,在主数据库和备用数据库未倒换时,缓存中的数据实时的与主数据库数据保持一致。所述主数据库也会周期或实时的将主数据库的数据发送给备用数据库,以使得主数据库与备用数据库的数据进行同步,但是由于网络不稳定或延迟不能保证主数据库和备用数据库数据完全实时同步,这样在主数据库和备用数据库倒换后,为了保证系统正常运行,需要对数据库数据的一致性进行检测,使得缓存数据与备用数据库的数据保持一致。具体的如图I所示,该方法具体包括
101、更新每个应用程序访问的所述主数据库的数据表的第一更新标识和第二更新标识,所述第一更新标识指示与所述数据表对应的缓存中的数据表的更新状态,所述第二更新标识指示与所述数据表对应的备用数据库中的数据表的更新状态。
所述更新状态包括以下信息中的至少一种信息指示该数据表已更新的信息和指示该数据表被更新的次数。
当所述应用程序在缓存中对访问的主数据库中的数据进行更改操作时,所述数据表的第一更新标识会根据对应的更改操作来改变,用以记录此次的更改操作。所述更改操作可以是对数据的删除、增加等操作,但不包括对数据的查询操作。在所述备用数据库与主数据库数据同步之后,所述第二更新标识更新为所述第一更新标识,用以表示所述备用数据库的数据和主数据库的数据、缓存中的数据保持同步的状态。在所述备用数据库与主数据库没有同步时,所述第二更新标识维持原有的状态值。
102、在所述主数据库和备用数据库进行倒换后,将所述每个数据表的第一更新标识和第二更新标识进行比较,获得第一更新标识和第二更新标识不一致的第一数据表。
所述数据库系统可以对所述主数据库和备用数据库进行倒换监控。
当所述数据库系统检测到所述主数据库和所述备用数据库倒换后,所述数据库系统将所述每个数据表的第一更新标识和第二更新标识进行比较,获得所述第一更新标识和第二更新标识不一致的第一数据表。所述第一数据表为缓存与备用数据库中数据不一致的数据表,所述数据库系统需要对缓存与备用数据库中的第一数据表对应的数据表进行一致性处理。
103、对所述备用数据库和缓存中的与所述第一数据表对应的数据表进行一致性处理,以使得所述备用数据库和缓存中的数据同步。
可见,本发明实施例提供一种检测数据库数据一致性的方法,所述数据库系统更新每个应用程序访问的所述主数据库的数据表的第一更新标识和第二更新标识,在所述主数据库与备用数据库进行倒换后,所述数据库系统将每个所述数据表的第一更新标识和第二更新标识进行比较,获得第一更新标识和第二更新标识不一致的第一数据表,并对所述备用数据库和缓存中的与所述第一数据表对应的数据表进行一致性处理,以使得所述备用数据库和缓存中的数据同步。这样在主数据库和备用数据库倒换后,由于该数据库系统只对应用程序访问的数据的第一更新标识和第二更新标识进行比较检测,而不需要对数据库中的所有数据依次进行比较,从而,提高了数据库系统处理数据库倒换的效率、减小了数据库系统对资源的消耗。
实施例二、
本发明实施例提供一种检测数据库一致性的方法,该方法应用于数据库系统。所述每个应用程序向所述数据库系统注册应用程序的标识、该应用程序需要访问的数据库的名称、该应用程序需要访问的每个数据库中的数据表的名称。所述数据库系统中存储有每个应用程序对应的第一特征表,所述第一特征表至少包括对应的应用程序的标识、该应用程序访问的数据库的名称、该应用程序访问的数据库中每个数据表的名称、该应用程序访问的每个数据表的第一更新标识和第二更新标识,这样每个数据表的所述第一更新标识和第二更新标识包含于对应的应用程序的第一特征表中。每个应用程序运行时,应用程序将访问的数据缓存到运行所述应用程序的装置的缓存中,应用程序访问对应数据库中数据是通过访问缓存数据来实现的。如图2所示,所述检测数据库数据一致性的方法具体包括
201、更新每个应用程序访问的所述主数据库的数据表的第一更新标识和第二更新标识,所述第一更新标识指示与所述数据表对应的缓存中的数据表的更新状态,所述第二更新标识指示与所述数据表对应的备用数据库中的数据表的更新状态。
所述更新状态包括以下信息中的至少一种信息指示该数据表已更新的信息和指示该数据表被更新的次数。
当所述应用程序在缓存中对访问的主数据库中的数据进行更改操作时,所述第一特定表中对应的每个数据的数据表的第一更新标识会根据对应的更改操作来改变,用以记录此次的更改操作。所述更改操作可以是对数据的删除、增加等操作,但不包括对数据的查询操作。在所述备用数据库与主数据库数据同步之后,所述第一特征表中的第二更新标识更新为所述第一特征表中的第一更新标识,用以表示所述备用数据库的数据和主数据库的数据、缓存中的数据保持同步的状态。在所述备用数据库与主数据库没有同步时,所述第一特征表中的第二更新标识维持原有的状态值。
可选的,所述第一特征表中还可以包括有第三更新标识,所述第三更新标识用于指示对应数据的数据表在所述主数据库中的更新状态。这样在主数据库和备用数据库同步时,所述主数据库可以仅将所述第三更新标识发生变化的数据表同步到所述备用数据库即可,同时将所述第二更新标识更新为第三更新标识,从而提高了主备数据库的同步速率。
202、在所述主数据库和备用数据库进行倒换后,对每个应用程序的第一特征表的第一更新标识和第二更新标识进行比较,获得第一更新标识和第二更新标识不一致的数据表的名称为第一数据表,以及存储该第一数据表的数据库的名称为第一数据库。
所述数据库系统可以对所述主数据库和备用数据库进行监控。所述数据库系统对所述主数据库和所述备用数据库的倒换监控可以是数据库系统中的一个监控应用程序,也可以是一个独立的监控装置。
所述监控应用程序或监控装置对主数据库和备用数据库的设备进行统一监控管理,当主数据库出现故障,所述数据库系统对所述主数据库和备用数据库进行切换后,所述监控应用程序或监控装置监控到所述主数据库和备用数据库切换后,会通知所述数据库系统和应用程序。
采用独立的监控应用程序或监控装置对该数据库系统包括的主数据库和备份数据库统一进行监控,相比较于现有技术中的数据库系统中,每个应用程序分别监控访问的主数据库和备份数据库进行倒换的技术方案,能够提高该数据库系统的工作效率,节省系统资源。
当所述数据库系统监测到所述主数据库和备用数据库倒换后,所述数据库系统将所述第一特定表中的每个数据表对应的第一更新标识和第二更新标识进行比较,获得第一数据表,所述第一数据表为第一特定表中的第一更新标识和第二更新标识不一致的数据表的名称。所述第一数据表为缓存中与备用数据库中数据不一致的数据表,所述数据库系统需要进行缓存和备用数据库中的第一数据表对应的数据表进行一致性处理。
203、对所述第一数据库对应的第一备用数据库中与所述第一数据表对应的数据表和所述第一数据库对应的缓存中的与所述第一数据表对应的数据表进行一致性处理。
当然,不同数据库系统对所述第一备用数据库和缓存中的第一数据表对应的数据表进行一致性处理的原则有所不同。
当对所述第一备用数据库和缓存中的第一数据表对应的数据表进行一致性处理是由所述数据库系统进行时,所述数据库系统可以根据获得的所述第一数据表以及所述第一数据库,可以将所述第一备用数据库的第一数据表对应的数据表的内容更新为所述缓存中的第一数据表对应的数据表的内容;当然所述数据库系统也可以将所述缓存中的第一数据表对应的数据表的内容更新为所述第一备用数据库中的第一数据表对应的数据表的内容,当然,也可以以其他方式对所述第一数据表对应的数据表进行处理,本发明实施例在此不作具体限定。
可选的,当对所述第一备用数据库和缓存中的第一数据表对应的数据表进行一致性处理是由数据库系统中访问该第一数据表对应的应用程序处理的,所述数据库系统向访问所述第一数据表的每个应用程序发送一致性处理消息,所述一致性处理消息包括所述第一数据表以及所述第一数据库的信息。
所述对应的应用程序接收到所述一致性处理消息后,对所述第一备用数据库中和所述缓存中的第一数据表对应的数据表进行一致性处理。
对于不同的数据库系统,所述一致性处理有所不同。具体处理过程可以参见上述数据库系统对所述第一备用数据库和缓存中的第一数据表对应的数据表进行一致性处理的过程,当然本发明实施例仅是示例性的说明,对此并不作具体限定。
可见,本发明实施例提供一种检测数据库数据一致性的方法,所述数据库系统更新每个应用程序访问的所述主数据库的数据表的第一更新标识和第二更新标识,若所述数据库系统检测到所述主数据库和备用数据库进行倒换,所述数据库系统将所述每个数据表的第一更新标识和第二更新标识进行比较,获得第一更新标识和第二更新标识不一致的第一数据表,并对所述备用数据库和缓存中的第一数据表对应的数据表进行一致性处理,以使得所述备用数据库和缓存中的数据同步。这样在主数据库和备用数据库倒换后,由于该数据库系统只对应用程序访问的数据的第一更新标识和第二更新标识进行比较检测,而不需要对数据库中的所有数据依次进行比较,从而,提高了数据库系统处理数据库倒换的效率、减小了数据库系统对资源的消耗。
实施例三、
本发明实施例提供了一种检测数据库数据一致性的方法,该方法应用于数据库系统。所述每个应用程序向所述数据库系统注册应用程序的标识、该应用程序需要访问的数据库的名称、该应用程序需要访问的每个数据库中的数据表的名称。所述数据库系统中存储有每个应用程序对应的第一特征表和第二特征表,所述第一特征表至少包括对应的应用程序的标识、该应用程序访问的数据库的名称、该应用程序访问的数据库中每个数据表的名称、该应用程序访问的每个数据表的第一更新标识,所述第二特征表至少包括对应的应用程序的标识、该应用程序访问的数据库的名称、该应用程序访问的数据库中每个数据表的名称和该应用程序访问的每个数据表的第二更新标识。每个应用程序运行时,应用程序通常将访问的数据缓存到运行所述应用程序的装置的缓存中,应用程序访问对应数据库中数据是通过访问缓存数据来实现的。如图3所示,所述检测数据库数据一致性的方法具体包括
301、更新每个应用程序访问的所述主数据库的数据表的第一更新标识和第二更新标识,所述第一更新标识指示与所述数据表对应的缓存中的数据表的更新状态,所述第二更新标识指示与所述数据表对应的备用数据库中的数据表的更新状态。
所述更新状态包括以下信息中的至少一种信息指示该数据表已更新的信息和指示该数据表被更新的次数。
在当所述应用程序在缓存中对访问的主数据库中的数据进行更改操作时,所述第一特征表中对应的数据表的第一更新标识会根据对应的更改操作来改变,用以记录此次的更改操作。所述更改操作可以是对数据的删除、增加等更改操作,但不包括对数据的查询操作。在所述备用数据库与主数据库数据同步之后,所述第二特征表中的第二更新标识更新为所述第一特征表中的第一更新标识,用以表示所述备用数据库的数据和主数据库的数据、缓存中的数据保持同步的状态。在所述备用数据库与主数据库没有同步时,所述第二特征表中的第二更新标识维持原有的状态值。
可选的,为了更方便主数据库和备用数据库进行数据同步,所述数据库系统还可以建立第三特征表,所述第三特征表至少包括对应的应用程序的标识、该应用程序访问的数据库的名称、该应用程序访问的数据库中每个数据表的名称和该应用程序访问的每个数据表的第三更新标识。所述第三更新标识用于指示对应数据表在所述主数据库中的更新状态。所述第三特征表也可以存储在所述数据库系统中。当每个应用程序更改对应的缓存中的数据时,数据库系统相应的更新第一更新标识和第三更新标识。当所述备用数据库与主数据库没有同步时,所述第二特征表中的第二更新标识维持原有的状态值。当备用数据库与主数据库同步时,所述数据库系统可以仅将所述第三更新标识发生变化的数据同步到所述备用数据库即可,同时将第二特征表更新为第三特征表。
需要说明的是,在该数据库系统中,若执行所述检测数据库数据一致性的方法的装置、所述运行应用程序的装置、主数据库和备用数据库分别为独立的装置中,所述第一特征表、第二特征表和第三特征表可以存储在所述运行应用程序的装置或所述执行所述检测数据库数据一致性的方法的装置中。当然第二特征表还可以直接存储在所述备用数据库中,所述第三特征表还可以存储在所述主数据库中。
这样,在所述第二特征表存储在所述备用数据库中,所述第三特征表存储在所述主数据库中时,当备用数据库与主数据库同步时,所述数据库系统可以仅将所述主数据库中的第三特征表中的所述第三更新标识发生变化的数据同步到所述备用数据库即可,同时将第二特征表更新为第三特征表。
302、若所述主数据库和备用数据库进行倒换后,根据所述每个应用程序第一特征表和第二特征表,对每个应用程序访问的数据表的第一更新标识和第二更新标识进行比较,获得第一更新标识和第二更新标识不一致的数据表的名称为第一数据表,以及存储该第一数据表的数据库的名称为第一数据库。
所述数据库系统对所述主数据库和备用数据库进行监控。所述数据库系统对所述主数据库和所述备用数据库的倒换监控可以是数据库系统中的一个监控应用程序,也可以是一个独立的监控装置。
根据不同的数据库系统,主数据库和备用数据库可以建立在同一设备上,也可以是不同的独立设备。
所述监控应用程序或监控装置对主数据库和备用数据库的设备进行统一监控管理,当主数据库出现故障,所述数据库系统对所述主数据库和备用数据库进行切换后,所述监控应用程序或监控装置监控到所述主数据库和备用数据库切换后,会通知所述数据库系统。
采用独立的监控应用程序或监控装置对该数据库系统包括的主数据库和备份数据库统一进行监控,相比较于现有技术中的数据库系统中,每个应用程序分别监控访问的主数据库和备份数据库进行倒换的技术方案,能够提高该数据库系统的工作效率,节省系统资源。
当所述数据库系统监测到所述主数据库和备用数据库倒换后,所述数据库系统将所述第一特定表中的每个数据表对应的第一更新标识和第二特定表中的第二更新标识进行比较,获得所述第一特定表中的第一更新标识和第二特征表中的第二更新标识不一致的第一数据表。所述第一数据表为缓存与备用数据库数据不一致的数据表对应的所述主数据库的数据表,所述数据库系统需要对缓存和备用数据库中的第一数据表对应的数据表进行一致性处理。
当然,当所述第二特征表存储在备用数据库中时,在所述数据库系统中的根据所述每个应用程序第一特征表和第二特征表,对每个应用程序访问的数据表的第一更新标识和第二更新标识进行比较之前,还需要从备用数据库中获取所述第二特征表。
303、对所述第一数据库对应的第一备用数据库中与所述第一数据表对应的数据表和所述第一数据库对应的缓存中的与所述第一数据表对应的数据表进行一致性处理。
当然,不同数据库系统对所述第一备用数据库和缓存中的第一数据表对应的数据表进行一致性处理的原则有所不同。
当对所述第一备用数据库和缓存中的第一数据表对应的数据表进行一致性处理是由所述数据库系统进行时,所述数据库系统可以根据获得的所述第一数据表以及所述第一数据库,可以将所述第一备用数据库的第一数据表对应的数据表的内容更新为所述缓存中的第一数据表对应的数据表的内容;也可以将所述缓存中的第一数据表对应的数据表的内容更新为所述第一备用数据库中的第一数据表对应的数据表的内容,当然,也可以以其他方式对所述第一数据表对应的数据表进行处理,本发明实施例在此不作具体限定。
可选的,当对所述第一备用数据库和缓存中的第一数据表对应的数据表进行一致性处理是由数据库系统中访问该第一数据表对应的应用程序处理的,所述数据库系统向访问所述第一数据表的每个应用程序发送一致性处理消息,所述一致性处理消息包括所述第一数据表以及所述第一数据库的信息。
所述对应的应用程序接收到所述一致性处理消息后,对所述第一备用数据库中和所述缓存中的第一数据表对应的数据表进行一致性处理。
对于不同的数据库系统,所述一致性处理有所不同。具体处理过程参见上述数据库系统对所述第一备用数据库和缓存中的第一数据表对应的数据表进行一致性处理的过程,当然本发明实施例仅是示例性的说明,对此并不作具体限定。
本发明实施例提供一种检测数据库数据一致性的方法,所述数据库系统更新每个应用程序访问的所述主数据库的数据表的第一更新标识和第二更新标识,在所述数据库系统检测到所述主数据库和备用数据库进行倒换后,所述数据库系统将所述每个数据表的第一更新标识和第二更新标识进行比较,获得第一更新标识和第二更新标识不一致的第一数据表,并对所述备用数据库和缓存中的第一数据表对应的数据表进行一致性处理,以使得所述备用数据库和缓存中的数据同步。这样在主数据库和备用数据库倒换后,由于该数据库系统只对应用程序访问的数据的第一更新标识和第二更新标识进行比较检测,而不需要对数据库中的所有数据依次进行比较,从而,提高了数据库系统处理数据库倒换的效率、减小了数据库系统对资源的消耗。
实施例四、
本发明实施例提供一种检测数据库数据一致性的装置,如图4所示,该装置用于检测至少一个主数据库和所述主数据库对应的备用数据库的数据一致性,所述主数据库被至少一个应用程序访问。所述每个应用程序在运行时需要访问主数据库中数据表,为了提高应用程序的处理速度,所述应用程序将要访问主数据库中的数据表预先缓存在运行所述应用程序的装置的缓存中。为了保证系统正常运行,所述数据库中的数据应当与所述缓存数据保持实时一致。例如,在主数据库和备用数据库未倒换时,缓存数据实时的与主数据库数据保持一致。所述主数据库也会周期或实时的将主数据库的数据发送给备用数据库,以使得主数据库与备用数据库的数据进行同步,但是由于网络不稳定或延迟不能保证主数据库、备用数据库数据完全实时同步,这样在主数据库和备用数据库倒换后,为了保证系统正常运行,需要对数据库数据的一致性进行检测,使得缓存数据与备用数据库的数据保持一致。具体的,该装置40包括更新单元41、获取单元42和处理单元43。
所述更新单元41,用于更新每个应用程序访问的所述主数据库的数据表的第一更新标识和第二更新标识,所述第一更新标识指示与所述数据表对应的缓存中的数据表的更新状态,所述第二更新标识指示与所述数据表对应的备用数据库中的数据表的更新状态。
所述更新状态包括以下信息中的至少一种信息指示该数据表已更新的信息和指示该数据表被更新的次数。
在所述应用程序在缓存中对访问的主数据库中的数据进行更改操作时,所述更新单元41更新对应数据的数据表的第一更新标识,用以记录此次的更改操作。所述更改操作可以是对数据的删除、增加等操作,但不包括对数据的查询操作。在所述备用数据库与主数据库数据同步之后,所述更新单元41将所述第二更新标识更新为所述第一更新标识,用以表示所述备用数据库的数据和主数据库的数据、缓存中的数据保持同步的状态。在所述备用数据库与主数据库没有同步时,所述第二更新标识维持原有的状态值。
根据不同的数据库系统,主数据库和备用数据库可以建立在同一设备上,也可以是不同的独立设备。
所述监控应用程序或监控装置对主数据库和备用数据库的设备进行统一监控管理,当主数据库出现故障,所述数据库系统对所述主数据库和备用数据库进行切换后,所述监控应用程序或监控装置监控到所述主数据库和备用数据库切换后,会通知所述数据库系统。
采用独立的监控应用程序或监控装置对该数据库系统包括的主数据库和备份数据库统一进行监控,相比较于现有技术中的数据库系统中,每个应用程序分别监控访问的主数据库和备份数据库进行倒换的技术方案,能够提高该数据库系统的工作效率,节省系统资源。
所述获取单元42,用于在所述主数据库和备用数据库进行倒换后,将所述每个数据表的第一更新标识和第二更新标识进行比较,获得第一更新标识和第二更新标识不一致的第一数据表。
在所述主数据库和所述备用数据库倒换后,所述获取单元42将所述每个数据表的第一更新标识和第二更新标识进行比较,获得所述第一更新标识和第二更新标识不一致的第一数据表。所述第一数据表为缓存中与备用数据库中数据不一致的数据表对应的所述主数据库的数据表,所述处理单元43需要对缓存和备用数据库中的第一数据表对应的数据表进行一致性处理。
所述处理单元43,用于对所述备用数据库和缓存中与所述第一数据表对应的数据表进行一致性处理,以使得所述备用数据库和缓存中的数据同步。
根据不同数据库系统的一致性处理的原则不同,所述处理单元43,可以具体用于将所述备用数据库中的第一数据表对应的数据表的内容更新为所述缓存中的第一数据表的内容。
所述处理单元43,还可以具体用于将所述缓存中的第一数据表对应的数据表的内容更新为所述备用数据库中的第一数据表的内容。
可选的,每个数据表的所述第一更新标识和第二更新标识包含于与应用程序对应的第一特征表中,所述第一特征表至少包括所述应用程序的标识、所述应用程序访问的主数据库的名称、所述应用程序访问的主数据库中的每个数据表的名称、所述应用程序访问的每个数据表的第一更新标识和第二更新标识;所述装置40还包括存储单元44。
所述存储单元44,用于存储所述第一特征表。
此时,当所述应用程序在缓存中对访问的主数据库中的数据进行更改操作时,所述更新单元41更新第一特定表中对应的每个数据表的第一更新标识,用以记录此次的更改操作。所述更改操作可以是对数据的删除、增加等操作,但不包括对数据的查询操作。在所述备用数据库与主数据库数据同步之后,所述更新单元41将所述第一特征表中的第二更新标识更新为所述第一更新标识,用以表示所述备用数据库的数据和主数据库的数据、 缓存中的数据保持同步的状态。在所述备用数据库与主数据库没有同步时,所述第一特征表中的第二更新标识维持原有的状态值。
可选的,所述第一特征表中还包括有第三更新标识,所述第三更新标识用于指示对应数据的数据表在所述主数据库中的更新状态。这样在主数据库和备用数据库同步时, 所述主数据库可以仅将所述第三更新标识发生变化的数据表同步到所述备用数据库即可, 同时将所述第二更新标识更新为第三更新标识,从能提高了主备数据库的同步速率。
所述获取单元42,具体用于在所述主数据库和备用数据库倒换后,根据所述每个应用程序第一特征表和第二特征表,对每个应用程序访问的数据表的第一更新标识和第二更新标识进行比较,获得第一更新标识和第二更新标识不一致的数据表的名称为第一数据表,以及存储该第一数据表的数据库的名称为第一数据库。
在所述主数据库和备用数据库倒换后,所述获取单元42将所述第一特定表中的每个数据表对应的第一更新标识和第二更新标识进行比较,获得第一数据表,所述第一数据表为第一特定表中的第一更新标识和第二更新标识不一致的数据表的名称。所述第一数据表为缓存中与备用数据库中数据不一致的数据表,所述处理单元43需要进行缓存和备用数据库中的第一数据表对应的数据表进行一致性处理。
所述处理单元43,具体用于对所述第一数据库对应的第一备用数据库中与所述第一数据表对应的数据表和所述第一数据库对应的缓存中的与所述第一数据表对应的数据表进行一致性处理。
当然,不同的数据库系统一致性处理原则有所不同。具体的处理过程参见实施例二所述的描述,本发明实施例在此不再赘述。
可选的,所述第一更新标识和第二更新标识分别包含于与应用程序对应的第一特征表和第二特征表中,所述第一特征表至少包括所述应用程序的标识、所述应用程序访问的主数据库的名称、所述应用程序访问的主数据库中的每个数据表的名称和所述应用程序访问的每个数据表的第一更新标识,所述第二特征表至少包括所述应用程序的标识、所述应用程序访问的主数据库的名称、所述应用程序访问的主数据库中的每个数据表的名称和所述应用程序访问的每个数据表的第二更新标识。所述存储单元44,还用于存储所述第一特征表和第二特征表。
此时,在当所述应用程序在缓存中对访问的主数据库中的数据进行更改操作时, 所述更新单元41更新第一特定表中对应的数据表的第一更新标识,用以记录此次的更改操作。所述更改操作可以是对数据的删除、增加等操作,但不包括对数据的查询操作。在所述备用数据库与主数据库数据同步之后,所述更新单元41将所述第二特征表中的第二更新标识更新为所述第一特征表中的第一更新标识,用以表示所述备用数据库的数据和主数据库的数据、缓存中的数据保持同步的状态。在所述备用数据库与主数据库没有同步时,所述第二特征表中的第二更新标识维持原有的状态值。
可选的,为了更方便主数据库和备用数据库进行数据同步,所述存储单元44还存储有第三特征表,所述第三特征表至少包括对应的应用程序的标识、该应用程序访问的数据库的名称、该应用程序访问的数据库中每个数据表的名称和该应用程序访问的每个数据表的第三更新标识。所述第三更新标识用于指示所述每个数据表在所述主数据库中的更新状态。当每个应用程序对对应的缓存中的数据进行更改操作时,所述更新单元41更新第一更新标识和第三更新标识。当所述备用数据库与主数据库没有同步时,所述第二特征表中的第二更新标识维持原有的状态值。当备用数据库与主数据库同步时,所述更新单元41将第二特征表更新为第三特征表。所述获取单元42,具体用于在所述主数据库和备用数据库进行倒换后,根据所述每个应用程序第一特征表和第二特征表,对每个应用程序访问的数据表的第一更新标识和第二更新标识进行比较,获得第一更新标识和第二更新标识不一致的数据表的名称为第一数据表,以及存储该第一数据表的数据库的名称为第一数据库。
在所述主数据库和备用数据库倒换后,所述获取单元42将所述第一特定表中的每个数据表对应的第一更新标识和第二特定表中的第二更新标识进行比较,获得所述第一特定表中的第一更新标识和第二特征表中的第二更新标识不一致的第一数据表。所述第一数据表为缓存与备用数据库中不一致的数据表对应的所述主数据库的数据表,所述处理单元43需要进行缓存和备用数据库中的第一数据表对应的数据表进行一致性处理。
所述处理单元43,具体用于对所述第一数据库对应的第一备用数据库中与所述第一数据表对应的数据表和所述第一数据库对应的缓存中的与所述第一数据表对应的数据表进行一致性处理。
当然,不同的数据库系统一致性处理原则有所不同。具体的处理过程参见实施例三所述的描述,本发明实施例在此不再赘述。
本发明实施例提供一种检测数据库数据一致性的装置,所述更新单元更新每个应用程序访问的所述主数据库的数据表的第一更新标识和第二更新标识,在所述主数据库和备用数据库进行倒换后,所述获取单元将所述每个数据表的第一更新标识和第二更新标识进行比较,获得第一更新标识和第二更新标识不一致的第一数据表,所述处理单元对所述备用数据库和缓存中的第一数据表对应的数据表进行一致性处理,以使得所述备用数据库和缓存中的数据同步。这样在主数据库和备用数据库倒换后,由于该获取单元只对应用程序访问的数据的第一更新标识和第二更新标识进行比较检测,而不需要对数据库中的所有数据依次进行比较,从而,提高了数据库系统处理数据库倒换的效率、减小了数据库系统对资源的消耗。
实施例五、
本发明实施例提供一种检测数据库数据一致性的装置,如图5所示,该装置70包括存储器71和处理器72。
其中,所述存储器71至少存储一个主数据库和所述主数据库对应的备用数据库, 所述数据库被至少一个应用程序访问。所述每个应用程序在运行时需要访问主数据库中数据表,为了提高应用程序的处理速度,所述应用程序将要访问主数据库中的数据表预先缓存在缓存中。为了保证系统正常运行,所述数据库中的数据应当与所述缓存数据保持实时一致。例如,在主数据库和备用数据库未倒换时,缓存数据实时的与主数据库数据保持一致。所述主数据库也会周期或实时的将主数据库的数据发送给备用数据库,以使得主数据库与备用数据库的数据进行同步,但是由于网络不稳定或延迟不能保证主数据库、备用数据库数据完全实时同步,这样在主数据库和备用数据库倒换后,为了保证系统正常运行,需要对数据库数据的一致性进行检测,使得缓存数据与备用数据库的数据保持一致。
所述处理器72,用于更新每个应用程序访问的所述主数据库的数据表的第一更新标识和第二更新标识,所述第一更新标识指示与所述数据表对应的缓存中的数据表的更新状态,所述第二更新标识指示与所述数据表对应的备用数据库中的数据表的更新状态。
所述更新状态包括以下信息中的至少一种信息指示该数据表已更新的信息和指示该数据表被更新的次数。
在当所述应用程序要对访问的数据库进行更改操作时,所述处理器72更新对应数据的数据表的第一更新标识,用以记录此次的更改操作。所述更改操作可以是对数据的删除、增加等操作,但不包括对数据的查询操作。在所述备用数据库与主数据库数据同步之后,所述处理器72将所述第二更新标识更新为所述第一更新标识,用以表示所述备用数据库的数据和主数据库的数据、缓存中的数据保持同步的状态。在所述备用数据库与主数据库没有同步时,所述第二更新标识维持原有的状态值。
根据不同的数据库系统,主数据库和备用数据库可以建立在同一设备上,也可以是不同的独立设备。
所述监控应用程序或监控装置对主数据库和备用数据库的设备进行统一监控管理,当主数据库出现故障,所述数据库系统对所述主数据库和备用数据库进行切换后,所述监控应用程序或监控装置监控到所述主数据库和备用数据库切换后,会通知所述数据库系统。
采用独立的监控应用程序或监控装置对该数据库系统包括的主数据库和备份数据库统一进行监控,相比较于现有技术中的数据库系统中,每个应用程序分别监控访问的主数据库和备份数据库进行倒换的技术方案,能够提高该数据库系统的工作效率,节省系统资源。
所述处理器72,还用于在所述主数据库和备用数据库进行倒换后,将所述每个数据表的第一更新标识和第二更新标识进行比较,获得第一更新标识和第二更新标识不一致的第一数据表。
在所述主数据库和所述备用数据库倒换后,所述获处理器72将所述每个数据表的第一更新标识和第二更新标识进行比较,获得所述第一更新标识和第二更新标识不一致的第一数据表。所述第一数据表为缓存中与备用数据库中数据不一致的数据表,所述处理器72需要对缓存和备用数据库中的第一数据表对应的数据表进行一致性处理。
所述处理器72,还用于对所述备用数据库和缓存中与所述第一数据表对应的数据表进行一致性处理,以使得所述备用数据库和缓存中的数据同步。
根据不同数据库系统的一致性处理的原则不同,所述处理器72,可以具体用于将所述备用数据库中的第一数据表的内容更新为所述缓存中的第一数据表的内容;或者,具体用于将所述缓存中的第一数据表的内容更新为所述备用数据库中的第一数据表的内容。
存储器71还用于存储处理器72需要执行的程序或处理器72执行程序过程中的中间结果等。
需说明的是,图5所示存储器71与处理器72直接连接,在本发明其它一些实施例中,存储器71与处理器72以及该装置70的其它模块还可以通过总线进行连接,该总线可以是 ISA(Industry StandardArchitecture,工业标准体系结构)总线、PCI (Peripheral Component,外部设备互连)总线或 EISA (Extended Industry Standard Architecture,扩展工业标准体系结构)总线等。所述总线可以是一条或多条物理线路,当是多条物理线路时可以分为地址总线、数据总线、控制总线等。
另外,对于本领域普通技术人员而言,处理器72和存储器71的具体实现可以参考前述实施例所述,在此不再赘述。
可见,本发明实施例提供一种检测数据库数据一致性的装置,所述处理器更新每个应用程序访问的所述主数据库的数据表的第一更新标识和第二更新标识,在所述主数据库和备用数据库进行倒换后,所述处理器将所述每个数据表的第一更新标识和第二更新标识进行比较,获得第一更新标识和第二更新标识不一致的第一数据表,所述处理器对所述备用数据库和缓存中的第一数据表对应的数据表进行一致性处理,以使得所述备用数据库和缓存中的数据同步。这样在主数据库和备用数据库倒换后,由于该获取单元只对应用程序访问的数据的第一更新标识和第二更新标识进行比较检测,而不需要对数据库中的所有数据依次进行比较,从而,提高了数据库系统处理数据库倒换的效率、减小了数据库系统对资源的消耗。
实施例六、
本发明实施例提供一种数据库系统。如图6所示,所述数据库系统50包括至少一个主数据库51、与所述主数据库对应的备用数据库52、数据库访问装置53、倒换监控装置54、检测数据库数据一致性的装置55。
所述主数据库51,用于存储应用程序需要访问的数据。
所述备用数据库52,当所述主数据库失效时,由所述备用数据库为所述应用程序提供数据。
所述数据库访问装置53,用于接收所述应用程序对所述主数据库或所述备用数据库的访问请求,根据所述访问请求从所述主数据库或所述备用数据库中获取对应的数据。
所述倒换监控装置54,用于监控所述主数据库与备用数据库是否倒换,并在所述主数据库与备用数据库倒换后,通知所述检测数据库数据一致性的装置进行数据一致性处理。
所述装置55用于当所述应用程序通过数据库访问装置对访问的数据表进行更新操作时,更新第一更新标识;当所述主数据库51和备用数据库52同步后,更新第二更新标识;并当所述倒换监控装置54监控到所述主数据库51和备用数据库52进行倒换后,获取第一更新标识和第二更新标识不一致的第一数据表、存储所述第一数据表的第一数据库、 所述第一数据表对应的应用程序的标识;然后,所述装置55可以直接对备用数据库52和缓存中与所述第一数据表对应的数据表进行一致性处理,也可以向所述第一数据表对应的应用程序发送一致性处理消息,使得所述对应的应用程序对备用数据库52和缓存中与所述第一数据表对应的数据表进行一致性处理。
所述数据库访问装置53、倒换监控装置54、装置55可以是集成在同一硬件上,当然也可以是数据库访问装置中的一个或多个应用模块,也可以是独立的装置。
具体的,所述数据库系统中的主数据库51、备用数据库52、数据库访问装置53、倒换监控装置54、检测数据库数据一致性的装置55之间的工作过程如图7所示,具体包括
601、所述每个应用程序向所述数据库访问装置53注册所述应用程序的标识、所述应用程序访问的数据表的名称、存储所述数据表的数据库的名称。
602、所述应用程序向所述数据库访问装置53发送访问请求,请求所述主数据库的数据表。
603、所述数据库访问装置53接收所述访问请求,从所述主数据库中获取所述访问请求的数据表发送给所述应用程序。
所述应用程序将从所述主数据库访问的数据通常缓存到缓存中。
604、所述应用程序对访问的数据进行更改操作。
605、所述应用程序指示所述装置55更新所述数据对应的数据表的第一更新标识,所述第一更新标识指示所述数据表在缓存中的更新状态。
606、所述主数据库51和备用数据库52同步。
607、所述备用数据库52指示所述装置55更新第二更新标识,所述第二更新标识指示所述数据表在所述备用数据库中的更新状态。
具体的,上述步骤606和607中的所述更新状态包括以下信息中的至少一种信息 指示该数据表已更新的信息和指示该数据表被更新的次数。
所述检测数据库数据一致性装置55中存储第一特征表,所述第一特征表至少包括对应的应用程序的标识、该应用程序访问的数据库的名称、该应用程序访问的数据库中每个数据表的名称、该应用程序访问的每个数据表的第一更新标识和第二更新标识,这样每个数据表的所述第一更新标识和第二更新标识包含于对应的应用程序的第一特征表中。
进一步的,所述第一特征表中还包括有第三更新标识,所述第三更新标识用于指示存储对应数据的数据表在所述主数据库51中的更新状态。这样在主数据库51和备用数据库52同步时,所述主数据库51可以仅将所述第三更新标识发生变化的数据表同步到所述备用数据库52即可,同时将所述第二更新标识更新为第三更新标识,从而提高了主备数据库的同步速率。
可选的,所述检测数据库数据一致性的装置55存储第一特征表和第二特征表,所述第一特征表至少包括对应的应用程序的标识、该应用程序访问的数据库的名称、该应用程序访问的数据库中每个数据表的名称、该应用程序访问的每个数据表的第一更新标识, 所述第二特征表至少包括对应的应用程序的标识、该应用程序访问的数据库的名称、该应用程序访问的数据库中每个数据表的名称和该应用程序访问的每个数据表的第二更新标识。
进一步的,为了更方便主数据库51和备用数据库52进行数据同步,所述检测数据库数据一致性的装置55还存储有第三特征表,所述第三特征表至少包括对应的应用程序的标识、该应用程序访问的数据库的名称、该应用程序访问的数据库中每个数据表的名称和第三更新标识,所述第三更新标识用于指示对应数据在所述主数据库51中的更新状态。 当每个应用程序对访问的数据进行更改时,装置55相应的更新第一更新标识和主数据库述备用数据库52与主数据库51没有同步时,所述第二特征表中的第二更新标识维持原有的状态值。当备用数据库52与主数据库51同步时,所述主数据库51可以仅将所述第三更新标识发生变化的数据同步到所述备用数据库52即可,同时将第二特征表更新为第三特征表。
每个应用程序运行时,应用程序将访问的数据缓存到该数据库系统的缓存中,应用程序访问对应数据库中数据是通过访问缓存数据来实现的。
当所述应用程序在缓存中对访问的主数据库中的数据进行更改操作时,所述检测数据库数据一致性的装置55更新所述第一特定表中存储的对应的每个数据的数据表的第一更新标识,用以记录此次的更改操作。
在所述备用数据库52与主数据库51数据同步之后,所述装置55将所述第二更新标识更新为所述第一特征表中的第一更新标识,用以表示所述备用数据库52的数据和主数据库51的数据、缓存中的数据保持同步的状态。在所述备用数据库52与主数据库51没有同步时,所述第二更新标识维持原有的状态值。
当主数据库51和备用数据库52进行实时或周期更新时,所述检测数据库数据一致性的装置55更新第二更新标识。
608、所述倒换监控装置54监控到所述主数据库51和备用数据库52倒换。
609、所述倒换监控装置54通知所述检测数据库数据一致性的装置55进行备用数据库52和缓存数据的一致性处理。
所述倒换监控装置54对主数据库51和备用数据库52的设备进行统一监控管理, 当主数据库51出现故障,所述数据库系统对所述主数据库51和备用数据库52进行切换后,所述倒换监控装置54监控到所述主数据库51和备用数据库52切换后,会通知所述检测数据库数据一致性的装置55。
采用独立的倒换监控装置54对该数据库系统包括的主数据库51和备份数据库52 统一进行监控,相比较于现有技术中的数据库系统中,每个应用程序分别监控访问的主数据库51和备份数据库52进行倒换的技术方案,能够提高该数据库系统的工作效率,节省系统资源。
当所述倒换监控装置54检测到所述主数据库51和备用数据库52倒换时,所述倒换监控装置54通知所述检测数据库数据一致性的装置55进行备用数据库52和缓存数据的一致性处理。
610、所述检测数据库数据一致性的装置55对备用数据库52和缓存数据进行一致性处理。
具体的,首先所述检测数据库数据一致性的装置55比较所述第一更新标识和第二更新标识,获取所述第一更新标识和第二更新标识不一致的第一数据表、所述第一数据表对应的第一数据库、所述第一数据表对应的应用程序的标识。
然后,所述检测数据库数据一致性的装置55对所述备用数据库52和缓存中的第一数据表对应的数据表进行一致性处理。
所述检测数据库数据一致性的装置55对所述备用数据库52和缓存中的第一数据表对应的数据表进行一致性处理时,所述检测数据库数据一致性的装置55将所述备用数据库52中与所述第一数据库中的第一数据表对应的数据表的内容更新为所述缓存中的与所述第一数据库中的第一数据表对应的数据表的内容。所述检测数据库数据一致性的装置 55也可以将所述缓存中的与所述第一数据库中的第一数据表对应的数据表的内容更新为所述备用数据库52中的与所述第一数据库中的第一数据表对应的数据表的内容。
可选的,当所述检测数据库数据一致性的装置55比较所述第一更新标识和第二更新标识,获取所述第一更新标识和第二更新标识不一致的第一数据表、所述第一数据表对应的第一数据库、所述第一数据表对应的应用程序的标识之后,所述检测数据库数据一致性的装置55可以向所述第一数据表对应的应用程序标识对应的应用程序发送第一数据表以及所述第一数据表对应的第一数据库。所述应用程序对所述备用数据库和缓存中与所述第一数据表对应的数据表进行一致性处理,以使得所述备用数据库52和缓存中的数据同步。
所述应用程序将所述备用数据库52中与所述第一数据库中的第一数据表对应的数据表的内容更新为所述缓存中的与所述第一数据库中的第一数据表对应的数据表的内容。所述应用程序也可以将所述缓存中的与所述第一数据库中的第一数据表对应的数据表的内容更新为所述备用数据库52中的与所述第一数据库中的第一数据表对应的数据表的内容。
本发明实施例提供一种数据库系统,所述每个应用程序向所述数据库访问装置注册所述应用程序的标识、所述应用程序访问的数据表的名称、存储所述数据表的数据库的名称;当所述应用程序对所述数据库中的数据进行更改操作时,所述检测数据库数据一致性的装置更新所述数据对应的数据表的第一更新标识,当所述主数据库和备用数据库同步时,所述检测数据库数据一致性的装置更新第二更新标识;当所述倒换监控装置监控到所述主数据库和备用数据库倒换时,通知所述检测数据库数据一致性的装置进行备用数据库和缓存数据的一致性处理;所述检测数据库数据一致性的装置比较所述第一更新标识和第二更新标识,获取所述第一更新标识和第二更新标识不一致的第一数据表、所述第一数据表对应的第一数据库、所述第一数据表对应的应用程序的标识;所述检测数据库数据一致性的装置对所述备用数据库和缓存中的第一数据表对应的数据表进行一致性处理。这样在主数据库和备用数据库倒换后,由于检测数据库数据一致性的装置只对应用程序访问的数据的第一更新标识和第二更新标识进行比较检测,而不需要对数据库中的所有数据依次进行比较,从而,提高了数据库系统处理数据库倒换的效率、减小了数据库系统对资源的消耗。
需说明的是,以上所描述的装置实施例仅仅是示意性的,其中所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。另外,本发明提供的装置实施例附图中,模块之间的连接关系表示它们之间具有通信连接,具体可以实现为一条或多条通信总线或信号线。本领域普通技术人员在不付出创造性劳动的情况下,即可以理解并实施。
通过以上的实施方式的描述,所属领域的技术人员可以清楚地了解到本发明可借助软件加必需的通用硬件的方式来实现,当然也可以通过专用硬件包括专用集成电路、专用CPU、专用存储器、专用元器件等来实现。一般情况下,凡由计算机程序完成的功能都可以很容易地用相应的硬件来实现,而且,用来实现同一功能的具体硬件结构也可以是多种多样的,例如模拟电路、数字电路或专用电路等。但是,对本发明而言更多情况下软件程序实现是更佳的实施方式。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在可读取的存储介质中,如计算机的软盘,U盘、移动硬盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM, Random Access Memory)、磁碟或者光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述的方法。
以上所述,仅为本发明的具体实施方式
,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应以所述权利要求的保护范围为准。
权利要求
1.ー种检测数据库数据一致性的方法,该方法应用于数据库系统,该数据库系统至少包括一个主数据库和与所述主数据库对应的备用数据库,所述数据库被至少ー个应用程序访问,其特征在于,该方法包括 更新每个应用程序访问的所述主数据库的数据表的第一更新标识和第二更新标识,所述第一更新标识指示与所述数据表对应的缓存中的数据表的更新状态,所述第二更新标识指示与所述数据表对应的备用数据库中的数据表的更新状态; 在所述主数据库与备用数据库进行倒换后,将每个所述数据表的第一更新标识和第二更新标识进行比较,获得第一更新标识和第二更新标识不一致的第一数据表; 对所述备用数据库和缓存中的与所述第一数据表对应的数据表进行一致性处理,以使得所述备用数据库和缓存中的数据同歩。
2.根据权利要求I所述的方法,其特征在于,每个数据表的所述第一更新标识和第二更新标识包含于与应用程序对应的第一特征表中,所述第一特征表至少包括所述应用程序的标识、所述应用程序访问的主数据库的名称、所述应用程序访问的主数据库中的每个数据表的名称、所述应用程序访问的每个数据表的第一更新标识和第二更新标识; 所述将所述每个数据表的第一更新标识和第二更新标识进行比较,获得第一更新标识和第二更新标识不一致的第一数据表具体包括 对每个应用程序的第一特征表的第一更新标识和第二更新标识进行比较,获得第一更新标识和第二更新标识不一致的数据表为第一数据表,以及存储该第一数据表的数据库为第一数据库; 所述对所述备用数据库和缓存中的与所述第一数据表对应的数据表进行一致性处理,以使得所述备用数据库和缓存中的数据同步具体包括 对所述第一数据库对应的第一备用数据库中与所述第一数据表对应的数据表和所述第一数据库对应的缓存中的与所述第一数据表对应的数据表进行一致性处理。
3.根据权利要求I所述的方法,其特征在于,所述第一更新标识和第二更新标识分别包含于与应用程序对应的第一特征表和第二特征表中,所述第一特征表至少包括所述应用程序的标识、所述应用程序访问的主数据库的名称、所述应用程序访问的主数据库中的每个数据表的名称和所述应用程序访问的每个数据表的第一更新标识,所述第二特征表至少包括所述应用程序的标识、所述应用程序访问的主数据库的名称、所述应用程序访问的主数据库中的每个数据表的名称和所述应用程序访问的每个数据表的第二更新标识; 所述将所述每个数据表的第一更新标识和第二更新标识进行比较,获得第一更新标识和第二更新标识不一致的第一数据表具体包括 根据所述每个应用程序的第一特征表和第二特征表,对每个应用程序访问的数据表的第一更新标识和第二更新标识进行比较,获得第一更新标识和第二更新标识不一致的数据表为第一数据表,以及存储该第一数据表的数据库为第一数据库; 所述对所述备用数据库和缓存中的与所述第一数据表对应的数据表进行一致性处理,以使得所述备用数据库和缓存中的数据同步具体包括 对所述第一数据库对应的第一备用数据库中与所述第一数据表对应的数据表和所述第一数据库对应的缓存中的与所述第一数据表对应的数据表进行一致性处理。
4.根据权利要求1-3任一项所述的方法,其特征在于,所述更新状态包括以下信息中的至少ー种信息指示该数据表已更新的信息和指示该数据表被更新的次数。
5.根据权利要求4所述的方法,其特征在于,所述对所述备用数据库和缓存中的与所述第一数据表对应的数据表进行一致性处理,以使得所述备用数据库和缓存中的数据同步具体包括 将所述备用数据库中与所述第一数据表对应的数据表的内容更新为所述缓存中的与所述第一数据表对应的数据表的内容;或 将所述缓存中的与所述第一数据表对应的数据表的内容更新为所述备用数据库中的与所述第一数据表对应的数据表的内容。
6.ー种检测数据库数据一致性的装置,其特征在于,所述数据库系统至少包括ー个主数据库和与所述主数据库对应的备用数据库,所述数据库被至少ー个应用程序访问,该装置包括更新単元、获取单元和处理单元; 所述更新単元,用于更新每个应用程序访问的所述主数据库的数据表的第一更新标识和第二更新标识,所述第一更新标识指示与所述数据表对应的缓存中的数据表的更新状态,所述第二更新标识指示与所述数据表对应的备用数据库中的数据表的更新状态; 所述获取単元,用于在所述主数据库与备用数据库进行倒换后,将每个所述数据表的第一更新标识和第二更新标识进行比较,获得第一更新标识和第二更新标识不一致的第一数据表; 所述处理単元,用于对所述备用数据库和缓存中的与所述第一数据表对应的数据表进行一致性处理,以使得所述备用数据库和缓存中的数据同歩。
7.根据权利要求6所述的装置,其特征在于,每个数据表的所述第一更新标识和第二更新标识包含于与应用程序对应的第一特征表中,所述第一特征表至少包括所述应用程序的标识、所述应用程序访问的主数据库的名称、所述应用程序访问的主数据库中的每个数据表的名称、所述应用程序访问的每个数据表的第一更新标识和第二更新标识;所述装置还包括存储单元; 所述存储単元,用于存储所述第一特征表; 所述获取単元,具体用于对每个应用程序的第一特征表的第一更新标识和第二更新标识进行比较,获得第一更新标识和第二更新标识不一致的数据表为第一数据表,以及存储该第一数据表的数据库为第一数据库; 所述处理単元,具体用于对所述第一数据库对应的第一备用数据库中与所述第一数据表对应的数据表和所述第一数据库对应的缓存中的与所述第一数据表对应的数据表进行一致性处理。
8.根据权利要求6所述的装置,其特征在于,所述第一更新标识和第二更新标识分别包含于与应用程序对应的第一特征表和第二特征表中,所述第一特征表至少包括所述应用程序的标识、所述应用程序访问的主数据库的名称、所述应用程序访问的主数据库中的每个数据表的名称和所述应用程序访问的每个数据表的第一更新标识,所述第二特征表至少包括所述应用程序的标识、所述应用程序访问的主数据库的名称、所述应用程序访问的主数据库中的每个数据表的名称和所述应用程序访问的每个数据表的第二更新标识;所述装置还包括存储单元; 所述存储単元,用于存储所述第一特征表和第二特征表;所述获取単元,具体用于根据所述每个应用程序的第一特征表和第二特征表,对每个应用程序访问的数据表的第一更新标识和第二更新标识进行比较,获得第一更新标识和第二更新标识不一致的数据表为第一数据表,以及存储该第一数据表的数据库为第一数据库; 所述处理単元,具体用于对所述第一数据库对应的第一备用数据库中与所述第一数据表对应的数据表和所述第一数据库对应的缓存中的与所述第一数据表对应的数据表进行一致性处理。
9.根据权利要求6-8任一项所述的装置,其特征在干,所述更新状态包括以下信息中的至少ー种信息指示该数据表已更新的信息和指示该数据表被更新的次数。
10.根据权利要求9所述的装置,其特征在于,所述处理単元,具体用于 将所述备用数据库中与所述第一数据表对应的数据表的内容更新为所述缓存中的与所述第一数据表对应的数据表的内容;或 将所述缓存中的与所述第一数据表对应的数据表的内容更新为所述备用数据库中的与所述第一数据表对应的数据表的内容。
11.一种数据库系统,其特征在于,所述数据库系统包括至少ー个主数据库、与所述主数据库对应的备用数据库、数据库访问装置、倒换监控装置和检测数据库数据一致性的装置; 所述主数据库,用于存储应用程序需要访问的数据; 所述备用数据库,用于当所述主数据库失效时,由所述备用数据库为所述应用程序提供数据; 所述数据库访问装置,用于接收所述应用程序对所述主数据库或所述备用数据库的访问请求,根据所述访问请求从所述主数据库或所述备用数据库中获取对应的数据; 所述倒换监控装置,用于监控所述主数据库与备用数据库是否倒换,并在所述主数据库与备用数据库倒换后,通知所述检测数据库数据一致性的装置进行数据一致性处理; 所述检测数据库数据一致性的装置,用于更新每个应用程序访问的所述主数据库的数据表的第一更新标识和第二更新标识,所述第一更新标识指示与所述数据表对应的缓存中的数据表的更新状态,所述第二更新标识指示与所述数据表对应的备用数据库中的数据表的更新状态; 所述检测数据库数据一致性的装置,还用于在所述倒换监控装置监控到所述主数据库与备用数据库进行倒换后,将每个所述数据表的第一更新标识和第二更新标识进行比较,获得第一更新标识和第二更新标识不一致的第一数据表; 所述检测数据库数据一致性的装置,还用于对所述备用数据库和缓存中的与所述第一数据表对应的数据表进行一致性处理,以使得所述备用数据库和缓存中的数据同歩。
全文摘要
本发明实施例公开了一种检测数据库数据一致性的方法、装置及数据库系统,能够提高数据库系统处理数据库倒换的效率、减小数据库系统对资源的消耗。该方法包括所述数据库系统更新每个应用程序访问的所述主数据库的数据表的第一更新标识和第二更新标识;在所述主数据库和备用数据库进行倒换后,所述数据库系统将每个所述数据表的第一更新标识和第二更新标识进行比较,获得第一更新标识和第二更新标识不一致的第一数据表;所述数据库系统对所述备用数据库和缓存中的与所述第一数据表对应的数据表进行一致性处理,以使得所述备用数据库和缓存中的数据同步。本发明适用于计算机应用领域。
文档编号G06F17/30GK102982087SQ201210430758
公开日2013年3月20日 申请日期2012年11月1日 优先权日2012年11月1日
发明者彭正元 申请人:华为技术有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1