CN111506600A - 分页查询方法、装置和电子设备 - Google Patents
分页查询方法、装置和电子设备 Download PDFInfo
- Publication number
- CN111506600A CN111506600A CN202010207028.8A CN202010207028A CN111506600A CN 111506600 A CN111506600 A CN 111506600A CN 202010207028 A CN202010207028 A CN 202010207028A CN 111506600 A CN111506600 A CN 111506600A
- Authority
- CN
- China
- Prior art keywords
- time period
- record
- query
- records
- paging
- 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.)
- Granted
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/24—Querying
- G06F16/245—Query processing
- G06F16/2453—Query optimisation
- G06F16/24534—Query rewriting; Transformation
- G06F16/24549—Run-time optimisation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/24—Querying
- G06F16/245—Query processing
- G06F16/2458—Special types of queries, e.g. statistical queries, fuzzy queries or distributed queries
- G06F16/2471—Distributed queries
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/24—Querying
- G06F16/245—Query processing
- G06F16/2458—Special types of queries, e.g. statistical queries, fuzzy queries or distributed queries
- G06F16/2477—Temporal data queries
-
- Y—GENERAL 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
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE 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/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- Computational Linguistics (AREA)
- Data Mining & Analysis (AREA)
- Databases & Information Systems (AREA)
- General Physics & Mathematics (AREA)
- Probability & Statistics with Applications (AREA)
- Software Systems (AREA)
- Mathematical Physics (AREA)
- Fuzzy Systems (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本申请实施例提供一种分页查询方法、装置和电子设备,方法包括:接收查询条件,异步获取搜索引擎集群反馈的各个第一时间段内命中所述查询条件的第一记录数;所述查询条件的查询时间范围包括所述第一时间段;接收分页条件,根据所述分页条件以及已经接收到的第一记录数,确定待查询记录所属的第一时间段,作为目标时间段;其中,所述待查询记录为所述分页条件对应的待查询起始记录数至所述分页条件对应的待查询末尾记录数对应的记录;根据所述分页条件、所述已经接收到的第一记录数,在所述目标时间段内实现所述待查询记录的查询。该方法能够在跨机房部署方案中实现分页查询,且在深度分页查询时占用的资源相对较少。
Description
技术领域
本申请涉及数据查询领域,特别涉及一种分页查询方法、装置和电子设备。
背景技术
随着数据规模的扩大,在跨机房部署方案中,服务的跨机房部署会面临带宽、安全、延时和抖动等物理局限,所以常常会把搜索引擎集群独立部署到每个机房,由主机与部署在各个机房的搜索引擎集群连接,参见图1所示,以m个搜索引擎集群为例,m≥2;搜索引擎集群中的记录按照哈希算法等进行排序。
在进行分页查询时,主机向各个搜索引擎集群发送查询请求和查询页数,各个搜索引擎集群分别根据所述查询请求和查询页数向主机反馈查询结果,主机对各个搜索引擎集群反馈的查询结果进行排序,从排序后的查询结果中找到查询页数所需查询的记录。以上的分页查询方法中,主机对查询结果排序所占用的资源随着深度分页而成倍增长。
例如,当主机向与其连接的4个搜索引擎集群发送查询请求时,假设查询第1页,每页10个查询结果,每个搜索引擎集群发送10个查询结果反馈给主机,主机对一共40个查询结果进行排序,得到全部查询结果的前10个查询结果作为第1页查询结果,丢弃其他30个查询结果;但是,假设查询第100页,那么每个搜索引擎集群需要发送100*10=1000个查询结果反馈给主机,主机对一共4000个查询结果进行排序,得到全部查询结果中排序在990~1000的查询结果作为第100页查询结果,丢弃其他3990个查询结果。随着查询页数的增大,一次查询所占用的资源将更为庞大。
因此,如何在跨机房部署方案中实现分页查询,且在深度分页查询时减少资源占用,成为需要解决的一个问题。
发明内容
本申请提供了一种分页查询方法和装置,能够实现分页查询,且在深度分页查询时占用的资源相对较少。
第一方面,本申请提供了一种分页查询方法,包括:
接收查询条件,异步获取搜索引擎集群反馈的各个第一时间段内命中所述查询条件的第一记录数;所述查询条件的查询时间范围包括所述第一时间段;
接收分页条件,根据所述分页条件以及已经接收到的第一记录数,确定待查询记录所属的第一时间段,作为目标时间段;其中,所述待查询记录为所述分页条件对应的待查询起始记录数至所述分页条件对应的待查询末尾记录数对应的记录;
根据所述分页条件、所述已经接收到的第一记录数,在所述目标时间段内实现所述待查询记录的查询。
可选的,对于任一所述第一时间段,所述第一记录数不大于所述第一时间段对应的搜索引擎集群配置的分页查询的最大记录数。
可选的,所述异步获取搜索引擎集群反馈的各个第一时间段内命中所述查询条件的第一记录数,包括:
如果一第一时间段内命中所述查询条件的第一记录数大于所述第一时间段对应的搜索引擎集群配置的分页查询的最大记录数,则获取第二记录数,所述第二记录数为基于所述第一时间段划分得到的j个第二时间段中每个第二时间段内命中所述查询条件的记录数;对于任一所述第二时间段,所述第二记录数不大于所述第二时间段对应的搜索引擎集群配置的分页查询的最大记录数;j≥2;
确定j个所述第二时间段为所述第一时间段,并确定j个所述第二记录数为所述第一时间段对应的第一记录数。
可选的,所述查询时间范围包括n个第一时间段;所述根据所述分页条件以及已经接收到的第一记录数,确定所述待查询记录所属的第一时间段,作为目标时间段,包括:
若接收到n-1个第一记录数,根据各个第一记录数、各个第一记录数所属的第一时间段以及总记录数,从所述n个第一时间段中确定所述待查询记录所属的第一时间段;其中,所述总记录数为所述查询条件命中的总记录数;
若接收到最多为n-2个第一记录数,且所述待查询末尾记录数不大于前m个连续时间段的第一记录数的总和,则从所述前m个连续时间段中确定所述待查询记录所属的第一时间段;其中,m≤n-2;
若接收到最多为n-2个第一记录数,且所述待查询起始记录数不小于后k个连续时间段的第一记录数的总和,则从所述后k个连续时间段中确定所述待查询记录所属的第一时间段;其中,k≤n-2。
第二方面,本申请实施例提供一种分页查询装置,包括:
获取单元,用于接收查询条件,异步获取搜索引擎集群反馈的各个第一时间段内命中所述查询条件的第一记录数;所述查询条件的查询时间范围包括所述第一时间段;
时间段确定单元,用于接收分页条件,根据所述分页条件以及已经接收到的第一记录数,确定待查询记录所属的第一时间段,作为目标时间段;其中,所述待查询记录为所述分页条件对应的待查询起始记录数至所述分页条件对应的待查询末尾记录数对应的记录;
查询单元,用于根据所述分页条件、所述已经接收到的第一记录数,在所述目标时间段内实现所述待查询记录的查询。
可选的,对于任一所述第一时间段,所述第一记录数不大于所述第一时间段对应的搜索引擎集群配置的分页查询的最大记录数。
可选的,所述获取单元具体用于:如果一第一时间段内命中所述查询条件的第一记录数大于所述第一时间段对应的搜索引擎集群配置的分页查询的最大记录数,则获取第二记录数,所述第二记录数为基于所述第一时间段划分得到的j个第二时间段中每个第二时间段内命中所述查询条件的记录数;j≥2;对于任一所述第二时间段,所述第二记录数不大于所述第二时间段对应的搜索引擎集群配置的分页查询的最大记录数;确定j个所述第二时间段为所述第一时间段,并确定j个所述第二记录数为所述第一时间段对应的第一记录数。
可选的,所述查询时间范围包括n个第一时间段;所述时间段确定单元具体用于:
若接收到n-1个第一记录数,根据各个第一记录数、各个第一记录数所属的第一时间段以及总记录数,从所述n个第一时间段中确定所述待查询记录所属的时间段;其中,所述总记录数为所述查询条件命中的总记录数;
若接收到最多为n-2个第一记录数,且所述待查询末尾记录数不大于前m个连续时间段的第一记录数的总和,则从所述前m个连续时间段中确定所述待查询记录所属的第一时间段;其中,m≤n-2;
若接收到最多为n-2个第一记录数,且所述待查询起始记录数不小于后k个连续时间段的第一记录数的总和,则从所述后k个连续时间段中确定所述待查询记录所属的第一时间段;其中,k≤n-2。
第三方面,本申请实施例提供一种电子设备,包括:
一个或多个处理器;存储器;以及一个或多个计算机程序,其中所述一个或多个计算机程序被存储在所述存储器中,所述一个或多个计算机程序包括指令,当所述指令被所述电子设备执行时,使得所述电子设备执行第一方面所述的方法。
第四方面,本申请实施例提供一种计算机可读存储介质,所述计算机可读存储介质中存储有计算机程序,当其在计算机上运行时,使得计算机执行第一方面所述的方法。
第五方面,本申请提供一种计算机程序,当所述计算机程序被计算机执行时,用于执行第一方面所述的方法。
在一种可能的设计中,第五方面中的程序可以全部或者部分存储在与处理器封装在一起的存储介质上,也可以部分或者全部存储在不与处理器封装在一起的存储器上。
本申请实施例的分页查询方法中,接收查询条件,异步获取搜索引擎集群反馈的各个第一时间段内命中所述查询条件的第一记录数,所述查询条件的查询时间范围包括所述第一时间段,接收分页条件,根据所述分页条件以及已经接收到的第一记录数,确定待查询记录所属的第一时间段,作为目标时间段,其中,所述待查询记录为所述分页条件对应的待查询起始记录数至所述分页条件对应的待查询末尾记录数对应的记录;根据所述分页条件、所述已经接收到的第一记录数,在所述目标时间段内实现所述待查询记录的查询,从而在跨机房部署方案中实现了分页查询;而且,在进行深度分页查询时,根据分页条件以及已经接收到的第一记录数,确定待查询记录所属的目标时间段,在目标时间段内实现待查询记录的查询,相对于现有技术,无需每个搜索引擎集群反馈过多的查询结果,也无需对过多的查询结果进行排序,从而完成深度分页查询所占用的资源相对较少。
附图说明
图1为跨机房部署方案系统架构示例图;
图2为本申请分页查询方法一个实施例的流程图;
图3A为本申请分页查询方法另一个实施例的流程图;
图3B为本申请分页查询方法又一个实施例的流程图;
图4为本申请分页查询方法又一个实施例的流程图;
图5为本申请分页查询方法又一个实施例的流程图;
图6为本申请分页查询装置一个实施例的结构示意图;
图7为本申请电子设备一个实施例的结构图。
具体实施方式
本申请的实施方式部分使用的术语仅用于对本申请的具体实施例进行解释,而非旨在限定本申请。
参见图1所示的系统架构图,本申请实施例的搜索引擎集群与现有技术中的搜索引擎集群相区别,记录按照时间周期存储在不同的搜索引擎集群中;时间周期可以为月、或周等,本申请实施例不作限定。每个搜索引擎集群中存储至少一个按照时间周期维度划分的时间段的记录,同一时间段的记录存储于一个搜索引擎集群中。举实例来说,以系统中有3个搜索引擎集群为例,假设时间周期维度为自然月,3个搜索引擎集群存储1~6月共6个月的记录,搜索引擎集群1存储1月、4月的记录,搜索引擎集群2存储2月、5月的记录,搜索引擎集群3存储3月、6月的记录。
基于以上的系统架构,如何在上述系统中进行分页查询,查询出满足查询条件和分页条件的命中记录,且在深度分页查询时减少资源占用,是本申请实施例所要解决的问题。
本申请实施例提出一种分页查询方法和装置,能够在上述系统中完成分页查询,且在深度分页查询时资源占用相对较少。
图2为本申请分页查询方法一个实施例的流程图,如图2所示,该方法可以包括:
步骤201:主机接收查询条件,异步获取搜索引擎集群反馈的各个第一时间段内命中查询条件的第一记录数;查询条件的查询时间范围包括第一时间段;
其中,查询条件可以包括但不限于:查询关键字。可选地,查询条件还可以包括:查询时间范围。
如果查询条件中不包括查询时间范围,可以由主机为查询条件设定查询时间范围,主机具体如何设定查询条件的查询时间范围本申请实施例不作限定,例如,可以在主机中预设一时间范围值,一旦接收到的查询条件中不包括查询时间范围,就将该查询条件的查询时间范围设定为该预设的时间范围值。
可选地,异步获取搜索引擎集群反馈的各个第一时间段内命中查询条件的第一记录数,可以包括:
基于查询条件对应的查询时间范围,按照搜索引擎集群的时间周期维度划分得到p个第一时间段;
在每个第一时间段对应的搜索引擎集群中发起基于该第一时间段以及查询条件的异步统计任务,用于获取每个第一时间段内命中查询条件的第一记录数。
其中,每个搜索引擎集群一般会配置分页查询的最大记录数,因此,如果某一第一时间段内命中查询条件的第一记录数大于该第一时间段对应的搜索引擎集群的最大记录数,则当确定出的目标时间段内命中查询条件的记录数大于该搜索引擎集群的最大记录数时,将无法实现分页查询,因此需要进一步将该第一时间段再进行细分,直到细分后得到的每个时间段内命中查询条件的记录数不大于上述最大记录数,此时,上述异步获取搜索引擎集群反馈的各个第一时间段内命中查询条件的第一记录数,还可以包括:
如果一第一时间段内命中查询条件的第一记录数大于第一时间段对应的搜索引擎集群配置的分页查询的最大记录数,则获取第二记录数,所述第二记录数为基于第一时间段划分得到的j个第二时间段中每个第二时间段内命中查询条件的记录数;对于任一第二时间段,第二记录数不大于第二时间段对应的搜索引擎集群配置的分页查询的最大记录数;j≥2;
确定j个第二时间段为所述第一时间段,并确定j个第二记录数为所述第一时间段对应的第一记录数。
举例来说,假设将查询时间范围按照搜索引擎集群的时间周期维度划分得到时间段1和时间段2共2个第一时间段,时间段2内命中查询条件的记录数不大于时间段2对应的搜索引擎集群配置的分页查询的最大记录数,时间段1内命中查询条件的记录数大于时间段1对应的搜索引擎集群配置的分页查询的最大记录数,则时间段1被划分为3个时间段(也即第二时间段),分别是时间段11~13,假设时间段11~13中每个时间段内命中查询条件的记录数(也即第二记录数)均不大于时间段11~13对应的搜索引擎集群配置的分页查询的最大记录数;则,主机最终异步获取到的第一时间段内命中查询条件的第一记录数包括:时间段2内命中查询条件的记录数,时间段11~13中每个时间段内命中查询条件的记录数。
步骤202:主机接收分页条件,根据接收到的分页条件以及已经接收到的第一记录数,确定待查询记录所属的第一时间段,作为目标时间段;其中,待查询记录为分页条件对应的待查询起始记录数至分页条件对应的待查询末尾记录数对应的记录。
其中,主机接收到查询条件时,可能同时接收到分页条件;或者,也可能在接收到查询条件之后才接收到分页条件。查询条件和/或分页条件具体如何传输给主机,本申请实施例不作限定。例如,可以由用户在主机中输入上述查询条件和/或分页条件,或者,也可以由与主机连接的其他电子设备向主机发送上述查询条件和/或分页条件,或者,也可以由主机中的程序触发分页查询,向主机发送上述查询条件和/或分页条件。
其中,分页条件可以包括两个数值,分别是:起始分页数、以及每页条数。起始分页数是需要查询的页数,每页条数是每一页上展示的记录的数量。
由于步骤201中主机异步获取各个第一时间段内命中查询条件的第一记录数,因此,主机可能无法同时接收到每一个第一时间段内命中的第一记录数,如果主机接收到分页条件时,尚未接收到所有第一时间段内命中的第一记录数,可以根据已经接收到的第一记录数尝试确定待查询记录所属的第一时间段,一旦确定待查询记录所属的第一时间段,就可以从该第一时间段内命中的记录中查询分页条件对应的待查询记录。
以下举例说明主机无需接收到所有第一时间段内命中的第一记录数也能够确定待查询记录的目标时间段的情况:
假设步骤201中查询时间范围最终包括n个第一时间段;
若接收到n-1个第一记录数,根据各个第一记录数、各个第一记录数所属的第一时间段以及总记录数,从所述n个第一时间段中确定所述待查询记录所属的第一时间段;其中,所述总记录数为所述查询条件命中的总记录数;
若接收到最多为n-2个第一记录数,且所述待查询末尾记录数不大于前m个连续时间段的第一记录数的总和,则从所述前m个连续时间段中确定所述待查询记录所属的第一时间段;其中,m≤n-2;
若接收到最多为n-2个第一记录数,且所述待查询起始记录数不小于后k个连续时间段的第一记录数的总和,则从所述后k个连续时间段中确定所述待查询记录所属的第一时间段;其中,k≤n-2。
其中,假设分页条件包括:第一起始分页数、以及第一每页条数,则,分页条件对应的待查询起始记录数一般可以通过第一起始分页数乘以第一每页条数也即start*limit计算得到,分页条件对应的待查询末尾记录数一般可以通过start*limit+limit计算得到,其中,start表示分页条件中的第一起始分页数,limit表示分页条件中的第一每页条数。
步骤203:主机根据分页条件、已经接收到的第一记录数,在目标时间段内实现所述待查询记录的查询。
其中,本步骤可以包括:根据分页条件以及第一记录数,计算每个目标时间段的分页条件;从每个目标时间段内命中查询条件的记录中获得该目标时间段的分页条件对应的记录,得到待查询记录。
其中,每个目标时间段的分页条件可以包括:第二起始分页数、以及第二每页条数;
目标时间段的第二起始分页数=(待查询起始记录数-A)/第二每页条数;A为该目标时间段之前各个时间段的第一记录数的总和;
目标时间段的第二每页条数可以与接收到的分页条件中的第一每页条数相同。
通过将目标时间段的第二每页条数设置为与接收到的分页条件中的第一每页条数相同,保证从目标时间段内命中查询条件的记录中获得的记录的数量满足接收到的分页条件的第一每页条数的要求,且占用的资源相对较少。
图2所示的方法,主机接收查询条件,异步获取搜索引擎集群反馈的各个第一时间段内命中所述查询条件的第一记录数,所述查询条件的查询时间范围包括所述第一时间段,主机接收分页条件,根据所述分页条件以及已经接收到的第一记录数,确定待查询记录所属的第一时间段,作为目标时间段,其中,所述待查询记录为所述分页条件对应的待查询起始记录数至所述分页条件对应的待查询末尾记录数对应的记录;根据所述分页条件、所述已经接收到的第一记录数,在所述目标时间段内实现所述待查询记录的查询,从而在存在多个搜索引擎集群的跨机房部署方案中实现了分页查询;而且,在进行深度分页查询时,根据接收到的分页条件以及已经接收到的第一记录数,确定待查询记录所属的目标时间段,在目标时间段内实现所述待查询记录的查询,从而无需每个搜索引擎集群反馈过多的查询结果,主机也无需对过多的查询结果进行排序,从而完成深度分页查询所占用的资源相对较少。
以下,对上述方法的实现进行示例性的说明。
通过图3A对步骤201的实现进行说明。
步骤301:主机接收查询条件。
步骤302:主机获取查询条件命中的总记录数。
其中,本步骤可以包括:主机向各个搜索引擎集群发送查询条件,接收各个搜索引擎集群反馈的上述查询条件命中的记录数;主机计算所有搜索引擎集群发送的记录数的总和,得到总记录数。
以下,通过步骤303~308对步骤201中异步获取搜索引擎集群反馈的各个时间段内命中所述查询条件的第一记录数的实现进行说明。
步骤303:主机将查询条件的查询时间范围按照搜索引擎集群的时间周期维度分为p个第一时间段;对于p个第一时间段中的每个第一时间段,向该第一时间段对应的搜索引擎集群发送基于该第一时间段以及查询条件的异步统计请求。p≥1。
主机将异步统计请求发送至搜索引擎集群,从而触发搜索引擎集群中的异步统计任务。
可选的,主机接收到查询条件即触发步骤303。
基于第一时间段和查询条件的异步统计请求中包括:第一时间段、查询条件。
具体的,每个搜索引擎集群中按照时间周期维度存储着若干个时间段的记录,以下称为搜索引擎集群的时间段;查询时间范围按照同样的时间周期维度分为p个第一时间段,那么查询时间范围划分得到的每个第一时间段必然对应着一个搜索引擎集群。举例来说:
主机中记录各个搜索引擎集群的时间段,例如,主机中记录:搜索引擎集群1的时间段为:(2019.01.01,2019.01.31)、(2019.03.01,2019.03.31)、(2019.07.01,2019.07.31),搜索引擎集群2的时间段为:(2019.02.01,2019.02.28)、(2019.04.01,2019.04.30),搜索引擎集群3的时间段为:(2019.05.01,2019.05.31)、(2019.06.01,2019.06.30)。
需要说明的是,本申请实施例中时间段的举例精确到天,在实际应用中也可以精确到例如小时、分、秒等其他的时间单位,本申请实施例不作限定。例如,也可以通过类似“time>='2019-1-01 00:00:00'and time<'2019-2-01 00:00:00'”这样的字段来标识2019年1月这一时间段。
上述搜索引擎集群对应的时间段的时间周期维度是自然月,那么查询时间范围的划分也基于相同的时间周期维度。例如,假设查询时间范围为(2019.01.07,2019.03.07),那么,可以按照时间周期维度划分为以下3个第一时间段:(2019.01.07,2019.01.31)(2019.02.01,2019.02.28)(2019.03.01,2019.03.07)。划分得到的3个第一时间段与搜索引擎集群的时间段比对,可知:第一时间段(2019.01.07,2019.01.31)对应着搜索引擎集群1,第一时间段(2019.02.01,2019.02.28)对应搜索引擎集群2,第一时间段(2019.03.01,2019.03.07)对应搜索引擎集群1。则,主机向搜索引擎集群1发送基于第一时间段(2019.01.07,2019.01.31)和查询条件的异步统计请求<(2019.01.07,2019.01.31),查询条件>,主机向搜索引擎集群2发送基于第一时间段(2019.02.01,2019.02.28)和查询条件的异步统计请求<(2019.02.01,2019.02.28),查询条件>,主机向搜索引擎集群1发送基于第一时间段(2019.03.01,2019.03.07)和查询条件的异步统计请求<(2019.03.01,2019.03.07),查询条件>。
步骤304:搜索引擎集群接收异步统计请求,统计该请求中的第一时间段内、命中查询条件的第一记录数(也即发起基于该请求中的第一时间段以及查询条件的异步统计任务),将异步统计请求中的第一时间段内命中的第一记录数发送给主机。
本步骤中,异步统计请求中的第一时间段与第一记录数之间是具有对应关系的,相应的,发送给主机的第一时间段内命中查询条件的第一记录数也包含这种对应关系,以便主机能够准确获得查询时间范围包括的每个第一时间段内命中查询条件的第一记录数。
延续步骤303中的举例,搜索引擎集群1接收异步统计请求<(2019.01.07,2019.01.31),查询条件>,统计第一时间段(2019.01.07,2019.01.31)内命中查询条件的第一记录数,将(2019.01.07,2019.01.31)内命中查询条件的第一记录数发送给主机;并且,搜索引擎集群1接收异步统计请求<(2019.03.01,2019.03.07),查询条件>,统计第一时间段(2019.03.01,2019.03.07)内命中查询条件的第一记录数,将(2019.03.01,2019.03.07)内命中查询条件的第一记录数发送给主机;搜索引擎集群1中的两个第一记录数的统计以及发送是异步的,分别基于接收的异步统计请求触发;搜索引擎集群2接收异步统计请求<(2019.02.01,2019.02.28),查询条件>,统计第一时间段(2019.02.01,2019.02.28)内命中查询条件的第一记录数,将(2019.02.01,2019.02.28)内命中查询条件的第一记录数发送给主机。
步骤305:主机接收搜索引擎集群反馈的第一时间段内命中的第一记录数。
可选地,每个搜索引擎集群一般会配置分页查询的最大记录数,因此,如果主机判断某一搜索引擎集群反馈的第一时间段内命中查询条件的第一记录数大于该搜索引擎集群的最大记录数,则可以进一步将该第一时间段再进行细分,再由搜索引擎集群统计每个细分后的时间段内命中的第二记录数,具体参见步骤306~步骤308。
步骤306:主机接收到一搜索引擎集群反馈的一第一时间段内命中的第一记录数时,判断该第一记录数超过该搜索引擎集群的最大记录数时,将该第一时间段划分为l个时间段,对于l个时间段中的每个时间段,向该时间段对应的搜索引擎集群发送基于该时间段和查询条件的异步统计请求。l≥2。
其中,主机将基于l个时间段向该搜索引擎集群发送l个异步统计请求,从而在该搜索引擎集群触发l个异步统计任务。
延续步骤304中的举例,假设主机接收到的搜索引擎集群2反馈的第一时间段(2019.02.01,2019.02.28)命中的第一记录数大于搜索引擎集群2的最大记录数,将第一时间段(2019.02.01,2019.02.28)划分为l个时间段,对于每个时间段,向搜索引擎集群2发送基于该时间段和查询条件的异步统计请求。
在一种可能的实现方式中,可以对第一记录数大于最大记录数的第一时间段进行均分,例如根据第一记录数以及最大记录数计算均分份数,将该第一时间段按照均分份数划分新的时间段。
在一种可能的实现方式中,均分份数可以通过公式:第一记录数/最大记录数来计算,具体的,如果第一记录数/最大记录数的商为整数,直接将第一记录数/最大记录数的商确定为均分份数,如果第一记录数/最大记录数的商有余数,将第一记录数/最大记录数的商的整数加1得到均分份数。
需要说明的是,本步骤中的均分并不一定是绝对均分,允许近似均分,也即允许存在一定的误差。延续前述举例,需要被划分的第一时间段是(2019.02.01,2019.02.28),假设2月命中的第一记录数为25000,第一预设数值为10000,则可以计算得到均分份数Q=|25000/10000|+1=3,则可以近似均分为例如(2019.02.01,2019.02.09)(2019.02.10,2019.02.18)(2019.02.19,2019.02.28)。
步骤307:搜索引擎集群接收异步统计请求,统计每个异步统计请求中的时间段内命中查询条件的记录数(也即发起基于每个异步统计请求中的时间段以及查询条件的异步统计任务),将每个时间段内命中查询条件的记录数发送给主机。
步骤308:主机接收搜索引擎集群反馈的时间段内命中查询条件的记录数。
此时,如果某一时间段内命中的记录数仍然超过搜索引擎集群的最大记录数,可以重复执行步骤306~步骤308,将该时间段进一步划分为新的时间段,直到每一个时间段内命中的记录数均不超过该搜索引擎集群的最大记录数。
上述步骤306~步骤308中,记录数不大于最大记录数的时间段也即为上述第二时间段,每个第二时间段内命中查询条件的记录数也即为上述第二记录数。
上述步骤303~步骤308中,得到的上述第二时间段替换第二时间段所属的第一时间段,作为步骤201中所述的第一时间段,得到的上述第二记录数替换第二时间段所属的第一时间段的第一记录数(也即大于最大记录数的第一记录数),作为步骤201中所述的第一记录数。
图3A所示实施例的步骤303中,由主机对查询时间范围按照时间周期维度划分第一时间段,可选地,也可以由搜索引擎集群对查询时间范围按照时间周期维度划分第一时间段,参见图3B所示,步骤303可以替换为步骤303’:主机向搜索引擎集群发送基于查询时间范围以及查询条件的异步统计请求。
其中,主机可以向所有的搜索引擎集群发送上述异步统计请求,也可以只对查询时间范围与搜索引擎集群的时间段有重合的搜索引擎集群发送上述异步统计请求。
延续步骤303以及步骤304中的举例,假设查询时间范围为(2019.01.07,2019.03.07),那么显然该查询时间范围与搜索引擎集群1的时间段为:(2019.01.01,2019.01.31)、(2019.03.01,2019.03.31)、以及搜索引擎集群2的时间段(2019.02.01,2019.02.28)有重合。
步骤304可以替换为步骤304’:搜索引擎集群将查询时间范围按照时间周期维度划分第一时间段,根据搜索引擎集群的时间段确定划分得到的第一时间段中需要统计的第一时间段;对于每个需要统计的第一时间段,统计该第一时间段内命中查询条件的第一记录数(也即发起基于该第一时间段以及查询条件的异步统计任务),将该第一时间段内命中的第一记录数发送给主机。
其他步骤不再赘述。
延续步骤303以及步骤304中的举例,假设查询时间范围为(2019.01.07,2019.03.07),那么,每个搜索引擎集群都可以按照时间周期维度将查询时间范围划分为以下3个第一时间段:(2019.01.07,2019.01.31)(2019.02.01,2019.02.28)(2019.03.01,2019.03.07);对于搜索引擎集群1,可以确定其中的第一时间段(2019.01.07,2019.01.31)和(2019.03.01,2019.03.07)是需要统计的第一时间段,对于搜索引擎集群2,可以确定第一时间段(2019.02.01,2019.02.28)是需要统计的第一时间段。
图3A和图3B所示实施例中,由主机对第一记录数大于最大记录数的第一时间段进一步划分新的时间段,在另一种可能的实现方式中,对第一记录数大于最大记录数的第一时间段的划分也可以由搜索引擎集群完成,此时,步骤306~步骤308取消,步骤304或步骤304’中将第一记录数发送给主机之前还包括:
搜索引擎集群判断一第一时间段内命中查询条件的第一记录数是否超过该搜索引擎集群的最大记录数,如果超过,将该第一时间段划分为l个时间段,基于l个时间段和查询条件分别统计每个时间段内命中查询条件的记录数(也即发起基于每个时间段以及查询条件的异步统计任务),将每个时间段内命中查询条件的记录数发送给主机;
如果未超过,执行步骤304或步骤304’中将第一记录数发送给主机的步骤。
需要说明的是,如果第一时间段细分后的某一时间段内命中查询条件的记录数仍然超过最大记录数,可以参考上述步骤,将该时间段再进行细分,再由搜索引擎集群统计每个细分后的时间段内命中查询条件的记录数,直到第一时间段细分后的每一个时间段内命中查询条件的记录数均不超过最大记录数。
以下,通过图4所示实施例对步骤202的实现进行示例性说明。
需要说明的是,步骤401中主机接收分页条件,可以在步骤301接收到查询条件的同时接收到分页条件,也可以在步骤301中接收到查询条件之后接收到分页条件,因此,步骤401可以与步骤301同时执行或者在步骤301之后执行。一旦主机接收到分页条件,即可以触发步骤401~步骤403的执行,步骤401~步骤403与步骤302~步骤308之间的执行顺序不限定。在步骤301~步骤308执行期间的任意时刻,均可以由用户或者主机中的程序、或者与主机连接的其他电子设备等向主机发送分页条件,主机对应接收分页条件,从而启动步骤401~步骤403。因此,在执行步骤402和步骤403时,主机可能已经接收到了n个时间段内命中查询条件的第一记录数,也可能只接收到了n个时间段中部分时间段内命中查询条件的第一记录数。
步骤401:主机接收分页条件,根据分页条件计算待查询起始记录数以及待查询末尾记录数。分页条件包括第一起始分页数和第一每页条数。第一起始分页数为命中查询条件的总记录数连续编页时,用户所需查询的分页数。例如,总记录数为20000条,第一每页条数为20条,则对总记录数进行连续编页时,总共有1000页,假设用户所需查询的分页数为第500页,则第一起始分页数为500。
步骤402:主机根据分页条件以及已经从搜索引擎集群接收到的第一记录数判断是否能够完成分页查询,如果否,继续执行本步骤的判断,直到判断结果为是;如果是,执行步骤403。
其中,假设步骤201中查询时间范围包括n个第一时间段,本步骤中的判断可以至少包括以下几种情况:
若主机已经接收到至少n-1个第一记录数,判断能够完成该分页查询;或者,
若主机已经接收到最多为n-2个第一记录数,且待查询末尾记录数不大于前m个连续时间段的第一记录数的总和,判断能够完成该分页查询,此时,后续步骤403中可以从前m个连续时间段中确定待查询记录所属的第一时间段;其中,m≤n-2;或者,
若接收到最多为n-2个第一记录数,且待查询起始记录数不小于后k个连续时间段的第一记录数的总和,判断能够完成该分页查询,此时,后续步骤403中可以从后k个连续时间段中确定所述待查询记录所属的第一时间段;其中,k≤n-2;
否则,判断不能够完成该分页查询。
举例来说,分页条件的第一起始分页数为1002,每页展示的记录数为20,则待查询起始记录数和待查询末尾记录数分比为:20040、20060。
如果有6个第一时间段,分别是1~6月,发起6个异步统计任务,已经接收到5个第一记录数,1个异步统计任务未执行完成,通过总记录数50000减去5个已经接收到的第一记录数,就可以得到未执行完成的异步统计任务所基于的第一时间段内命中的第一记录数,进而,即可根据各个第一时间段的第一记录数,确定待查询记录所属的第一时间段,从而在该第一时间段内命中查询条件的记录中获得待查询记录;因此,能够完成分页查询。
如果有2个及以上的异步统计任务未执行完成,例如是3月和4月的异步统计任务未完成,而1、2、5、6月命中的第一记录数已经接收到,则可以计算1月命中的第一记录数与2月命中的第一记录数的总和是否大于等于20060,如果是,则待查询记录20040-20060所属的第一时间段在1月和2月以内,则能够根据1月命中的第一记录数和2月命中的第一记录数,进一步确认待查询记录20040-20060所属的时间段是1月、或者2月,或者1月+2月;最后,在确定的所属第一时间段内命中查询条件的记录中获得待查询记录,完成分页查询,如果否,还可以计算50000减去5月命中的第一记录数以及6月命中的第一记录数得到的差值是否小于等于20040,如果是,则待查询记录20040-20060所属的第一时间段在5月和6月以内,则能够根据5月命中的第一记录数、6月命中的第一记录数、以及1-4月命中的所有记录数(通过50000减去5月命中的第一记录数以及6月命中的第一记录数即可得到),进一步确认待查询记录20040-20060所属的时间段是5月、或者6月、或者5月+6月,最后,在确定的所属第一时间段内命中查询条件的记录中获得待查询记录,完成分页查询,如果否,则无法确定待查询记录20040-20060所属的第一时间段,则暂时无法完成分页查询。
步骤403:主机根据已经接收到的第一记录数,确定待查询记录所属第一时间段,作为目标时间段。
其中,将已经接收到的第一时间段内命中查询条件的第一记录数按照第一时间段的顺序进行排序,可以确定待查询起始记录数以及待查询末尾记录数之间的记录数处于哪个或哪些第一时间段,从而得到待查询记录所属第一时间段。
其中,待查询记录所属的第一时间段,也即目标时间段可能有以下三种情况:
一、目标时间段为1个;
二、目标时间段为至少2个,且目标时间段均在同一个搜索引擎集群;
三、目标时间段为至少2个,且目标时间段不全在同一个搜索引擎集群。
举例来说,假设接收到2个第一记录数,按照第一时间段的顺序为10000和15000;假设待查询起始记录数为20040,待查询末尾记录数为20060,可知其处于15000对应的第一时间段内,则15000对应的第一时间段就为目标时间段。
以下,通过步骤501~步骤504对步骤203的实现进行示例性说明。
步骤501:对于每一目标时间段,主机计算该目标时间段的分页条件。
其中,目标时间段的分页条件计算方法可以参见步骤203中的相关说明,这里不赘述。目标时间段为至少2个时,按照目标时间段排序下,第一个目标时间段的第二起始分页数可以基于步骤203中所述的公式计算得到,第二每页条数可以等于第一每页条数,从第二个目标时间段开始,每个目标时间段的分页条件中的第二起始分页数为0,第二每页条数可以等于第一每页条数。
步骤502:对于每一目标时间段,主机向该目标时间段对应的搜索引擎集群发送基于该目标时间段以及该目标时间段的分页条件的查询请求。
步骤503:接收到查询条件的搜索引擎集群根据目标时间段以及分页条件查询到分页条件对应的记录,将查询到的记录发送给主机。
步骤504:主机根据接收到的搜索引擎集群发送的记录,确定待查询记录。
其中,每个目标时间段的第二每页条数与主机接收到的分页条件中的第一每页条数相同时,包括2种情况:
只有一个目标时间段,此时,主机将从目标时间段对应的搜索引擎集群接收到第二每页条数个记录,则主机接收到的记录就是待查询记录。
有q个目标时间段,q≥2,此时,主机将从前q-1个目标时间段对应的搜索引擎集群接收到小于第二每页条数个记录,从第q个目标时间段对应的搜索引擎集群最多可以接收到第二每页条数个记录,这时,主机从q个目标时间段对应的搜索引擎集群接收到总记录数大于第二每页条数,也即大于第一每页条数,则本步骤中主机对接收到的记录按照时间排序,将前第一每页条数个记录确定为待查询记录。
在另一种可能的实现方式中,步骤503查询得到的查询结果也可以为记录ID,相应的,步骤504中主机根据接收到的记录ID确定待查询记录的记录ID,再从数据库中查询得到待查询记录。
需要说明的是,在实际应用中,由于本申请实施例中已经明确获知待查询记录的起始记录数和末尾记录数、待查询记录所属目标时间段、以及第一时间段的第一记录数等信息,因此,步骤502中也可以在每个查询请求中、或者至少在最后一个目标时间段对应的查询请求中增加在目标时间段所需要获取的记录的条数每页条数,从而使得步骤504中恰好接收到第一每页条数个待查询记录。举例来说:假设在最后一个目标时间段对应的查询请求中增加在目标时间段所需要获取的记录的条数;假设时间段包括1月、2月、3月,接收到的分页条件中第一起始分页数为1002,第一每页条数20,目标时间段为2月、3月,1月命中的第二记录数为18000,2月命中的第二记录数为2050,3月命中的第二记录数为50,则,2月的第二起始分页数为(20040-18000)/20=102,第二每页条数可以为20,2月的查询请求可以为(102,20,2月),通过计算18000+2050-20040=10可知,可以从2月查询到10条记录,而3月的分页数为0,第二每页条数可以为20,从3月需要获取的记录条数为第一每页条数20减去2月可以查询到的10条记录也即20-10,得到从3月需要获取的记录条数为10,则3月对应的查询请求可以为:(0,20,3月,10)。
对以上图3A、图4、图5所示的方法举实例说明:
假设该实例中主机连接搜索引擎集群1、2、3共3个搜索引擎集群。搜索引擎集群中生成索引的时间周期为月,搜索引擎集群1~3共存储了2019年1月~7月共7个月的记录,具体的,搜索引擎集群1的时间段为:1月,搜索引擎集群2的时间段为:2月、3月、5月,搜索引擎集群3的时间段为:4月、6月、7月。
则,步骤301中,主机接收查询条件。假设查询条件的查询时间范围是1~4月;
步骤302中,主机分别向搜索引擎集群1~3发送查询条件;搜索引擎集群1~3分别获得查询条件命中的记录数,将记录数发送给主机,主机计算得到查询条件命中的总记录数,假设为50000。
步骤303中,主机将查询时间范围按照时间周期维度划分为1月、2月、3月、4月共4个第一时间段,分别向1月、2月、3月、4月这4个第一时间段对应的搜索引擎集群1、搜索引擎集群2和搜索引擎集群3发送异步统计请求,异步统计请求中携带查询条件和第一时间段。具体的,向搜索引擎集群1发送异步统计请求:(查询条件、1月),向搜索引擎集群2发送2个异步统计请求,分别是:(查询条件、2月),(查询条件、3月),向搜索引擎集群3发送异步统计请求:(查询条件、4月)。
这里,向搜索引擎集群发送异步统计请求的目的在于触发搜索引擎集群执行异步统计任务。
步骤304中,搜索引擎集群1~3分别根据异步统计请求,统计每个第一时间段内命中查询条件的第一记录数,例如,搜索引擎集群1发起基于1月的异步统计任务,搜索引擎集群2分别发起基于2月、3月的异步统计任务,搜索引擎集群3发起基于4月的异步统计任务,搜索引擎集群1~3会在异步统计任务结束后,将第一时间段内命中查询条件的第一记录数发送给主机。
步骤305中,主机接收搜索引擎集群发送的、每个第一时间段内命中查询条件的第一记录数。
后续步骤306~步骤308不再赘述。
步骤401中,主机接收分页条件,假设分页条件为:第一起始分页数1002,第一每页条数20,进而可以计算得到待查询记录是:1002*20~1002*20+20,也即20040~20060。
步骤402中,主机根据20040~20060、以及已经从搜索引擎集群1、2、3接收到的第一记录数判断是否能够完成分页查询。可能出现的3种情况步骤402中已经举例,这里不赘述。
步骤403、以及步骤501~502中,在判断能够完成分页查询后,分为3种情况:
(1)假设20040~20060在一个第一时间段内,例如2月,即目标时间段为2月,而1月命中的第一记录数为18000,则2月的分页条件中的第二起始分页数=(20040-18000)/20=102,第二每页条数为20,即待查询记录20040~20060分布于2月的第102页,第102页的记录是搜索引擎集群查询到的记录,将发送至主机。
则,步骤502中主机向搜索引擎集群2发送查询请求,查询请求包括:(102,20,2月),这里,2月也可以通过字段“time>='2019-2-01 00:00:00'and time<'2019-3-01 00:00:00'”标识。
(2)假设20040~20060在2个第一时间段内,例如2月、3月,1月命中的第一记录数为18000,2月命中的第一记录数为2050,3月命中的第一记录数大于等于10,则2月的分页条件中的第二起始分页数=(20040-18000)/20=102,即待查询记录的起始记录位于2月的第102页,第102页的记录是搜索引擎集群查询到的记录,将发送至主机,实际上,第102页只有10条记录;3月的分页条件中的第二起始分页数取0,表明待查询记录中第11条开始以后的记录分布于3月的第0页,第0页的前10条记录是搜索引擎集群查询到的记录,将发送至主机。
则,步骤502中主机向搜索引擎集群2发送查询请求(102,20,2月)(0,20,3月),这里,2月也可以通过字段“time>='2019-2-01 00:00:00'and time<'2019-3-01 00:00:00'”标识,3月也可以通过字段“time>='2019-3-01 00:00:00'and time<'2019-4-01 00:00:00'”标识。
(3)假设20040~20060在3个第一时间段内,例如2月、3月、4月,1月命中的第一记录数为18000,2月命中的第一记录数为2050,3月命中的第一记录数为3,4月命中的第一记录数大于等于7,则2月的分页条件中的第二起始分页数=(20040-18000)/20=102,第二每页条数为20,即2月命中的记录中,第102页的记录是搜索引擎集群查询到的记录,将发送至主机,实际上第102页只有10条记录;3月的分页条件中的第二起始分页数取0,即3月命中的记录中,第0页的记录是搜索引擎集群查询到的记录,将发送至主机,实际上第0页有3条记录;4月的分页条件中的第二起始分页数取0,第二每页条数为20,即4月命中的记录中,第0页的前7个记录是搜索引擎集群查询到的记录,将发送至主机;
则,步骤410中主机向搜索引擎集群2发送查询请求:(102,20,2月)(0,20,3月),向搜索引擎集群3发送查询请求:(0,20,4月),这里,2月也可以通过字段“time>='2019-2-0100:00:00'and time<'2019-3-01 00:00:00'”标识,3月也可以通过字段“time>='2019-3-01 00:00:00'and time<'2019-4-01 00:00:00'”标识,4月也可以通过字段“time>='2019-4-01 00:00:00'and time<'2019-5-01 00:00:00'”标识。
步骤503~504不再赘述。
可以理解的是,上述实施例中的部分或全部步骤骤或操作仅是示例,本申请实施例还可以执行其它操作或者各种操作的变形。此外,各个步骤可以按照上述实施例呈现的不同的顺序来执行,并且有可能并非要执行上述实施例中的全部操作。
图6为本申请分页查询装置一个实施例的结构示意图,参见图6,该装置60可以包括:
获取单元61,用于接收查询条件,异步获取搜索引擎集群反馈的各个第一时间段内命中查询条件的第一记录数;查询条件的查询时间范围包括第一时间段;
时间段确定单元62,用于接收分页条件,根据分页条件以及已经接收到的第一记录数,确定待查询记录所属的第一时间段,作为目标时间段;其中,待查询记录为分页条件对应的待查询起始记录数至分页条件对应的待查询末尾记录数对应的记录;
查询单元63,用于根据分页条件、已经接收到的第一记录数,在目标时间段内实现待查询记录的查询。
其中,对于任一第一时间段,第一记录数不大于第一时间段对应的搜索引擎集群配置的分页查询的最大记录数。
其中,获取单元61具体可以用于:
如果一第一时间段内命中查询条件的第一记录数大于第一时间段对应的搜索引擎集群配置的分页查询的最大记录数,则获取第二记录数,第二记录数为基于第一时间段划分得到的j个第二时间段中每个第二时间段内命中查询条件的记录数;对于任一第二时间段,第二记录数不大于第二时间段对应的搜索引擎集群配置的分页查询的最大记录数;确定j个第二时间段为第一时间段,并确定j个第二记录数为第一时间段对应的第一记录数。
其中,查询时间范围包括n个第一时间段;时间段确定单元62具体可以用于:
若接收到n-1个第一记录数,根据各个第一记录数、各个第一记录数所属的时间段以及总记录数,从n个第一时间段中确定待查询记录所属的时间段;其中,总记录数为查询条件命中的总记录数;
若接收到最多为n-2个第一记录数,且待查询末尾记录数不大于前m个连续时间段的第一记录数的总和,则从前m个连续时间段中确定待查询记录所属的第一时间段;其中,m≤n-2;
若接收到最多为n-2个第一记录数,且待查询起始记录数不小于后k个连续时间段的第一记录数的总和,则从后k个连续时间段中确定待查询记录所属的第一时间段;其中,k≤n-2。
图6所示实施例提供的装置可用于执行本申请图2~图5所示方法实施例的技术方案,其实现原理和技术效果可以进一步参考方法实施例中的相关描述。
应理解以上图6所示的分页查询装置的各个单元的划分仅仅是一种逻辑功能的划分,实际实现时可以全部或部分集成到一个物理实体上,也可以物理上分开。且这些单元可以全部以软件通过处理元件调用的形式实现;也可以全部以硬件的形式实现;还可以部分单元以软件通过处理元件调用的形式实现,部分单元通过硬件的形式实现。例如,检测单元可以为单独设立的处理元件,也可以集成在电子设备的某一个芯片中实现。其它单元的实现与之类似。此外这些单元全部或部分可以集成在一起,也可以独立实现。在实现过程中,上述方法的各步骤或以上各个单元可以通过处理器元件中的硬件的集成逻辑电路或者软件形式的指令完成。
例如,以上这些单元可以是被配置成实施以上方法的一个或多个集成电路,例如:一个或多个特定集成电路(Application Specific Integrated Circuit;以下简称:ASIC),或,一个或多个微处理器(Digital Singnal Processor;以下简称:DSP),或,一个或者多个现场可编程门阵列(Field Programmable Gate Array;以下简称:FPGA)等。再如,这些单元可以集成在一起,以片上系统(System-On-a-Chip;以下简称:SOC)的形式实现。
图7为本申请一种电子设备结构示意图,如图7所示,电子设备70可以包括:一个或多个处理器71;存储器72;以及一个或多个计算机程序。
其中所述一个或多个计算机程序被存储在所述存储器72中,所述一个或多个计算机程序包括指令,当所述指令被所述设备70执行时,使得所述设备70执行本申请实施例图2~图5所示方法,详细内容参见上述实施例的具体描述,这里不再赘述。
以上各实施例中,涉及的处理器可以例如包括CPU、DSP、微控制器或数字信号处理器,还可包括GPU、嵌入式神经网络处理器(Neural-network Process Units;以下简称:NPU)和图像信号处理器(Image Signal Processing;以下简称:ISP),该处理器还可包括必要的硬件加速器或逻辑处理硬件电路,如ASIC,或一个或多个用于控制本申请技术方案程序执行的集成电路等。此外,处理器可以具有操作一个或多个软件程序的功能,软件程序可以存储在存储介质中。
本申请实施例还提供一种计算机可读存储介质,该计算机可读存储介质中存储有计算机程序,当其在计算机上运行时,使得计算机执行本申请图2~图5所示实施例提供的方法。
本申请实施例还提供一种计算机程序产品,该计算机程序产品包括计算机程序,当其在计算机上运行时,使得计算机执行本申请图2~图5所示实施例提供的方法。
本申请实施例中,“至少一个”是指一个或者多个,“多个”是指两个或两个以上。“和/或”,描述关联对象的关联关系,表示可以存在三种关系,例如,A和/或B,可以表示单独存在A、同时存在A和B、单独存在B的情况。其中A,B可以是单数或者复数。字符“/”一般表示前后关联对象是一种“或”的关系。“以下至少一项”及其类似表达,是指的这些项中的任意组合,包括单项或复数项的任意组合。例如,a,b和c中的至少一项可以表示:a,b,c,a和b,a和c,b和c或a和b和c,其中a,b,c可以是单个,也可以是多个。
本领域普通技术人员可以意识到,本文中公开的实施例中描述的各单元及算法步骤,能够以电子硬件、计算机软件和电子硬件的结合来实现。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本申请的范围。
所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的系统、装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
在本申请所提供的几个实施例中,任一功能如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本申请各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(Read-Only Memory;以下简称:ROM)、随机存取存储器(Random Access Memory;以下简称:RAM)、磁碟或者光盘等各种可以存储程序代码的介质。
以上所述,仅为本申请的具体实施方式,任何熟悉本技术领域的技术人员在本申请揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本申请的保护范围之内。本申请的保护范围应以所述权利要求的保护范围为准。
Claims (10)
1.一种分页查询方法,其特征在于,包括:
接收查询条件,异步获取搜索引擎集群反馈的各个第一时间段内命中所述查询条件的第一记录数;所述查询条件的查询时间范围包括所述第一时间段;
接收分页条件,根据所述分页条件以及已经接收到的第一记录数,确定待查询记录所属的第一时间段,作为目标时间段;其中,所述待查询记录为所述分页条件对应的待查询起始记录数至所述分页条件对应的待查询末尾记录数对应的记录;
根据所述分页条件、所述已经接收到的第一记录数,在所述目标时间段内实现所述待查询记录的查询。
2.根据权利要求1所述的方法,其特征在于,对于任一所述第一时间段,所述第一记录数不大于所述第一时间段对应的搜索引擎集群配置的分页查询的最大记录数。
3.根据权利要求2所述的方法,其特征在于,所述异步获取搜索引擎集群反馈的各个第一时间段内命中所述查询条件的第一记录数,包括:
如果一第一时间段内命中所述查询条件的第一记录数大于所述第一时间段对应的搜索引擎集群配置的分页查询的最大记录数,则获取第二记录数,所述第二记录数为基于所述第一时间段划分得到的j个第二时间段中每个第二时间段内命中所述查询条件的记录数;对于任一所述第二时间段,所述第二记录数不大于所述第二时间段对应的搜索引擎集群配置的分页查询的最大记录数;j≥2;
确定j个所述第二时间段为所述第一时间段,并确定j个所述第二记录数为所述第一时间段对应的第一记录数。
4.根据权利要求1至3任一项所述的方法,其特征在于,所述查询时间范围包括n个第一时间段;所述根据所述分页条件以及已经接收到的第一记录数,确定所述待查询记录所属的第一时间段,作为目标时间段,包括:
若接收到n-1个第一记录数,根据各个第一记录数、各个第一记录数所属的第一时间段以及总记录数,从所述n个第一时间段中确定所述待查询记录所属的第一时间段;其中,所述总记录数为所述查询条件命中的总记录数;
若接收到最多为n-2个第一记录数,且所述待查询末尾记录数不大于前m个连续时间段的第一记录数的总和,则从所述前m个连续时间段中确定所述待查询记录所属的第一时间段;其中,m≤n-2;
若接收到最多为n-2个第一记录数,且所述待查询起始记录数不小于后k个连续时间段的第一记录数的总和,则从所述后k个连续时间段中确定所述待查询记录所属的第一时间段;其中,k≤n-2。
5.一种分页查询装置,其特征在于,包括:
获取单元,用于接收查询条件,异步获取搜索引擎集群反馈的各个第一时间段内命中所述查询条件的第一记录数;所述查询条件的查询时间范围包括所述第一时间段;
时间段确定单元,用于接收分页条件,根据所述分页条件以及已经接收到的第一记录数,确定待查询记录所属的第一时间段,作为目标时间段;其中,所述待查询记录为所述分页条件对应的待查询起始记录数至所述分页条件对应的待查询末尾记录数对应的记录;
查询单元,用于根据所述分页条件、所述已经接收到的第一记录数,在所述目标时间段内实现所述待查询记录的查询。
6.根据权利要求5所述的装置,其特征在于,对于任一所述第一时间段,所述第一记录数不大于所述第一时间段对应的搜索引擎集群配置的分页查询的最大记录数。
7.根据权利要求6所述的装置,其特征在于,所述获取单元具体用于:如果一第一时间段内命中所述查询条件的第一记录数大于所述第一时间段对应的搜索引擎集群配置的分页查询的最大记录数,则获取第二记录数,所述第二记录数为基于所述第一时间段划分得到的j个第二时间段中每个第二时间段内命中所述查询条件的记录数;j≥2;对于任一所述第二时间段,所述第二记录数不大于所述第二时间段对应的搜索引擎集群配置的分页查询的最大记录数;确定j个所述第二时间段为所述第一时间段,并确定j个所述第二记录数为所述第一时间段对应的第一记录数。
8.根据权利要求5至7任一项所述的装置,其特征在于,所述查询时间范围包括n个第一时间段;所述时间段确定单元具体用于:
若接收到n-1个第一记录数,根据各个第一记录数、各个第一记录数所属的第一时间段以及总记录数,从所述n个第一时间段中确定所述待查询记录所属的时间段;其中,所述总记录数为所述查询条件命中的总记录数;
若接收到最多为n-2个第一记录数,且所述待查询末尾记录数不大于前m个连续时间段的第一记录数的总和,则从所述前m个连续时间段中确定所述待查询记录所属的第一时间段;其中,m≤n-2;
若接收到最多为n-2个第一记录数,且所述待查询起始记录数不小于后k个连续时间段的第一记录数的总和,则从所述后k个连续时间段中确定所述待查询记录所属的第一时间段;其中,k≤n-2。
9.一种电子设备,其特征在于,包括:
一个或多个处理器;存储器;以及一个或多个计算机程序,其中所述一个或多个计算机程序被存储在所述存储器中,所述一个或多个计算机程序包括指令,当所述指令被所述电子设备执行时,使得所述电子设备执行如权利要求1-4任一项所述的方法。
10.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质中存储有计算机程序,当其在计算机上运行时,使得计算机执行如权利要求1-4任一项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010207028.8A CN111506600B (zh) | 2020-03-23 | 2020-03-23 | 分页查询方法、装置和电子设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010207028.8A CN111506600B (zh) | 2020-03-23 | 2020-03-23 | 分页查询方法、装置和电子设备 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN111506600A true CN111506600A (zh) | 2020-08-07 |
CN111506600B CN111506600B (zh) | 2023-06-16 |
Family
ID=71877917
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010207028.8A Active CN111506600B (zh) | 2020-03-23 | 2020-03-23 | 分页查询方法、装置和电子设备 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN111506600B (zh) |
Citations (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20080104013A1 (en) * | 2006-10-27 | 2008-05-01 | Cerner Innovation, Inc. | Query restriction for timely and efficient paging |
US20090083238A1 (en) * | 2007-09-21 | 2009-03-26 | Microsoft Corporation | Stop-and-restart style execution for long running decision support queries |
CN101533406A (zh) * | 2009-04-10 | 2009-09-16 | 北京锐安科技有限公司 | 一种海量数据查询方法 |
CN102289473A (zh) * | 2011-07-27 | 2011-12-21 | 迈普通信技术股份有限公司 | 一种多服务器分页查询的装置及方法 |
CN102880685A (zh) * | 2012-09-13 | 2013-01-16 | 北京航空航天大学 | 一种时间密集大数据量的b/s分区间分页查询方法 |
US8832086B1 (en) * | 2011-09-12 | 2014-09-09 | Amazon Technologies, Inc. | Method and system for search listing pagination |
CN104063441A (zh) * | 2014-06-12 | 2014-09-24 | 北京东进航空科技股份有限公司 | 数据库运维系统及其对数据的运维方法 |
WO2016004813A1 (zh) * | 2014-07-07 | 2016-01-14 | 阿里巴巴集团控股有限公司 | 数据存储方法、查询方法及设备 |
CN105302867A (zh) * | 2015-09-28 | 2016-02-03 | 浙江宇视科技有限公司 | 一种搜索引擎查询方法及装置 |
CN107193822A (zh) * | 2016-03-14 | 2017-09-22 | 阿里巴巴集团控股有限公司 | 用于分页查询的方法、装置及设备 |
CN107894997A (zh) * | 2017-10-19 | 2018-04-10 | 苏州工业大数据创新中心有限公司 | 工业时序数据的查询处理方法及系统 |
US20190236183A1 (en) * | 2018-01-26 | 2019-08-01 | Vmware, Inc. | Splitting a time-range query into multiple sub-queries for parallel execution |
-
2020
- 2020-03-23 CN CN202010207028.8A patent/CN111506600B/zh active Active
Patent Citations (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20080104013A1 (en) * | 2006-10-27 | 2008-05-01 | Cerner Innovation, Inc. | Query restriction for timely and efficient paging |
US20090083238A1 (en) * | 2007-09-21 | 2009-03-26 | Microsoft Corporation | Stop-and-restart style execution for long running decision support queries |
CN101533406A (zh) * | 2009-04-10 | 2009-09-16 | 北京锐安科技有限公司 | 一种海量数据查询方法 |
CN102289473A (zh) * | 2011-07-27 | 2011-12-21 | 迈普通信技术股份有限公司 | 一种多服务器分页查询的装置及方法 |
US8832086B1 (en) * | 2011-09-12 | 2014-09-09 | Amazon Technologies, Inc. | Method and system for search listing pagination |
CN102880685A (zh) * | 2012-09-13 | 2013-01-16 | 北京航空航天大学 | 一种时间密集大数据量的b/s分区间分页查询方法 |
CN104063441A (zh) * | 2014-06-12 | 2014-09-24 | 北京东进航空科技股份有限公司 | 数据库运维系统及其对数据的运维方法 |
WO2016004813A1 (zh) * | 2014-07-07 | 2016-01-14 | 阿里巴巴集团控股有限公司 | 数据存储方法、查询方法及设备 |
CN105302867A (zh) * | 2015-09-28 | 2016-02-03 | 浙江宇视科技有限公司 | 一种搜索引擎查询方法及装置 |
CN107193822A (zh) * | 2016-03-14 | 2017-09-22 | 阿里巴巴集团控股有限公司 | 用于分页查询的方法、装置及设备 |
CN107894997A (zh) * | 2017-10-19 | 2018-04-10 | 苏州工业大数据创新中心有限公司 | 工业时序数据的查询处理方法及系统 |
US20190236183A1 (en) * | 2018-01-26 | 2019-08-01 | Vmware, Inc. | Splitting a time-range query into multiple sub-queries for parallel execution |
Non-Patent Citations (1)
Title |
---|
李勇: "基于JBPM的工作流引擎的研究与实现", 中国优秀硕士学位论文全文数据库 * |
Also Published As
Publication number | Publication date |
---|---|
CN111506600B (zh) | 2023-06-16 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US20230214380A1 (en) | Methods for extending a proof-of-space-time blockchain | |
US7797323B1 (en) | Producing representative hashes for segments of a file | |
CA2921616C (en) | Data storage method and apparatus | |
CN107181604B (zh) | 一种告警关联规则的生成方法、告警压缩方法以及装置 | |
CN107567621B (zh) | 用于执行数字搜索的方法、系统和计算机程序产品 | |
CN111694839B (zh) | 基于大数据的时间序列指数构建方法、装置及计算机设备 | |
EP2770446A1 (en) | Data processing method and device | |
CN111159219B (zh) | 一种数据管理方法、装置、服务器及存储介质 | |
US20140059000A1 (en) | Computer system and parallel distributed processing method | |
WO2020220540A1 (zh) | 基于点对点网络的数据存储方法、装置、介质及终端设备 | |
WO2020024446A1 (zh) | 数据的存储方法及装置、存储介质、计算机设备 | |
US20150220648A1 (en) | Systems and Methods for Performing Machine-Implemented Tasks | |
CN111638949A (zh) | 时间序列数据分段构建方法、装置及计算机设备 | |
CN109189808B (zh) | 数据查询方法及相关设备 | |
CN108897858B (zh) | 分布式集群索引分片的评估方法及装置、电子设备 | |
CN111506600A (zh) | 分页查询方法、装置和电子设备 | |
CN111159131A (zh) | 性能优化方法、装置、设备及计算机可读存储介质 | |
CN111259045B (zh) | 一种数据处理方法、装置、服务器及介质 | |
CN117056428A (zh) | 一种分区表的自动扩展方法、装置、服务器 | |
CN110908780B (zh) | 调度平台的任务梳理方法、装置、设备及存储介质 | |
CN109992708B (zh) | 一种元数据查询的方法、装置、设备以及存储介质 | |
CN110750498A (zh) | 对象访问方法、装置及存储介质 | |
CA3144051A1 (en) | Data sorting method, device, and system | |
US9483560B2 (en) | Data analysis control | |
CN110427390A (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 |