CN111694863B - 一种数据库缓存的刷新方法、系统和装置 - Google Patents

一种数据库缓存的刷新方法、系统和装置 Download PDF

Info

Publication number
CN111694863B
CN111694863B CN202010365884.6A CN202010365884A CN111694863B CN 111694863 B CN111694863 B CN 111694863B CN 202010365884 A CN202010365884 A CN 202010365884A CN 111694863 B CN111694863 B CN 111694863B
Authority
CN
China
Prior art keywords
database
cache
change event
event
refreshing
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
Application number
CN202010365884.6A
Other languages
English (en)
Other versions
CN111694863A (zh
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.)
LightHouse Technology Co Ltd
Original Assignee
Wuhan Dengta Zhiguang 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 Wuhan Dengta Zhiguang Technology Co ltd filed Critical Wuhan Dengta Zhiguang Technology Co ltd
Priority to CN202010365884.6A priority Critical patent/CN111694863B/zh
Publication of CN111694863A publication Critical patent/CN111694863A/zh
Application granted granted Critical
Publication of CN111694863B publication Critical patent/CN111694863B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/24Querying
    • G06F16/245Query processing
    • G06F16/2455Query execution
    • G06F16/24552Database cache management
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/24Querying
    • G06F16/245Query processing
    • G06F16/2457Query processing with adaptation to user needs
    • G06F16/24578Query processing with adaptation to user needs using ranking

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Databases & Information Systems (AREA)
  • Computational Linguistics (AREA)
  • Data Mining & Analysis (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

本发明涉及数据库领域,特别是涉及一种数据库缓存的刷新方法和装置。其主要步骤为:将数据库日志解析为数据变更事件的记录,其中,数据变更事件的记录的字段包括表名、事件类型、更新字段和记录数据;将数据变更事件的记录存入变更事件队列中;依次获取变更事件队列中的每一条数据变更事件的记录;根据数据变更事件的各字段的值获取数据库缓存的配置规则;根据数据变更事件和配置规则对数据库缓存进行刷新。本发明将数据库读写的业务代码和数据库缓存中数据的过期淘汰解耦合,提升了缓存刷新系统的通用性,减少应用的处理复杂度。

Description

一种数据库缓存的刷新方法、系统和装置
技术领域
本发明涉及数据库领域,特别是涉及一种数据库缓存的刷新方法、系统和装置。
背景技术
互联网和移动互联网应用中,数据库需要及时响应大量并发读写请求,为了避免读写冲突,提高请求的相应速度,可以使用缓存系统将待读取的数据单独存储,使得读写可以并行进行,不必互相等待,提高系统的而相应时间和吞吐量。
使用缓存系统时,为了使缓存的内容和数据库内容保持同步避免因同步不及时而导致的数据不一致,也为了及时清除缓存中的无用数据避免缓存空间不足或缓存空间过大,需要对缓存的数据进行及时增加、更新、删除的刷新操作。
目前通常使用的刷新策略为定时刷新或事件触发刷新。定时刷新根据固定的过期时间周期进行刷新,预设的过期时间到时缓存自动失效或刷新,这种方式实现相对简单,但时效性取决于失效时间设置的长短,若过期时间较长会导致刷新不及时,若过期时间过短会导致缓存频繁刷新降低缓存的效率。事件触发刷新通过数据变更事件触发缓存更新,时效性较高,并且数据更新的时候才会刷新缓存,对于大部分读多写少的应用缓存刷新效率比较高,但缺点是实现起来会比较复杂,需要引入大量代码完成事件通知和缓存更新等操作。
鉴于此,如何克服该现有技术所存在的缺陷,解决缓存系统更新效率和控制复杂度的矛盾,是本技术领域待解决的问题。
发明内容
针对现有技术的以上缺陷或改进需求,本发明解决了事件触发式刷新策略控制方式复杂的问题。
本发明实施例采用如下技术方案:
第一方面,本发明提供了一种数据库缓存的刷新方法,其特征在于:将数据库日志解析为数据变更事件的记录,其中,数据变更事件的记录的字段包括表名、事件类型、更新字段和记录数据;将数据变更事件的记录存入变更事件队列中;依次获取变更事件队列中的每一条数据变更事件的记录;根据数据变更事件的各字段的值获取数据库缓存的配置规则;根据数据变更事件和配置规则对数据库缓存进行刷新。
优选的,将数据库日志解析为数据变更事件的记录,具体为:查找变更事件在数据库日志中的记录,变更事件包括更新、删除和创建事件;根据查找到的数据库日志中的记录,获取发生事件变更的表名,将表名写入数据变更事件的表名字段;根据查找到的数据库日志中的记录,获取变更事件的类型,将变更事件的类型写入数据变更事件的事件类型字段;根据查找到的数据库日志中的记录,获取数据库记录变更前后的数据,将发生变更的字段名写入数据变更事件的更新字段字段,将变更后的数据写入数据变更事件的记录数据字段。
优选的,根据数据变更事件的属性获取数据库缓存的配置规则,具体为:若数据变更事件的事件类型为更新事件,通过表名、事件类型和更新字段获取配置规则;若数据变更事件的事件类型为删除事件或创建事件,通过表名和事件类型获取配置规则。
优选的,数据库缓存的主键包括静态主键和动态主键,静态主键具体为预设的主键字符串,动态主键具体为数据更新事件对应的数据库记录中的至少一个字段的值。
优选的,根据数据变更事件和配置规则对数据库缓存进行刷新,具体为,若数据变更事件的事件类型为删除事件:若需删除的数据库缓存中的记录主键为静态主键,将数据库缓存中对应的数据变更事件的缓存记录删除;若需删除的数据库缓存中的记录主键为动态主键,按照构造规则由数据变更事件生成主键,将缓存中与生成的主键相应的缓存记录删除。
优选的,按照构造规则由数据变更事件生成主键,具体为:根据构造规则获取数据变更事件中的更新字段和/或记录数据中相应的字段的值,根据字段的值生成主键。
优选的:将数据变更事件的记录存入变更事件队列中和根据数据变更事件和配置规则对数据库缓存进行刷新两个步骤并发执行。
优选的,变更事件队列采用持久化存储,以便于在系统断电时保存数据变更事件,避免数据库和数据库缓存中数据不同步。
另一方面,本发明还提供了一种数据库的缓存刷新的系统,包括数据库、缓存系统、缓存刷新系统;缓存系统内持久化存储需缓存的数据库的记录;缓存刷新系统由数据库日志中获取数据变更事件,将数据变更事件解析为数据变更事件记录,根据数据变更事件的属性获取变更事件队列的配置规则将数据变更事件记录存入缓存系统,或从缓存系统中删除数据变更事件记录,根据数据变更队列中的记录对数据库缓存进行刷新。
另一方面,本发明还提供了一种数据库的缓存刷新的装置,包括至少一个处理器和存储器,至少一个处理器和存储器之间通过数据总线连接存储器存储能被至少一个处理器执行的指令,指令在被处理器执行后,用于完成第一方面所述的数据库的缓存刷新的装置方法。
与现有技术相比,本发明实施例的有益效果在于:通过使用变更事件队列将数据库读写的业务代码和数据库缓存中数据的过期淘汰解耦合,提升了缓存刷新系统的通用性,减少应用的处理复杂度。
进一步的,本发明实施例还提供了一种数据库的缓存刷新的系统,通过独立的缓存刷新系统监听数据库的更新日志,通过变更事件队列管理缓存系统的刷新和过期,以便于简化缓存系统中数据的管理和动态刷新。本发明实施例还提供了一种数据库的缓存刷新的装置,通过处理器和存储器的硬件执行实现数据库的缓存刷新。
附图说明
为了更清楚地说明本发明实施例的技术方案,下面将对本发明实施例中所需要使用的附图作简单地介绍。显而易见地,下面所描述的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本发明实施例提供的一种数据库的缓存刷新的方法流程图;
图2为本发明实施例提供的另一种数据库的缓存刷新的方法流程图;
图3为本发明实施例提供的另一种数据库的缓存刷新的方法流程图;
图4为本发明实施例提供的一种数据库的缓存刷新的系统结构示意图;
图5为本发明实施例提供的一种数据库的缓存刷新的装置结构示意图。
具体实施方式
为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。
本发明是一种特定功能系统的体系结构,因此在具体实施例中主要说明各结构模组的功能逻辑关系,并不对具体软件和硬件实施方式做限定。
此外,下面所描述的本发明各个实施方式中所涉及到的技术特征只要彼此之间未构成冲突就可以相互组合。下面就参考附图和实施例结合来详细说明本发明。
实施例1:
在数据库读写过程中,为了保证数据库和缓存系统的同步性,并简化读写时的控制复杂度,本实施例中在数据库缓存之外设立了变更事件队列,使用变更事件队列对数据库中的变更事件事实同步保证数据的一致性,使用配置规则过滤需缓存中的过期数据,解除了数据库和数据库缓存之间的耦合。
如图1所示,本发明实施例提供的数据库缓存的刷新方法的方法具体步骤如下:
步骤101:将数据库日志解析为数据变更事件的记录,数据变更事件的记录的字段包括表名、事件类型、更新字段、记录数据。
在数据库系统中,数据的会因为更新、删除、创建而产生变化。因此,数据变更事件的记录中使用表名、事件类型、更新字段和记录数据字段保存数据的变化事件。表名为发生数据变化的表名称;事件类型包括更新、删除、创建三种;更新字段标记了表中哪些字段发生了变化,记录数据保存了变化后的现有数据。每一条数据变更事件的记录对应数据库日志中一次变更事件,通过数据变更事件的记录可以还原数据库中每一次数据变更事件,因此缓存系统可以直接通过数据变更事件的记录进行数据刷新,而不需要向数据库请求数据读取。
步骤102:将数据变更事件的记录存入变更事件队列中。
在本实施例提供的数据库缓存的刷新方法,采用单独的变更事件队列保存数据库中的数据变化情况,再根据变更事件队列中的数据变更事件对数据库缓存进行更新,而不是直接由数据库记录中获取数据对数据库缓存进行更新,将数据库本身的读写事件和缓存的读写事件相互独立,减少了读写时的控制复杂度,避免读写冲突。
步骤103:依次获取变更事件队列中的每一条数据变更事件的记录。
变更事件队列中保存所有的数据变更事件的记录,在一般的实施场景中,变更事件队列采用先进先出模式,新生成的数据变更事件的记录添加在队尾,缓存系统由队列头依次获取数据变更事件的记录进行刷新,每条数据变更事件的记录被取出刷新完成后删除。使用先进先出模式的情况下,先发生的变更事件先更新至缓存系统中,以避免因变更顺序混乱而导致的数据同步错误。
步骤104:根据数据变更事件的属性获取数据库缓存的配置规则;
根据时间变更队列对数据库缓存进行数据刷新时,对于不同类型的数据可以设置不同的配置规则,根据不同的而配置规则对不同类型的数据变更时间进行不同的刷新操作,如直接删除、查找对应记录后删除等。配置规则的存在可以使数据库缓存能够根据不同用户的实施场景对数据库缓存中的记录进行合理的更新和删除,使数据库缓存中保存的数据极可能匹配读取请求所需要的数据,不因为过期删除而导致无法直接由缓存中获取数据,而对数据库提出读取请求,降低响应效率。
步骤105:根据数据变更事件和配置规则对数据库缓存进行刷新
根据获取到的每一条数据变更事件中各字段的内容,可以还原每一条需要刷新的缓存在数据库中的原记录内容,根据原纪录内容,依照配置规则对数据库缓存中的数据进行刷新。具体的,数据库缓存的刷新方式包括更新、过滤删除、添加,分别对应了数据变更事件中的事件类型更新、删除、创建。
经过本实施例中提供的步骤101-步骤105后,即可完成数据库缓存系统的刷新。将数据库日志中的数据变化转换为数据变更事件,并使用变更事件队列将数据库的读写和数据库缓存的读写相互独立,在保证数据更新实时性的基础上使得缓存管理更加简化。
在某些具体实施场景中,应用系统已有自带的缓存模块,为了保证本实施例提供的缓存刷新方法的可通用性,步骤105中对数据库缓存刷新仅仅完成过滤删除的操作,而不包括更新、添加的操作,更新和添加的操作由应用系统自带的缓存模块完成。
进一步的,为了保证变更事件队列的通用性,可以通过消息队列中间件对变更事件队列进行实现,通过消息队列中间件提高队列管理的效率和安全性。
在一般的数据库系统和应用系统中,数据库缓存的存储空间大小固定,无法对所有可能被读取的数据进行缓存,因此,应用系统接收到请求时,首先尝试从缓存中读取,如果读取到,直接将数据返回;若未读取到,则向数据库发送读请求,将数据放入缓存后再将数据结果返回。
在本实施例的不同实施场景中,应用系统对不同类型数据的实时性、更新频率等有着不同的要求。为了适应应用系统的实际需求,可以将数据变更事件设定不同的优先级,如为实时性要求较高、更新频率较高的事件设定较高优先级,优先级较高的事件在变更事件队列中排序更靠前,可以使优先级较高的数据变更事件较早进行刷新,避免因刷新不及时导致的读取错误。
为了将不同数据库表中的数据进行分类缓存,便于读取时查找,在数据库缓存中,可以对不同的数据库表使用不同的存储区域,并对每一个数据库表使用相应的变更事件队列进行存储,针对不同的数据库表采用不同的配置规则进行刷新,提高数据库缓存的刷新效率。
为了避免进行数据库缓存时出现数据传输错误,数据变更事件中还包括数据完整性校验字段。具体的,数据校验字段可为需缓存的数据库记录的MD5校验码。数据库缓存刷新后,对缓存中的记录进行校验,校验通过说明数据正确可以使用;校验不通过,说明数据错误,对本次缓存进行相应的错误处理,如重新由数据库中提取数据进行缓存、将错误写入系统日志等。
本实施例提供的数据库缓存的刷新方法的方法,都可以简便高效的完成数据库缓存的刷新,使数据库缓存在管理复杂度较低的前提下,保持较高实时性和较短的响应时间。
实施例2:
基于实施例1提供的数据库缓存的刷新方法,在不同的具体应用场景中,还可以使用下列方法进行具体的实施,或根据使用需求和实际场景的不同进行补充和调整。
在本实施例的具体实施场景中,如图2所示,使用如下步骤将数据库日志解析为数据变更事件。
步骤201:查找变更事件在数据库日志中的记录。
步骤202:根据查找到的记录,获取发生事件变更的表名,写入数据变更事件的表名字段。
步骤203:根据查找到的记录,获取变更事件的类型,写入数据变更事件的事件类型字段。
步骤204:根据查找到的记录,获取数据库记录变更前后的数据,写入数据变更事件的更新字段和记录数据字段。
通过上述步骤,可以将数据库日志中保存的数据库更新、删除、创建事件提取出来,并转换为数据变更事件,以便于后续使用变更事件队列进行单独保存,使用变更数据队列中的数据对数据库缓存进行刷新,避免数据库日志的读写和数据库缓存刷新的冲突。
在本实施例的某些具体实施场景中,针对不同数据变更事件的不同事件类型,需要根据不同的标准选择配置规则。对于删除事件或创建事件,数据的改变仅通过表名和事件类型即可确认,因此仅通过表名和事件类型即可确定需要使用的配置规则。对于更新事件,针对同一张表中不同的字段的更新,可能存在不同的配置规则,因此,需要根据表名、事件类型和更新字段确定需要使用的配置规则。
在本实施例提供的数据库缓存中,为了将数据库缓存中的记录和数据库中的记录相对应,对数据库缓存中的记录设置主键,在本实施例中,为了满足不同的使用需求,数据库缓存中的记录可以使用静态主键和动态主键两种形式。静态主键为一个固定的字符串,可以使用数据库记录的某个字段名,或者根据缓存记录的内容自定义类型名,如热点新闻信息缓存,可以采用自定义的字符串FocusNewsList作为主键,数据库记录中所有的热点新闻信息列表序列化后的字符串作为缓存内容,静态主键可以对同一类型的数据库缓存统一管理,便于统一进行刷新动作。动态主键可以根据数据库记录中的某些字段内容具体生成,以便于通过每一条数据库记录的内容查找对应的数据库缓存记录的内容,对每一条缓存记录单独进行刷新。
进一步的,对于不同的主键类型,数据库缓存在刷新时需要使用不同的配置规则。具体的,当主键为静态主键时,同一主键对应数据库缓存中同一类型的所有记录,在进行刷新时,对相应类型的数据库缓存全部进行刷新操作,如需刷新的主键为FocusNewsList时,数据库缓存中所有主键相同的和热点新闻对应的记录全部进行刷新。当主键为动态主键时,需要确定和需刷新的数据库记录对应的数据库缓存。如图3所示,可以根据以下步骤对数据库缓存进行刷新:
步骤301:获取需刷新的数据库记录的数据。
在本发明实施例中,变更事件包括更新事件、删除事件和创建事件这些会导致数据库中数据变更的事件,不包括数据库查询、备份等不会导致数据库中数据变更的事件。
步骤302:根据数据库记录中相应字段的值和构造规则,生成数据库记录对应的动态主键。
步骤303:根据构造出的动态主键,查找数据库缓存中相应的记录。
步骤304:对查找到的数据库缓存中的记录进行刷新。
为了进一步提高数据库缓存刷新时的响应速度,充分利用变更事件队列带来的数据库和数据库缓存的独立性,进行数据库缓存刷新时,数据库和变更数据队列之间的读写操作,以及数据变更队列和数据库缓存之间的读写操作,都可以采用并发执行的模式。具体的,进行数据库刷新时需要对硬件操作而耗时较长的步骤102和步骤105,两步骤可以并发执行,以减少系统总体的响应时间。
为了避免因系统关机或断电导致的变更事件队列存储丢失,导致变更事件队列中未及时被数据库缓存刷新的事件丢失,造成数据库缓存和数据库中的数据不同步,因此变更事件队列需要采用持久化存储。具体的,可以采用磁盘进行存储,同时可以在本地或远程进行备份,以确保存储安全,并方便进行回滚。
本实施例中的数据库缓存的刷新方法,在实施例1所提供的方法基础上,进一步提供了具体的实施方案,以及可选用的附加方案。在不同的具体实施场景中,可以根据不同的需求对方案进行选择和组合,以满足数据库缓存刷新时的效率和稳定性等问题。
实施例3:
基于实施例1和实施例2中提供的数据库缓存的刷新方法,本实施例提供了一种数据库缓存的刷新系统,通过系统模块完成数据库缓存的刷新。
如图4所示的数据库缓存的刷新系统,包括日志解析模块、事件队列、配置管理模块、事件调度模块、缓存刷新模块。
其中,日志解析模块、配置管理模块、事件调度模块和缓存刷新模块使用处理器进行实现,可以共用一个处理器,也可以使用多个处理器以便于同步处理。事件队列使用非易失性存储器实现,可以使用多个存储器进行热备份或分布式存储,以保证数据安全。
日志解析模块读取数据库日志,并执行步骤101中将数据库日志解析为数据库变更事件的操作、步骤102中将数据变更事件的记录存入变更事件队列的操作。
事件队列模块对变更事件队列进行保存,接受日志解析模块的写入操作,接受配置管理模块读写操作,接受事件调度模块的读取操作。
配置管理模块对数据库、变更事件队列、数据库缓存中的记录进行匹配。在使用动态主键的情况下,配置管理模块对动态主键进行生成。
事件调度模块对数据库缓存的刷新进行调度,执行步骤103中从事件队列模块中的变更事件队列中读取数据变更事件,并根据步骤104中通过数据变更事件的内容获取到的配置规则调用缓存刷新模块的接口,以便对数据库缓存中的记录进行刷新。
缓存刷新模块具体执行步骤105中数据库缓存的刷新操作。在一部分应用系统中,会有自带的缓存刷新系统,为了保证系统的通用性,缓存刷新模块仅执行删除类型事件的刷新,更新和创建类型的事件由应用系统自带的缓存刷新系统完成。
进一步的,由于数据库缓存的存储空间有限,无法保存数据库中所有数据,应用系统接收到请求时首先会先尝试从数据库缓存中读取,如果读取到直接将数据返回,若未读取到,则将数据库中相应的数据放入缓存后再将数据结果返回。
通过将数据库缓存的刷新方法拆分后,将不同步骤的执行和存储分配至多个独立的模块,可以进一步的提高各步骤的独立性和并发性,简化事件提取和刷新的控制复杂度,缩短响应时间、提高系统稳定性。
实施例4:
在上述实施例1至实施例2提供的数据库缓存的刷新方法,和实施例3提供的数据库缓存的刷新系统的基础上,本发明还提供了一种可用于实现上述方法的数据库缓存的刷新装置,如图5所示,是本发明实施例的装置架构示意图。本实施例的图-关系数据库混合存储的装置包括一个或多个处理器21以及存储器22。其中,图5中以一个处理器21为例。
处理器21和存储器22可以通过总线或者其他方式连接,图5中以通过总线连接为例。
存储器22作为一种数据库缓存的刷新方法非易失性计算机可读存储介质,可用于存储非易失性软件程序、非易失性计算机可执行程序以及模块,如实施例1至实施例2中的数据库缓存的刷新方法。处理器21通过运行存储在存储器22中的非易失性软件程序、指令以及模块,从而执行数据库缓存的刷新装置的各种功能应用以及数据处理,即实现实施例1至实施例2的数据库缓存的刷新方法。
存储器22可以包括高速随机存取存储器,还可以包括非易失性存储器,例如至少一个磁盘存储器件、闪存器件、或其他非易失性固态存储器件。在一些实施例中,存储器22可选包括相对于处理器21远程设置的存储器,这些远程存储器可以通过网络连接至处理器21。上述网络的实例包括但不限于互联网、企业内部网、局域网、移动通信网及其组合。
程序指令/模块存储在存储器22中,当被一个或者多个处理器21执行时,执行上述实施例1至实施例2中的数据库缓存的刷新方法,例如,执行以上描述的图1-图3所示的各个步骤。
本领域普通技术人员可以理解实施例的各种方法中的全部或部分步骤是可以通过程序来指令相关的硬件来完成,该程序可以存储于一计算机可读存储介质中,存储介质可以包括:只读存储器(ROM,Read Only Memory)、随机存取存储器(RAM,Random AccessMemory)、磁盘或光盘等。
以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内所作的任何修改、等同替换和改进等,均应包含在本发明的保护范围之内。

Claims (10)

1.一种数据库缓存的刷新方法,其特征在于:
数据库缓存中的记录设置主键,其中,主键包括动态主键和静态主键;
将数据库日志解析为数据变更事件的记录,为每个数据变更事件设置优先级,其中,所述数据变更事件的记录的字段包括表名、事件类型、更新字段和记录数据;
将数据变更事件的记录存入变更事件队列中,根据数据变更事件的优先级为数据变更事件排序,其中,变更事件队列由消息队列中间件进行管理;
采用先进先出模式依次获取变更事件队列中的每一条数据变更事件的记录,每条数据变更事件的记录被取出刷新完成后删除;
根据数据变更事件的各字段的值获取数据库缓存的配置规则;
当数据库缓存的主键为静态主键时,根据静态主键获取需刷新的数据库记录;当数据库缓存的主键为动态主键时,根据数据变更时间的记录构造出相应的动态主键,并根据构造出的动态主键获取需刷新的数据库记录;
当数据库缓存的主键为静态主键时,根据数据变更事件和配置规则,采用并发方式对所有相应的数据库缓存进行刷新;当数据库缓存的主键为动态主键时,根据数据变更事件和配置规则对相应的一条数据库缓存进行单独刷新;
其中,当应用系统存在缓存模块时,由数据库缓存执行删除操作的刷新,由应用系统的缓存模块完成更新和添加的刷新。
2.根据权利要求1所述的数据库缓存的刷新方法,其特征在于,所述将数据库日志解析为数据变更事件的记录,具体为:
查找变更事件在数据库日志中的记录,所述变更事件包括更新、删除和创建事件;
根据查找到的数据库日志中的记录,获取发生事件变更的表名,将所述表名写入数据变更事件的表名字段;
根据查找到的数据库日志中的记录,获取变更事件的类型,将所述变更事件的类型写入数据变更事件的事件类型字段;
根据查找到的数据库日志中的记录,获取数据库记录变更前后的数据,将发生变更的字段名写入数据变更事件的更新字段字段,将变更后的数据写入数据变更事件的记录数据字段。
3.根据权利要求2所述的数据库缓存的刷新方法,其特征在于,根据数据变更事件的属性获取数据库缓存的配置规则,具体为:
若数据变更事件的事件类型为更新事件,通过表名、事件类型和更新字段获取配置规则;
若数据变更事件的事件类型为删除事件或创建事件,通过表名和事件类型获取配置规则。
4.根据权利要求1所述的数据库缓存的刷新方法,其特征在于:所述数据库缓存的主键包括静态主键和动态主键,静态主键具体为预设的主键字符串,动态主键具体为数据更新事件对应的数据库记录中的至少一个字段的值。
5.根据权利要求4所述的数据库缓存的刷新方法,其特征在于,所述根据数据变更事件和配置规则对数据库缓存进行刷新,具体为,若数据变更事件的事件类型为删除事件:
若需删除的数据库缓存中的记录主键为静态主键,将数据库缓存中对应的数据变更事件的缓存记录删除;
若需删除的数据库缓存中的记录主键为动态主键,按照构造规则由数据变更事件生成主键,将缓存中与生成的主键相应的缓存记录删除。
6.根据权利要求5所述的数据库缓存的刷新方法,其特征在于,所述按照构造规则由数据变更事件生成主键,具体为:根据构造规则获取数据变更事件中的更新字段和/或记录数据中相应的字段的值,根据字段的值生成主键。
7.根据权利要求1所述的数据库缓存的刷新方法,其特征在于:所述将数据变更事件的记录存入变更事件队列中和根据数据变更事件和配置规则对数据库缓存进行刷新两个步骤并发执行。
8.根据权利要求1所述的数据库缓存的刷新方法,其特征在于:所述变更事件队列采用持久化存储,以便于在系统断电时保存数据变更事件,避免数据库和数据库缓存中数据不同步。
9.一种数据库的缓存刷新的系统,其特征在于,所述系统用于执行权利要求1-8中任一项所述的数据库缓存的刷新方法,所述系统包括日志解析模块、事件队列、配置管理模块、事件调度模块和缓存刷新模块,具体的;
日志解析模块读取数据库日志,将数据库日志解析为数据库变更事件,将数据变更事件的记录存入变更事件队列;
事件队列模块对变更事件队列进行保存,接受日志解析模块的写入操作,接受配置管理模块读写操作,并接受事件调度模块的读取操作;
配置管理模块对数据库、变更事件队列、数据库缓存中的记录进行匹配;
事件调度模块对数据库缓存的刷新进行调度,从事件队列模块中的变更事件队列中读取数据变更事件,并中通过数据变更事件的内容获取到的配置规则调用缓存刷新模块的接口;
缓存刷新模块执行数据库缓存的刷新操作。
10.一种数据库的缓存刷新的装置,其特征在于:
包括至少一个处理器和存储器,所述至少一个处理器和存储器之间通过数据总线连接,所述存储器存储能被所述至少一个处理器执行的指令,所述指令在被所述处理器执行后,用于完成权利要求1-8中任一所述的数据库的缓存刷新的装置方法。
CN202010365884.6A 2020-04-30 2020-04-30 一种数据库缓存的刷新方法、系统和装置 Active CN111694863B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202010365884.6A CN111694863B (zh) 2020-04-30 2020-04-30 一种数据库缓存的刷新方法、系统和装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202010365884.6A CN111694863B (zh) 2020-04-30 2020-04-30 一种数据库缓存的刷新方法、系统和装置

Publications (2)

Publication Number Publication Date
CN111694863A CN111694863A (zh) 2020-09-22
CN111694863B true CN111694863B (zh) 2023-11-28

Family

ID=72476969

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202010365884.6A Active CN111694863B (zh) 2020-04-30 2020-04-30 一种数据库缓存的刷新方法、系统和装置

Country Status (1)

Country Link
CN (1) CN111694863B (zh)

Families Citing this family (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113726845A (zh) * 2021-07-14 2021-11-30 深圳市有为信息技术发展有限公司 车载终端的数据传输方法、装置、车载终端和商用车辆
CN113641690B (zh) * 2021-08-10 2023-10-27 南威软件股份有限公司 一种跨应用缓存更新方法
CN113672668A (zh) * 2021-08-27 2021-11-19 工银科技有限公司 大数据场景下的日志实时处理方法及装置
CN113836579B (zh) * 2021-09-26 2024-04-09 多点生活(成都)科技有限公司 一种数据处理方法、装置、电子设备及存储介质
CN114416800A (zh) * 2022-01-24 2022-04-29 深圳小鹅网络技术有限公司 热点缓存过期淘汰方法、装置、计算机设备和存储介质
CN118568114B (zh) * 2024-07-31 2024-10-11 济南浪潮数据技术有限公司 缓存刷新方法、装置、设备、计算机程序产品及存储介质

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN107291779A (zh) * 2016-04-12 2017-10-24 百度在线网络技术(北京)有限公司 缓存数据管理方法及装置
CN109241072A (zh) * 2018-08-31 2019-01-18 携程计算机技术(上海)有限公司 基于Canal的缓存更新方法及系统

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9477609B2 (en) * 2013-04-22 2016-10-25 Sap Se Enhanced transactional cache with bulk operation

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN107291779A (zh) * 2016-04-12 2017-10-24 百度在线网络技术(北京)有限公司 缓存数据管理方法及装置
CN109241072A (zh) * 2018-08-31 2019-01-18 携程计算机技术(上海)有限公司 基于Canal的缓存更新方法及系统

Also Published As

Publication number Publication date
CN111694863A (zh) 2020-09-22

Similar Documents

Publication Publication Date Title
CN111694863B (zh) 一种数据库缓存的刷新方法、系统和装置
CN109213772B (zh) 数据存储方法及NVMe存储系统
US9659050B2 (en) Delta store giving row-level versioning semantics to a non-row-level versioning underlying store
CN112286941B (zh) 一种基于Binlog+HBase+Hive的大数据同步方法和装置
US10754854B2 (en) Consistent query of local indexes
US7769792B1 (en) Low overhead thread synchronization system and method for garbage collecting stale data in a document repository without interrupting concurrent querying
CN103106286B (zh) 元数据的管理方法和装置
CN104679898A (zh) 一种大数据访问方法
CN104778270A (zh) 一种用于多文件的存储方法
CN103514106A (zh) 一种数据缓存方法
CN103595797B (zh) 一种分布式存储系统中的缓存方法
JP2022531867A (ja) データ読み取り方法、装置、コンピュータ装置及びコンピュータプログラム
US20050125458A1 (en) Chronological data record access
CN107888687B (zh) 一种基于分布式存储系统的代理客户端存储加速方法及系统
US10379779B2 (en) Concurrent, incremental, and generational mark and sweep garbage collection
US8600962B2 (en) Transaction processing device, transaction processing method, and transaction processing program
WO2022213526A1 (zh) 事务处理方法、分布式数据库系统、集群及介质
CN113438275A (zh) 数据迁移方法、装置、存储介质及数据迁移设备
CN114741453A (zh) 数据同步的方法、系统及计算机可读存储介质
CN113312386B (zh) 一种基于分布式消息的批量入库方法
CN110196788B (zh) 一种数据读取方法、装置、系统及存储介质
CN118035255A (zh) 存算分离数据库的非侵入式日志下推方法
CN113448964A (zh) 一种基于图-kv的混合存储方法及装置
JP4126843B2 (ja) データ管理方法および装置並びにデータ管理プログラムを格納した記録媒体
CN115495495A (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
TR01 Transfer of patent right

Effective date of registration: 20240312

Address after: 430000 Taizhong Avenue, Gaoqiao Industrial Park, Taiwan investment zone, Dongxihu District, Wuhan City, Hubei Province

Patentee after: Lighthouse Technology Co.,Ltd.

Country or region after: China

Address before: Room 08, 15 / F, building 2, phase I, modern international design city, 41 Guanggu Avenue, Donghu New Technology Development Zone, Wuhan City, Hubei Province, 430000

Patentee before: WUHAN DENGTA ZHIGUANG TECHNOLOGY Co.,Ltd.

Country or region before: China

TR01 Transfer of patent right