CN114969256A - 数据查询方法和单元 - Google Patents

数据查询方法和单元 Download PDF

Info

Publication number
CN114969256A
CN114969256A CN202210579957.0A CN202210579957A CN114969256A CN 114969256 A CN114969256 A CN 114969256A CN 202210579957 A CN202210579957 A CN 202210579957A CN 114969256 A CN114969256 A CN 114969256A
Authority
CN
China
Prior art keywords
query
task
database
query task
new
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
CN202210579957.0A
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.)
Alibaba China Co Ltd
Original Assignee
Alibaba China 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 Alibaba China Co Ltd filed Critical Alibaba China Co Ltd
Priority to CN202210579957.0A priority Critical patent/CN114969256A/zh
Publication of CN114969256A publication Critical patent/CN114969256A/zh
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/30Information retrieval; Database structures therefor; File system structures therefor of unstructured textual data
    • G06F16/33Querying
    • G06F16/3331Query processing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/30Information retrieval; Database structures therefor; File system structures therefor of unstructured textual data
    • G06F16/33Querying
    • G06F16/332Query formulation
    • G06F16/3325Reformulation based on results of preceding query

Landscapes

  • Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • Mathematical Physics (AREA)
  • Computational Linguistics (AREA)
  • Data Mining & Analysis (AREA)
  • Databases & Information Systems (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是本申请一示例性实施例示出的一种新查询任务限流方法的示意图。
图6是本申请一示例性实施例示出的另一种新查询任务限流方法的示意图。
图7是本申请一示例性实施例示出的一种数据查询单元所在电子设备的一种硬件结构图。
图8是本申请一示例性实施例示出的一种数据查询单元的框图。
图9是本申请一示例性实施例示出的另一种数据查询单元的框图。
具体实施方式
这里将详细地对示例性实施例进行说明,其示例表示在附图中。下面的描述涉及附图时,除非另有表示,不同附图中的相同数字表示相同或相似的要素。以下示例性实施例中所描述的实施方式并不代表与本申请相一致的所有实施方式。相反,它们仅是与如所附权利要求书中所详述的、本申请的一些方面相一致的单元和方法的例子。
在本申请使用的术语是仅仅出于描述特定实施例的目的,而非旨在限制本申请。在本说明书和所附权利要求书中所使用的单数形式的“一种”、“所述”和“该”也旨在包括多数形式,除非上下文清楚地表示其他含义。还应当理解,本文中使用的术语“和/或”是指并包含一个或多个相关联的列出项目的任何或所有可能组合。
应当理解,尽管在本申请可能采用术语第一、第二、第三等来描述各种信息,但这些信息不应限于这些术语。这些术语仅用来将同一类型的信息彼此区分开。例如,在不脱离本申请范围的情况下,第一信息也可以被称为第二信息,类似地,第二信息也可以被称为第一信息。取决于语境,如在此所使用的词语“如果”可以被解释成为“在……时”或“当……时”或“响应于确定”。
随着互联网技术的快速发展,越来越多的数据被沉淀下来存储至数据库中,如何对数据库中的数据进行快速的查询已成为亟待解决的技术问题。
图1是相关技术中一种数据查询***的架构示意图。
请参考图1,该数据查询***可包括数据库查询客户端和数据库。
其中,数据库查询客户端通常由数据库提供,可接收外界发送的数据查询任务,并可基于查询任务中的查询条件在数据库中查询对应的数据。例如,数据库查询客户端可接收来自用户,或来自其他业务***的数据查询任务,该数据查询任务中可包括关键字、时间等查询条件。数据库查询客户端可基于这些查询条件去数据库中查询对应的数据,数据库查询客户端可集成于数据库中,也可独立设置。一个数据库可配置一个数据库查询客户端,也可配置多个数据库查询客户端。
以ES(Elasticsearch,一种搜索服务器,提供分布式全文搜索引擎)数据库为例,为避免查询过程中产生深分页问题(Deep paging),游标查询(Scroll查询)应运而生。数据库查询客户端可按照一定的步长分批从数据库中查询数据,每次查询结束可返回下次查询所需使用的游标标识(Scroll ID),在下一次查询时,携带上一次查询时返回的游标标识,以继续进行数据查询。
在上述过程中,数据库查询客户端往往还需要对查询到的数据进行处理,例如对数据进行脱敏处理、对数据进行打标处理等。数据的处理与查询是串行的,即数据库查询客户端在查询到一批数据之后进行数据处理,在这批数据处理完毕后再进行下一次查询,进而导致数据查询效率低下。并且,一个数据库通常会配置有多个数据库查询客户端,而一个查询任务仅能由一个数据库查询客户端执行,未能充分利用其他数据库查询客户端的处理资源。
本申请提供一种数据查询方案,可将数据查询与数据处理解耦,联合多个数据库查询客户端协同进行数据查询,进而提升数据查询的效率。
图2是本申请一示例性实施例示出的一种数据查询方法的流程示意图。
请参考图2,所述数据查询方法可应用于数据库查询客户端中,包括有以下步骤:
步骤202,监听消息***的任务队列,并从所述任务队列中获取查询任务,所述查询任务中包括有查询条件。
在本申请中,消息***是一种“中间***”,在查询任务流转过程中位于查询任务发起方(例如:用户、业务***等)与数据库查询客户端之间。消息***的物理载体可以是独立的服务器集群,也可以将其中转功能集成至业务***或者数据库中,本申请对此不作特殊限制。
在本申请中,消息***中设置有用于存储查询任务的任务队列,接收到的查询任务会被添加至任务队列中以供数据库查询客户端获取。所述查询任务中至少会包括有查询条件,例如关键字、时间等,可由查询任务发起方指定。
一方面,消息***可接收查询任务发起方发起的查询任务,然后将该查询任务添加至任务队列中。
另一方面,消息***还可接收数据库查询客户端发送的查询任务,也会将该查询任务添加至任务队列中。其中,所述数据库查询客户端发送的查询任务由数据库查询客户端在进行数据查询后,基于查询任务执行完毕后数据库生成的新游标标识和查询条件生成,将在后续实施例中详细描述。
在本申请中,各个数据库查询客户端都可以监听消息***的任务队列,并可在任务队列中存在查询任务时,获取查询任务,并基于查询任务在数据库中进行数据查询。
步骤204,基于所述查询任务在数据库中进行数据查询,并获取所述查询任务执行完毕后数据库生成的游标标识。
基于前述步骤202,数据库客户端在获取到查询任务后,可在数据库中进行数据查询。
在本申请一个例子中,所述查询任务中包括有与所述查询任务对应的本次查询所需使用的游标标识,数据库客户端可基于所述游标标识和所述查询条件在数据库中进行数据查询。例如,从该游标标识对应的位置开始进行本次数据查询。
在获取到的查询任务中包括有与所述查询任务对应的游标标识时,可说明该查询任务不是查询任务发起方发起的原始查询任务,原始查询任务已被数据库查询客户端执行过数据查询,因而包括有游标标识。
在本申请另一个例子中,所述查询任务中未包括与所述查询任务对应的游标标识,可说明该查询任务是任务发起方发起的原始查询任务,数据库客户端可基于查询任务中的查询条件在数据库中进行数据查询。
在本申请中,在执行完毕数据查询后,即执行完毕前述数据查找任务后,若数据库中尚有未完成查询的数据,数据库可生成游标标识。若经本次查询,数据库中的数据已查询完毕,可确定查询任务执行完毕,数据库无需生成游标标识。
在本申请中,数据库查询客户端可在所述查询任务执行完毕后获取到数据库生成的游标标识,为便于区分,本申请后续将本次查询结束后数据库生成的游标标识称为新游标标识。
步骤206,在获取到所述游标标识后,基于所述游标标识和所述查询条件生成对应所述游标标识的新查询任务,并将所述新查询任务发送至消息***,以供消息***将所述新查询任务添加至所述任务队列中。
在本申请中,数据库查询客户端在获取到前述查询任务执行完毕后数据库生成的新游标标识后,一方面,可基于新游标标识和查询条件生成对应所述新游标标识的新查询任务,然后将新查询任务发送至消息***。消息***进而可将该新查询任务添加至任务队列中,以供其他数据库查询客户端获取并执行。另一方面,数据库查询客户端可对本次查询到的数据进行处理,例如对数据进行脱敏处理、打标处理等。
在本申请中,其他数据库查询客户端在从消息***的任务队列中获取到上述新查询任务后,可基于新查询任务中的新游标标识和查询条件在数据库中进行数据查询,由此可见,对应本次新查询任务的数据查询无需等待上次查询到的数据处理完毕,实现了数据查询与数据处理的解耦,提升了数据查询的效率。
由以上描述可以看出,本申请数据库查询客户端可监听消息***的任务队列,从任务队列中获取查询任务,执行数据查询,并获取所述查询任务执行完毕后数据库生成的游标标识。在此基础上,数据库查询客户端还可基于该游标标识和查询条件生成对应该游标标识的新查询任务,然后将新查询任务发送至消息***,消息***进而将该新查询任务添加至任务队列中,以供其他数据库查询客户端获取并执行数据查询。
采用本申请提供的上述技术方案,数据库查询客户端可生成新查询任务并发送至消息***,以供其他数据库查询客户端从消息***的任务队列中获取该新查询任务并执行,联合多个数据库查询客户端协同实现数据查询,并且,数据的查询无需等待已查询到的数据处理完毕,实现了数据查询与数据处理的解耦,进而大大提升了数据查询的效率。
图3是本申请一示例性实施例示出的另一种数据查询方法的流程示意图。
请参考图3,所述数据查询方法可应用于消息***中,所述消息***是一种“中间***”,在查询任务流转过程中位于查询任务发起方(例如:用户、业务***等)与数据库查询客户端之间。消息***的物理载体可以是独立的服务器集群,也可以将其中转功能集成至业务***或者数据库中,本申请对此不作特殊限制。所述数据查询方法可包括以下步骤:
步骤302,响应于查询发起方发送的查询任务,将所述查询任务添加至任务队列中,所述查询任务中包括有查询条件,以供数据库查询客户端在从所述任务队列中获取到所述查询任务后在数据库中进行数据查询,并获取所述查询任务执行完毕后数据库生成的游标标识,以及基于所述游标标识和所述查询条件生成对应所述游标标识的第一新查询任务。
在本申请中,消息***中设置有用于存储查询任务的任务队列,接收到的查询任务会被添加至任务队列中以供数据库查询客户端获取。所述查询任务中至少会包括有查询条件,例如关键字、时间等,可由查询任务发起方指定。
步骤304,响应于数据库查询客户端发送的第一新查询任务,将所述第一新查询任务添加至所述任务队列中,以供数据库查询客户端在从所述任务队列中获取到所述第一新查询任务后在数据库中进行数据查询,并基于所述第一查询任务执行完毕后数据库生成的游标标识和所述查询条件执行第二新查询任务的生成。
在本申请中,消息***接收到的查询任务通常具有以下两种情况。
一方面,消息***可接收查询任务发起方发起的查询任务,然后将该查询任务添加至任务队列中。查询任务发起方发起的该查询任务为原始的查询任务,其中不携带游标标识。数据库查询客户端在执行该查询任务时,可基于查询条件在数据库中进行数据查询。
另一方面,消息***还可接收数据库查询客户端发送的查询任务,然后也会将该查询任务添加至任务队列中。本申请将数据库客户端生成的查询任务称为新查询任务。数据库查询客户端发送的新查询任务通常为数据库查询客户端在执行完毕上次数据查询任务,获取到数据库生成的新游标标识后,基于该新游标标识和查询条件生成。数据库查询客户端发送的新查询任务中包括有游标标识,而获取到该包括有游标标识的数据库查询客户端可基于游标标识和查询条件在数据库中进行数据查询。
由以上描述可以看出,本申请数据库查询客户端可监听消息***的任务队列,从任务队列中获取查询任务,执行数据查询,并获取所述查询任务执行完毕后数据库生成的的游标标识。在此基础上,数据库查询客户端还可基于该游标标识和查询条件生成对应该游标标识的新查询任务,然后将新查询任务发送至消息***,消息***进而将该新查询任务添加至任务队列中,以供其他数据库查询客户端获取并执行数据查询。
采用本申请提供的上述技术方案,数据库查询客户端可生成新查询任务并发送至消息***,以供其他数据库查询客户端从消息***的任务队列中获取该新查询任务并执行,联合多个数据库查询客户端协同实现数据查询,并且,数据的查询无需等待已查询到的数据处理完毕,实现了数据查询与数据处理的解耦,进而大大提升了数据查询的效率。
下面结合***架构来描述本申请的数据查询方法。
图4是本申请一示例性实施例示出的一种数据查询***的架构示意图。
请参考图4,该数据查询***包括有数据查询任务的发起方,消息***,多个数据库查询客户端以及数据库。
其中,数据查询任务的发起方可以是用户,也可以是任一具有数据库查询权限的业务***,本申请对此不作特殊限制。消息***和数据库查询客户端可参考前述描述。
在本实施例中,以数据库为ES数据库为例进行描述,数据查询的过程可包括以下步骤:
①查询任务发起方发起原始查询任务至消息***。
在本实施例中,查询任务发起方可将查询任务(为便于区分,称之为原始查询任务)封装为对象,然后发送至消息***,消息***在接收到该原始查询任务后,可将该原始查询任务添加至用于存储查询任务的任务队列中。
所述原始查询任务中包括有关键字、时间等查询条件。
数据库的各个数据库查询客户端均可监听消息***的任务队列,并可从中获取查询任务。
②数据库查询客户端1从消息***的任务队列中获取到原始查询任务。
③④数据库查询客户端1基于该原始查询任务在数据库中进行数据查询,并可获得查询到的原始数据,以及原始查询任务执行完毕后数据库生成的游标标识1。
⑤数据库查询客户端1基于游标标识1和查询条件生成对应所述游标标识1的新查询任务1,并将该新查询任务1发送给消息***,由消息***将其存储至前述任务队列中。
此外,数据库查询客户端1还可对查询到的这些原始数据进行处理。
例如,可对这些原始数据进行去隐私处理,隐藏用户账号、余额等敏感信息。
再例如,也可对这些原始数据进行打标处理,添加预设的标签。
在本申请中,对原始数据的处理可由数据库查询客户端来执行,也可由数据库查询客户端调用其他***来执行,例如数据库查询客户端1调用打标***对原始数据进行打标等,本申请对此不作特殊限制。
⑥数据库查询客户端2监听消息***的任务队列,并获取到前述新查询任务1。
在本实施例中,该新查询任务1中包括有游标标识1和查询条件。
⑦数据库查询客户端2基于游标标识1和查询条件在数据库中进行数据查询。
在本实施例中,数据库查询客户端2也可从数据库中查询到一批原始数据,并获得新查询任务1执行完毕后数据库生成的游标标识2。
在本实施例中,数据库查询客户端2一方面可基于游标标识2和查询条件生成对应游标标识2的新查询任务2,并可将新查询任务2发送至消息***(未图示),由消息***将其存储至任务队列中。
在本实施例中,数据库查询客户端2另一方面还可对其查询到的原始数据进行处理,其中,对原始数据的处理可参考前述数据库查询客户端1对原始数据的处理,本实施例在此不再一一赘述。
在本实施例中,其他数据库查询客户端可监听任务队列,获取并执行上述新查询任务2。例如,数据库查询客户端3获取到该新查询任务2,并执行数据库查询。类似的,数据库查询客户端3在执行完毕新查询任务2后,可获得数据库生成的新游标标识3,一方面可基于新游标标识3和查询条件生成对应游标标识3的新查询任务3,并发送至消息***,由消息***将其存储至任务队列中;另一方面,数据库查询客户端3也可对查询到的原始数据进行处理。
由此可见,数据库查询客户端2执行的本次新查询任务1无需等待数据库查询客户端1对其前述步骤④中获取到的原始数据处理完毕,进而实现了数据查询与数据处理的解耦。并且,发起方发起的查询任务可由多个数据库查询客户端协同实现数据查询,可充分利用数据库查询客户端的处理资源,大大提升了数据查询的效率。
可选的,采用本申请提供的数据查询方法,可协调多个数据库查询客户端共同执行数据查询任务,然而,过快的数据查询可能会影响数据库的稳定性,给数据库带来压力。本申请还提供查询任务的限流措施,可基于预设的限流措施限制新查询任务的流量,进而降低数据库的查询速率,确保数据库的稳定性。
在一个例子中,上述限流措施可由数据库查询客户端来实现。所述预设的限流措施可包括暂缓生成新查询任务,或者在生成新查询任务后暂缓将其发送至消息***。
请参考图5,基于预设的限流措施限制新查询任务的流量可包括以下步骤:
步骤502,在生成新查询任务后开始计时。
步骤504,在到达预设的延时时长后,将所述新查询任务发送至消息***。
在本例中,数据库查询客户端在查询到原始数据,并获取到数据库生成的新游标标识后,基于该新游标标识和查询条件生成对应该新游标标识的新查询任务,然后开始计时,并在到达预设的延时时长后,再将生成的新查询任务发送至消息***中。
其中,所述延时时长可以是预先设置的固定时长,例如1秒钟等,各个数据库查询客户端均会等待1秒钟后再执行后续操作。
仍以图4所示的数据查询为例,数据库查询客户端2在生成新查询任务1后,可在等待1秒钟的延时时长后,将新查询任务1发送至消息***,由消息***将其添加至任务队列中。
请参考图6,基于预设的限流措施限制新查询任务的流量还可包括以下步骤:
步骤602,在获取到查询任务执行完毕后数据库生成的游标标识后开始计时。
步骤604,在到达预设的延时时长后,基于所述游标标识和所述查询条件生成对应所述游标标识的新查询任务,并将所述新查询任务发送至消息***。
在本例中,数据库查询客户端在查询到原始数据,并获取到数据生成的新游标标识后,可开始计时,并在到达预设的延时时长后,再根据新游标标识和查询条件生成新查询任务。
在本例中,在生成新查询任务后,无需再等待,可直接将生成的新查询任务发送至消息***。或者,在生成新查询任务后,也可再进行一点预设时间的等待,然后再将新查询任务发送至消息***,本申请对此不作特殊限制。
在另一个例子中,上述限流措施可由消息***来实现。消息***在接收到来自数据库查询客户端的查询任务后,可先将查询任务添加至延时队列中,然后在到达预设的延时时长后,再将延时队列中的查询任务添加至任务队列中。
其中,所述延时时长也可以是预先设置的固定时长,本申请对此不作特殊限制。
在本例中,针对来自发起方的查询任务,消息***无需采用限流措施,可在接收到发起方发送的查询任务后,将该查询任务添加至任务队列中。
仍以图4所示的数据查询为例,数据库查询客户端在生成新查询任务1后,可将新查询任务1发送至消息***,消息***在接收到新查询任务1后,将其添加至延时队列中,并可在等待延时时长后,将该新查询任务1添加至任务队列中。
在本申请中,可针对所有类型的查询任务,均执行本申请记载的前述查询任务限流措施。也可针对部分查询量较大的查询任务执行上述限流措施。例如,可在查询任务中设置用于携带限流标签的标识位,针对查询量较大的业务场景,可在查询任务中添加限流标签,针对查询量不大的业务场景,可在查询任务中添加非限流标签,这样消息队列或数据库查询客户端在接收到查询任务后,可判断其中是否携带限流标签,并在携带限流标签的情况下对新查询任务进行流量限制。
需要说明的是,当查询发起方发起的原始查询任务中携带有限流标签时,数据库查询客户端在生成新查询任务时也会在该新查询任务中添加限流标签。
当然,在其他例子中,也可采用其他方式实现部分查询任务限流、部分查询任务不限流,本申请对此不作特殊限制。
由此可见,本申请可对数据库查询客户端生成的查询任务进行流量限制,进而降低数据库的查询速率,确保数据库的稳定性。
可选的,在本申请另一个例子中,数据库查询客户端在处理完毕查询到的数据后,还可将处理完毕的数据批量更新至数据库中。
仍以图4所示的数据查询为例,假设,数据库查询客户端2对获取到的原始数据进行打标处理,在这批数据打标完成后,数据库查询客户端2可将这批打标后的数据批量更新至数据库中,相较于逐条数据进行更新,可大大提升数据更新的效率。
在本例中,处理完毕数据的更新操作可由数据库查询客户端执行,也可由数据库查询客户端调用其他处理资源来执行,例如,数据库查询客户端2可调用专门用来更新数据库的处理器来执行前述批量更新,本申请对此不作特殊限制。
与前述数据查询方法的实施例相对应,本申请还提供了数据查询单元的实施例。
本申请数据查询单元的实施例可以分别应用数据库查询客户端和消息***中。单元实施例可以通过软件实现,也可以通过硬件或者软硬件结合的方式实现。以软件实现为例,作为一个逻辑意义上的单元,是通过其所在电子设备的处理器将非易失性存储器中对应的计算机程序指令读取到内存中运行形成的。从硬件层面而言,如图7所示,为本申请数据查询单元所在电子设备的一种硬件结构图,除了图7所示的处理器、内存、网络接口、以及非易失性存储器之外,实施例中单元所在的电子设备通常根据该电子设备的实际功能,还可以包括其他硬件,对此不再赘述。
图8是本申请一示例性实施例示出的一种数据查询单元的框图。
请参考图8,所述数据查询单元800可以应用在前述图7所示的电子设备上,该电子设备可以为装载有数据库查询客户端的电子设备,例如服务器等,包括有:任务监听模块801、数据查询模块802和任务生成模块803。
其中,任务监听模块801用以监听消息***的任务队列,并从所述任务队列中获取查询任务,所述查询任务中包括有查询条件。数据查询模块802用以基于所述查询任务在数据库中进行数据查询,并获取所述查询任务执行完毕后数据库生成的游标标识。任务生成模块803用以在获取到所述游标标识后,基于所述游标标识和所述查询条件生成对应所述游标标识的新查询任务,并将所述新查询任务发送至消息***,以供消息***将所述新查询任务添加至所述任务队列中。
可选的,所述数据查询模块802基于所述查询任务在数据库中进行数据查询的步骤包括:在所述查询任务中未包括与所述查询任务对应的游标标识的情况下,基于所述查询条件在数据库中进行数据查询;在所述查询任务中还包括有与所述查询任务对应的游标标识的情况下,基于所述游标标识和所述查询条件在数据库中进行数据查询。
可选的,数据查询的步骤还包括:判断所述查询任务中是否携带限流标签;在所述查询任务中携带限流标签的情况下,基于预设的限流措施限制所述新查询任务的流量。
可选的,所述基于预设的限流措施限制所述新查询任务的流量的步骤包括:在生成所述新查询任务后开始计时;在到达预设的延时时长后,将所述新查询任务发送至消息***。
可选的,所述基于预设的限流措施限制所述新查询任务的流量的步骤包括:在获取到所述游标标识后开始计时;在到达预设的延时时长后,执行基于所述游标标识和所述查询条件生成对应所述游标标识的新查询任务,并将所述新查询任务发送至消息***的步骤。
可选的,数据查询的步骤还包括:对从数据库中查询到的数据进行处理;在数据处理完毕后,将处理完毕的数据批量更新至数据库。
图9是本申请一示例性实施例示出的另一种数据查询单元的框图。
请参考图9,所述数据查询单元900可以应用在前述图7所示的电子设备上,该电子设备可以为消息***的服务器,包括有:第一添加模块901和第二添加模块902。
其中,第一添加模块901用以响应于查询发起方发送的查询任务,将所述查询任务添加至任务队列中,所述查询任务中包括有查询条件,以供数据库查询客户端在从所述任务队列中获取到所述查询任务后在数据库中进行数据查询,并获取所述查询任务执行完毕后数据库生成的游标标识,以及基于所述游标标识和所述查询条件生成对应所述游标标识的第一新查询任务。第二添加模块902用以响应于数据库查询客户端发送的第一新查询任务,将所述第一新查询任务添加至所述任务队列中,以供数据库查询客户端在从所述任务队列中获取到所述第一新查询任务后在数据库中进行数据查询,并基于所述第一查询任务执行完毕后数据库生成的游标标识和所述查询条件执行第二新查询任务的生成。
可选的,所述第二添加模块902将所述第一新查询任务添加至所述任务队列中的步骤包括:将所述第一新查询任务添加至延时队列中;在到达预设的延时时长后,将所述延时队列中的第一新查询任务添加至所述任务队列中。
可选的,所述第二添加模块902将所述第一新查询任务添加至延时队列中的步骤包括:判断所述查询任务中是否携带限流标签;在所述查询任务中携带限流标签的情况下,将所述第一新查询任务添加至延时队列中。
上述数据查询单元中各个模块的功能和作用的实现过程具体详见上述方法中对应步骤的实现过程,在此不再赘述。
对于数据查询单元实施例而言,由于其基本对应于方法实施例,所以相关之处参见方法实施例的部分说明即可。以上所描述的语音流处理单元实施例仅仅是示意性的,其中所述作为分离部件说明的模块可以是或者也可以不是物理上分开的,作为模块显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本申请方案的目的。本领域普通技术人员在不付出创造性劳动的情况下,即可以理解并实施。
上述实施例阐明的***、装置、模块或单元,具体可以由计算机芯片或实体实现,或者由具有某种功能的产品来实现。一种典型的实现设备为计算机,计算机的具体形式可以是个人计算机、膝上型计算机、蜂窝电话、相机电话、智能电话、个人数字助理、媒体播放器、导航设备、电子邮件收发设备、游戏控制台、平板计算机、可穿戴设备或者这些设备中的任意几种设备的组合。
在一个典型的配置中,计算机包括一个或多个处理器(CPU)、输入/输出接口、网络接口和内存。
内存可能包括计算机可读介质中的非永久性存储器,随机存取存储器(RAM)和/或非易失性内存等形式,如只读存储器(ROM)或闪存(flash RAM)。内存是计算机可读介质的示例。
计算机可读介质包括永久性和非永久性、可移动和非可移动媒体可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。计算机的存储介质的例子包括,但不限于相变内存(PRAM)、静态随机存取存储器(SRAM)、动态随机存取存储器(DRAM)、其他类型的随机存取存储器(RAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)、快闪记忆体或其他内存技术、只读光盘只读存储器(CD-ROM)、数字多功能光盘(DVD)或其他光学存储、磁盒式磁带、磁盘存储、量子存储器、基于石墨烯的存储介质或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。按照本文中的界定,计算机可读介质不包括暂存电脑可读媒体(transitory media),如调制的数据信号和载波。
与前述数据查询方法的实施例相对应,本申请还提供一种计算机可读存储介质,所述计算机可读存储介质上存储有计算机程序,该程序被处理器执行时实现以下步骤:
监听消息***的任务队列,并从所述任务队列中获取查询任务,所述查询任务中包括有查询条件;
基于所述查询任务在数据库中进行数据查询,并获取所述查询任务执行完毕后数据库生成的游标标识;
在获取到所述游标标识后,基于所述游标标识和所述查询条件生成对应所述游标标识的新查询任务,并将所述新查询任务发送至消息***,以供消息***将所述新查询任务添加至所述任务队列中。
可选的,所述基于所述查询任务在数据库中进行数据查询的步骤包括:在所述查询任务中未包括与所述查询任务对应的游标标识的情况下,基于所述查询条件在数据库中进行数据查询;在所述查询任务中还包括有与所述查询任务对应的游标标识的情况下,基于所述游标标识和所述查询条件在数据库中进行数据查询。
可选的,数据查询的步骤还包括:判断所述查询任务中是否携带限流标签;在所述查询任务中携带限流标签的情况下,基于预设的限流措施限制所述新查询任务的流量。
可选的,所述基于预设的限流措施限制所述新查询任务的流量的步骤包括:在生成所述新查询任务后开始计时;在到达预设的延时时长后,将所述新查询任务发送至消息***。
可选的,所述基于预设的限流措施限制所述新查询任务的流量的步骤包括:在获取到所述游标标识后开始计时;在到达预设的延时时长后,执行基于所述游标标识和所述查询条件生成对应所述游标标识的新查询任务,并将所述新查询任务发送至消息***的步骤。
可选的,数据查询的步骤还包括:对从数据库中查询到的数据进行处理;在数据处理完毕后,将处理完毕的数据批量更新至数据库。
与前述数据查询方法的实施例相对应,本申请还提供另一种计算机可读存储介质,所述计算机可读存储介质上存储有计算机程序,该程序被处理器执行时实现以下步骤:
响应于查询发起方发送的查询任务,将所述查询任务添加至任务队列中,所述查询任务中包括有查询条件,以供数据库查询客户端在从所述任务队列中获取到所述查询任务后在数据库中进行数据查询,并获取所述查询任务执行完毕后数据库生成的游标标识,以及基于所述游标标识和所述查询条件生成对应所述游标标识的第一新查询任务;
响应于数据库查询客户端发送的第一新查询任务,将所述第一新查询任务添加至所述任务队列中,以供数据库查询客户端在从所述任务队列中获取到所述第一新查询任务后在数据库中进行数据查询,并基于所述第一查询任务执行完毕后数据库生成的游标标识和所述查询条件执行第二新查询任务的生成。
可选的,所述将所述第一新查询任务添加至所述任务队列中的步骤包括:将所述第一新查询任务添加至延时队列中;在到达预设的延时时长后,将所述延时队列中的第一新查询任务添加至所述任务队列中。
可选的,所述将所述第一新查询任务添加至延时队列中的步骤包括:判断所述查询任务中是否携带限流标签;在所述查询任务中携带限流标签的情况下,将所述第一新查询任务添加至延时队列中。
上述对本申请特定实施例进行了描述。其它实施例在所附权利要求书的范围内。在一些情况下,在权利要求书中记载的动作或步骤可以按照不同于实施例中的顺序来执行并且仍然可以实现期望的结果。另外,在附图中描绘的过程不一定要求示出的特定顺序或者连续顺序才能实现期望的结果。在某些实施方式中,多任务处理和并行处理也是可以的或者可能是有利的。
以上所述仅为本申请的较佳实施例而已,并不用以限制本申请,凡在本申请的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本申请保护的范围之内。

Claims (13)

1.一种数据查询方法,应用于数据库查询客户端,包括:
监听消息***的任务队列,并从所述任务队列中获取查询任务,所述查询任务中包括有查询条件;
基于所述查询任务在数据库中进行数据查询,并获取所述查询任务执行完毕后数据库生成的游标标识;
在获取到所述游标标识后,基于所述游标标识和所述查询条件生成对应所述游标标识的新查询任务,并将所述新查询任务发送至消息***,以供消息***将所述新查询任务添加至所述任务队列中。
2.根据权利要求1所述的方法,所述基于所述查询任务在数据库中进行数据查询,包括:
在所述查询任务中未包括与所述查询任务对应的游标标识的情况下,基于所述查询条件在数据库中进行数据查询;
在所述查询任务中还包括有与所述查询任务对应的游标标识的情况下,基于所述游标标识和所述查询条件在数据库中进行数据查询。
3.根据权利要求1所述的方法,还包括:
判断所述查询任务中是否携带限流标签;
在所述查询任务中携带限流标签的情况下,基于预设的限流措施限制所述新查询任务的流量。
4.根据权利要求3所述的方法,所述基于预设的限流措施限制所述新查询任务的流量,包括:
在生成所述新查询任务后开始计时;
在到达预设的延时时长后,将所述新查询任务发送至消息***。
5.根据权利要求3所述的方法,所述基于预设的限流措施限制所述新查询任务的流量,包括:
在获取到所述游标标识后开始计时;
在到达预设的延时时长后,执行基于所述游标标识和所述查询条件生成对应所述游标标识的新查询任务,并将所述新查询任务发送至消息***的步骤。
6.根据权利要求1所述的方法,还包括:
对从数据库中查询到的数据进行处理;
在数据处理完毕后,将处理完毕的数据批量更新至数据库。
7.一种数据查询方法,应用于消息***,包括:
响应于查询发起方发送的查询任务,将所述查询任务添加至任务队列中,所述查询任务中包括有查询条件,以供数据库查询客户端在从所述任务队列中获取到所述查询任务后在数据库中进行数据查询,并获取所述查询任务执行完毕后数据库生成的游标标识,以及基于所述游标标识和所述查询条件生成对应所述游标标识的第一新查询任务;
响应于数据库查询客户端发送的第一新查询任务,将所述第一新查询任务添加至所述任务队列中,以供数据库查询客户端在从所述任务队列中获取到所述第一新查询任务后在数据库中进行数据查询,并基于所述第一查询任务执行完毕后数据库生成的游标标识和所述查询条件执行第二新查询任务的生成。
8.根据权利要求7所述的方法,所述将所述第一新查询任务添加至所述任务队列中,包括:
将所述第一新查询任务添加至延时队列中;
在到达预设的延时时长后,将所述延时队列中的第一新查询任务添加至所述任务队列中。
9.根据权利要求8所述的方法,所述将所述第一新查询任务添加至延时队列中,包括:
判断所述查询任务中是否携带限流标签;
在所述查询任务中携带限流标签的情况下,将所述第一新查询任务添加至延时队列中。
10.一种数据查询单元,应用于数据库查询客户端,包括:
任务监听模块,监听消息***的任务队列,并从所述任务队列中获取查询任务,所述查询任务中包括有查询条件;
数据查询模块,基于所述查询任务在数据库中进行数据查询,并获取所述查询任务执行完毕后数据库生成的游标标识;
任务生成模块,在获取到所述游标标识后,基于所述游标标识和所述查询条件生成对应所述游标标识的新查询任务,并将所述新查询任务发送至消息***,以供消息***将所述新查询任务添加至所述任务队列中。
11.一种数据查询单元,应用于消息***,包括:
第一添加模块,响应于查询发起方发送的查询任务,将所述查询任务添加至任务队列中,所述查询任务中包括有查询条件,以供数据库查询客户端在从所述任务队列中获取到所述查询任务后在数据库中进行数据查询,并获取所述查询任务执行完毕后数据库生成的游标标识,以及基于所述游标标识和所述查询条件生成对应所述游标标识的第一新查询任务;
第二添加模块,响应于数据库查询客户端发送的第一新查询任务,将所述第一新查询任务添加至所述任务队列中,以供数据库查询客户端在从所述任务队列中获取到所述第一新查询任务后在数据库中进行数据查询,并基于所述第一查询任务执行完毕后数据库生成的游标标识和所述查询条件执行第二新查询任务的生成。
12.一种电子设备,其特征在于,包括:
处理器;
用于存储处理器可执行指令的存储器;
其中,所述处理器通过运行所述可执行指令以实现如权利要求1-9中任一项所述的方法。
13.一种计算机可读存储介质,其上存储有计算机指令,其特征在于,该指令被处理器执行时实现如权利要求1-9中任一项所述方法的步骤。
CN202210579957.0A 2022-05-25 2022-05-25 数据查询方法和单元 Pending CN114969256A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202210579957.0A CN114969256A (zh) 2022-05-25 2022-05-25 数据查询方法和单元

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202210579957.0A CN114969256A (zh) 2022-05-25 2022-05-25 数据查询方法和单元

Publications (1)

Publication Number Publication Date
CN114969256A true CN114969256A (zh) 2022-08-30

Family

ID=82956201

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202210579957.0A Pending CN114969256A (zh) 2022-05-25 2022-05-25 数据查询方法和单元

Country Status (1)

Country Link
CN (1) CN114969256A (zh)

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20150242474A1 (en) * 2014-02-27 2015-08-27 Microsoft Corporation Inline and context aware query box
CN110008262A (zh) * 2019-02-02 2019-07-12 阿里巴巴集团控股有限公司 一种数据导出方法及装置
CN111814029A (zh) * 2020-05-25 2020-10-23 车智互联(北京)科技有限公司 一种数据查询方法、***及计算设备
CN112948431A (zh) * 2019-11-26 2021-06-11 中国电信股份有限公司 基于游标的数据库查询方法和网关设备
CN114356999A (zh) * 2022-01-11 2022-04-15 上海途虎信息技术有限公司 一种数据处理方法、***及计算机可读存储介质

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20150242474A1 (en) * 2014-02-27 2015-08-27 Microsoft Corporation Inline and context aware query box
CN110008262A (zh) * 2019-02-02 2019-07-12 阿里巴巴集团控股有限公司 一种数据导出方法及装置
CN112948431A (zh) * 2019-11-26 2021-06-11 中国电信股份有限公司 基于游标的数据库查询方法和网关设备
CN111814029A (zh) * 2020-05-25 2020-10-23 车智互联(北京)科技有限公司 一种数据查询方法、***及计算设备
CN114356999A (zh) * 2022-01-11 2022-04-15 上海途虎信息技术有限公司 一种数据处理方法、***及计算机可读存储介质

Similar Documents

Publication Publication Date Title
US10311230B2 (en) Anomaly detection in distributed ledger systems
US10439937B2 (en) Service addressing in distributed environment
WO2019205717A1 (zh) 一种搜索应用程序内信息的方法及设备
CN107798135B (zh) 分页查询方法及装置和电子设备
WO2015057400A1 (en) Acceleration based on cached flows
CN114780537A (zh) 流表存储及报文转发方法、装置、计算设备及介质
CN114416224B (zh) 一种在多微服务环境下调用微服务的方法及装置
CN108399175B (zh) 一种数据存储、查询方法及其装置
CN113515717B (zh) 导航页面更新方法、装置、电子设备及存储介质
CN107193833A (zh) 数据库访问的监控方法和装置
WO2019237949A1 (zh) 搜索方法及装置
WO2024021409A1 (zh) 数据检索方法及装置
CN114969256A (zh) 数据查询方法和单元
CN116303309A (zh) 文件挂载方法、装置和电子设备
CN115827280A (zh) 消息处理方法、装置、电子设备及存储介质
CN116028696A (zh) 资源信息获取方法、装置、电子设备及存储介质
CN112907198B (zh) 业务状态流转维护方法、装置及电子设备
CN114327941A (zh) 一种服务提供方法及装置
CN111047415B (zh) 服饰配件订单处理方法、***、电子设备及存储介质
CN109214884B (zh) 需求撮合方法及装置、电子设备
CN109656805B (zh) 用于业务分析的代码链路的生成方法、装置及业务服务器
CN111414162B (zh) 一种数据处理方法、装置及其设备
CN111258873A (zh) 测试方法及装置
CN117176448B (zh) 即时通讯应用的服务访问方法、客户端、电子设备及存储介质
CN117216164A (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