一种数据库数据读取方法、装置、电子设备以及可读介质制造方法及图纸

技术编号:38592312 阅读:16 留言:0更新日期:2023-08-26 23:30
本申请涉及一种数据库数据读取方法、装置、电子设备及可读介质,本申请提供的数据库数据读取方法,通过在接收到从数据库的数据读取指令时,确定该数据读取指令读取的数据是否为脏读数据,若为脏读数据则切换为从主数据库读取数据,进而保证读出的脏读数据为主数据库中的最新数据;若不为脏读数据则直接从从数据库读取,避免了一直从主数据库读取数据,导致主数据库负荷量大的问题,同时避免了当从数据库与主数据库之间的同步延时较大,且数据读取指令读取的数据为脏读数据时,仍然从从数据库读取该数据,导致通过从数据库读取的数据与主数据库中的最新数据不一致的问题,提高了向用户提供的查询结果准确率。户提供的查询结果准确率。户提供的查询结果准确率。

【技术实现步骤摘要】
一种数据库数据读取方法、装置、电子设备以及可读介质


[0001]本申请涉及计算机
,尤其涉及一种数据库数据读取方法、装置、电子设备以及可读介质。

技术介绍

[0002]为了确保数据库产品的稳定性,很多数据库拥有双机热备功能,也就是采用读写分离技术,通过设置主数据库(Master)和从数据库(Slave),通过同步服务将主数据库中的数据变化实时同步到从数据库中。
[0003]现有的采用读写分离技术的数据库访问方法,通过消息同步机制服务,将原有Master数据库中的数据变化通过消息的方式同步写入Slave数据库中。在数据库的使用过程中,Master数据库负责对外提供增、删、改业务;Slave数据库(通常为分布式数据库)负责对外提供读业务。在Master数据库发生数据变化时,通过消息同步机制服务生成数据变化信息,生产者服务将数据变化信息封装成具有指定格式的数据变化消息,消费者服务根据数据变化消息解封装,得到数据变化信息,并根据数据变化信息将Master数据发生的数据变化同步到Slave数据库;
[0004]但是由于网络抖动等因素,主从同步延迟(比如:Master、Slave数据同步延迟时间大于1s)不可避免,在读写请求密集的业务场景下,有可能会导致读请求读到更新前的脏数据,造成后续业务发生异常,目前,相关技术中常用的解决方案是通过定时任务、或者事件驱动机制来检查数据异常,事后发现问题,修复业务异常,修复方案与业务耦合紧密,实现成本较高,因此,如何避免读取到更新前的脏数据成了亟需解决的问题。

技术实现思路

[0005]本申请提供了一种数据库数据读取方法、装置、电子设备以及可读介质,以解决相关技术中,当从数据库与主数据库之间的同步延时较大时,导致通过从数据库读取的数据与主数据库中的最新数据不一致的问题。
[0006]第一方面,本申请提供了一种数据库数据读取方法,所述方法包括:接收针对从数据库的数据读取指令,确定所述数据读取指令指向的数据对应的数据读取策略,并基于所述数据读取策略判断所述数据读取指令指向的数据是否为脏读数据,所述数据读取策略用于确定数据读取方式;若所述数据读取指令指向的数据为所述脏读数据时,执行所述数据读取指令从主数据库读取指向的数据;若所述数据读取指令指向的数据不为所述脏读数据时,执行所述数据读取指令从所述从数据库读取指向的数据。
[0007]在一些示例中,确定所述数据读取指令指向的数据对应的数据读取策略,包括:获取所述数据读取指令指向的数据对应的数据类型,所述数据类型包括自增标识数据和时间标识数据中的任意一个;当所述数据类型为所述自增标识数据时,确定所述数据读取指令指向的数据对应的所述数据读取策略为:获取所述数据读取指令指向的数据对应的步长和当前最大主键值;当所述数据类型为所述时间标识数据时,确定所述数据读取指令指向的
数据对应的所述数据读取策略为:获取所述主数据库和所述从数据库的最新同步时间,并获取所述数据读取指令指向的数据对应的更新时间,其中,所述最新同步时间表征所述主数据和所述从数据库互相同步的最新的同步时间,且数据库中每个数据均对应一个更新时间。
[0008]在一些示例中,基于所述数据读取策略判断所述数据读取指令指向的数据是否为脏读数据,包括:获取所述数据读取指令指向的数据对应的主键值,并将所述当前最大主键值和所述自增步长的差值与所述数据读取指令指向的数据对应的主键值进行比较;若所述当前最大主键值和所述自增步长的差值不低于所述数据读取指令指向的数据对应的主键值,判定所述数据读取指令指向的数据为所述脏读数据。
[0009]在一些示例中,基于所述数据读取策略判断所述数据读取指令指向的数据是否为脏读数据,包括:将所述最新同步时间和所述更新时间进行比对;当所述最新同步时间在所述更新时间之前时,判定所述数据读取指令指向的数据为所述脏读数据。
[0010]在一些示例中,获取所述数据读取指令指向的数据对应的自增步长和当前最大主键值,包括:从数据库配置中心获取所述当前最大主键值以及所述自增步长;获取所述主数据库和所述从数据库的最新同步时间,并获取所述数据读取指令指向的数据对应的更新时间,包括:直接获取所述主数据库和所述从数据库的最新同步时间,并从所述主数据库获取所述数据读取指令指向的数据对应的更新时间。
[0011]在一些示例中,所述数据库配置中心设置有配置项,所述配置项包括当前最大主键值以及所述自增步长;从数据库获取所述当前最大主键值以及所述自增步长之前,所述方法还包括:设置定时任务,所述定时任务用于定时从所述数据库获取数据,对所述数据库配置中心包含的所述当前最大主键值和所述自增步长进行更新。
[0012]第二方面,本申请提供了一种数据库数据读取装置,所述装置包括:确定模块,所述确定模块用于接收针对从数据库的数据读取指令,确定所述数据读取指令指向的数据对应的数据读取策略,并基于所述数据读取策略判断所述数据读取指令指向的数据是否为脏读数据;读取模块,所述读取模块用于在所述数据读取指令指向的数据为所述脏读数据时,执行所述数据读取指令从主数据库读取指向的数据;所述读取模块还用于在所述数据读取指令指向的数据不为所述脏读数据时,执行所述数据读取指令从所述从数据库读取指向的数据。
[0013]在一些示例中,所述确定模块还用于获取所述数据读取指令指向的数据对应的数据类型,所述数据类型包括自增标识数据和时间标识数据中的任意一个;当所述数据类型为所述自增标识数据时,确定所述数据读取指令指向的数据对应的所述数据读取策略为:获取所述数据读取指令指向的数据对应的自增步长和当前最大主键值;当所述数据类型为所述时间标识数据时,确定所述数据读取指令指向的数据对应的所述数据读取策略为:获取所述主数据库和所述从数据库的最新同步时间,并获取所述数据读取指令指向的数据对应的更新时间,其中,所述最新同步时间表征所述主数据和所述从数据库互相同步的最新的同步时间,且数据库中每个数据均对应一个更新时间。
[0014]第三方面,提供了一种电子设备,包括处理器、通信接口、存储器和通信总线,其中,处理器,通信接口,存储器通过通信总线完成相互间的通信;
[0015]存储器,用于存放计算机程序;
[0016]处理器,用于执行存储器上所存放的程序时,实现第一方面任一项实施例所述的数据库数据读取方法的步骤。
[0017]第四方面,提供了一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现如第一方面任一项实施例所述的数据库数据读取方法的步骤。
[0018]本申请实施例提供的上述技术方案与现有技术相比具有如下优点:
[0019]本申请实施例提供的该数据库数据读取方法,所述方法包括:接收针对从数据库的数据读取指令,确定所述数据读取指令指向的数据对应的数据读取策略,并基于所述数据读取策略判断所述数据读取指令指向的数据是否为脏读数据;若所述数据读取指令指向的数据为所述脏读数据时,执行所述数据读取指令从主数据库读取指向的数据;若所述数据本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种数据库数据读取方法,其特征在于,所述方法包括:接收针对从数据库的数据读取指令,确定所述数据读取指令指向的数据对应的数据读取策略,并基于所述数据读取策略判断所述数据读取指令指向的数据是否为脏读数据,所述数据读取策略用于确定数据读取方式;若所述数据读取指令指向的数据为所述脏读数据时,执行所述数据读取指令从主数据库读取指向的数据;若所述数据读取指令指向的数据不为所述脏读数据时,执行所述数据读取指令从所述从数据库读取指向的数据。2.根据权利要求1所述的方法,其特征在于,确定所述数据读取指令指向的数据对应的数据读取策略,包括:获取所述数据读取指令指向的数据对应的数据类型,所述数据类型包括自增标识数据和时间标识数据中的任意一个;当所述数据类型为所述自增标识数据时,确定所述数据读取指令指向的数据对应的所述数据读取策略为:获取所述数据读取指令指向的数据对应的自增步长和当前最大主键值;当所述数据类型为所述时间标识数据时,确定所述数据读取指令指向的数据对应的所述数据读取策略为:获取所述主数据库和所述从数据库的最新同步时间,并获取所述数据读取指令指向的数据对应的更新时间,其中,所述最新同步时间表征所述主数据和所述从数据库互相同步的最新的同步时间,且数据库中每个数据均对应一个更新时间。3.根据权利要求2所述的方法,其特征在于,基于所述数据读取策略判断所述数据读取指令指向的数据是否为脏读数据,包括:获取所述数据读取指令指向的数据对应的主键值,并将所述当前最大主键值和所述自增步长的差值与所述数据读取指令指向的数据对应的主键值进行比较;若所述当前最大主键值和所述自增步长的差值不低于所述数据读取指令指向的数据对应的主键值,判定所述数据读取指令指向的数据为所述脏读数据。4.根据权利要求2所述的方法,其特征在于,基于所述数据读取策略判断所述数据读取指令指向的数据是否为脏读数据,包括:将所述最新同步时间和所述更新时间进行比对;当所述最新同步时间在所述更新时间之前时,判定所述数据读取指令指向的数据为所述脏读数据。5.根据权利要求2所述的方法,其特征在于,获取所述数据读取指令指向的数据对应的自增步长和当前最大主键值,包括:从数据库配置中心获取所述当前最大主键值以及所述自增步长;获取所述主数据库和所述从数据库的最新同步时间,并获取所述数据读取指令指向的数据对应的更新时间,包括:直接获取所述主数...

【专利技术属性】
技术研发人员:易方昶黄明恩
申请(专利权)人:北京奇艺世纪科技有限公司
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1