CN111752986A - 数据查询方法及装置、设备、存储介质 - Google Patents
数据查询方法及装置、设备、存储介质 Download PDFInfo
- Publication number
- CN111752986A CN111752986A CN201910238905.5A CN201910238905A CN111752986A CN 111752986 A CN111752986 A CN 111752986A CN 201910238905 A CN201910238905 A CN 201910238905A CN 111752986 A CN111752986 A CN 111752986A
- Authority
- CN
- China
- Prior art keywords
- data
- query
- offset
- candidate
- determining
- 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
Links
- 238000000034 method Methods 0.000 title claims abstract description 39
- 238000013500 data storage Methods 0.000 claims abstract description 96
- 239000012634 fragment Substances 0.000 claims abstract description 96
- 238000012163 sequencing technique Methods 0.000 claims description 8
- 238000009826 distribution Methods 0.000 description 5
- 238000010586 diagram Methods 0.000 description 3
- 238000005516 engineering process Methods 0.000 description 3
- 230000009286 beneficial effect Effects 0.000 description 2
- 238000004590 computer program Methods 0.000 description 2
- 230000006870 function Effects 0.000 description 2
- 230000003287 optical effect Effects 0.000 description 2
- 230000008569 process Effects 0.000 description 2
- 230000002159 abnormal effect Effects 0.000 description 1
- 230000005540 biological transmission Effects 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004044 response Effects 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
Images
Landscapes
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明提供一种数据查询方法及装置、设备、存储介质,该方法应用于数据库集群中任一数据存储节点;该方法包括:接收查询请求,查询请求携带有所需查询目标数据的条数S、及在所有数据分片存储的数据中查找目标数据所需的全局偏移量F1;依据F1确定数据库集群中各数据存储节点在本地数据分片查询参考数据所需的片内偏移量F2,并控制各数据存储节点依据所述F2在本地数据分片中查询S条参考数据;依据查询出的参考数据构建查询条件,控制各数据存储节点在本地数据分片中查询满足查询条件的候选数据;从查询出的候选数据中确定出满足查询请求的目标数据。减少需返回给接收到查询请求的数据存储节点的数据量,有利于减少网络、内存、CPU等资源的占用。
Description
技术领域
本发明涉及大数据技术领域,尤其涉及的是一种数据查询方法及装置、设备、存储介质。
背景技术
大数据平台中的数据检索可以通过分布式搜索分析引擎比如Elasticsearch实现。以Elasticsearch为例来说,索引在Elasticsearch中相当于数据库,每个索引分成多个数据分片,这些数据分片被分发到Elasticsearch中的多个数据存储节点上,当某个数据存储节点收到查询请求时,该数据存储节点便同时作为协调节点,控制Elasticsearch中各个数据存储节点在数据分片中查询数据。
相关的数据查询方式中,查询请求中会携带有所需查询的目标数据在整个索引中的全局偏移量F1’、及目标数据量S’,协调节点会控制各数据存储节点在本地数据分片排序后的数据中查询偏移量为(F1’+S’)之前的所有数据,数据分片的总数为N’时,返回给协调节点的数据量是N’*(F1’+S’),协调节点再对返回的所有数据进行排序,从排序的数据中找到目标数据。
上述方式中,如果查询请求中携带的全局偏移量很大时,每个数据分片需要返回给接收到查询请求的数据存储节点的数据量会很大,接收到查询请求的数据存储还需要对返回的数据进行排序,需占用大量网络、内存、CPU等资源。
比如,在一个有5个数据分片的索引中查询数据,查询请求的全局偏移量为10000,目标数据量为10条,即需要的是索引中10000-10009的数据,每个数据分片需要返回排序后的前10010条记录,返回给协调节点中的数据共50050条,协调节点再对这50050条数据进行排序,从已排序的50050条数据中确定出在其中偏移量为10000-10010的10条数据,其余数据全部丢弃,返回的数据量较大,造成网络资源大量损耗,占用大量内存,且需要对大量数据进行排序,占用大量CPU计算资源,随着页面数量的增加,数据查询性能急剧下降。
发明内容
有鉴于此,本发明提供一种数据查询方法及装置、设备、存储介质,减少需返回给接收到查询请求的数据存储节点的数据量,有利于减少网络、内存、CPU等资源的占用。
本发明第一方面提供一种数据查询方法,该方法应用于数据库集群中任一数据存储节点;该方法包括:
接收查询请求,所述查询请求携带有所需查询目标数据的条数S、及在所有数据分片存储的数据中查找目标数据所需的全局偏移量F1;
依据所述F1确定数据库集群中各数据存储节点在本地数据分片查询参考数据所需的片内偏移量F2,并控制各数据存储节点依据所述F2在本地数据分片中查询S条参考数据;
依据查询出的参考数据构建查询条件,控制各数据存储节点在本地数据分片中查询满足所述查询条件的候选数据;
从查询出的候选数据中确定出满足所述查询请求的目标数据。
根据本发明的一个实施例,
所述片内偏移量F2为所述F1与数据库集群中数据分片总数N的比值,每个数据分片中的数据条数大于等于所述F2;
所述查询请求还携带有排序字段;所述全局偏移量F1是指定目标数据在排序后的所有数据分片存储的数据中的偏移量,所述指定目标数据是所有目标数据中排序字段上的数值最小的目标数据;
控制各数据存储节点依据所述F2在本地数据分片中查询S条参考数据包括:
控制各数据存储节点对本地数据分片中的数据按照所述排序字段上的数值大小进行排序、并从已排序数据中查询从所述F2开始的连续S个递增的偏移量所对应的数据作为查询出的参考数据。
根据本发明的一个实施例,所述查询条件包括所有所述参考数据在排序字段上的数值中的最小值和最大值;
控制各数据存储节点在本地数据分片中查询满足所述查询条件的候选数据,包括:
控制每个数据存储节点遍历本地数据分片中的数据、并判断遍历到的数据是否大于等于所述最小值且小于等于所述最大值,若是,确定该遍历到的数据为候选数据。
根据本发明的一个实施例,
所述查询请求还携带有排序字段、及指定目标数据在排序后的所有数据存储节点所存储的数据中的全局偏移量F1,所述指定目标数据是所有目标数据中排序字段上的数值最小的目标数据;
从查询出的候选数据中确定出满足所述查询请求的目标数据,包括:
针对从每个数据分片中查询出的所有候选数据,确定该所有候选数据中排序字段上数值最小的候选数据在该数据分片已排序数据中的偏移量F3;
对从所有数据分片中查询出的候选数据按照排序字段上的数值大小进行排序,并依据所述F1和各F3确定所述指定目标数据在已排序候选数据中的偏移量F4;
从已排序候选数据中查询从所述F4开始的连续S个递增的偏移量所对应的数据作为所述目标数据。
根据本发明的一个实施例,依据所述F1和各F3确定所述指定目标数据在已排序候选数据中的偏移量F4,包括:
依据各F3确定所述最小值所在的数据在排序后的所有数据分片所存储数据中的偏移量F5;
计算所述F1与所述F5的偏移量差值,并将所述偏移量差值确定为所述F4。
根据本发明的一个实施例,依据各F3确定所述最小值所在的数据在排序后的所有数据分片所存储数据中的偏移量F5,包括:
计算各F3之和与指定值的差值,并将所述差值确定为所述F5;所述指定值是依据数据库集群中数据分片总数N确定的。
本发明第二方面提供一种数据查询装置,该装置应用于数据库集群中任一数据存储节点;该装置包括:
查询请求接收模块,用于接收查询请求,所述查询请求携带有所需查询目标数据的条数S、及在所有数据分片存储的数据中查找目标数据所需的全局偏移量F1;
参考数据查询模块,用于依据所述F1确定数据库集群中各数据存储节点在本地数据分片查询参考数据所需的片内偏移量F2,并控制各数据存储节点依据所述F2在本地数据分片中查询S条参考数据;
候选数据查询模块,用于依据查询出的参考数据构建查询条件,控制各数据存储节点在本地数据分片中查询满足所述查询条件的候选数据;
目标数据确定模块,用于从查询出的候选数据中确定出满足所述查询请求的目标数据。
根据本发明的一个实施例,
所述片内偏移量F2为所述F1与数据库集群中数据分片总数N的比值,每个数据分片中的数据条数大于等于所述F2;
所述查询请求还携带有排序字段;所述全局偏移量F1是指定目标数据在排序后的所有数据分片存储的数据中的偏移量,所述指定目标数据是所有目标数据中排序字段上的数值最小的目标数据;
所述参考数据查询模块包括:
参考数据确定单元,用于控制各数据存储节点对本地数据分片中的数据按照所述排序字段上的数值大小进行排序、并从已排序数据中查询从所述F2开始的连续S个递增的偏移量所对应的数据作为查询出的参考数据。
根据本发明的一个实施例,所述查询条件包括所有所述参考数据在排序字段上的数值中的最小值和最大值;
所述候选数据查询模块包括:
遍历查询单元,用于控制每个数据存储节点遍历本地数据分片中的数据、并判断遍历到的数据是否大于等于所述最小值且小于等于所述最大值,若是,确定该遍历到的数据为候选数据。
根据本发明的一个实施例,
所述查询请求还携带有排序字段、及指定目标数据在排序后的所有数据存储节点所存储的数据中的全局偏移量F1,所述指定目标数据是所有目标数据中排序字段上的数值最小的目标数据;
所述目标数据确定模块包括:
第一偏移量确定单元,用于针对从每个数据分片中查询出的所有候选数据,确定该所有候选数据中排序字段上数值最小的候选数据在该数据分片已排序数据中的偏移量F3;
第二偏移量确定单元,用于对从所有数据分片中查询出的候选数据按照排序字段上的数值大小进行排序,并依据所述F1和各F3确定所述指定目标数据在已排序候选数据中的偏移量F4;
目标数据确定单元,用于从已排序候选数据中查询从所述F4开始的连续S个递增的偏移量所对应的数据作为所述目标数据。
根据本发明的一个实施例,所述第二偏移量确定单元包括:
第一偏移量确定子单元,用于依据各F3确定所述最小值所在的数据在排序后的所有数据分片所存储数据中的偏移量F5;
第二偏移量确定子单元,用于计算所述F1与所述F5的偏移量差值,并将所述偏移量差值确定为所述F4。
根据本发明的一个实施例,第一偏移量确定子单元依据各F3确定所述最小值所在的数据在排序后的所有数据分片所存储数据中的偏移量F5时具体用于:
计算各F3之和与指定值的差值,并将所述差值确定为所述F5;所述指定值是依据数据库集群中数据分片总数N确定的。
本发明第三方面提供一种电子设备,包括处理器及存储器;所述存储器存储有可被处理器调用的程序;其中,所述处理器执行所述程序时,实现如前述实施例所述的数据查询方法。
本发明第四方面提供一种机器可读存储介质,其上存储有程序,该程序被处理器执行时,实现如前述实施例所述的数据查询方法。
本发明实施例具有以下有益效果:
本发明实施例中,数据存储节点收到查询请求后,可依据查询请求携带的全局偏移量F1确定数据库集群中各数据存储节点在本地数据分片查询参考数据所需的片内偏移量F2,进行第一次查询得到所需的参考数据,此次返回给收到查询请求的数据存储节点的数据量最多为N*S条,N为数据库集群中数据存储节点的总数,再依据参考数据构建二次查询的查询条件,进行第二次查询得到所需的候选数据,此次返回的数据量仅为满足查询条件的数据量,再从这些候选数据中确定出目标数据,整个查询过程中返回数据量大大减少,有利于减少网络、内存、CPU等资源的占用。
附图说明
图1是本发明一实施例的数据查询方法的流程示意图;
图2是本发明一实施例的数据查询装置的结构框图;
图3是本发明一实施例的确定目标数据的流程示意图;
图4是本发明一实施例的电子设备的结构框图。
具体实施方式
这里将详细地对示例性实施例进行说明,其示例表示在附图中。下面的描述涉及附图时,除非另有表示,不同附图中的相同数字表示相同或相似的要素。以下示例性实施例中所描述的实施方式并不代表与本发明相一致的所有实施方式。相反,它们仅是与如所附权利要求书中所详述的、本发明的一些方面相一致的装置和方法的例子。
在本发明使用的术语是仅仅出于描述特定实施例的目的,而非旨在限制本发明。在本发明和所附权利要求书中所使用的单数形式的“一种”、“所述”和“该”也旨在包括多数形式,除非上下文清楚地表示其他含义。还应当理解,本文中使用的术语“和/或”是指并包含一个或多个相关联的列出项目的任何或所有可能组合。
应当理解,尽管在本发明可能采用术语第一、第二、第三等来描述各种器件,但这些信息不应限于这些术语。这些术语仅用来将同一类型的器件彼此区分开。例如,在不脱离本发明范围的情况下,第一器件也可以被称为第二器件,类似地,第二器件也可以被称为第一器件。取决于语境,如在此所使用的词语“如果”可以被解释成为“在……时”或“当……时”或“响应于确定”。
为了使得本发明的描述更清楚简洁,下面对本发明中的一些技术术语进行解释:
Elasticsearch:一种基于Lucene的分布式全文检索引擎,Elasticsearch中的索引是非关系型数据库,用于存储数据。
数据分片(shard):数据库相关的技术用语,可将数据库分成多个数据分片,分布到多个物理节点上,每个数据分片都有一个分片标识。
分页查询:当需显示的数据量过大时,会进行分页显示,每显示一页便需要针对当前页进行数据查询,查询时是基于在数据库中的偏移量和每页所需数据量在数据库中进行查询的,深度分页查询是总页数比较多的情况下的分页查询。
下面对本发明实施例的数据查询方法进行更具体的描述,但不应以此为限。在一个实施例中,参看图1,示出了本发明实施例的一种数据查询方法,该方法应用于数据库集群中任一数据存储节点;该方法包括以下步骤:
S100:接收查询请求,所述查询请求携带有所需查询目标数据的条数S、及在所有数据分片存储的数据中查找目标数据所需的全局偏移量F1;
S200:依据所述F1确定数据库集群中各数据存储节点在本地数据分片查询参考数据所需的片内偏移量F2,并控制各数据存储节点依据所述F2在本地数据分片中查询S条参考数据;
S300:依据查询出的参考数据构建查询条件,控制各数据存储节点在本地数据分片中查询满足所述查询条件的候选数据;
S400:从查询出的候选数据中确定出满足所述查询请求的目标数据。
数据库集群中包含多个数据存储节点,每个数据存储节点上配置有一个以上的数据分片,数据库集群中所有数据存储节点上的数据分片构成整个数据库。在查询数据时,各数据存储节点从本地数据分片中查询数据。数据库集群比如可以是Elasticsearch集群,具体不限。
本发明实施例的数据查询方法可以应用于数据库集群中的任一数据存储节点,当一个数据存储节点收到查询请求时,该数据存储节点即同时作为负责处理该查询请求的协调节点,即,该节点具有两个身份,既作为控制方控制数据库集群中各数据存储节点执行查询操作,同时又作为受控方执行查询操作。数据库集群中任一数据存储节点均可以为电子设备,电子设备比如可以包括计算机设备、嵌入式设备等。
步骤S100中,接收查询请求,所述查询请求携带有所需查询目标数据的条数S、及在所有数据分片存储的数据中查找目标数据所需的全局偏移量F1。
S的具体数值不限,在分页查询情况下,可视每页所需的数据条数而定,比如可以为10条。由于数据存储节点收到查询请求,因而该数据存储节点同时也作为协调节点,下面的实施例内容中,协调节点均指当前接收到查询请求的数据存储节点。
全局偏移量F1是在所有数据分片存储的数据中查找目标数据所需的偏移量,比如是当所有数据分片的数据按照指定排序字段上的数值大小排序后,指定目标数据在所有数据分片已排序数据(即数据库中已排序数据)中的次序,指定目标数据是可以是所有目标数据中排序字段上的数值最小的目标数据,具体不限。
查询请求中还可以携带其他内容,具体不限。查询请求可以是用数据库语言比如但不限于SQL语言,具体的,查询请求可以描述为:select*from tableA order bysortField offset F1 limit S,其中,tableA为所需查询的数据库(由所有数据存储节点中的数据分片构成),sortField为排序字段,F1为查询所需的全局偏移量,S为目标数据的条数,其余为SQL语言的格式化查询语句。
步骤S200中,依据所述F1确定数据库集群中各数据存储节点在本地数据分片查询参考数据所需的片内偏移量F2,并控制各数据存储节点依据所述F2在本地数据分片中查询S条参考数据。
F1是针对所有数据分片存储的数据的偏移量,而F2是针对每个数据分片存储的数据的偏移量,每个数据存储节点依据F2在其本地数据分片中查询S条参考数据即可,无需再返回F1之前所有的数据。
各数据存储节点依据片内偏移量F2查找到的参考数据,能够使得所需查询的目标数据在排序字段上的数值处于所有所述参考数据在排序字段上的数值中的最小值和最大值之间即可。
由于在每个数据分片中会查询到最多S条参考数据,因而返回给协调节点的数据最多为N*S条参考数据,N为数据库集群中数据存储节点的总数。协调节点会将N*S条参考数据存入到内存中。
步骤S300中,依据查询出的参考数据构建查询条件,控制各数据存储节点在本地数据分片中查询满足所述查询条件的候选数据。
查询条件可以根据所有所述参考数据在排序字段上的数值中的最小值和最大值构建,协调节点通过处理器对这N*S条参考数据按照排序字段上的数值大小进行排序,确定出这N*S条参考数据在排序字段上的最大值和最小值。
查询条件具体形式不限,只要使得找到的候选数据中包括需要查询的所有目标数据即可。比如,排序字段为time的情况下,最小值是time_min,最大值time_max,查询条件优选为time_min<=time<=time_max,这样在保证能够保证查询到包含所有目标数据的候选数据的同时,减少所需返回的数据量,当然不限于此,查询条件也可以为time_min<=time<=time_max+1等。
可以将查询条件发送给数据库集群中的其他数据存储节点,控制数据库集群中各个数据存储节点(包含协调节点)依据查询条件在本地数据分片(即各自的数据分片)中查找出满足所述查询条件的候选数据。
步骤S400中,从查询出的候选数据中确定出满足所述查询请求的目标数据。
由于候选数据中包含所需的比如S条目标数据,因而可从候选数据中查找出所需的目标数据。查找目标数据的方式可以为,确定上一次分页查询所得目标数据中排序最大的目标数据在本次排序后的所有候选数据中的偏移量,依据该偏移量便可从本次所有候选数据中查找S条目标数据,当然此处仅是举例。
本发明实施例中,数据存储节点收到查询请求后,可依据查询请求携带的全局偏移量F1确定数据库集群中各数据存储节点在本地数据分片查询参考数据所需的片内偏移量F2,进行第一次查询得到所需的参考数据,此次返回给收到查询请求的数据存储节点的数据量最多为N*S条,N为数据库集群中数据存储节点的总数,再依据参考数据构建二次查询的查询条件,进行第二次查询得到所需的候选数据,此次返回的数据量仅为满足查询条件的数据量,再从这些候选数据中确定出目标数据,整个查询过程中返回数据量大大减少,有利于减少网络、内存、CPU等资源的占用。
在一个实施例中,上述方法流程可由数据查询装置执行,如图2所示,数据查询装置10主要包含4个模块:查询请求接收模块100、参考数据查询模块200、候选数据查询模块300和目标数据确定模块400。查询请求接收模块100用于执行上述步骤S100,参考数据查询模块200用于执行上述步骤S200,候选数据查询模块300用于执行上述步骤S300,目标数据确定模块400用于执行上述步骤S400。
在一个实施例中,所述片内偏移量F2为所述F1与数据库集群中数据分片总数N的比值,每个数据分片中的数据条数大于等于所述F2。
协调节点可以依据F1及N计算F2,F2=F1/N。如果所有数据分片的数据条数小于F2,那么每个数据分片中所有数据的偏移量都小于F2,任一个数据分片中都查询不到数据,此时可以结束查询。如果存在至少一个但不是全部数据分片中所有数据的偏移量都小于F2,说明各个数据分片之间存在数据倾斜的情况,在此情况下确定出的参考数据可能存在偏差,比如所需查询的目标数据在指定字段上的数值可能未处于所有参考数据在指定字段上的数值中的最小值和最大值之间,此时无法查全所有目标数据,可以结束查询或者更换查询方式。因此,要保证每个数据分片中的数据条数大于等于所述F2。
所述查询请求还携带有排序字段;所述全局偏移量F1是指定目标数据在排序后的所有数据分片存储的数据中的偏移量,所述指定目标数据是所有目标数据中排序字段上的数值最小的目标数据;
步骤S200中,控制各数据存储节点依据所述F2在本地数据分片中查询S条参考数据包括:
控制各数据存储节点对本地数据分片中的数据按照所述排序字段上的数值大小进行排序、并从已排序数据中查询从所述F2开始的连续S个递增的偏移量所对应的数据作为查询出的参考数据。
本实施例中,查询请求中携带有排序字段、全局偏移量F1和目标数据条数S。排序字段比如为数据中的时间字段,F1是当所有数据分片的数据按照该排序字段上的数值大小排序后,指定目标数据在所有数据分片已排序数据(即数据库中已排序数据)中的次序。比如,数据库集群所有数据分片中共20000条数据,将20000条数据按时间字段从小到大排序,F1为10000,S为10,目标数据即为排序后的20000条数据中的第10000~10009条数据。
每个数据存储节点对本地数据分片中的数据按照排序字段上的数值大小进行排序,可以按照从小到大的顺序排序,也可以按照从大到小的顺序排序。排序之后,可从已排序数据中查询出从所述F2开始的连续S个递增的偏移量所对应的数据,作为查询出的参考数据。即,每个数据存储节点在本地数据分片的已排序数据中找到偏移量为F2、F2+1、F2+2……F2+S-1的数据作为参考数据。
具体来说,如果S=5,F1=900,即需要在数据库已排序数据中找到第900~904条目标数据。假设N=3,由于F1=F2*N,则F2=300,需要分别从每个数据分片已排序数据中查找第300~304条数据作为参考数据,若均查找到,可得到总共15条参考数据。
大部分情况下,不同数据分片中已排序数据在排序字段的数值大小分布不一。比如,在不同数据分片中已排序数据在排序字段的数值存在部分交集或者不存在交集的情况下,返回的N*S条参考数据中会存在部分目标数据或不存在目标数据;当不同数据分片中已排序数据在排序字段的数值分布完全相同时,返回的N*S条参考数据中会存在全部目标数据。
但上述这些情况是无法预知的,因而,需要依据这N*S条参考数据进一步查找出所有的目标数据,即进一步构建查询条件进行候选数据的查询,再从候选数据中确定出目标数据,每个目标数据在排序字段上的数值都处于所有参考数据在排序字段上数值中的最小值和最大值之间。
本发明实施例中,每次返回给协调节点的数据量和各个数据分片中的数据在排序字段上数值的分布有关,各个数据分片的分布越接近,返回的数据量会越少,查询代价越小。返回的数据量最少的情况是,各个数据分片的数据在排序字段上数值的分布都相同,返回参考数据及返回候选数据中每次最多返回N*S条数据。返回数据量最多的情况是,每个数据分片的数据在排序字段上数值没有交集,返回参考数据及返回候选数据中每次最多返回(F1+S)*N-F1/N条数据,也比相关查询方式中少了F1/N条。
可见,无论各个数据分片中数据在排序字段上的数值如何分布,本发明实施例中,返回参考数据及返回候选数据中每次最多返回的数据量都比背景技术中提及的相关数据查询方式更少,排序数据量也少,随着页面数量的增加,也同样能够保证较佳的数据查询性能。
在一个实施例中,所述查询条件包括所有所述参考数据在排序字段上的数值中的最小值和最大值;
步骤S300中,控制各数据存储节点在本地数据分片中查询满足所述查询条件的候选数据,包括以下步骤:
S301:控制每个数据存储节点遍历本地数据分片中的数据、并判断遍历到的数据是否大于等于所述最小值且小于等于所述最大值,若是,确定该遍历到的数据为候选数据。
构建的查询条件为time_min<=time<=time_max,可以在避免获取过多冗余数据的同时,保证所有数据分片中的目标数据都可以查找进来。
构建出查询条件后,协调节点可以将查询条件携带在查询任务中发送给其他数据存储节点,控制每个数据存储节点按照查询任务各自遍历数据以查找出满足查询条件的候选数据。
在一个实施例中,步骤S400中,所述查询请求还携带有排序字段、及指定目标数据在排序后的所有数据存储节点所存储的数据中的全局偏移量F1,所述指定目标数据是所有目标数据中排序字段上的数值最小的目标数据;
参看图3,步骤S400中,从查询出的候选数据中确定出满足所述查询请求的目标数据,可以包括以下步骤:
S401:针对从每个数据分片中查询出的所有候选数据,确定该所有候选数据中排序字段上数值最小的候选数据在该数据分片已排序数据中的偏移量F3;
S402:对从所有数据分片中查询出的候选数据按照排序字段上的数值大小进行排序,并依据所述F1和各F3确定所述指定目标数据在已排序候选数据中的偏移量F4;
S403:从已排序候选数据中查询从所述F4开始的连续S个递增的偏移量所对应的数据作为所述目标数据。
步骤S401中,从每个数据分片上查找到的候选数据作为一个结果集,协调节点可对每个结果集中的候选数据按照排序字段上的数值大小进行排序,从每个结果集中确定出排序字段上数值最小的候选数据(下面将排序最小的候选数据简称第一候选数据)。
可以在候选数据返回给协调节点时一并将候选数据对应的偏移量返回,确定第一候选数据后,各第一候选数据在对应数据分片已排序数据中的F3即可确定。当然也可以在确定出第一候选数据后,再查询各第一候选数据在对应数据分片中的偏移量。
步骤S402中,由于参考数据是依据查询条件的最大值和最小值确定出的,因而各第一候选数据在排序字段上的数值与最小值是相等或接近的,相应的,各第一候选数据与最小值所在数据的偏移量是相同的或者大了一个偏移量。可根据各F3来确定数据库所有已排序数据中偏移量处于所有第一候选数据之前的数据条数,则第一候选数据在数据库所有已排序数据中的偏移量即可确定,结合F1即可确定指定目标数据在已排序的所有候选数据中的F4。
步骤S403中,确定F4之后,从已排序的所有候选数据中查询从F4开始的连续S个递增的偏移量对应的数据,查询出的数据即为目标数据,在所有数据分片中数据足够的情况下,可查询出S条目标数据,否则查询出的目标数据可能少于S条(此种情况可能是分页查询中的最后一页)。
在一个实施例中,步骤S402中,依据所述F1和各F3确定所述指定目标数据在已排序候选数据中的偏移量F4,包括:
S4021:依据各F3确定所述最小值所在的数据在排序后的所有数据分片所存储数据中的偏移量F5;
S4022:计算所述F1与所述F5的偏移量差值,并将所述偏移量差值确定为所述F4。
接着前述实施例的描述内容,最小值所在的数据是所有第一候选数据中的其中一个,也是所有候选数据中排序字段上的数值最小的一个,因而依据所有的F3可计算出该最小值所在的数据的F5,计算所述F1与所述F5的偏移量差值之后,该偏移量差值作为F4,为查找目标数据确定了一个基准位置。
比如,在数据分片为三个的情况下,各第一候选数据在对应数据分片中的偏移量分别为101、201、301,即,数据库中排序字段上的数值比这些第一候选数据在排序字段上的数值都要小的数据一共有100+200+300=600条,那么排序字段上数值最小的第一候选数据的全局偏移量即为601,如果F1为700,那么,指定目标数据在已排序的所有候选数据中的偏移量为700-601=99,即F4为99。
在一个实施例中,步骤S4021中,依据各F3确定所述最小值所在的数据在排序后的所有数据分片所存储数据中的偏移量F5,具体包括:
计算各F3之和与指定值的差值,并将所述差值确定为所述F5。
所述指定值是依据数据库集群中数据分片总数N确定的。具体的,指定值=N-1。比如,当N为3时,指定值为2,相应确定出三个第一候选数据,且其中一个第一候选数据必然为前述的最小值所在的数据,其他两个第一候选数据在排序字段上的数值大于或等于该最小值,在F3之和中多计算了两条数据的偏移量,因而计算F5时需将所有F3之和减去2。
下面提供一个更具体的实施例,以更清楚地阐述本发明实施例的数据查询方法。
数据库集群中的一个数据存储节点收到查询请求,该数据存储节点同时作为协调节点,假设:
查询请求中,S=5,F1=900,排序字段为time;
数据库的数据分片总数N=3,分别为第一数据分片、第二数据分片和第三数据分片。数据查询方法包括以下步骤:
首先,依据F1和N计算片内偏移量F2=900/3=300(查询片内数据所需的偏移量),控制3个数据分片中的数据按照time上的数值从小到大进行排序后,分别在这3个数据分片中查找从偏移量为300-304的5条数据作为参考数据,返回给协调节点的参考数据如下表(1)所示:
表(1)
接着,对表(1)中的15条数据整体按照time字段上的数值从小到大进行排序,确定15条数据在time字段上的最小值time_min和最大值time_max;构建查询条件:time_min<=time<=time_max,控制各个数据存储节点从各自数据分片中查找出满足查询条件的候选数据,为了避免异常情况下加载过多数据量,限制每个数据分片返回数据量上限为F+S,返回给协调节点的候选数据得到表(2)所示:
表(2)
接着,依据表(2)三个数据分片的第一个数据的偏移量296、300、298计算出time_min所在的数据在所有数据分片已排序数据中的全局偏移量F5=296+300+298-2=892。
接着,对表(2)中所有候选数据按照time字段上的数值从小到大进行排序,依据F1和F5确定指定目标数据在已排序的所有候选数据中的偏移量F4=900-892=8,从已排序的所有候选数据中查询偏移量为8-12的5条数据作为目标数据。
下面对本发明实施例的数据查询装置进行描述,但不应以此为限。在一个实施例中,参看图2,该数据查询装置10应用于数据库集群中任一数据存储节点;该装置10包括:
查询请求接收模块100,用于接收查询请求,所述查询请求携带有所需查询目标数据的条数S、及在所有数据分片存储的数据中查找目标数据所需的全局偏移量F1;
参考数据查询模块200,用于依据所述F1确定数据库集群中各数据存储节点在本地数据分片查询参考数据所需的片内偏移量F2,并控制各数据存储节点依据所述F2在本地数据分片中查询S条参考数据;
候选数据查询模块300,用于依据查询出的参考数据构建查询条件,控制各数据存储节点在本地数据分片中查询满足所述查询条件的候选数据;
目标数据确定模块400,用于从查询出的候选数据中确定出满足所述查询请求的目标数据。
在一个实施例中,
所述片内偏移量F2为所述F1与数据库集群中数据分片总数N的比值,每个数据分片中的数据条数大于等于所述F2;
所述查询请求还携带有排序字段;所述全局偏移量F1是指定目标数据在排序后的所有数据分片存储的数据中的偏移量,所述指定目标数据是所有目标数据中排序字段上的数值最小的目标数据;
所述参考数据查询模块包括:
参考数据确定单元,用于控制各数据存储节点对本地数据分片中的数据按照所述排序字段上的数值大小进行排序、并从已排序数据中查询从所述F2开始的连续S个递增的偏移量所对应的数据作为查询出的参考数据。
在一个实施例中,所述查询条件包括所有所述参考数据在排序字段上的数值中的最小值和最大值;
所述候选数据查询模块包括:
遍历查询单元,用于控制每个数据存储节点遍历本地数据分片中的数据、并判断遍历到的数据是否大于等于所述最小值且小于等于所述最大值,若是,确定该遍历到的数据为候选数据。
在一个实施例中,
所述查询请求还携带有排序字段、及指定目标数据在排序后的所有数据存储节点所存储的数据中的全局偏移量F1,所述指定目标数据是所有目标数据中排序字段上的数值最小的目标数据;
所述目标数据确定模块包括:
第一偏移量确定单元,用于针对从每个数据分片中查询出的所有候选数据,确定该所有候选数据中排序字段上数值最小的候选数据在该数据分片已排序数据中的偏移量F3;
第二偏移量确定单元,用于对从所有数据分片中查询出的候选数据按照排序字段上的数值大小进行排序,并依据所述F1和各F3确定所述指定目标数据在已排序候选数据中的偏移量F4;
目标数据确定单元,用于从已排序候选数据中查询从所述F4开始的连续S个递增的偏移量所对应的数据作为所述目标数据。
在一个实施例中,所述第二偏移量确定单元包括:
第一偏移量确定子单元,用于依据各F3确定所述最小值所在的数据在排序后的所有数据分片所存储数据中的偏移量F5;
第二偏移量确定子单元,用于计算所述F1与所述F5的偏移量差值,并将所述偏移量差值确定为所述F4。
在一个实施例中,第一偏移量确定子单元依据各F3确定所述最小值所在的数据在排序后的所有数据分片所存储数据中的偏移量F5时具体用于:
计算各F3之和与指定值的差值,并将所述差值确定为所述F5;所述指定值是依据数据库集群中数据分片总数N确定的。
上述装置中各个单元的功能和作用的实现过程具体详见上述方法中对应步骤的实现过程,在此不再赘述。
对于装置实施例而言,由于其基本对应于方法实施例,所以相关之处参见方法实施例的部分说明即可。以上所描述的装置实施例仅仅是示意性的,其中所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元。
本发明还提供一种电子设备,包括处理器及存储器;所述存储器存储有可被处理器调用的程序;其中,所述处理器执行所述程序时,实现如前述实施例中所述的数据查询方法。
本发明数据查询装置的实施例可以应用在电子设备上。以软件实现为例,作为一个逻辑意义上的装置,是通过其所在电子设备的处理器将非易失性存储器中对应的计算机程序指令读取到内存中运行形成的。从硬件层面而言,如图4所示,图4是本发明根据一示例性实施例示出的数据查询装置10所在电子设备的一种硬件结构图,除了图4所示的处理器510、内存530、接口520、以及非易失性存储器540之外,实施例中装置10所在的电子设备通常根据该电子设备的实际功能,还可以包括其他硬件,对此不再赘述。
本发明还提供一种机器可读存储介质,其上存储有程序,该程序被处理器执行时,实现如前述实施例中任意一项所述的数据查询方法。
本发明可采用在一个或多个其中包含有程序代码的存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。机器可读存储介质包括永久性和非永久性、可移动和非可移动媒体,可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。机器可读存储介质的例子包括但不限于:相变内存(PRAM)、静态随机存取存储器(SRAM)、动态随机存取存储器(DRAM)、其他类型的随机存取存储器(RAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)、快闪记忆体或其他内存技术、只读光盘只读存储器(CD-ROM)、数字多功能光盘(DVD)或其他光学存储、磁盒式磁带,磁带磁磁盘存储或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。
以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本发明保护的范围之内。
Claims (14)
1.一种数据查询方法,其特征在于,该方法应用于数据库集群中任一数据存储节点;该方法包括:
接收查询请求,所述查询请求携带有所需查询目标数据的条数S、及在所有数据分片存储的数据中查找目标数据所需的全局偏移量F1;
依据所述F1确定数据库集群中各数据存储节点在本地数据分片查询参考数据所需的片内偏移量F2,并控制各数据存储节点依据所述F2在本地数据分片中查询S条参考数据;
依据查询出的参考数据构建查询条件,控制各数据存储节点在本地数据分片中查询满足所述查询条件的候选数据;
从查询出的候选数据中确定出满足所述查询请求的目标数据。
2.如权利要求1所述的数据查询方法,其特征在于,
所述片内偏移量F2为所述F1与数据库集群中数据分片总数N的比值,每个数据分片中的数据条数大于等于所述F2;
所述查询请求还携带有排序字段;所述全局偏移量F1是指定目标数据在排序后的所有数据分片存储的数据中的偏移量,所述指定目标数据是所有目标数据中排序字段上的数值最小的目标数据;
控制各数据存储节点依据所述F2在本地数据分片中查询S条参考数据包括:
控制各数据存储节点对本地数据分片中的数据按照所述排序字段上的数值大小进行排序、并从已排序数据中查询从所述F2开始的连续S个递增的偏移量所对应的数据作为查询出的参考数据。
3.如权利要求1所述的数据查询方法,其特征在于,所述查询条件包括所有所述参考数据在排序字段上的数值中的最小值和最大值;
控制各数据存储节点在本地数据分片中查询满足所述查询条件的候选数据,包括:
控制每个数据存储节点遍历本地数据分片中的数据、并判断遍历到的数据是否大于等于所述最小值且小于等于所述最大值,若是,确定该遍历到的数据为候选数据。
4.如权利要求1所述的数据查询方法,其特征在于,
所述查询请求还携带有排序字段;所述全局偏移量F1是指定目标数据在排序后的所有数据分片存储的数据中的偏移量,所述指定目标数据是所有目标数据中排序字段上的数值最小的目标数据;
从查询出的候选数据中确定出满足所述查询请求的目标数据,包括:
针对从每个数据分片中查询出的所有候选数据,确定该所有候选数据中排序字段上数值最小的候选数据在该数据分片已排序数据中的偏移量F3;
对从所有数据分片中查询出的候选数据按照排序字段上的数值大小进行排序,并依据所述F1和各F3确定所述指定目标数据在已排序候选数据中的偏移量F4;
从已排序候选数据中查询从所述F4开始的连续S个递增的偏移量所对应的数据作为所述目标数据。
5.如权利要求4所述的数据查询方法,其特征在于,依据所述F1和各F3确定所述指定目标数据在已排序候选数据中的偏移量F4,包括:
依据各F3确定所述最小值所在的数据在排序后的所有数据分片所存储数据中的偏移量F5;
计算所述F1与所述F5的偏移量差值,并将所述偏移量差值确定为所述F4。
6.如权利要求5所述的数据查询方法,其特征在于,依据各F3确定所述最小值所在的数据在排序后的所有数据分片所存储数据中的偏移量F5,包括:
计算各F3之和与指定值的差值,并将所述差值确定为所述F5;所述指定值是依据数据库集群中数据分片总数N确定的。
7.一种数据查询装置,其特征在于,该装置应用于数据库集群中任一数据存储节点;该装置包括:
查询请求接收模块,用于接收查询请求,所述查询请求携带有所需查询目标数据的条数S、及在所有数据分片存储的数据中查找目标数据所需的全局偏移量F1;
参考数据查询模块,用于依据所述F1确定数据库集群中各数据存储节点在本地数据分片查询参考数据所需的片内偏移量F2,并控制各数据存储节点依据所述F2在本地数据分片中查询S条参考数据;
候选数据查询模块,用于依据查询出的参考数据构建查询条件,控制各数据存储节点在本地数据分片中查询满足所述查询条件的候选数据;
目标数据确定模块,用于从查询出的候选数据中确定出满足所述查询请求的目标数据。
8.如权利要求7所述的数据查询装置,其特征在于,
所述片内偏移量F2为所述F1与数据库集群中数据分片总数N的比值,每个数据分片中的数据条数大于等于所述F2;
所述查询请求还携带有排序字段;所述全局偏移量F1是指定目标数据在排序后的所有数据分片存储的数据中的偏移量,所述指定目标数据是所有目标数据中排序字段上的数值最小的目标数据;
所述参考数据查询模块包括:
参考数据确定单元,用于控制各数据存储节点对本地数据分片中的数据按照所述排序字段上的数值大小进行排序、并从已排序数据中查询从所述F2开始的连续S个递增的偏移量所对应的数据作为查询出的参考数据。
9.如权利要求7所述的数据查询装置,其特征在于,所述查询条件包括所有所述参考数据在排序字段上的数值中的最小值和最大值;
所述候选数据查询模块包括:
遍历查询单元,用于控制每个数据存储节点遍历本地数据分片中的数据、并判断遍历到的数据是否大于等于所述最小值且小于等于所述最大值,若是,确定该遍历到的数据为候选数据。
10.如权利要求7所述的数据查询装置,其特征在于,
所述查询请求还携带有排序字段、及指定目标数据在排序后的所有数据存储节点所存储的数据中的全局偏移量F1,所述指定目标数据是所有目标数据中排序字段上的数值最小的目标数据;
所述目标数据确定模块包括:
第一偏移量确定单元,用于针对从每个数据分片中查询出的所有候选数据,确定该所有候选数据中排序字段上数值最小的候选数据在该数据分片已排序数据中的偏移量F3;
第二偏移量确定单元,用于对从所有数据分片中查询出的候选数据按照排序字段上的数值大小进行排序,并依据所述F1和各F3确定所述指定目标数据在已排序候选数据中的偏移量F4;
目标数据确定单元,用于从已排序候选数据中查询从所述F4开始的连续S个递增的偏移量所对应的数据作为所述目标数据。
11.如权利要求10所述的数据查询装置,其特征在于,所述第二偏移量确定单元包括:
第一偏移量确定子单元,用于依据各F3确定所述最小值所在的数据在排序后的所有数据分片所存储数据中的偏移量F5;
第二偏移量确定子单元,用于计算所述F1与所述F5的偏移量差值,并将所述偏移量差值确定为所述F4。
12.如权利要求11所述的数据查询装置,其特征在于,第一偏移量确定子单元依据各F3确定所述最小值所在的数据在排序后的所有数据分片所存储数据中的偏移量F5时具体用于:
计算各F3之和与指定值的差值,并将所述差值确定为所述F5;所述指定值是依据数据库集群中数据分片总数N确定的。
13.一种电子设备,其特征在于,包括处理器及存储器;所述存储器存储有可被处理器调用的程序;其中,所述处理器执行所述程序时,实现如权利要求1-6中任意一项所述的数据查询方法。
14.一种机器可读存储介质,其特征在于,其上存储有程序,该程序被处理器执行时,实现如权利要求1-6中任意一项所述的数据查询方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910238905.5A CN111752986A (zh) | 2019-03-27 | 2019-03-27 | 数据查询方法及装置、设备、存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910238905.5A CN111752986A (zh) | 2019-03-27 | 2019-03-27 | 数据查询方法及装置、设备、存储介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN111752986A true CN111752986A (zh) | 2020-10-09 |
Family
ID=72672070
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910238905.5A Pending CN111752986A (zh) | 2019-03-27 | 2019-03-27 | 数据查询方法及装置、设备、存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN111752986A (zh) |
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112800104A (zh) * | 2020-12-08 | 2021-05-14 | 江苏苏宁云计算有限公司 | Es查询请求链路优化的方法及装置 |
CN113377831A (zh) * | 2021-05-31 | 2021-09-10 | 北京达佳互联信息技术有限公司 | 资源数据查询方法、装置、电子设备以及存储介质 |
CN114996552A (zh) * | 2022-05-09 | 2022-09-02 | 福建天泉教育科技有限公司 | 一种数据获取方法及终端 |
CN117951184A (zh) * | 2024-03-26 | 2024-04-30 | 天津南大通用数据技术股份有限公司 | 一种基于分布式数据库的结果集分页返回方法及系统 |
CN118277457A (zh) * | 2024-06-03 | 2024-07-02 | 天津南大通用数据技术股份有限公司 | 一种结果集一致的翻页查询方法及系统 |
Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107918642A (zh) * | 2017-10-26 | 2018-04-17 | 深圳市金立通信设备有限公司 | 数据查询方法、服务器及计算机可读存储介质 |
-
2019
- 2019-03-27 CN CN201910238905.5A patent/CN111752986A/zh active Pending
Patent Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107918642A (zh) * | 2017-10-26 | 2018-04-17 | 深圳市金立通信设备有限公司 | 数据查询方法、服务器及计算机可读存储介质 |
Cited By (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112800104A (zh) * | 2020-12-08 | 2021-05-14 | 江苏苏宁云计算有限公司 | Es查询请求链路优化的方法及装置 |
CN113377831A (zh) * | 2021-05-31 | 2021-09-10 | 北京达佳互联信息技术有限公司 | 资源数据查询方法、装置、电子设备以及存储介质 |
CN113377831B (zh) * | 2021-05-31 | 2023-02-21 | 北京达佳互联信息技术有限公司 | 资源数据查询方法、装置、电子设备以及存储介质 |
CN114996552A (zh) * | 2022-05-09 | 2022-09-02 | 福建天泉教育科技有限公司 | 一种数据获取方法及终端 |
CN117951184A (zh) * | 2024-03-26 | 2024-04-30 | 天津南大通用数据技术股份有限公司 | 一种基于分布式数据库的结果集分页返回方法及系统 |
CN118277457A (zh) * | 2024-06-03 | 2024-07-02 | 天津南大通用数据技术股份有限公司 | 一种结果集一致的翻页查询方法及系统 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN111752986A (zh) | 数据查询方法及装置、设备、存储介质 | |
CN108897761B (zh) | 一种聚簇存储方法及装置 | |
US6772163B1 (en) | Reduced memory row hash match scan join for a partitioned database system | |
US20170068688A1 (en) | Efficient spatial queries in large data tables | |
US20130138660A1 (en) | System and method for distributed index searching of electronic content | |
US9292550B2 (en) | Feature generation and model selection for generalized linear models | |
US20090327266A1 (en) | Index Optimization for Ranking Using a Linear Model | |
WO2016107497A1 (en) | Method and apparatus for scalable sorting of data set | |
US7080072B1 (en) | Row hash match scan in a partitioned database system | |
WO2016038749A1 (en) | A method for efficient one-to-one join | |
CN110580255A (zh) | 一种存储并检索数据的方法以及系统 | |
US8239391B2 (en) | Hierarchical merging for optimized index | |
US7774353B2 (en) | Search templates | |
CN113724009A (zh) | 一种运力定价方法、装置、电子设备及机器可读存储介质 | |
US20050027684A1 (en) | Database system and data accessing method thereof | |
CN116737067A (zh) | 一种图数据的存储加载结构和方法 | |
CN106202412A (zh) | 一种数据检索方法及装置 | |
Navarro et al. | Dynamic list of clusters in secondary memory | |
Huang et al. | Processing continuous K-nearest skyline query with uncertainty in spatio-temporal databases | |
KR102047233B1 (ko) | 이중 부하 분산을 이용한 메타데이터 검색 시스템 및 이중 부하 분산을 통한 데이터베이스 관리 방법 | |
CN107122358B (zh) | 混合查询方法及设备 | |
CN112860734A (zh) | 地震数据多维度范围查询方法及装置 | |
CN110908998B (zh) | 数据存储和搜索方法、系统和计算机可读存储介质 | |
CN113886723B (zh) | 确定排序稳定性的方法和装置、以及存储介质和电子设备 | |
JPH10269225A (ja) | データベース分割方法 |
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 |