CN113076343B - 数据查询方法、装置、设备及存储介质 - Google Patents

数据查询方法、装置、设备及存储介质 Download PDF

Info

Publication number
CN113076343B
CN113076343B CN202110482141.1A CN202110482141A CN113076343B CN 113076343 B CN113076343 B CN 113076343B CN 202110482141 A CN202110482141 A CN 202110482141A CN 113076343 B CN113076343 B CN 113076343B
Authority
CN
China
Prior art keywords
database
time
slave
interaction information
query
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
CN202110482141.1A
Other languages
English (en)
Other versions
CN113076343A (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.)
Beijing Jingdong Zhenshi Information Technology Co Ltd
Original Assignee
Beijing Jingdong Zhenshi Information 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 Jingdong Zhenshi Information Technology Co Ltd filed Critical Beijing Jingdong Zhenshi Information Technology Co Ltd
Priority to CN202110482141.1A priority Critical patent/CN113076343B/zh
Publication of CN113076343A publication Critical patent/CN113076343A/zh
Application granted granted Critical
Publication of CN113076343B publication Critical patent/CN113076343B/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/24553Query execution of query operations
    • 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/23Updating
    • G06F16/2358Change logging, detection, and notification
    • 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/242Query formulation
    • G06F16/2433Query languages
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

Landscapes

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

Abstract

本公开提供一种数据查询方法、装置、设备及存储介质,涉及互联网技术领域。该方法包括:获取交互信息,所述交互信息用于查询数据库中的数据,所述数据库包括主数据库和从数据库;响应于判定所述交互信息中不包括写操作语句,获取所述从数据库的最近更新时间,其中,通过调用所述主数据库对所述从数据库进行更新;获取所述交互信息的查询时间;根据所述从数据库的最近更新时间和所述交互信息的查询时间从所述主数据库和所述从数据库中确定目标数据库,以调用所述目标数据库根据所述交互信息查询数据。该方法提高了数据查询的及时性和准确性。

Description

数据查询方法、装置、设备及存储介质
技术领域
本公开涉及互联网技术领域,具体而言,涉及一种数据查询方法、装置、设备及可读存储介质。
背景技术
在现今的万维网(World Wide Web,简写为web)***中,随着用户量的增加,***数据库的操作中“读”的压力远大于“写”,因此数据库读写分离越来越多的为人所使用。数据库读写分离后,通过对操作进行分配,对于写数据的相关操作,可以放到主数据库(主库)执行,而对于读数据的相关操作,可以放到从数据库(从库或读库)操作,从而实现降低主库的压力,保证主库的性能。但是在实际业务处理过程中,经常出现由于主从数据库同步延迟(主从延迟)原因,导致的查询从库时未能及时查询到对应的最新数据的情况,从而产生一系列业务问题。
在相关技术中,在从读写分离后的数据库***中查询数据时,对于查询的方法进行分析,如果需要查询最新的数据,则通过代码或其他配置,让此查询方法强制走主库,从而保证此查询不会受主从延迟的影响。但是这种方式需要在每次执行数据查询时,对查询方法进行分析,而且需要对分配数据库操作的代码进行修改,来保证查询最新数据时强制走主库。如果查询方法有所调整,则需要考虑是否需要添加强制走主库的代码或配置来保证此方法的业务正常运转,但可能会由于代码编写者忽略、成本较高等原因未对分配数据库操作的代码进行修改,导致未及时查主库而产生业务问题。
如上所述,如何提高数据查询的及时性与准确性成为亟待解决的问题。
在所述背景技术部分公开的上述信息仅用于加强对本公开的背景的理解,因此它可以包括不构成对本领域普通技术人员已知的现有技术的信息。
发明内容
本公开的目的在于提供一种数据查询方法、装置、设备及可读存储介质,至少在一定程度上克服由于相关技术通过分析查询方法以查询最新的数据导致的数据查询的及时性与准确性较低的问题。
本公开的其他特性和优点将通过下面的详细描述变得显然,或部分地通过本公开的实践而习得。
根据本公开的一方面,提供一种数据查询方法,包括:获取交互信息,所述交互信息用于查询数据库中的数据,所述数据库包括主数据库和从数据库;响应于判定所述交互信息中不包括写操作语句,获取所述从数据库的最近更新时间,其中,通过调用所述主数据库对所述从数据库进行更新;获取所述交互信息的查询时间;根据所述从数据库的最近更新时间和所述交互信息的查询时间从所述主数据库和所述从数据库中确定目标数据库,以调用所述目标数据库根据所述交互信息查询数据。
根据本公开的一实施例,所述方法还包括:以预设频率调用所述主数据库对所述从数据库进行更新,并获得所述从数据库的最近更新时间为当前时间。
根据本公开的一实施例,所述方法通过预设服务执行,所述预设服务通过对中间件服务进行封装获得。
根据本公开的一实施例,所述获取所述交互信息的查询时间包括:获得所述交互信息到达所述预设服务的时间为所述交互信息的查询时间。
根据本公开的一实施例,所述根据所述从数据库的最近更新时间和所述交互信息的查询时间从所述主数据库和所述从数据库中确定目标数据库包括:响应于判定所述从数据库的最近更新时间早于所述交互信息的查询时间,休眠预设时间,获取当前休眠次数;响应于判定所述休眠次数不大于预设休眠次数阈值,在休眠所述预设时间后再次判断所述从数据库的最近更新时间是否早于所述交互信息的查询时间;响应于判定所述从数据库的最近更新时间晚于所述交互信息的查询时间,确定所述从数据库为所述目标数据库。
根据本公开的一实施例,所述根据所述从数据库的最近更新时间和所述交互信息的查询时间从所述主数据库和所述从数据库中确定目标数据库还包括:响应于判定所述休眠次数大于预设休眠次数阈值,确定所述主数据库为所述目标数据库。
根据本公开的一实施例,所述根据所述从数据库的最近更新时间和所述交互信息的查询时间从所述主数据库和所述从数据库中确定目标数据库包括:响应于判定所述从数据库的最近更新时间晚于所述交互信息的查询时间,确定所述从数据库为所述目标数据库。
根据本公开的再一方面,提供一种数据查询装置,包括:交互信息获取模块,用于获取交互信息,所述交互信息用于查询数据库中的数据,所述数据库包括主数据库和从数据库;更新时间获取模块,用于响应于判定所述交互信息中不包括写操作语句,获取所述从数据库的最近更新时间,其中,通过调用所述主数据库对所述从数据库进行更新;查询时间获取模块,用于获取所述交互信息的查询时间;目标数据库确定模块,用于根据所述从数据库的最近更新时间和所述交互信息的查询时间从所述主数据库和所述从数据库中确定目标数据库,以调用所述目标数据库根据所述交互信息查询数据。
根据本公开的一实施例,所述装置还包括:从库更新模块,用于以预设频率调用所述主数据库对所述从数据库进行更新,并获得所述从数据库的最近更新时间为当前时间。
根据本公开的一实施例,所述装置通过预设服务实现,所述预设服务通过对中间件服务进行封装获得。
根据本公开的一实施例,所述查询时间获取模块还用于获得所述交互信息到达所述预设服务的时间为所述交互信息的查询时间。
根据本公开的一实施例,所述目标数据库确定模块包括:延迟判断模块,用于判断所述从数据库的最近更新时间是否早于所述交互信息的查询时间;休眠模块,用于响应于判定所述从数据库的最近更新时间早于所述交互信息的查询时间,休眠预设时间,获取当前休眠次数;休眠次数判断模块,用于判断所述休眠次数是否大于预设休眠次数阈值;所述延迟判断模块,用于响应于判定所述休眠次数不大于预设休眠次数阈值,在休眠所述预设时间后再次判断所述从数据库的最近更新时间是否早于所述交互信息的查询时间;所述目标数据库确定模块还用于响应于判定所述从数据库的最近更新时间晚于所述交互信息的查询时间,确定所述从数据库为所述目标数据库。
根据本公开的一实施例,所述目标数据库确定模块还用于响应于判定所述休眠次数大于预设休眠次数阈值,确定所述主数据库为所述目标数据库。
根据本公开的一实施例,所述目标数据库确定模块还用于响应于判定所述从数据库的最近更新时间晚于所述交互信息的查询时间,确定所述从数据库为所述目标数据库。
根据本公开的再一方面,提供一种设备,包括:存储器、处理器及存储在所述存储器中并可在所述处理器中运行的可执行指令,所述处理器执行所述可执行指令时实现如上述任一种方法。
根据本公开的再一方面,提供一种计算机可读存储介质,其上存储有计算机可执行指令,所述可执行指令被处理器执行时实现如上述任一种方法。
本公开的实施例提供的数据查询方法,在判定获取的用于查询数据库中的数据的交互信息中不包括写操作语句时,获取调用主数据库对从数据库进行更新的最近更新时间,再根据从数据库的最近更新时间和交互信息的查询时间从主数据库和从数据库中确定目标数据库,以调用目标数据库根据交互信息查询数据,从而可实现根据从数据库的最近更新时间与交互信息的查询时间的关系为查询操作分配数据库,无需对查询方法进行分析,提高了数据查询的及时性和准确性。
应当理解的是,以上的一般描述和后文的细节描述仅是示例性的,并不能限制本公开。
附图说明
通过参照附图详细描述其示例实施例,本公开的上述和其它目标、特征及优点将变得更加显而易见。
图1示出本公开实施例中一种***结构的示意图。
图2示出本公开实施例中一种数据查询方法的流程图。
图3示出本公开实施例中另一种***结构的示意图。
图4根据本公开实施例示出了预设服务中封装的任务的示意图。
图5根据本公开实施例示出了一种目标数据库确定方法的流程图。
图6是根据一示例性实施例示出的一种数据查询流程的示意图。
图7示出本公开实施例中一种数据查询装置的框图。
图8示出本公开实施例中另一种数据查询装置的框图。
图9示出本公开实施例中一种电子设备的结构示意图。
具体实施方式
现在将参考附图更全面地描述示例实施例。然而,示例实施例能够以多种形式实施,且不应被理解为限于在此阐述的范例;相反,提供这些实施例使得本公开将更加全面和完整,并将示例实施例的构思全面地传达给本领域的技术人员。附图仅为本公开的示意性图解,并非一定是按比例绘制。图中相同的附图标记表示相同或类似的部分,因而将省略对它们的重复描述。
此外,所描述的特征、结构或特性可以以任何合适的方式结合在一个或更多实施例中。在下面的描述中,提供许多具体细节从而给出对本公开的实施例的充分理解。然而,本领域技术人员将意识到,可以实践本公开的技术方案而省略所述特定细节中的一个或更多,或者可以采用其它的方法、装置、步骤等。在其它情况下,不详细示出或描述公知结构、方法、装置、实现或者操作以避免喧宾夺主而使得本公开的各方面变得模糊。
此外,术语“第一”、“第二”等仅用于描述目的,而不能理解为指示或暗示相对重要性或者隐含指明所指示的技术特征的数量。由此,限定有“第一”、“第二”的特征可以明示或者隐含地包括一个或者更多个该特征。在本公开的描述中,“多个”的含义是至少两个,例如两个,三个等,除非另有明确具体的限定。符号“/”一般表示前后关联对象是一种“或”的关系。
在本公开中,除非另有明确的规定和限定,“连接”等术语应做广义理解,例如,可以是电连接或可以互相通讯;可以是直接相连,也可以通过中间媒介间接相连。对于本领域的普通技术人员而言,可以根据具体情况理解上述术语在本公开中的具体含义。
如上所述,相关技术中在每次执行数据查询时对于查询的方法进行分析,可能会在查询方法改变时未及时修改分配数据库操作的代码,而导致未及时查主库而产生业务问题。因此,本公开提供了一种数据方法,通过添加从数据库的更新日志获得更新时间,来及时判断在当前查询操作时,对应的时间节点数据是否已存在从库中,如果是则直接查询从库数据,如果不是则休眠等待对应时间节点的数据同步后,再进行从库查询,如果长时间未等到数据同步到从库,则直接强制走主库查询,可以最大限度地保证查询的及时性与准确性。
图1示出了可以应用本公开的数据查询方法或数据查询装置的示例性***架构10。
如图1所示,***架构10可以包括终端设备102、网络104、服务器106和数据库108。终端设备102可以是具有显示屏并且支持输入、输出的各种电子设备,包括但不限于智能手机、平板电脑、膝上型便携计算机、台式计算机、可穿戴设备、虚拟现实设备、智能家居等等。网络104用以在终端设备102和服务器106之间提供通信链路的介质。网络104可以包括各种连接类型,例如有线、无线通信链路或者光纤电缆等等。服务器106可以是提供各种服务的服务器或服务器集群等,如应用程序服务器、代理服务器等等。数据库108可以为置于服务器上的大型数据库软件,也可以为安装在计算机上的小型数据库软件,用于存储数据。
用户可以使用终端设备102通过网络104与服务器106和数据库108交互,以接收或发送数据等。例如用户可在终端设备102上进行操作,将数据查询请求通过网络104发送至服务器106上,然后服务器106再将数据查询请求发送至对应的数据库108。再例如用户可在终端设备102上通过网络104接收数据库108通过服务器106转发的数据。
在服务器106也可通过网络104从数据库108接收数据或向数据库108发送数据等。例如服务器106可为应用程序服务器,用于通过网络104将用户的数据查询请求发送至数据库108。又例如服务器106可为代理服务器,用于基于用户的数据查询请求为查询操作分配数据库,并将数据查询请求发送至对应的数据库108,并从数据库108接收查询结果。
应该理解,图1中的终端设备、网络、服务器和数据库的数目仅仅是示意性的。根据实现需要,可以具有任意数目的终端设备、网络、服务器和数据库。
图2是根据一示例性实施例示出的一种数据查询方法的流程图。如图2所示的方法例如可以应用于上述***的服务器端,也可以应用于上述***的终端设备。
参考图2,本公开实施例提供的数据查询方法20可以包括以下步骤。
在步骤S202中,获取交互信息,交互信息用于查询数据库中的数据,数据库包括主数据库和从数据库。
在一些实施例中,实现数据库读写分离的***例如可为Web***,用户可在客户端发出数据查询请求,客户端根据数据查询请求将交互信息发送至Web***的应用服务端进行处理,交互信息例如可为交互语句,如结构化查询语言(Structured Query Language,SQL),用于数据库查询和更新和管理关系数据库***的程序设计语言。
在一些实施例中,可基于中间件服务实现读写分离,在进行数据查询时,在客户端产生的交互语句发送至中间件服务进行操作分配至主库或从库,例如关系型数据库管理***MySQL可采用中间件服务MySQL proxy实现读写分离后,通过MySQL proxy对交互语句进行处理,连接相应的数据库。
在一些实施例中,交互语句可以包括写操作语句和读操作语句。写操作语句例如可以包括数据定义语言(Data Definition Language,DDL)和数据操作语言(DataManipulation Language,DML)。其中,DDL主要是用在定义或改变表(TABLE)的结构,数据类型,表之间的链接和约束等初始化工作上,大多在建立表时使用,主要的命令有创建(CREATE)、更换(ALTER)、放弃(DROP)等;DML是用来对数据库里的数据进行操作的语言,主要命令有选择(SELECT)、更新(UPDATE)、***(INSERT)、删除(DELETE)等。读操作语句例如可以包括数据查询语言(Data Query Language,DQL),其基本结构是由SELECT子句,来源(FROM)子句,其中(WHERE)子句组成的查询块。
在步骤S204中,响应于判定交互信息中不包括写操作语句,获取从数据库的最近更新时间,其中,通过调用主数据库对从数据库进行更新。在判定交互信息中不包括写操作语句,可进行后续步骤,判断是否可连接从库。
在一些实施例中,可通过预设服务执行本公开实施例提供的数据查询方法,预设服务通过对中间件服务进行封装获得。对预设服务的详细描述可参照图3。
在一些实施例中,以预设频率调用主数据库对从数据库进行更新,并获得从数据库的最近更新时间为当前时间,具体实施方式可参照图3和图4。
在一些实施例中,在判定交互语句中包括写操作语句时,例如包括DDL和/或DML,则确定主库为目标数据库,即选择主库连接进行数据操作。
在步骤S206中,获取交互信息的查询时间。交互信息的查询时间可用于和从库的更新时间做比较,判断当前从库的数据是否已更新到查询时间点前的所有数据。
在一些实施例中,可获得交互信息到达预设服务的时间为交互信息的查询时间。
在步骤S208中,根据从数据库的最近更新时间和交互信息的查询时间从主数据库和从数据库中确定目标数据库,以调用目标数据库根据交互信息查询数据。可根据从数据库的最近更新时间和交互信息的查询时间之间的先后关系,判断当前从库的数据是否已更新到查询时间点前的所有数据,进而选择连接主数据库或从数据库。具体实施方式可参照图5。
根据本公开实施例提供的数据查询方法,在判定获取的用于查询数据库中的数据的交互信息中不包括写操作语句时,获取调用主数据库对从数据库进行更新的最近更新时间,再根据从数据库的最近更新时间和交互信息的查询时间从主数据库和从数据库中确定目标数据库,以调用目标数据库根据交互信息查询数据,从而可实现根据从数据库的最近更新时间与交互信息的查询时间的关系为查询操作分配数据库,无需对查询方法进行分析,提高了数据查询的及时性和准确性。
本方法未使用MySQL中的从库状态参数“落后主库的秒数(Seconds_Behind_Master)”来进行从库数据延迟的判断,可以避免在如网络延迟等情况下,通过记录输入输出而获得的Seconds_Behind_Master的值不能准确地显示数据的延迟时间。
图3示出了可以应用本公开的数据查询方法或数据查询装置的另一种示例性***架构30。如图3所示,用户302可包括多个用户,分别在各自的终端用户1、用户2、用户3……连接web***中的服务304,不同的用户连接服务304中不同的服务节点,例如用户1与服务1相连接,用户2与服务2相连接,用户3与服务3相连接,不同的服务节点汇集到预设服务3042进行操作分配处理,用于根据交互语句对应的操作调用数据库306中相应的主库3062或从库1、从库2。
基于主存同步的SQL语句的复制(statement-based replication,SBR)来进行预设服务3042可通过对中间件服务MySQL proxy进行封装获得。首先在从库中创建表“从库更新时间(t_slave)”,该表可仅有一条数据,这条数据的字段名为更新时间(update_time),用于记录从库的更新时间。预设服务3042中封装的内容可以包括更新从库的任务,图4根据本公开实施例示出了预设服务中封装的任务的示意图,如图4所示,如步骤S204的实施方式中描述的,可以预设频率(例如每k毫秒,k为正整数)调用主库对从库数据进行更新(S2044),并同时更新一次当前时间到t_slave中(S2042),其中t_slave的更新间隔k可以根据实际情况进行配置。还可以将执行目标数据库确定的流程封装在预设服务3042中,目标数据库确定方法的具体实施方式可参照图5和图6。
根据本公开实施例提供的***架构,通过对中间件服务进行封装,无需在每次查询时判断查询方法是否需要走主库,只需要在预设服务内部执行t_slave更新时间进行从库延迟判断后确定目标数据库,可实现准确地查询到最新数据的前提下,简化代码流程,节约开发成本。
图5根据本公开实施例示出了一种目标数据库确定方法的流程图。如图5所示的方法例如可以应用于上述***的服务器端,也可以应用于上述***的终端设备。
参考图5,本公开实施例提供的目标数据库确定方法50可以包括以下步骤。
在步骤S502中,响应于判定从数据库的最近更新时间晚于交互信息的查询时间,确定从数据库为目标数据库。在从数据库的最近更新时间晚于交互信息的查询时间的情况下,可以认为从库的数据已经更新到该查询时间之前主库的所有数据,因此可调用该从库进行数据查询。
在步骤S504中,响应于判定从数据库的最近更新时间早于交互信息的查询时间,休眠预设时间,获取当前休眠次数。在从数据库的最近更新时间早于交互信息的查询时间的情况下,则认为从库的数据未更新到该查询时间之前主库的所有数据,休眠预设时间,例如可为n毫秒,其中n为正数,n的值可根据实际情况进行配置,同时记录休眠次数,例如可将“休眠次数”字段的值加一。通过休眠操作,可等待从库数据更新至该查询时间之前主库的所有数据。
在步骤S506中,响应于判定休眠次数不大于预设休眠次数阈值,在休眠预设时间后再次判断从数据库的最近更新时间是否早于交互信息的查询时间。可根据实际情况进行配置预设休眠次数阈值m,其中m为正整数,用于限定休眠的次数,避免等待时间过长。再次判断从数据库的最近更新时间是否早于交互信息的查询时间后,则根据判定结果返回步骤S502或步骤S504。
在步骤S508中,响应于判定休眠次数大于预设休眠次数阈值,确定主数据库为目标数据库。在当前休眠次数大于预设休眠次数阈值时,则认为此从库延迟时长太大,无法满足查询要求,则直接调用主库进行查询。
根据本公开实施例提供的目标数据库确定方法,通过添加数据库的同步日志,来及时判断当前查询操作时对应的时间节点数据是否已存在从库中,如果是则直接查询从库数据,如果不是则等待对应时间节点的数据同步后,再进行从库查询,如果长时间未等到数据同步到从库,则直接强制走主库查询,实现了最大限度地保证查询的及时性与准确性。本方法通过MySQL自己的同步机制,来确定每个从库的最新同步时间,从而确认是否可以直接查询此从库,已保证数据的准确性。对于某个时间点主从出现延迟的情况,可以等待数据同步或强制让对应的查询语句直接走主库,从而保证查询数据的准确性。对于主从延迟较大的从库,避免对此从库进行查询,已保证数据查询的准确性。
图6是根据一示例性实施例示出的一种数据查询流程的示意图。如图6所示,流程开始(S602),首先判断交互语句SQL中是否包含如DML、DDL的写操作语句(S604),如果包含DML和/或DDL操作,则直接调用主库操作(S606);如果不包含DML和/或DDL操作,即仅包含DQL操作,则需要判断是否调用从库。先查询当前从库表t_slave的更新时间(S608),判断从库的更新时间是否晚于当前DQL达到预设服务的时间(查询时间)(S610)。如果从库的更新时间晚于于当前DQL达到预设服务的时间,则认为从库的数据已更新到DQL达到预设服务的时间执行前的所有数据,则调用此从库(S612),执行对应的DQL。如果从库的更新时间早于当前的DQL的达到预设服务的时间,则认为从库的数据未更新到DQL达到预设服务的时间执行前的所有数据,进行休眠预设时间(例如n毫秒)(S614),休眠次数+1,获得当前休眠次数。然后判断当前休眠次数是否大于预设阈值m(S616),如果休眠次数不大于m,则返回S608、S610继续判断。如果休眠次数大于m,则认为此从库延迟时长太大,无法满足查询要求,则直接调用主库进行查询(S618)。
根据本公开实施例提供的数据查询方法,可在每个DQL执行前及时感知到每个从库的主从延迟的数据延迟时间,从而保证每个在从库的查询语句数据的准确性。对于从库存在延迟的情况,通过休眠等待一定时间后,再次判断从库的延迟时间是否满足查询时间要求。对于从库出现延迟时长太大而无法满足查询的情况,可以及时感知并通过走主库来保证数据的准确性。对与某个从库一直延迟的问题,也可以通过本方法及时感知,避免DQL调用此从库。
图7是根据一示例性实施例示出的一种数据查询装置的框图。如图7所示的装置例如可以应用于***10的服务器端,也可以应用于上述***的终端设备。
参考图7,本公开实施例提供的装置70可以包括交互信息获取模块702、更新时间获取模块704、查询时间获取模块706和目标数据库确定模块708。
交互信息获取模块702可用于获取交互信息,交互信息用于查询数据库中的数据,数据库包括主数据库和从数据库。
更新时间获取模块704可用于响应于判定交互信息中不包括写操作语句,获取从数据库的最近更新时间,其中,通过调用主数据库对从数据库进行更新。
查询时间获取模块706可用于获取交互信息的查询时间。
目标数据库确定模块708可用于根据从数据库的最近更新时间和交互信息的查询时间从主数据库和从数据库中确定目标数据库,以调用目标数据库根据交互信息查询数据。
图8是根据一示例性实施例示出的另一种数据查询装置的框图。如图8所示的装置例如可以应用于***10的服务器端,也可以应用于上述***的终端设备。
参考图8,本公开实施例提供的装置80可以包括交互信息获取模块802、从库更新模块803、更新时间获取模块804、查询时间获取模块806和目标数据库确定模块808,目标数据库确定模块808可以包括延迟判断模块8082、休眠模块8084和休眠次数判断模块8086。装置通过预设服务实现,预设服务通过对中间件服务进行封装获得。
交互信息获取模块802可用于获取交互信息,交互信息用于查询数据库中的数据,数据库包括主数据库和从数据库。
从库更新模块803可用于以预设频率调用主数据库对从数据库进行更新,并获得从数据库的最近更新时间为当前时间。
更新时间获取模块804可用于响应于判定交互信息中不包括写操作语句,获取从数据库的最近更新时间,其中,通过调用主数据库对从数据库进行更新。
查询时间获取模块806可用于获取交互信息的查询时间。
查询时间获取模块806还可用于获得交互信息到达预设服务的时间为交互信息的查询时间。
目标数据库确定模块808可用于根据从数据库的最近更新时间和交互信息的查询时间从主数据库和从数据库中确定目标数据库,以调用目标数据库根据交互信息查询数据。
延迟判断模块8082可用于判断从数据库的最近更新时间是否早于交互信息的查询时间。
延迟判断模块8082还可用于响应于判定休眠次数不大于预设休眠次数阈值,在休眠预设时间后再次判断从数据库的最近更新时间是否早于交互信息的查询时间。
休眠模块8084可用于响应于判定从数据库的最近更新时间早于交互信息的查询时间,休眠预设时间,获取当前休眠次数。
休眠次数判断模块8086可用于判断休眠次数是否大于预设休眠次数阈值。
目标数据库确定模块808还可用于响应于判定从数据库的最近更新时间晚于交互信息的查询时间,确定从数据库为目标数据库。
目标数据库确定模块808还可用于响应于判定休眠次数大于预设休眠次数阈值,确定主数据库为目标数据库。
目标数据库确定模块808还可用于响应于判定从数据库的最近更新时间晚于交互信息的查询时间,确定从数据库为目标数据库。
本公开实施例提供的装置中的各个模块的具体实现可以参照上述方法中的内容,此处不再赘述。
图9示出本公开实施例中一种电子设备的结构示意图。需要说明的是,图9示出的设备仅以计算机***为示例,不应对本公开实施例的功能和使用范围带来任何限制。
如图9所示,设备900包括中央处理单元(CPU)901,其可以根据存储在只读存储器(ROM)902中的程序或者从存储部分908加载到随机访问存储器(RAM)903中的程序而执行各种适当的动作和处理。在RAM 903中,还存储有设备900操作所需的各种程序和数据。CPU901、ROM 902以及RAM 903通过总线904彼此相连。输入/输出(I/O)接口905也连接至总线904。
以下部件连接至I/O接口905:包括键盘、鼠标等的输入部分906;包括诸如阴极射线管(CRT)、液晶显示器(LCD)等以及扬声器等的输出部分907;包括硬盘等的存储部分908;以及包括诸如LAN卡、调制解调器等的网络接口卡的通信部分909。通信部分909经由诸如因特网的网络执行通信处理。驱动器910也根据需要连接至I/O接口905。可拆卸介质911,诸如磁盘、光盘、磁光盘、半导体存储器等等,根据需要安装在驱动器910上,以便于从其上读出的计算机程序根据需要被安装入存储部分908。
特别地,根据本公开的实施例,上文参考流程图描述的过程可以被实现为计算机软件程序。例如,本公开的实施例包括一种计算机程序产品,其包括承载在计算机可读介质上的计算机程序,该计算机程序包含用于执行流程图所示的方法的程序代码。在这样的实施例中,该计算机程序可以通过通信部分909从网络上被下载和安装,和/或从可拆卸介质911被安装。在该计算机程序被中央处理单元(CPU)901执行时,执行本公开的***中限定的上述功能。
需要说明的是,本公开所示的计算机可读介质可以是计算机可读信号介质或者计算机可读存储介质或者是上述两者的任意组合。计算机可读存储介质例如可以是——但不限于——电、磁、光、电磁、红外线、或半导体的***、装置或器件,或者任意以上的组合。计算机可读存储介质的更具体的例子可以包括但不限于:具有一个或多个导线的电连接、便携式计算机磁盘、硬盘、随机访问存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、光纤、便携式紧凑磁盘只读存储器(CD-ROM)、光存储器件、磁存储器件、或者上述的任意合适的组合。在本公开中,计算机可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行***、装置或者器件使用或者与其结合使用。而在本公开中,计算机可读的信号介质可以包括在基带中或者作为载波一部分传播的数据信号,其中承载了计算机可读的程序代码。这种传播的数据信号可以采用多种形式,包括但不限于电磁信号、光信号或上述的任意合适的组合。计算机可读的信号介质还可以是计算机可读存储介质以外的任何计算机可读介质,该计算机可读介质可以发送、传播或者传输用于由指令执行***、装置或者器件使用或者与其结合使用的程序。计算机可读介质上包含的程序代码可以用任何适当的介质传输,包括但不限于:无线、电线、光缆、RF等等,或者上述的任意合适的组合。
附图中的流程图和框图,图示了按照本公开各种实施例的***、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段、或代码的一部分,上述模块、程序段、或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个接连地表示的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图或流程图中的每个方框、以及框图或流程图中的方框的组合,可以用执行规定的功能或操作的专用的基于硬件的***来实现,或者可以用专用硬件与计算机指令的组合来实现。
描述于本公开实施例中所涉及到的模块可以通过软件的方式实现,也可以通过硬件的方式来实现。所描述的模块也可以设置在处理器中,例如,可以描述为:一种处理器包括交互信息获取模块、更新时间获取模块、查询时间获取模块和目标数据库确定模块。其中,这些模块的名称在某种情况下并不构成对该模块本身的限定,例如,交互信息获取模块还可以被描述为“从所连接的终端获取用于查询数据库中的数据的交互信息的模块”。
作为另一方面,本公开还提供了一种计算机可读介质,该计算机可读介质可以是上述实施例中描述的设备中所包含的;也可以是单独存在,而未装配入该设备中。上述计算机可读介质承载有一个或者多个程序,当上述一个或者多个程序被一个该设备执行时,使得该设备包括:
获取交互信息,交互信息用于查询数据库中的数据,数据库包括主数据库和从数据库;响应于判定交互信息中不包括写操作语句,获取从数据库的最近更新时间,其中,通过调用主数据库对从数据库进行更新;获取交互信息的查询时间;根据从数据库的最近更新时间和交互信息的查询时间从主数据库和从数据库中确定目标数据库,以调用目标数据库根据交互信息查询数据。
以上具体地示出和描述了本公开的示例性实施例。应可理解的是,本公开不限于这里描述的详细结构、设置方式或实现方法;相反,本公开意图涵盖包含在所附权利要求的精神和范围内的各种修改和等效设置。

Claims (10)

1.一种数据查询方法,其特征在于,包括:
获取交互信息,所述交互信息用于查询数据库中的数据,所述数据库包括主数据库和从数据库;
响应于判定所述交互信息中不包括写操作语句,获取所述从数据库的最近更新时间,其中,通过调用所述主数据库对所述从数据库进行更新;
获取所述交互信息的查询时间;
根据所述从数据库的最近更新时间和所述交互信息的查询时间从所述主数据库和所述从数据库中确定目标数据库,以调用所述目标数据库根据所述交互信息查询数据;
根据所述从数据库的最近更新时间和所述交互信息的查询时间从所述主数据库和所述从数据库中确定目标数据库,包括:
根据所述从数据库的最近更新时间和所述交互信息的查询时间之间的先后关系,判断当前所述从数据库的数据是否已更新到查询时间点前的所有数据,并根据判断结果将所述主数据库或所述从数据库确定为所述目标数据库。
2.根据权利要求1所述的方法,其特征在于,还包括:
以预设频率调用所述主数据库对所述从数据库进行更新,并获得所述从数据库的最近更新时间为当前时间。
3.根据权利要求1或2所述的方法,其特征在于,所述方法通过预设服务执行,所述预设服务通过对中间件服务进行封装获得。
4.根据权利要求3所述的方法,其特征在于,所述获取所述交互信息的查询时间包括:
获得所述交互信息到达所述预设服务的时间为所述交互信息的查询时间。
5.根据权利要求1或2所述的方法,其特征在于,所述根据所述从数据库的最近更新时间和所述交互信息的查询时间从所述主数据库和所述从数据库中确定目标数据库包括:
响应于判定所述从数据库的最近更新时间早于所述交互信息的查询时间,休眠预设时间,获取当前休眠次数;
响应于判定所述休眠次数不大于预设休眠次数阈值,在休眠所述预设时间后再次判断所述从数据库的最近更新时间是否早于所述交互信息的查询时间;
响应于判定所述从数据库的最近更新时间晚于所述交互信息的查询时间,确定所述从数据库为所述目标数据库。
6.根据权利要求5所述的方法,其特征在于,所述根据所述从数据库的最近更新时间和所述交互信息的查询时间从所述主数据库和所述从数据库中确定目标数据库还包括:
响应于判定所述休眠次数大于预设休眠次数阈值,确定所述主数据库为所述目标数据库。
7.根据权利要求1或2所述的方法,其特征在于,所述根据所述从数据库的最近更新时间和所述交互信息的查询时间从所述主数据库和所述从数据库中确定目标数据库包括:
响应于判定所述从数据库的最近更新时间晚于所述交互信息的查询时间,确定所述从数据库为所述目标数据库。
8.一种数据查询装置,其特征在于,包括:
交互信息获取模块,用于获取交互信息,所述交互信息用于查询数据库中的数据,所述数据库包括主数据库和从数据库;
更新时间获取模块,用于响应于判定所述交互信息中不包括写操作语句,获取所述从数据库的最近更新时间,其中,通过调用所述主数据库对所述从数据库进行更新;
查询时间获取模块,用于获取所述交互信息的查询时间;
目标数据库确定模块,用于根据所述从数据库的最近更新时间和所述交互信息的查询时间从所述主数据库和所述从数据库中确定目标数据库,以调用所述目标数据库根据所述交互信息查询数据;
所述目标数据库确定模块,还用于根据所述从数据库的最近更新时间和所述交互信息的查询时间之间的先后关系,判断当前所述从数据库的数据是否已更新到查询时间点前的所有数据,并根据判断结果将所述主数据库或所述从数据库确定为所述目标数据库。
9.一种设备,包括:存储器、处理器及存储在所述存储器中并可在所述处理器中运行的可执行指令,其特征在于,所述处理器执行所述可执行指令时实现如权利要求1-7任一项所述的方法。
10.一种计算机可读存储介质,其上存储有计算机可执行指令,其特征在于,所述可执行指令被处理器执行时实现如权利要求1-7任一项所述的方法。
CN202110482141.1A 2021-04-30 2021-04-30 数据查询方法、装置、设备及存储介质 Active CN113076343B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202110482141.1A CN113076343B (zh) 2021-04-30 2021-04-30 数据查询方法、装置、设备及存储介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202110482141.1A CN113076343B (zh) 2021-04-30 2021-04-30 数据查询方法、装置、设备及存储介质

Publications (2)

Publication Number Publication Date
CN113076343A CN113076343A (zh) 2021-07-06
CN113076343B true CN113076343B (zh) 2024-04-05

Family

ID=76616676

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202110482141.1A Active CN113076343B (zh) 2021-04-30 2021-04-30 数据查询方法、装置、设备及存储介质

Country Status (1)

Country Link
CN (1) CN113076343B (zh)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113476853B (zh) * 2021-07-26 2023-10-03 北京达佳互联信息技术有限公司 交互任务的数据处理方法、装置、电子设备、存储介质

Citations (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102591964A (zh) * 2011-12-30 2012-07-18 北京新媒传信科技有限公司 数据读写分离机制的实现方法和装置
CN104376127A (zh) * 2014-12-12 2015-02-25 北京奇虎科技有限公司 一种数据操作方法及装置
CN105589797A (zh) * 2015-09-17 2016-05-18 ***股份有限公司 主从数据库间数据同步延时检测的方法
CN106453297A (zh) * 2016-09-30 2017-02-22 努比亚技术有限公司 检测主从延时方法、装置和***
CN106802892A (zh) * 2015-11-26 2017-06-06 阿里巴巴集团控股有限公司 用于主备数据一致性校验的方法和设备
CN106815097A (zh) * 2017-01-18 2017-06-09 北京许继电气有限公司 数据库容灾***和方法
CN107704603A (zh) * 2017-10-16 2018-02-16 山东浪潮通软信息科技有限公司 一种实现读写分离的方法及装置
CN107766575A (zh) * 2017-11-14 2018-03-06 中国联合网络通信集团有限公司 读写分离的数据库访问方法及装置
CN108121782A (zh) * 2017-12-18 2018-06-05 新华三云计算技术有限公司 查询请求的分配方法、数据库中间件***以及电子设备
CN109189851A (zh) * 2018-06-29 2019-01-11 网宿科技股份有限公司 数据访问方法、数据库设备以及主从数据库实例***
CN110019257A (zh) * 2017-08-18 2019-07-16 北京京东尚科信息技术有限公司 主备数据库延迟时间处理方法、装置、介质和电子设备
CN111581238A (zh) * 2020-04-01 2020-08-25 北京奇艺世纪科技有限公司 信息查询方法及装置、电子设备、计算机可读存储介质
CN112527817A (zh) * 2020-12-08 2021-03-19 北京大米科技有限公司 信息处理方法、信息处理装置、存储介质和电子设备

Patent Citations (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102591964A (zh) * 2011-12-30 2012-07-18 北京新媒传信科技有限公司 数据读写分离机制的实现方法和装置
CN104376127A (zh) * 2014-12-12 2015-02-25 北京奇虎科技有限公司 一种数据操作方法及装置
CN105589797A (zh) * 2015-09-17 2016-05-18 ***股份有限公司 主从数据库间数据同步延时检测的方法
CN106802892A (zh) * 2015-11-26 2017-06-06 阿里巴巴集团控股有限公司 用于主备数据一致性校验的方法和设备
CN106453297A (zh) * 2016-09-30 2017-02-22 努比亚技术有限公司 检测主从延时方法、装置和***
CN106815097A (zh) * 2017-01-18 2017-06-09 北京许继电气有限公司 数据库容灾***和方法
CN110019257A (zh) * 2017-08-18 2019-07-16 北京京东尚科信息技术有限公司 主备数据库延迟时间处理方法、装置、介质和电子设备
CN107704603A (zh) * 2017-10-16 2018-02-16 山东浪潮通软信息科技有限公司 一种实现读写分离的方法及装置
CN107766575A (zh) * 2017-11-14 2018-03-06 中国联合网络通信集团有限公司 读写分离的数据库访问方法及装置
CN108121782A (zh) * 2017-12-18 2018-06-05 新华三云计算技术有限公司 查询请求的分配方法、数据库中间件***以及电子设备
CN109189851A (zh) * 2018-06-29 2019-01-11 网宿科技股份有限公司 数据访问方法、数据库设备以及主从数据库实例***
CN111581238A (zh) * 2020-04-01 2020-08-25 北京奇艺世纪科技有限公司 信息查询方法及装置、电子设备、计算机可读存储介质
CN112527817A (zh) * 2020-12-08 2021-03-19 北京大米科技有限公司 信息处理方法、信息处理装置、存储介质和电子设备

Also Published As

Publication number Publication date
CN113076343A (zh) 2021-07-06

Similar Documents

Publication Publication Date Title
CN109840429B (zh) 智能合约部署、调用方法和装置
CN108228817B (zh) 数据处理方法、装置和***
CN111694857B (zh) 存储资源数据的方法、装置、电子设备及计算机可读介质
CN109388626B (zh) 用于向业务分配编号的方法和装置
CN110555030A (zh) 一种sql语句的处理方法和装置
CN113626223A (zh) 一种接口调用方法和装置
CN111782235A (zh) 一种数据升级、查询方法和装置
CN111125064A (zh) 一种生成数据库模式定义语句的方法和装置
CN113886485A (zh) 数据处理方法、装置、电子设备、***和存储介质
CN113076343B (zh) 数据查询方法、装置、设备及存储介质
CN113190517B (zh) 数据集成方法、装置、电子设备和计算机可读介质
CN111241189A (zh) 一种同步数据的方法和装置
CN108694172B (zh) 信息输出方法和装置
CN115982148A (zh) 数据库表的处理方法、装置、电子设备和存储介质
CN111753226A (zh) 一种页面加载方法和装置
CN113779122B (zh) 导出数据的方法和装置
CN115629909A (zh) 业务数据处理的方法、装置、电子设备和存储介质
US10114864B1 (en) List element query support and processing
CN113760928A (zh) 一种缓存数据更新***和方法
CN113742321A (zh) 一种数据更新的方法和装置
CN112579615A (zh) 一种实现分布式锁的方法和装置
CN111104409A (zh) 一种数据库处理方法、装置、存储介质及电子设备
CN112559001A (zh) 更新应用的方法和装置
CN112214500A (zh) 数据对比的方法、装置、电子设备和存储介质
CN112507100B (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