CN108897868A - 基于触发器的缓存同步方法及装置、计算设备及存储介质 - Google Patents

基于触发器的缓存同步方法及装置、计算设备及存储介质 Download PDF

Info

Publication number
CN108897868A
CN108897868A CN201810712598.5A CN201810712598A CN108897868A CN 108897868 A CN108897868 A CN 108897868A CN 201810712598 A CN201810712598 A CN 201810712598A CN 108897868 A CN108897868 A CN 108897868A
Authority
CN
China
Prior art keywords
data
tables
trigger
update
database
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
Application number
CN201810712598.5A
Other languages
English (en)
Inventor
张平
马智昊
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Beijing Qihoo Technology Co Ltd
Original Assignee
Beijing Qihoo Technology Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Beijing Qihoo Technology Co Ltd filed Critical Beijing Qihoo Technology Co Ltd
Priority to CN201810712598.5A priority Critical patent/CN108897868A/zh
Publication of CN108897868A publication Critical patent/CN108897868A/zh
Pending legal-status Critical Current

Links

Landscapes

  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

本发明公开了一种基于触发器的缓存同步方法及装置、计算设备及存储介质,所述方法包括:查询缓存中的数据,确定与数据关联的至少一个数据表;在数据库中查找至少一个数据表;若至少一个数据表中存在暂未创建有触发器的一个或多个数据表,则为暂未创建有触发器的一个或多个数据表创建对应的触发器;当数据库中至少一个数据表的数据发生更新时,利用数据表对应的触发器触发缓存数据更新操作,以使缓存中的数据进行同步更新。本方案根据缓存数据在关联的数据表上建立触发器,并利用数据表对应的触发器触发缓存数据更新操作,能够将数据库中更新的数据实时缓存同步到缓存的数据中,使缓存同步过程更加灵活和高效。

Description

基于触发器的缓存同步方法及装置、计算设备及存储介质
技术领域
本发明涉及计算机领域,具体涉及一种基于触发器的缓存同步方法及装置、计算设备及存储介质。
背景技术
缓存是内存的一部分,用于缓存数据。当访问数据时,可以直接从缓存中提取数据,不需要访问数据库,从而缓解数据库的压力并提高系统性能。缓存同步就是把数据库中更新的数据同步更新到缓存中,保证数据库和缓存中数据的一致性和完整性。
实际情况中,当大量数据访问时,数据库中的数据更新往往产生时延,这使得缓存中同步更新的数据往往为数据库中还未进行同步更新的旧数据,导致缓存同步失败;同时,现有技术中通常采用轮询数据库的方式确定更新数据并进行缓存同步,然而,当大量数据访问数据库时,数据库的压力也随之增大,此时若系统较大,缓存节点较多时,频繁、大量地轮询数据库将会给数据库造成更大的压力,严重影响数据库的性能。
由此可见,如何将数据库中更新的数据实时缓存同步到对应的缓存中,保证数据库与缓存中数据的一致性,成为当前亟须解决的一个问题。
发明内容
鉴于上述问题,提出了本发明以便提供一种克服上述问题或者至少部分地解决上述问题的基于触发器的缓存同步方法及装置、计算设备及存储介质。
根据本发明的一个方面,提供了一种基于触发器的缓存同步方法,包括:查询缓存中的数据,确定与数据关联的至少一个数据表;在数据库中查找至少一个数据表;若至少一个数据表中存在暂未创建有触发器的一个或多个数据表,则为暂未创建有触发器的一个或多个数据表创建对应的触发器;当数据库中至少一个数据表的数据发生更新时,利用数据表对应的触发器触发缓存数据更新操作,以使缓存中的数据进行同步更新。
根据本发明的另一方面,提供了一种基于触发器的缓存同步装置,包括:查询模块,适于查询缓存中的数据,确定与数据关联的至少一个数据表;第一查找模块,适于在数据库中查找至少一个数据表;创建模块,适于若至少一个数据表中存在暂未创建有触发器的一个或多个数据表,则为暂未创建有触发器的一个或多个数据表创建对应的触发器;更新模块,适于当数据库中至少一个数据表的数据发生更新时,利用数据表对应的触发器触发缓存数据更新操作,以使缓存中的数据进行同步更新。
根据本发明的又一方面,提供了一种计算设备,包括:处理器、存储器、通信接口和通信总线,处理器、存储器和通信接口通过通信总线完成相互间的通信;
存储器用于存放至少一可执行指令,可执行指令使处理器执行上述基于触发器的缓存同步方法对应的操作。
根据本发明的再一方面,提供了一种计算机存储介质,存储介质中存储有至少一可执行指令,可执行指令使处理器执行如上述基于触发器的缓存同步方法对应的操作。
在本发明提供的基于触发器的缓存同步方法及装置、计算设备及存储介质中,首先查询缓存中的数据,确定与数据关联的至少一个数据表;在数据库中查找至少一个数据表;若至少一个数据表中存在暂未创建有触发器的一个或多个数据表,则为暂未创建有触发器的一个或多个数据表创建对应的触发器;当数据库中至少一个数据表的数据发生更新时,利用数据表对应的触发器触发缓存数据更新操作,以使缓存中的数据进行同步更新。由此可见,本发明能够根据缓存中的数据的动态变化灵活地在与缓存中的数据关联的数据表上创建触发器,并利用数据表对应的触发器触发缓存数据更新操作,不仅能够将数据库中更新的数据实时缓存同步到缓存中,还能够通过在与缓存中的数据关联的数据表上创建触发器来灵活地在与缓存数据关联的数据表上读取缓存数据的更新数据,使缓存数据的同步更新过程更加灵活和高效。
上述说明仅是本发明技术方案的概述,为了能够更清楚了解本发明的技术手段,而可依照说明书的内容予以实施,并且为了让本发明的上述和其它目的、特征和优点能够更明显易懂,以下特举本发明的具体实施方式。
附图说明
通过阅读下文优选实施方式的详细描述,各种其他的优点和益处对于本领域普通技术人员将变得清楚明了。附图仅用于示出优选实施方式的目的,而并不认为是对本发明的限制。而且在整个附图中,用相同的参考符号表示相同的部件。在附图中:
图1是本发明一实施例提供的一种基于触发器的缓存同步方法的流程示意图;
图2是本发明另一实施例提供的一种基于触发器的缓存同步方法的流程示意图;
图3是本发明再一实施例提供的一种基于触发器的缓存同步方法的流程示意图;
图4是本发明一实施例提供的一种基于触发器的缓存同步装置的示意性结构框图;
图5是本发明另一实施例提供的一种基于触发器的缓存同步装置的示意性结构框图;
图6是本发明一实施例提供的一种计算设备的结构示意图。
具体实施方式
下面将参照附图更详细地描述本公开的示例性实施例。虽然附图中显示了本公开的示例性实施例,然而应当理解,可以以各种形式实现本公开而不应被这里阐述的实施例所限制。相反,提供这些实施例是为了能够更透彻地理解本公开,并且能够将本公开的范围完整的传达给本领域的技术人员。
图1是本发明一实施例提供的一种基于触发器的缓存同步方法的流程示意图。如图1所示,该方法包括:
步骤S101:查询缓存中的数据,确定与数据关联的至少一个数据表。
具体地,缓存中数据对应数据库中至少一个数据表上存储的数据。其中,数据库中存储有一个或多个数据表,当数据库的一个或多个数据表上存储有缓存中的数据时,该数据表可以确定为与缓存中的数据关联的数据表,否则该数据表为与缓存中数据不关联的数据表。具体实施中,缓存所存储的数据是数据库中一个或多个数据表上对应数据的汇总数据。例如,数据库中存储有数据表1、数据表2以及数据表3,缓存中存储有用户资料数据,分别包括用户名、以及用户学历信息,用户名对应存储在数据表1中、用户学历信息对应存储在数据表2中,而数据表3中没有缓存所存储的数据的对应数据,则上述数据表1和数据表2为与缓存所存储的数据关联的数据表,数据表3为与缓存所存储的数据不关联的数据表。缓存所存储的用户名、以及用户学历信息是数据表1和数据表2的汇总数据。并且,实际情况中,缓存所存储的数据还会根据数据的实际使用情况进行动态调整,即根据数据的实际使用情况对缓存所存储的数据进行动态增加或者删减。例如针对于频繁使用的数据,则可以将该数据动态增加到缓存所存储的数据中;或者针对于使用频率较低或者不再使用的数据,则可以将该数据从缓存所存储的数据中进行动态删除等等。
介于上述两种情况,为了准确确定数据库中与缓存所存储的数据关联的对应数据,在本步骤中,通过查询缓存所存储的数据来确定数据库中与缓存所存储的数据关联的至少一个数据表。具体实施中,可以通过定时轮询的方式查询缓存中的数据,也可以是通过触发方式查询缓存中的数据,本发明对查询方式不做限定。与数据关联的至少一个数据表的确定方式也可以有多种,例如可以预先为各个数据表创建数据表标识,通过确定对应数据表的数据表标识来确定与数据关联的至少一个数据表等。
步骤S102:在数据库中查找至少一个数据表。
具体地,根据步骤S101中确定的与数据关联的至少一个数据表,在数据库中查找上述至少一个数据表。本实施例可以适用于主从数据库结构中,如数据库的设置包括一个主数据库以及与主数据库对应的至少一个从数据库,则本步骤可以在从数据库中查找至少一个数据表,也可以在主数据库中查找至少一个数据表。
步骤S103:若至少一个数据表中存在暂未创建有触发器的一个或多个数据表,则为暂未创建有触发器的一个或多个数据表创建对应的触发器。
具体地,查找上述至少一个数据表中是否存在暂未创建有触发器的一个或多个数据表,若存在,则为上述未创建有触发器的一个或多个数据表创建对应的触发器。其中,由于上述至少一个数据表是与缓存所存储的数据关联的数据表,因此通过本步骤能够实现在与缓存所存储的数据关联的数据表上创建触发器。
步骤S104:当数据库中至少一个数据表的数据发生更新时,利用数据表对应的触发器触发缓存数据更新操作,以使缓存中的数据进行同步更新。
具体地,当数据库中至少一个数据表的数据发生更新时,利用创建在缓存所存储的数据关联的数据表上的触发器触发缓存数据更新操作,使缓存能够快速且准确地从与缓存所存储的数据关联的数据表中读取对应的更新数据,并将上述更新数据同步更新到缓存中,使缓存中的数据进行同步更新。
在本发明提供的基于触发器的缓存同步方法中,首先查询缓存中的数据,确定与上述数据关联的至少一个数据表;然后在数据库中查找至少一个数据表;若至少一个数据表中存在暂未创建有触发器的一个或多个数据表,则为暂未创建有触发器的一个或多个数据表创建对应的触发器;当数据库中至少一个数据表的数据发生更新时,利用数据表对应的触发器触发缓存数据更新操作,以使缓存的数据进行同步更新。由此可见,本发明能够根据缓存的数据的动态变化灵活地在与缓存的数据关联的数据表上创建触发器,并利用数据表对应的触发器触发缓存数据更新操作,不仅能够将数据库中更新的数据实时缓存同步到对应的缓存中,还能够通过在与缓存的数据关联的数据表上创建触发器来灵活地在与缓存数据关联的数据表上读取缓存数据的更新数据,使缓存数据的同步更新过程更加灵活和高效。
图2是本发明另一实施例提供的一种基于触发器的缓存同步方法的流程图。其中,本实施例中数据库的设置包括一个主数据库以及与主数据库对应的至少一个从数据库,本实施例中的触发器在从数据库中创建。如图2所示,该方法包括:
步骤S201:定时轮询缓存所存储的数据,确定与数据关联的至少一个数据表。
具体地,本实施例中数据库的设置包括一个主数据库以及与主数据库对应的至少一个从数据库,在本步骤中,缓存具体为从数据库中的缓存,确定与数据关联的至少一个数据表具体为确定从数据库中与缓存所存储的数据关联的至少一个数据表。本步骤的其余相关部分可对应参照步骤S101中的对应描述,此处不再赘述。
步骤S202:在从数据库中查找至少一个数据表。
具体地,根据步骤S201中确定的至少一个数据表,在从数据库中查找上述至少一个数据表。
步骤S203:若至少一个数据表中存在暂未创建有触发器的一个或多个数据表,则为暂未创建有触发器的一个或多个数据表创建对应的触发器。
具体地,确定步骤S202在从数据库中查找到的至少一个数据表中是否存在未创建有触发器的一个或多个数据表,若存在,则为上述从数据库中未创建有触发器的一个或多个数据表创建对应的触发器。
步骤S204:查找数据库中已创建有触发器的一个或多个数据表,若已创建有触发器的一个或多个数据表中存在部分数据表不属于至少一个数据表,则销毁部分数据表对应的触发器。
具体地,数据的缓存同步是持续进行的,也就是说,本实施例中的各步骤是循环持续进行的。则在执行本次缓存同步之前,从数据库中可能还存在已创建有触发器但并不属于本次在从数据库中查找到的至少一个数据表的部分数据表,也就是说,上述部分数据表上虽然已创建有触发器,但上述部分数据表实际为与步骤S201中缓存所存储的数据不关联的数据表。因此,为了准确地仅针对本次缓存所存储的数据进行缓存同步,执行本步骤来查找上述部分数据表并对其上创建的触发器进行销毁,以对与缓存所存储的数据不关联的数据表上已创建的触发器进行动态删除,使后续步骤(对应步骤S206)中缓存的数据的同步更新过程更加高效。
步骤S205:创建用于写入缓存数据更新操作记录的缓存更新信息表。
具体地,预先创建缓存更新信息表。当从数据库中更新一条数据时,触发器生成与该数据对应的一条新的缓存数据更新操作记录,并将上述缓存数据更新操作记录写入缓存更新信息表中,以供后续步骤(对应步骤S206)中根据上述缓存数据更新操作记录触发从数据库的缓存数据更新操作。
其中,上述缓存数据更新操作记录具体可以包括更新数据的数据库标识,数据表标识、更新数据标识或者更新数据的相关操作记录等信息。
步骤S206:扫描缓存更新信息表中是否写入新的缓存数据更新操作记录,若是,则利用从数据库中数据表对应的触发器触发缓存数据更新操作,以使从数据库的缓存的数据进行同步更新。
其中,由于触发器创建在从数据库的至少一个数据表上,则当扫描到缓存更新信息表中写入新的缓存数据更新操作记录时,从与该缓存数据更新操作记录对应的从数据库的数据表中读取更新数据,例如,根据缓存数据更新操作记录中的数据库标识确定更新数据的从数据库,并根据数据表标识以及更新数据标识从上述从数据库的数据表中读取对应的更新数据,并将上述更新数据同步更新写入到从数据库的缓存中。
具体实施中,可以连续扫描或者每隔预设时间扫描缓存更新信息表中是否写入新的缓存数据更新操作记录。上述预设时间可以由本领域技术人员根据实际情况进行设置,本发明对此不作限定。
步骤S207:确定同步更新是否成功,若是,则执行步骤S208;若否,则重新执行步骤S206。
为了防止缓存同步失败的情况的发生,设置本步骤以对步骤S206中的缓存同步更新是否成功进行确认,若确定同步更新成功,则执行步骤S208;否则重新执行步骤S206。其中,确定同步更新是否成功的方式可以有多种,例如,当缓存在同步更新成功之后进一步反馈同步更新成功消息,根据接收到的同步更新成功消息确定同步更新成功,等等。具体实施中,本发明对确定同步更新是否成功的方式不作限定。
步骤S208:删除写入缓存更新信息表的缓存数据更新操作记录。
在确定同步更新成功之后,删除写入缓存更新信息表的缓存数据更新操作记录,以便于下次写入新的缓存数据更新操作记录时对其进行扫描并对应触发与该缓存数据更新操作记录对应的缓存数据更新操作。
另外,在本实施例另一种可选方式中,为了使缓存同步过程更为快速高效,上述步骤S205-S208还可替换为:创建用于写入缓存数据更新操作记录的消息队列,通过扫描消息队列,从消息队列中读取缓存数据更新操作记录,根据缓存数据更新操作记录触发缓存数据更新操作,以使缓存的数据进行同步更新。
具体地,由于触发器创建在从数据库的至少一个数据表上,因此预先创建与上述从数据库的至少一个数据表对应的消息队列,当从数据库的至少一个数据表中更新一条数据时,生成与该数据对应的一条新的缓存数据更新操作记录,触发器将上述缓存数据更新操作记录写入到与该数据所在数据表对应的消息队列中。其中,在将缓存数据更新操作记录写入消息队列时,触发器可以读取触发器所在数据表的更新数据标识,并将更新数据信息以更新数据标识的形式写入数据表所对应的消息队列中;或者触发器也可以读取触发器所在数据表的更新数据,并将更新数据的信息以更新数据的形式直接写入数据表所对应的消息队列中。
扫描消息队列具体可以为连续扫描或者每隔预设时间扫描消息队列,当扫描到消息队列中写入新的缓存数据更新操作记录时,则从消息队列中拉取该缓存数据更新操作记录并触发与其对应的缓存数据更新操作。具体地,若缓存数据更新操作记录是更新数据标识的形式,则根据上述更新数据标识去对应数据表中读取与该更新数据标识对应的更新数据,并将上述更新数据同步更新到缓存中;若缓存数据更新操作记录是更新数据的形式,则直接从消息队列中读取更新数据;并将上述更新数据同步更新到缓存中。在上述过程中,通过创建消息队列能够实现快速准确地读取更新数据,且由于消息队列中缓存数据更新操作记录在读取时已被拉出,因此也无需再对消息队列中的缓存数据更新操作记录执行删除操作,使缓存同步过程更为快速高效。
具体情况中,当数据库的设置包括一个主数据库以及与主数据库对应的至少一个从数据库时,往往会出现主数据库中的数据已更新,然而因主从数据库在同步更新上存在时延,导致从数据库中的数据因上述时延而未及时更新,则从数据库缓存中同步更新的数据也对应为从数据库中还未进行主从同步更新的旧数据,导致从数据库中缓存同步失败。在本实施例中,缓存数据更新操作是利用在从数据库的至少一个数据表上创建的触发器来对应触发的,而上述至少一个数据表为与从数据库缓存所存储的数据关联的数据表,因此本发明能够通过确定并查找上述至少一个数据表,在从数据库缓存以及与该缓存对应的从数据库的数据表之间建立关联关系,并通过在上述至少一个数据表上创建触发器来实现根据从数据库更新的数据触发从数据库的缓存进行同步更新的目的,有效克服了现有技术中主从数据库在数据同步时由于存在时延导致从数据库中缓存同步失败的问题,使从数据库中更新的数据能够实时缓存同步到从数据库缓存中。本发明还能够通过在与缓存的数据关联的数据表上创建触发器来灵活地根据缓存的数据的不同触发对应的数据表来执行缓存数据更新操作,使缓存数据的同步更新过程更加灵活和高效。
图3是本发明再一实施例提供的一种基于触发器的缓存同步方法的流程图。其中,本实施例中数据库的设置包括一个主数据库以及与主数据库对应的至少一个从数据库,本实施例中的触发器在主数据库中创建。如图3所示,该方法包括:
步骤S301:定时轮询缓存所存储的数据,确定与数据关联的至少一个数据表。
具体地,本实施例中数据库的设置包括一个主数据库以及与主数据库对应的至少一个从数据库,在本步骤中,缓存具体为从数据库中的缓存,与数据关联的至少一个数据表具体为主数据库中与缓存所存储的数据关联的至少一个数据表。本步骤的其余相关部分可对应参照步骤S101中的对应描述,此处不再赘述。
步骤S302:在主数据库中查找至少一个数据表。
具体地,根据步骤S301中确定的至少一个数据表,在主数据库中查找上述至少一个数据表。
步骤S303:若至少一个数据表中存在暂未创建有触发器的一个或多个数据表,则为暂未创建有触发器的一个或多个数据表创建对应的触发器。
具体地,确定步骤S302在主数据库中查找到的至少一个数据表中是否存在未创建有触发器的一个或多个数据表,若存在,则为上述主数据库中未创建有触发器的一个或多个数据表创建对应的触发器。
步骤S304:查找数据库中已创建有触发器的一个或多个数据表,若已创建有触发器的一个或多个数据表中存在部分数据表不属于至少一个数据表,则销毁部分数据表对应的触发器。
具体地,数据的缓存同步是持续进行的,也就是说,本实施例中的各步骤是循环持续进行的。则在执行本次缓存同步之前,主数据库中可能还存在已创建有触发器但并不属于本次在主数据库中查找到的至少一个数据表的部分数据表,也就是说,上述部分数据表上虽然已创建有触发器,但上述部分数据表实际为与步骤S301中缓存所存储的数据不关联的数据表。因此,为了准确地仅针对本次缓存所存储的数据进行缓存同步,执行本步骤来查找上述部分数据表并对其上创建的触发器进行销毁,以对与缓存所存储的数据不关联的数据表上的触发器进行动态删除,使后续步骤(对应步骤S306)中缓存的数据的同步更新过程更加高效。
步骤S305:创建用于写入缓存数据更新操作记录的缓存更新信息表。
具体地,预先创建缓存更新信息表。当主数据库中更新一条数据时,触发器生成与该数据对应的一条新的缓存数据更新操作记录,并将上述缓存数据更新操作记录写入缓存更新信息表中,以供后续步骤(对应步骤S306)中根据上述缓存数据更新操作记录触发主数据库的缓存数据更新操作。
其中,上述缓存数据更新操作记录具体可以包括更新数据的数据库标识,数据表标识、更新数据标识或者更新数据的相关操作记录等信息。
步骤S306:扫描缓存更新信息表中是否写入新的缓存数据更新操作记录,若是,则利用主数据库的数据表对应的触发器触发与主数据库关联的至少一个从数据库的缓存数据更新操作,以使至少一个从数据库的缓存的数据进行同步更新。
其中,由于触发器创建在主数据库的至少一个数据表上,则当扫描到缓存更新信息表中写入新的缓存数据更新操作记录时,根据缓存数据更新操作记录从主数据库的对应数据表中读取更新数据,例如,根据数据表标识以及更新数据标识从主数据库的对应数据表中读取更新数据,然后将上述更新数据同步更新写入至少一个从数据库的缓存中,即通过主数据库至少一个数据表上创建的触发器触发至少一个从数据库的缓存的数据进行同步更新。
具体实施中,可以连续扫描或者每隔预设时间扫描缓存更新信息表中是否写入新的缓存数据更新操作记录。上述预设时间可以由本领域技术人员根据实际情况进行设置,本发明对此不作限定。
步骤S307:确定同步更新是否成功,若是,则执行步骤S308;若否,则重新执行步骤S306。
为了防止缓存同步失败的情况的发生,设置本步骤以对步骤S306中的缓存同步更新是否成功进行确认,若确定同步更新成功,则执行步骤S308;否则重新执行步骤S306。其中,确定同步更新是否成功的方式可以有多种,例如,当缓存在同步更新成功之后进一步反馈同步更新成功消息,根据接收到的同步更新成功消息确定同步更新成功,等等。具体实施中,本发明对确定同步更新是否成功的方式不作限定。
步骤S308:删除写入缓存更新信息表的缓存数据更新操作记录。
在确定同步更新成功之后,删除写入缓存更新信息表的缓存数据更新操作记录,以便于下次写入新的缓存数据更新操作记录时对其进行扫描并对应触发与该缓存数据更新操作记录对应的缓存数据更新操作。
另外,在本发明的另一实施例中,为了使缓存同步过程更为快速高效,上述步骤S305-S308可替换为:创建用于写入缓存数据更新操作记录的消息队列,通过扫描消息队列,从消息队列中读取缓存数据更新操作记录,根据缓存数据更新操作记录触发缓存数据更新操作,以使缓存的数据进行同步更新。
具体地,由于触发器创建在主数据库的至少一个数据表上,因此预先创建与主数据库的至少一个数据表对应的消息队列,当主数据库的数据表中更新一条数据时,生成与该数据对应的一条新的缓存数据更新操作记录,触发器将上述缓存数据更新操作记录写入到与该数据所在数据表对应的消息队列中。其中,在将缓存数据更新操作记录写入消息队列时,触发器可以读取触发器所在数据表的更新数据标识,并将更新数据信息以更新数据标识的形式写入数据表所对应的消息队列中;或者触发器也可以读取触发器所在数据表的更新数据,并将更新数据的信息以更新数据的形式直接写入数据表所对应的消息队列中。
扫描消息队列具体可以为连续扫描或者每隔预设时间扫描消息队列,当扫描到消息队列中写入新的缓存数据更新操作记录时,则从消息队列中拉取缓存数据更新操作记录并触发与其对应的缓存数据更新操作。其中,若缓存数据更新操作记录是更新数据标识的形式,则根据上述更新数据标识去对应数据表中读取与该更新数据标识对应的更新数据,并将上述更新数据同步更新到缓存中;若缓存数据更新操作记录是更新数据的形式,则直接从消息队列中读取更新数据;并将上述更新数据同步更新到缓存中。在上述过程中,通过创建消息队列能够实现过程快速准确地读取更新数据,且消息队列中的缓存数据更新操作记录在读取时已被拉出,因此也无需再对消息队列中的缓存数据更新操作记录执行删除操作,从而使缓存同步过程更为快速高效。
具体情况中,当数据库的设置包括一个主数据库以及与主数据库对应的至少一个从数据库时,往往会出现主数据库中的数据已更新,然而因主从数据库在同步更新上存在时延,导致从数据库中的数据因上述时延而未及时更新,则从数据库缓存中同步更新的数据也对应为从数据库中还未进行主从同步更新的旧数据,导致从数据库中缓存同步失败。在本实施例中,缓存数据更新操作是利用在主数据库的至少一个数据表上创建的触发器来对应触发的,而上述至少一个数据表为与从数据库缓存所存储的数据关联的数据表,因此本实施例能够通过确定并查找上述至少一个数据表,在从数据库缓存以及与该缓存对应的主数据库的数据表之间建立关联关系,并通过在上述至少一个数据表上创建触发器来实现直接根据主数据库更新的数据触发从数据库的缓存进行同步更新的目的,有效克服了现有技术中主从数据库在数据同步时由于存在时延导致从数据库中缓存同步失败的问题,使主数据库中更新的数据能够实时缓存同步到从数据库的缓存中,同时又避免了直接从主数据库中访问更新数据给主数据库造成的压力导致严重影响数据库的性能情况的出现。同时,具体情况中,由于从数据库的数量往往为多个,因此本实施例中的方式还能够利用主数据库中创建的触发器同时触发多个机房中从数据库的缓存进行缓存数据的同步更新,实现缓存的跨机房更新写入,使缓存数据的同步更新过程更加灵活和高效。
图4是本发明一实施例提供的一种基于触发器的缓存同步装置的结构框图。如图4所示,该装置包括:查询模块41、第一查找模块42、创建模块43、以及更新模块44。
查询模块41适于查询缓存中的数据,确定与数据关联的至少一个数据表。
第一查找模块42适于在数据库中查找至少一个数据表。
创建模块43适于若至少一个数据表中存在暂未创建有触发器的一个或多个数据表,则为暂未创建有触发器的一个或多个数据表创建对应的触发器。
更新模块44适于当数据库中至少一个数据表的数据发生更新时,利用数据表对应的触发器触发缓存数据更新操作,以使缓存中的数据进行同步更新。
上述各个模块的具体结构和工作原理可参照方法实施例中相应步骤的描述,此处不再赘述。
在本发明提供的基于触发器的缓存同步装置中,能够根据缓存的数据的动态变化灵活地在与缓存的数据关联的数据表上创建触发器,并利用数据表对应的触发器触发缓存数据更新操作,从而有效解决在进行缓存同步时,由于无法将数据库中更新的数据实时缓存同步到对应的缓存中导致缓存同步失败的问题,不仅能够将数据库中更新的数据实时缓存同步到对应的缓存中,还能够通过在与缓存的数据关联的数据表上创建触发器来灵活地根据缓存的数据的不同触发对应的数据表来执行缓存数据更新操作,使缓存数据的同步更新过程更加灵活和高效。
图5是本发明另一实施例提供的一种基于触发器的缓存同步装置500的结构框图;如图5所示,该装置包括:查询模块51、第一查找模块52、创建模块53、更新模块54、第二查找模块55、销毁模块56、以及缓存更新信息表处理模块57。其中,更新模块54进一步包括:缓存更新信息表创建单元541、第一更新单元542。
查询模块51适于定时轮询缓存所存储的数据,确定与数据关联的至少一个数据表。
第一查找模块52适于在数据库中查找至少一个数据表。
创建模块53适于若至少一个数据表中存在暂未创建有触发器的一个或多个数据表,则为暂未创建有触发器的一个或多个数据表创建对应的触发器。
更新模块54适于当数据库中至少一个数据表的数据发生更新时,利用数据表对应的触发器触发缓存数据更新操作,以使缓存的数据进行同步更新。
其中,缓存更新信息表创建单元541适于创建用于写入缓存数据更新操作记录的缓存更新信息表;
第一更新单元542适于扫描缓存更新信息表中是否写入新的缓存数据更新操作记录,若是,则根据缓存数据更新操作记录触发缓存数据更新操作,以使缓存的数据进行同步更新。
第二查找模块55适于查找数据库中已创建有触发器的一个或多个数据表;
销毁模块56适于若已创建有触发器的一个或多个数据表中存在部分数据表不属于至少一个数据表,则销毁部分数据表对应的触发器。
缓存更新信息表处理模块57用于确定同步更新是否成功,若是,则删除写入缓存更新信息表的缓存数据更新操作记录,否则向第一更新单元542反馈同步更新失败消息,使第一更新单元542重新根据缓存更新信息表中的缓存数据更新操作记录触发缓存数据更新操作,以使缓存的数据进行同步更新。
具体实施中,为了使缓存同步过程更为快速高效,在另一种可选的方式中,上述缓存更新信息表创建单元541和第一更新单元542还可以分别替换为消息队列创建单元和第二更新单元。
其中,消息队列创建单元适于创建用于写入缓存数据更新操作记录的消息队列;第二更新单元适于扫描消息队列,从消息队列中读取缓存数据更新操作记录,根据缓存数据更新操作记录触发缓存数据更新操作,以使缓存的数据进行同步更新。同时,由于第二更新单元在读取缓存数据更新操作记录时已将缓存数据更新操作记录从消息队列中拉取出来,因此本方式无需再对消息队列执行缓存数据更新操作记录删除操作,则本方式中并不包含缓存更新信息表处理模块57。
上述各个模块的具体结构和工作原理可参照方法实施例中相应步骤的描述,此处不再赘述。
综上所述,在本发明提供的基于触发器的缓存同步装置中,数据库包括一个主数据库以及该主数据库对应的多个从数据库,本发明能够根据缓存的数据的动态变化灵活地确认并查找主数据库或从数据库中与缓存的数据关联的数据表,并在上述数据表上创建触发器,利用数据表上创建的触发器触发缓存数据更新操作。其中,当缓存数据更新操作是利用在从数据库的至少一个数据表上创建的触发器来对应触发时,由于上述至少一个数据表为与从数据库缓存所存储的数据关联的数据表,因此能够通过确定并查找上述至少一个数据表,在从数据库缓存以及与该缓存对应的从数据库的数据之间建立对应关系,并通过在上述至少一个数据表上创建触发器来实现根据从数据库更新的数据触发从数据库的缓存进行同步更新的目的;当缓存数据更新操作是利用在主数据库的至少一个数据表上创建的触发器来对应触发的,由于上述至少一个数据表为与从数据库缓存所存储的数据关联的数据表,因此能够通过确定并查找上述至少一个数据表,在从数据库缓存以及与该缓存对应的主数据库的数据之间建立对应关系,并通过在上述至少一个数据表上创建触发器来实现直接根据主数据库更新的数据触发从数据库的缓存进行同步更新的目的。综上所述,本发明提供的装置能够解决由于无法将数据库中更新的数据实时缓存同步到对应的缓存中导致缓存同步失败的问题,不仅能够将数据库中更新的数据实时缓存同步到对应的缓存中,还能够通过在与缓存的数据关联的数据表上创建触发器来灵活地根据缓存的数据的不同触发对应的数据表来执行缓存数据更新操作,使缓存数据的同步更新过程更加灵活和高效。同时本发明提供的装置还通过查找与本次缓存所存储的数据不关联的部分数据表并对其进行销毁,以确保在从数据库或主数据库上的触发器仅触发针对本次缓存所存储的数据的同步更新;并且在缓存的数据同步更新完成之后还能够进一步确定同步更新是否成功,若未成功,则再次根据缓存更新信息表中的缓存数据更新操作记录触发缓存数据更新操作,以有效防止缓存同步失败的情况的发生。
本申请实施例提供了一种非易失性计算机存储介质,计算机存储介质存储有至少一可执行指令,该计算机可执行指令可执行上述任意方法实施例中的基于触发器的缓存同步方法。
可执行指令具体可以用于使得处理器执行以下操作:
查询缓存中的数据,确定与数据关联的至少一个数据表;
在数据库中查找至少一个数据表;
若至少一个数据表中存在暂未创建有触发器的一个或多个数据表,则为暂未创建有触发器的一个或多个数据表创建对应的触发器;
当数据库中至少一个数据表的数据发生更新时,利用数据表对应的触发器触发缓存数据更新操作,以使缓存中的数据进行同步更新。
在一种可选的方式中,可执行指令还用于使得处理器执行以下操作:
查找数据库中已创建有触发器的一个或多个数据表;
若已创建有触发器的一个或多个数据表中存在部分数据表不属于至少一个数据表,则销毁不属于所述至少一个数据表的部分数据表对应的触发器。
在一种可选的方式中,可执行指令进一步使得处理器执行以下操作:
在从数据库中为暂未创建有触发器的一个或多个数据表创建对应的触发器;
利用数据表对应的触发器触发缓存数据更新操作,以使缓存中的数据进行同步更新具体为:利用从数据库中数据表对应的触发器触发缓存数据更新操作,以使从数据库的缓存中的数据进行同步更新。
在一种可选的方式中,可执行指令进一步使得处理器执行以下操作:
在主数据库中为暂未创建有触发器的一个或多个数据表创建对应的触发器;
利用主数据库的数据表对应的触发器触发与主数据库关联的至少一个从数据库的缓存数据更新操作,以使至少一个从数据库的缓存中的数据进行同步更新。
在一种可选的方式中,可执行指令进一步使得处理器执行以下操作:
创建用于写入缓存数据更新操作记录的缓存更新信息表;
扫描缓存更新信息表中是否写入新的缓存数据更新操作记录,若是,则根据缓存数据更新操作记录触发缓存数据更新操作,以使缓存中的数据进行同步更新。
在一种可选的方式中,可执行指令还使得处理器执行以下操作:
确定同步更新是否成功,若是,则删除写入缓存更新信息表的缓存数据更新操作记录。
在一种可选的方式中,可执行指令进一步使得处理器执行以下操作:
连续扫描缓存更新信息表中是否写入新的缓存数据更新操作记录;
或者,每隔预设时间扫描缓存更新信息表中是否写入新的缓存数据更新操作记录。
在一种可选的方式中,可执行指令进一步使得处理器执行以下操作:
创建用于写入缓存数据更新操作记录的消息队列;
扫描消息队列,从消息队列中读取缓存数据更新操作记录,根据缓存数据更新操作记录触发缓存数据更新操作,以使缓存的数据进行同步更新。
图6示出了根据本发明一实施例提供的一种计算设备的结构示意图,本发明具体实施例并不对计算设备的具体实现做限定。
如图6所示,该计算设备可以包括:处理器(processor)602、通信接口(Communications Interface)604、存储器(memory)606、以及通信总线608。
其中:
处理器602、通信接口604、以及存储器606通过通信总线608完成相互间的通信。
通信接口604,用于与其它设备比如客户端或其它服务器等的网元通信。
处理器602,用于执行程序610,具体可以执行上述基于触发器的缓存同步方法实施例中的相关步骤。
具体地,程序610可以包括程序代码,该程序代码包括计算机操作指令。
处理器602可能是中央处理器CPU,或者是特定集成电路ASIC(ApplicationSpecific Integrated Circuit),或者是被配置成实施本发明实施例的一个或多个集成电路。计算设备包括的一个或多个处理器,可以是同一类型的处理器,如一个或多个CPU;也可以是不同类型的处理器,如一个或多个CPU以及一个或多个ASIC。
存储器606,用于存放程序610。存储器606可能包含高速RAM存储器,也可能还包括非易失性存储器(non-volatile memory),例如至少一个磁盘存储器。
程序610具体可以用于使得处理器602执行以下操作:
查询缓存中的数据,确定与数据关联的至少一个数据表;
在数据库中查找至少一个数据表;
若至少一个数据表中存在暂未创建有触发器的一个或多个数据表,则为暂未创建有触发器的一个或多个数据表创建对应的触发器;
当数据库中至少一个数据表的数据发生更新时,利用数据表对应的触发器触发缓存数据更新操作,以使缓存中的数据进行同步更新。
在一种可选的方式中,程序610具体还使得处理器602执行以下操作:
查找数据库中已创建有触发器的一个或多个数据表;
若已创建有触发器的一个或多个数据表中存在部分数据表不属于至少一个数据表,则销毁不属于所述至少一个数据表的部分数据表对应的触发器。
在一种可选的方式中,程序610具体进一步使得处理器602执行以下操作:
在从数据库中为暂未创建有触发器的一个或多个数据表创建对应的触发器;
利用从数据库中数据表对应的触发器触发缓存数据更新操作,以使从数据库的缓存中的数据进行同步更新。
在一种可选的方式中,程序610具体进一步使得处理器602执行以下操作:
在主数据库中为暂未创建有触发器的一个或多个数据表创建对应的触发器;
利用主数据库的数据表对应的触发器触发与主数据库关联的至少一个从数据库的缓存数据更新操作,以使至少一个从数据库的缓存中的数据进行同步更新。
在一种可选的方式中,程序610具体进一步使得处理器602执行以下操作:
创建用于写入缓存数据更新操作记录的缓存更新信息表;
扫描缓存更新信息表中是否写入新的缓存数据更新操作记录,若是,则根据缓存数据更新操作记录触发缓存数据更新操作,以使缓存中的数据进行同步更新。
在一种可选的方式中,程序610具体还使得处理器602执行以下操作:
确定同步更新是否成功,若是,则删除写入缓存更新信息表的缓存数据更新操作记录。
在一种可选的方式中,程序610具体进一步使得处理器602执行以下操作:
连续扫描缓存更新信息表中是否写入新的缓存数据更新操作记录;
或者,每隔预设时间扫描缓存更新信息表中是否写入新的缓存数据更新操作记录。
在一种可选的方式中,程序610具体进一步使得处理器602执行以下操作:
创建用于写入缓存数据更新操作记录的消息队列;
扫描消息队列,从消息队列中读取缓存数据更新操作记录,根据缓存数据更新操作记录触发缓存数据更新操作,以使缓存中的数据进行同步更新。
在此处所提供的说明书中,说明了大量具体细节。然而,能够理解,本发明的实施例可以在没有这些具体细节的情况下实践。在一些实例中,并未详细示出公知的方法、结构和技术,以便不模糊对本说明书的理解。
类似地,应当理解,为了精简本公开并帮助理解各个发明方面中的一个或多个,在上面对本发明的示例性实施例的描述中,本发明的各个特征有时被一起分组到单个实施例、图、或者对其的描述中。然而,并不应将该公开的方法解释成反映如下意图:即所要求保护的本发明要求比在每个权利要求中所明确记载的特征更多的特征。更确切地说,如下面的权利要求书所反映的那样,发明方面在于少于前面公开的单个实施例的所有特征。因此,遵循具体实施方式的权利要求书由此明确地并入该具体实施方式,其中每个权利要求本身都作为本发明的单独实施例。
本领域那些技术人员可以理解,可以对实施例中的设备中的模块进行自适应性地改变并且把它们设置在与该实施例不同的一个或多个设备中。可以把实施例中的模块或单元或组件组合成一个模块或单元或组件,以及此外可以把它们分成多个子模块或子单元或子组件。除了这样的特征和/或过程或者单元中的至少一些是相互排斥之外,可以采用任何组合对本说明书(包括伴随的权利要求、摘要和附图)中公开的所有特征以及如此公开的任何方法或者设备的所有过程或单元进行组合。除非另外明确陈述,本说明书(包括伴随的权利要求、摘要和附图)中公开的每个特征可以由提供相同、等同或相似目的的替代特征来代替。
此外,本领域的技术人员能够理解,尽管在此所述的一些实施例包括其它实施例中所包括的某些特征而不是其它特征,但是不同实施例的特征的组合意味着处于本发明的范围之内并且形成不同的实施例。例如,在下面的权利要求书中,所要求保护的实施例的任意之一都可以以任意的组合方式来使用。
本发明的各个部件实施例可以以硬件实现,或者以在一个或者多个处理器上运行的软件模块实现,或者以它们的组合实现。本领域的技术人员应当理解,可以在实践中使用微处理器或者数字信号处理器(DSP)来实现根据本发明实施例的终端设备的信息显示装置中的一些或者全部部件的一些或者全部功能。本发明还可以实现为用于执行这里所描述的方法的一部分或者全部的设备或者装置程序(例如,计算机程序和计算机程序产品)。这样的实现本发明的程序可以存储在计算机可读介质上,或者可以具有一个或者多个信号的形式。这样的信号可以从因特网网站上下载得到,或者在载体信号上提供,或者以任何其他形式提供。
应该注意的是上述实施例对本发明进行说明而不是对本发明进行限制,并且本领域技术人员在不脱离所附权利要求的范围的情况下可设计出替换实施例。在权利要求中,不应将位于括号之间的任何参考符号构造成对权利要求的限制。单词“包含”不排除存在未列在权利要求中的元件或步骤。位于元件之前的单词“一”或“一个”不排除存在多个这样的元件。本发明可以借助于包括有若干不同元件的硬件以及借助于适当编程的计算机来实现。在列举了若干装置的单元权利要求中,这些装置中的若干个可以是通过同一个硬件项来具体体现。单词第一、第二、以及第三等的使用不表示任何顺序。可将这些单词解释为名称。
本发明公开了:
A1.一种基于触发器的缓存同步方法,其包括:
查询缓存中的数据,确定与所述数据关联的至少一个数据表;
在数据库中查找所述至少一个数据表;
若所述至少一个数据表中存在暂未创建有触发器的一个或多个数据表,则为所述暂未创建有触发器的一个或多个数据表创建对应的触发器;
当所述数据库中所述至少一个数据表的数据发生更新时,利用数据表对应的触发器触发缓存数据更新操作,以使所述缓存中的数据进行同步更新。
A2.根据A1所述的方法,其中,在所述在数据库中查找所述至少一个数据表之后,所述方法还包括:
查找所述数据库中已创建有触发器的一个或多个数据表;
若所述已创建有触发器的一个或多个数据表中存在部分数据表不属于所述至少一个数据表,则销毁不属于所述至少一个数据表的部分数据表对应的触发器。
A3.根据A1或A2所述的方法,其中,所述为所述暂未创建有触发器的一个或多个数据表创建对应的触发器具体为:
在从数据库中为所述暂未创建有触发器的一个或多个数据表创建对应的触发器;
所述利用数据表对应的触发器触发缓存数据更新操作,以使所述缓存中的数据进行同步更新具体为:利用从数据库中数据表对应的触发器触发缓存数据更新操作,以使所述从数据库的缓存中的数据进行同步更新。
A4.根据A1或A2所述的方法,其中,所述为所述暂未创建有触发器的一个或多个数据表创建对应的触发器具体为:在主数据库中为所述暂未创建有触发器的一个或多个数据表创建对应的触发器;
所述利用数据表对应的触发器触发缓存数据更新操作,以使所述缓存中的数据进行同步更新具体为:利用主数据库的数据表对应的触发器触发与所述主数据库关联的至少一个从数据库的缓存数据更新操作,以使所述至少一个从数据库的缓存中的数据进行同步更新。
A5.根据A1-A4中任一项所述的方法,其中,所述利用数据表对应的触发器触发缓存数据更新操作,以使所述缓存中的数据进行同步更新进一步包括:
创建用于写入缓存数据更新操作记录的缓存更新信息表;
扫描所述缓存更新信息表中是否写入新的缓存数据更新操作记录,若是,则根据所述缓存数据更新操作记录触发缓存数据更新操作,以使所述缓存中的数据进行同步更新。
A6.根据A5所述的方法,其中,所述根据所述更新操作记录触发缓存数据更新操作,以使所述缓存的数据进行同步更新之后,所述方法还包括:
确定所述同步更新是否成功,若是,则删除写入所述缓存更新信息表的缓存数据更新操作记录。
A7.根据A5所述的方法,其中,所述扫描所述缓存更新信息表中是否写入新的缓存数据更新操作记录进一步包括:
连续扫描所述缓存更新信息表中是否写入新的缓存数据更新操作记录;
或者,每隔预设时间扫描所述缓存更新信息表中是否写入新的缓存数据更新操作记录。
A8.根据A1-A4中任一项所述的方法,其中,所述利用数据表对应的触发器触发缓存数据更新操作,以使所述缓存中的数据进行同步更新进一步包括:
创建用于写入缓存数据更新操作记录的消息队列;
扫描所述消息队列,从所述消息队列中读取缓存数据更新操作记录,根据所述缓存数据更新操作记录触发缓存数据更新操作,以使所述缓存中的数据进行同步更新。
B9.一种基于触发器的缓存同步装置,其包括:
查询模块,适于查询缓存中的数据,确定与所述数据关联的至少一个数据表;
第一查找模块,适于在数据库中查找所述至少一个数据表;
创建模块,适于若所述至少一个数据表中存在暂未创建有触发器的一个或多个数据表,则为所述暂未创建有触发器的一个或多个数据表创建对应的触发器;
更新模块,适于当所述数据库中所述至少一个数据表的数据发生更新时,利用数据表对应的触发器触发缓存数据更新操作,以使所述缓存中的数据进行同步更新。
B10.根据B9所述的装置,其中,所述装置还包括:
第二查找模块,适于查找所述数据库中已创建有触发器的一个或多个数据表;
销毁模块,适于若所述已创建有触发器的一个或多个数据表中存在部分数据表不属于所述至少一个数据表,则销毁不属于所述至少一个数据表的部分数据表对应的触发器。
B11.根据B9或B10所述的装置,其中,所述创建模块具体适于:
在从数据库中为所述暂未创建有触发器的一个或多个数据表创建对应的触发器;
则所述更新模块具体适于:利用从数据库中数据表对应的触发器触发缓存数据更新操作,以使所述从数据库的缓存中的数据进行同步更新。
B12.根据B9或B10所述的装置,其中,所述创建模块具体适于:
在主数据库中为所述暂未创建有触发器的一个或多个数据表创建对应的触发器;
则所述更新模块具体适于:利用主数据库的数据表对应的触发器触发与所述主数据库关联的至少一个从数据库的缓存数据更新操作,以使所述至少一个从数据库的缓存中的数据进行同步更新。
B13.根据B9-B12中任一项所述的装置,其中,所述更新模块进一步包括:
缓存更新信息表创建单元,适于创建用于写入缓存数据更新操作记录的缓存更新信息表;
第一更新单元,适于扫描所述缓存更新信息表中是否写入新的缓存数据更新操作记录,若是,则根据所述缓存数据更新操作记录触发缓存数据更新操作,以使所述缓存中的数据进行同步更新。
B14.根据B13所述的装置,其中,所述装置还包括:
缓存更新信息表处理模块,用于确定所述同步更新是否成功,若是,则删除写入所述缓存更新信息表的缓存数据更新操作记录。
B15.根据B13所述的装置,其中,所述第一更新单元进一步适于:
连续扫描所述缓存更新信息表中是否写入新的缓存数据更新操作记录;
或者,每隔预设时间扫描所述缓存更新信息表中是否写入新的缓存数据更新操作记录。
B16.根据B9-B12中任一项所述的装置,其中,所述更新模块进一步包括:
消息队列创建单元,适于创建用于写入缓存数据更新操作记录的消息队列;
第二更新单元,适于扫描所述消息队列,从所述消息队列中读取缓存数据更新操作记录,根据所述缓存数据更新操作记录触发缓存数据更新操作,以使所述缓存中的数据进行同步更新。
C17.一种计算设备,包括:处理器、存储器、通信接口和通信总线,所述处理器、所述存储器和所述通信接口通过所述通信总线完成相互间的通信;
所述存储器用于存放至少一可执行指令,所述可执行指令使所述处理器执行如A1-A8中任一项所述的基于触发器的缓存同步方法对应的操作。
D18.一种计算机存储介质,所述存储介质中存储有至少一可执行指令,所述可执行指令使处理器执行如A1-A8中任一项所述的基于触发器的缓存同步方法对应的操作。

Claims (10)

1.一种基于触发器的缓存同步方法,其包括:
查询缓存中的数据,确定与所述数据关联的至少一个数据表;
在数据库中查找所述至少一个数据表;
若所述至少一个数据表中存在暂未创建有触发器的一个或多个数据表,则为所述暂未创建有触发器的一个或多个数据表创建对应的触发器;
当所述数据库中所述至少一个数据表的数据发生更新时,利用数据表对应的触发器触发缓存数据更新操作,以使所述缓存中的数据进行同步更新。
2.根据权利要求1所述的方法,其中,在所述在数据库中查找所述至少一个数据表之后,所述方法还包括:
查找所述数据库中已创建有触发器的一个或多个数据表;
若所述已创建有触发器的一个或多个数据表中存在部分数据表不属于所述至少一个数据表,则销毁不属于所述至少一个数据表的部分数据表对应的触发器。
3.根据权利要求1或2所述的方法,其中,所述为所述暂未创建有触发器的一个或多个数据表创建对应的触发器具体为:
在从数据库中为所述暂未创建有触发器的一个或多个数据表创建对应的触发器;
所述利用数据表对应的触发器触发缓存数据更新操作,以使所述缓存中的数据进行同步更新具体为:利用从数据库中数据表对应的触发器触发缓存数据更新操作,以使所述从数据库的缓存中的数据进行同步更新。
4.根据权利要求1或2所述的方法,其中,所述为所述暂未创建有触发器的一个或多个数据表创建对应的触发器具体为:在主数据库中为所述暂未创建有触发器的一个或多个数据表创建对应的触发器;
所述利用数据表对应的触发器触发缓存数据更新操作,以使所述缓存中的数据进行同步更新具体为:利用主数据库的数据表对应的触发器触发与所述主数据库关联的至少一个从数据库的缓存数据更新操作,以使所述至少一个从数据库的缓存中的数据进行同步更新。
5.根据权利要求1-4中任一项所述的方法,其中,所述利用数据表对应的触发器触发缓存数据更新操作,以使所述缓存中的数据进行同步更新进一步包括:
创建用于写入缓存数据更新操作记录的缓存更新信息表;
扫描所述缓存更新信息表中是否写入新的缓存数据更新操作记录,若是,则根据所述缓存数据更新操作记录触发缓存数据更新操作,以使所述缓存中的数据进行同步更新。
6.根据权利要求5所述的方法,其中,所述根据所述更新操作记录触发缓存数据更新操作,以使所述缓存的数据进行同步更新之后,所述方法还包括:
确定所述同步更新是否成功,若是,则删除写入所述缓存更新信息表的缓存数据更新操作记录。
7.根据权利要求5所述的方法,其中,所述扫描所述缓存更新信息表中是否写入新的缓存数据更新操作记录进一步包括:
连续扫描所述缓存更新信息表中是否写入新的缓存数据更新操作记录;
或者,每隔预设时间扫描所述缓存更新信息表中是否写入新的缓存数据更新操作记录。
8.一种基于触发器的缓存同步装置,其包括:
查询模块,适于查询缓存中的数据,确定与所述数据关联的至少一个数据表;
第一查找模块,适于在数据库中查找所述至少一个数据表;
创建模块,适于若所述至少一个数据表中存在暂未创建有触发器的一个或多个数据表,则为所述暂未创建有触发器的一个或多个数据表创建对应的触发器;
更新模块,适于当所述数据库中所述至少一个数据表的数据发生更新时,利用数据表对应的触发器触发缓存数据更新操作,以使所述缓存中的数据进行同步更新。
9.一种计算设备,包括:处理器、存储器、通信接口和通信总线,所述处理器、所述存储器和所述通信接口通过所述通信总线完成相互间的通信;
所述存储器用于存放至少一可执行指令,所述可执行指令使所述处理器执行如权利要求1-7中任一项所述的基于触发器的缓存同步方法对应的操作。
10.一种计算机存储介质,所述存储介质中存储有至少一可执行指令,所述可执行指令使处理器执行如权利要求1-7中任一项所述的基于触发器的缓存同步方法对应的操作。
CN201810712598.5A 2018-06-29 2018-06-29 基于触发器的缓存同步方法及装置、计算设备及存储介质 Pending CN108897868A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201810712598.5A CN108897868A (zh) 2018-06-29 2018-06-29 基于触发器的缓存同步方法及装置、计算设备及存储介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201810712598.5A CN108897868A (zh) 2018-06-29 2018-06-29 基于触发器的缓存同步方法及装置、计算设备及存储介质

Publications (1)

Publication Number Publication Date
CN108897868A true CN108897868A (zh) 2018-11-27

Family

ID=64347908

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201810712598.5A Pending CN108897868A (zh) 2018-06-29 2018-06-29 基于触发器的缓存同步方法及装置、计算设备及存储介质

Country Status (1)

Country Link
CN (1) CN108897868A (zh)

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110413418A (zh) * 2019-06-25 2019-11-05 北京三快在线科技有限公司 缓存同步装置及方法,缓存同步系统、电子设备
CN112445799A (zh) * 2020-11-19 2021-03-05 北京思特奇信息技术股份有限公司 一种单源多节点的数据同步方法和系统
CN113407209A (zh) * 2021-06-18 2021-09-17 湖南快乐阳光互动娱乐传媒有限公司 一种配置数据更新方法及装置
CN113491879A (zh) * 2020-04-08 2021-10-12 网易(杭州)网络有限公司 一种创建动态触发器的方法和装置
CN113491879B (zh) * 2020-04-08 2024-06-04 网易(杭州)网络有限公司 一种创建动态触发器的方法和装置

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101308513A (zh) * 2008-06-27 2008-11-19 福建星网锐捷网络有限公司 分布式系统中缓存数据的同步配置方法与装置
CN101770484A (zh) * 2008-12-31 2010-07-07 北大方正集团有限公司 一种网站更新实时发布的方法及系统
CN102741843A (zh) * 2011-03-22 2012-10-17 青岛海信传媒网络技术有限公司 从数据库中读取数据的方法及装置
CN103246696A (zh) * 2013-03-21 2013-08-14 宁波公众信息产业有限公司 高并发数据库的访问方法及应用于多服务器系统的方法
US20170153975A1 (en) * 2015-11-27 2017-06-01 Arm Limited Apparatus and method for handling atomic update operations

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101308513A (zh) * 2008-06-27 2008-11-19 福建星网锐捷网络有限公司 分布式系统中缓存数据的同步配置方法与装置
CN101770484A (zh) * 2008-12-31 2010-07-07 北大方正集团有限公司 一种网站更新实时发布的方法及系统
CN102741843A (zh) * 2011-03-22 2012-10-17 青岛海信传媒网络技术有限公司 从数据库中读取数据的方法及装置
CN103246696A (zh) * 2013-03-21 2013-08-14 宁波公众信息产业有限公司 高并发数据库的访问方法及应用于多服务器系统的方法
US20170153975A1 (en) * 2015-11-27 2017-06-01 Arm Limited Apparatus and method for handling atomic update operations

Cited By (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110413418A (zh) * 2019-06-25 2019-11-05 北京三快在线科技有限公司 缓存同步装置及方法,缓存同步系统、电子设备
CN110413418B (zh) * 2019-06-25 2022-04-05 北京三快在线科技有限公司 缓存同步装置及方法,缓存同步系统、电子设备
CN113491879A (zh) * 2020-04-08 2021-10-12 网易(杭州)网络有限公司 一种创建动态触发器的方法和装置
CN113491879B (zh) * 2020-04-08 2024-06-04 网易(杭州)网络有限公司 一种创建动态触发器的方法和装置
CN112445799A (zh) * 2020-11-19 2021-03-05 北京思特奇信息技术股份有限公司 一种单源多节点的数据同步方法和系统
CN113407209A (zh) * 2021-06-18 2021-09-17 湖南快乐阳光互动娱乐传媒有限公司 一种配置数据更新方法及装置

Similar Documents

Publication Publication Date Title
CN103955486B (zh) 分布式服务系统及其数据更新、数据查询的方法
US20190012104A1 (en) Page list based crash recovery
US9052938B1 (en) Correlation and associated display of virtual machine data and storage performance data
US8392386B2 (en) Tracking file contents
US8285677B2 (en) Method and apparatus for propagating tables while preserving cyclic foreign key relationships
US8676757B2 (en) Application of a differential dataset to a data store using sequential change sets
JP5466459B2 (ja) 階層ストレージ管理(hsm)制御ストレージ環境で双方向オーファン照合を行う方法、システムおよぶコンピュータ・プログラム
CN105205182B (zh) 多机房部署系统及跨机房的业务数据处理方法
CN108897868A (zh) 基于触发器的缓存同步方法及装置、计算设备及存储介质
JP5807777B2 (ja) トランザクション処理装置、トランザクション処理方法およびトランザクション処理プログラム
JP2007018399A (ja) 条件別スナップショット取得方法及びシステム
CN104679847B (zh) 一种构建在线实时更新海量音频指纹库的方法和设备
CN104133783B (zh) 处理分散式缓存数据的方法和装置
WO2011070910A1 (ja) データ配置・計算システム、データ配置・計算方法、マスタ装置、及びデータ配置方法
JP4398464B2 (ja) 1つのターゲット・ボリュームと1つのソース・ボリュームとの間のポイント・イン・タイム・コピー関連性を管理するためのシステム、方法、及びプログラム
CN110737682A (zh) 一种缓存操作方法、装置、存储介质和电子设备
JP2009064120A (ja) 検索システム
CN109086462A (zh) 一种分布式文件系统中元数据的管理方法
CN110032543A (zh) 一种存储文件系统的管理方法
US6996682B1 (en) System and method for cascading data updates through a virtual copy hierarchy
CN110489150A (zh) 一种虚拟机热升级方法、装置及其相关设备
JP7006013B2 (ja) データ提供プロラム、データ提供方法、及びデータ提供装置
US9037539B2 (en) Data synchronization
US20140201434A1 (en) Managing Volatile File Copies
JP2012238061A (ja) トランザクション処理装置、トランザクション処理方法およびトランザクション処理プログラム

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
RJ01 Rejection of invention patent application after publication
RJ01 Rejection of invention patent application after publication

Application publication date: 20181127