一种数据查询方法、装置、服务器及存储介质

文档序号:1952961 发布日期:2021-12-10 浏览:17次 >En<

阅读说明:本技术 一种数据查询方法、装置、服务器及存储介质 (Data query method, device, server and storage medium ) 是由 张建兴 李林森 姜鸿康 许晓通 于 2021-09-14 设计创作,主要内容包括:本发明实施例提供了一种数据查询方法、装置、服务器及存储介质,所述方法包括:获取数据查询请求,其中,数据查询请求包括一维查询条件以及高维查询条件,基于一维查询条件以及高维查询条件,确定查询条件集合,根据已存储的高维数据的行标签,确定满足查询条件集合的目标高维数据,作为查询结果,其中,行标签包括一维时间标签和高维空间标签,高维空间标签用于标识该行已存储的空间数据所对应的一维数据。由于高维空间标签用于标识该行已存储的空间数据所对应的一维数据,实现将高维空间数据降维为一维数据的效果,可以根据一维数据来确定满足一维查询条件以及高维查询条件的目标高维空间数据,可以大大提高高维数据的查询效率。(The embodiment of the invention provides a data query method, a data query device, a server and a storage medium, wherein the method comprises the following steps: the method comprises the steps of obtaining a data query request, wherein the data query request comprises a one-dimensional query condition and a high-dimensional query condition, determining a query condition set based on the one-dimensional query condition and the high-dimensional query condition, determining target high-dimensional data meeting the query condition set according to a row label of stored high-dimensional data, and using the target high-dimensional data as a query result, wherein the row label comprises a one-dimensional time label and a high-dimensional space label, and the high-dimensional space label is used for identifying the one-dimensional data corresponding to the row of stored space data. The high-dimensional space tag is used for identifying the one-dimensional data corresponding to the row of stored space data, so that the effect of reducing the dimension of the high-dimensional space data into the one-dimensional data is realized, the target high-dimensional space data meeting the one-dimensional query condition and the high-dimensional query condition can be determined according to the one-dimensional data, and the query efficiency of the high-dimensional data can be greatly improved.)

一种数据查询方法、装置、服务器及存储介质

技术领域

本发明涉及数据处理技术领域,特别是涉及一种数据查询方法、装置、服务器及存储介质。

背景技术

随着大数据时代的到来,数据存储系统应用越来越广泛,常见的数据库包括基于HBase的时序数据库、Influxdb等,其可以存储大量数据,为数据查询、数据处理、数据分析等提供数据基础。某些数据库中存储的数据为高维数据,例如,二维位置信息、三维空间信息等。对于高维数据的数据查询,相比于一维数据来说更加复杂,单纯根据数据的标签是无法查询到准确的结果的。

由于目前的高维数据的标签仅能标识一维信息,例如,车牌号、车辆颜色、餐厅名称等,所以传统高维数据查询方式在根据标签找到符合一维查询要求的高维数据后,需要采用一一对比的方式来找到准确的高维数据。例如,数据库中存储有各个餐厅的位置坐标(x,y),其中,x为经度信息,y为纬度信息,当用户想要查询距离当前位置20公里以内的所有西餐厅时,则需要先从数据库中找到所有西餐厅,但是需要进一步将这些西餐厅的位置坐标与用户所在位置20公里以内的范围进行一一对比,才能找到准确的用户所要查询的西餐厅。可见,传统方式查询效率十分低下。

为解决传统方式查询效率低的问题,出现了基于R树索引的高维数据查询方式。R树结点包含多个指向不同数据的指针,当用户想要进行数据查询时,需要遍历R树中叶子结点所包含的指针,并判断指针指向是否满足条件。R树构建过程十分复杂,高维数据查询效率仍然较低。

发明内容

本发明实施例的目的在于提供一种数据查询方法、装置、服务器及存储介质,以提高高维数据的查询效率。具体技术方案如下:

第一方面,本发明实施例提供了一种数据查询方法,应用于时序数据库的服务器,所述方法包括:

获取数据查询请求,其中,所述数据查询请求包括一维查询条件以及高维查询条件,所述一维查询条件包括时间条件,所述高维查询条件包括空间条件;

基于所述一维查询条件以及所述高维查询条件,确定所述时间条件和所述空间条件组成的查询条件集合;

根据已存储的高维数据的行标签,确定满足所述查询条件集合的目标高维数据,作为查询结果,其中,所述高维数据包括按照时间顺序排列的各行空间数据,每行空间数据具有行标签,所述行标签包括一维时间标签和高维空间标签,所述高维空间标签为一维数据,用于标识该行已存储的空间数据。

可选的,所述高维空间标签的确定方式,包括:

获取上一个时间片对应的已存储高维数据,作为待编码数据;

按照预设的空间填充曲线编码规则,对每行待编码数据进行编码,得到该行待编码数据对应的一维数据;

将所述一维数据确定为该行待编码数据对应的高维空间标签。

可选的,所述获取上一个时间片对应的已存储高维数据,作为待编码数据的步骤,包括:

获取上一个时间片对应的已存储高维数据;

将所获取的每行已存储高维数据按照时间顺序排列,得到一条时间线上的空间数据,作为待编码数据。

可选的,所述基于所述一维查询条件以及所述高维查询条件,确定所述时间条件和所述空间条件组成的查询条件集合的步骤,包括:

根据所述一维查询条件包括的时间条件以及所述一维时间标签的设置方式,将所述时间条件按照时间划分为多个一维时间子条件,得到一维时间条件集合;

根据所述空间填充曲线编码规则,将所述高维查询条件转化为多个一维数据范围,作为高维空间条件集合;

将所述一维时间条件集合与所述高维空间条件集合进行笛卡尔积合并,得到查询条件集合。

可选的,所述根据已存储的高维数据的行标签,确定满足所述查询条件集合的目标高维数据的步骤,包括:

针对所述查询条件集合中的每个查询条件,从已存储的高维数据的行标签中查找满足该查询条件的行标签,作为目标标签;

将所述目标标签对应的已存储的高维数据确定为满足所述查询条件集合的目标高维数据。

可选的,所述方法还包括:

基于所述空间条件对所述查询结果进行过滤,去除不在所述空间条件所表示的范围内的查询结果,得到最终的查询结果。

第二方面,本发明实施例提供了一种数据查询装置,应用于时序数据库的服务器,所述装置包括:

查询请求获取模块,用于获取数据查询请求,其中,所述数据查询请求包括一维查询条件以及高维查询条件,所述一维查询条件包括时间条件,所述高维查询条件包括空间条件;

条件集合确定模块,用于基于所述一维查询条件以及所述高维查询条件,确定所述时间条件和所述空间条件组成的查询条件集合;

高维数据查询模块,用于根据已存储的高维数据的行标签,确定满足所述查询条件集合的目标高维数据,作为查询结果,其中,所述高维数据包括按照时间顺序排列的各行空间数据,每行空间数据具有行标签,所述行标签包括一维时间标签和高维空间标签,所述高维空间标签为一维数据,用于标识该行已存储的空间数据。

可选的,所述装置还包括:

数据获取模块,用于获取上一个时间片对应的已存储高维数据,作为待编码数据;

数据编码模块,用于按照预设的空间填充曲线编码规则,对每行待编码数据进行编码,得到该行待编码数据对应的一维数据;

标签构建模块,用于将所述一维数据确定为该行待编码数据对应的高维空间标签。

可选的,所述数据获取模块包括:

获取单元,用于获取上一个时间片对应的已存储高维数据;

排列单元,用于将所获取的每行已存储高维数据按照时间顺序排列,得到一条时间线上的空间数据,作为待编码数据。

可选的,所述条件合集确定模块包括:

划分单元,用于根据所述一维查询条件包括的时间条件以及所述一维时间标签的设置方式,将所述时间条件按照时间划分为多个一维时间子条件,得到一维时间条件集合;

转化单元,用于根据所述空间填充曲线编码规则,将所述高维查询条件转化为多个一维数据范围,作为高维空间条件集合;

合并单元,用于将所述一维时间条件集合与所述高维空间条件集合进行笛卡尔积合并,得到查询条件集合。

可选的,所述高维数据查询模块包括:

查找单元,用于针对所述查询条件集合中的每个查询条件,从已存储的高维数据的行标签中查找满足该查询条件的行标签,作为目标标签;

确定单元,用于将所述目标标签对应的已存储的高维数据确定为满足所述查询条件集合的目标高维数据。

可选的,所述装置还包括:

去除模块,用于基于所述空间条件对所述查询结果进行过滤,去除不在所述空间条件所表示的范围内的查询结果,得到最终的查询结果。

第三方面,本发明实施例提供了一种服务器,包括处理器、通信接口、存储器和通信总线,其中,处理器,通信接口,存储器通过通信总线完成相互间的通信;

存储器,用于存放计算机程序;

处理器,用于执行存储器上所存放的程序时,实现上述第一方面任一所述的方法步骤。

第四方面,本发明实施例提供了一种计算机可读存储介质,所述计算机可读存储介质内存储有计算机程序,所述计算机程序被处理器执行时实现上述第一方面任一所述的方法步骤。

本发明实施例有益效果:

本发明实施例提供的方案中,服务器可以获取数据查询请求,其中,数据查询请求包括一维查询条件以及高维查询条件,一维查询条件包括时间条件,高维查询条件包括空间条件,基于一维查询条件以及高维查询条件,确定时间条件和空间条件组成的查询条件集合,根据已存储的高维数据的行标签,确定满足查询条件集合的目标高维数据,作为查询结果,其中,高维数据包括按照时间顺序排列的各行空间数据,每行空间数据具有行标签,行标签包括一维时间标签和高维空间标签,高维空间标签为一维数据,用于标识该行已存储的空间数据。由于高维空间标签为可以标识该行已存储的空间数据的一维数据,实现将高维空间数据降维为一维数据的效果,进而,服务器可以根据已存储的高维数据的行标签,即根据一维数据来确定满足一维查询条件以及高维查询条件的目标高维数据,而不是通过一一对比的方式或者过程复杂的R树索引来查询目标高维数据,可以大大提高高维数据的查询效率。当然,实施本发明的任一产品或方法并不一定需要同时达到以上所述的所有优点。

附图说明

为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的实施例。

图1为本发明实施例所提供的一种数据查询方法的流程图;

图2为本发明实施例所提供的一种数据查询的另一种流程图;

图3为基于图2所示实施例中步骤S201的一种具体流程图;

图4为基于图1所示实施例中步骤S102的一种具体流程图;

图5为基于图1所示实施例中步骤S103的一种具体流程图;

图6为本发明实施例所提供的一种数据查询装置的结构示意图;

图7为基于图6所示实施例的数据查询装置的另一种结构示意图;

图8为基于图6所示实施例的数据查询装置的另一种结构示意图;

图9为本发明实施例所提供的一种服务器的结构示意图。

具体实施方式

下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员基于本申请所获得的所有其他实施例,都属于本发明保护的范围。

为了提高高维数据的查询效率,本发明实施例提供了一种数据查询方法、装置、服务器、计算机可读存储介质及计算机程序产品。下面首先对本发明实施例所提供的一种数据查询方法进行介绍。

本发明实施例所提供的一种数据查询方法可以应用于时序数据库的服务器。为了方便理解,首先对时序数据库存储数据的方式进行介绍,时序数据库中存储有多行数据,每行数据具有行标签,行标签至少包括时间标签,一般每行数据包括以该时间标签为起点的一个时间片内的数据,这些数据按照时间顺序排列。例如,针对车牌号为浙A125XX,车辆颜色为白色的车辆,在时间片为十分钟内,每隔一分钟获取一次该车辆的位置信息,那么时序数据库存储的数据如下表所示:

其中,1576119600为该时间片的开始时间点对应的时间戳,plateNO=浙A125XX为车牌号,color=1表示车辆颜色为白色,三者共同构成了行标签。该行中每个时间点对应的数据:Point(120 30)、Point(121 30)…Point(135 30)即为车辆在对应的时间点所在的位置信息。

基于上述时序数据库,对本发明实施例所提供的一种数据查询方法进行介绍。如图1所示,一种数据查询方法,应用于时序数据库的服务器,所述方法包括

S101,获取数据查询请求;

其中,所述数据查询请求包括一维查询条件以及高维查询条件,所述一维查询条件包括时间条件,所述高维查询条件包括空间条件。

S102,基于所述一维查询条件以及所述高维查询条件,确定所述时间条件和所述空间条件组成的查询条件集合;

S103,根据已存储的高维数据的行标签,确定满足所述查询条件集合的目标高维数据,作为查询结果;

其中,所述高维数据包括按照时间顺序排列的各行空间数据,每行空间数据具有行标签,所述行标签包括一维时间标签和高维空间标签,所述高维空间标签为一维数据,用于标识该行已存储的空间数据。

可见,本发明实施例提供的方案中,服务器可以获取数据查询请求,其中,数据查询请求包括一维查询条件以及高维查询条件,一维查询条件包括时间条件,高维查询条件包括空间条件,基于一维查询条件以及高维查询条件,确定时间条件和空间条件组成的查询条件集合,根据已存储的高维数据的行标签,确定满足查询条件集合的目标高维数据,作为查询结果,其中,高维数据包括按照时间顺序排列的各行空间数据,每行空间数据具有行标签,行标签包括一维时间标签和高维空间标签,高维空间标签为一维数据,用于标识该行已存储的空间数据。由于高维空间标签为可以标识该行已存储的空间数据的一维数据,实现将高维空间数据降维为一维数据的效果,进而,服务器可以根据已存储的高维数据的行标签,即根据一维数据来确定满足一维查询条件以及高维查询条件的目标高维数据,而不是通过一一对比的方式或者过程复杂的R树索引来查询目标高维数据,可以大大提高高维数据的查询效率。

当用户想要进行高维数据查询时,用户可以发出数据查询请求,例如,可以在服务器的数据查询界面中输入想要查询的高维数据对应的查询条件,以发出数据查询请求。那么在上述步骤S101中,服务器便可以获取该数据查询请求,由于所要查询的数据为高维数据,所以该数据查询请求一般包括的一维查询条件以及高维查询条件。

其中,一维查询条件表示所要查询的高维数据所需满足的一维条件,可以包括时间条件和高维数据对应的一些标识信息,例如,对于车辆的地理位置的查询场景来说,一维查询条件可以包括所要查询的时间范围、车辆颜色、车牌号等。高维查询条件表示所要查询的高维数据所需满足的高维条件,可以包括空间条件,例如,可以为地理位置范围、空间范围等,在此不做具体限定。

例如,数据查询请求所指示的高维数据为车辆颜色为白色,在2020年12月15日晚上10:00-11:00,在对角点为A(15.36471,50.65736)和B(20.15378,62.53724)的矩形区域内的车辆的行驶位置数据,那么基于该数据查询请求,可以确定一维查询条件为车牌颜色为白色以及时间为2020年12月15日晚上10:00-11:00,高维查询条件为对角点为A(15.36471,50.65736)和B(20.15378,62.53724)的矩形区域。其中,2020年12月15日晚上10:00-11:00即为时间条件,对角点为A(15.36471,50.65736)和B(20.15378,62.53724)的矩形区域即为空间条件。

在获取到上述一维查询条件以及高维查询条件后,服务器可以执行上述步骤S102,即基于一维查询条件以及所述高维查询条件,确定所述时间条件和所述空间条件组成的查询条件集合。

在一种实施方式中,服务器可以针对一维查询条件按照预设划分规则进行划分,将划分之后的一维查询子条件构成一个集合,针对高维查询条件按照预设降维规则进行降维得到对应的一维数据,进而将一维查询子条件构成一个集合和该一维数据构成查询条件集合。

其中,预设划分规则可以为按照时间进行划分,预设降维规则可以为空间填充曲线编码规则,空间填充曲线是一种重要的近似表示方法,将数据空间划分成大小相同的网格,再根据一定的方法将这些网格编码,每个网格对应一个唯一的编码,并在一定程度上保持空间邻近性,即相邻的网格对应的编码也相邻,实现将一个空间对象由一组网格组成的目的。这样可以将高维数据降维表示为一维数据。

例如,服务器可以针对一维查询条件按照预设时间范围进行划分为多个一维查询子条件,该多个一维查询子条件构成一个集合A。针对高维查询条件,可以按照空间填充曲线编码规则进行降维处理得到对应的多个编码,该多个编码构成另一个集合B。进而,集合A与集合B便可以构成查询条件集合。

查询条件集合确定后,服务器可以执行上述步骤S103,即根据已存储的高维数据的行标签,确定满足查询条件集合的目标高维数据,作为查询结果,其中,高维数据包括按照时间顺序排列的各行空间数据,每行空间数据具有行标签,已存储的高维数据的行标签可以包括一维时间标签和高维空间标签,还可以包括能够标识对应的空间数据的一维特征的标签,例如,可以包括车牌颜色、车牌号等,在此不做具体限定。

高维空间标签为一维数据,用于标识该行已存储的空间数据。在一种实施方式中,高维空间标签可以为对该行已存储的空间数据进行降维处理得到的一维数据,在另一种实施方式中,高维空间标签可以为对该行已存储的空间数据进行降维处理得到的一维数据的标识,这都是合理的。

这样,该高维空间标签为一个一维数据,但是其可以表示该行已存储的空间数据,在进行高维数据查询时,服务器便可以基于高维空间标签确定该行空间数据是否满足查询条件集合中的高维查询条件。基于空间数据的一维标签可以确定其是否满足查询条件集合中的一维查询条件,进而便可以查询到同时满足高维查询条件和一维查询条件的目标高维数据,作为查询结果,完成高维数据的查询。

本发明实施例所提供的实施例中,由于高维空间标签为一维数据,可以用于标识该行已存储的高维数据,实现将高维空间数据降维为一维数据的效果,进而,服务器可以根据已存储的高维数据的行标签,即一维数据来确定满足一维查询条件以及高维查询条件的目标高维数据,而不是通过一一对比的方式或者过程复杂的R树索引来查询目标高维数据,可以大大提高高维数据的查询效率。

作为本发明实施例的一种实施方式,如图2所示,上述高维空间标签的确定方式,可以包括:

S201,获取上一个时间片对应的已存储高维数据,作为待编码数据;

在存储高维数据的过程中,为了方便后续数据查询操作,服务器可以构建已存储的高维数据的高维空间标签。服务器可以获取上一个时间片对应的已存储高维数据,作为待编码数据,其中,时间片为按照预设划分方式确定的时间分片,一个时间片可以为十分钟、一小时、一天等,在此不做具体限定。

上一个时间片对应的已存储高维数据即为当前时间之前的一个时间片所对应的已存储高维数据。也就是说,服务器可以在每个时间片的高维数据存储完成后,即每行空间数据存储完成后,对该时间片对应的每行空间数据构建高维空间标签,这样,每个高维空间标签即可以用于标识该时间片对应的一行空间数据。

例如,时间片为按照一个小时为一个时间片划分的,如果当前时间为2019-12-1212:05:00,服务器可以获取HBase的OpenTSDB时序数据库中的存储的时间范围为2019-12-12 11:00:00-12:00:00的空间数据,作为待编码数据。

S202,按照预设的空间填充曲线编码规则,对每行待编码数据进行编码,得到该行待编码数据对应的一维数据;

在获取到待编码数据之后,由于空间填充曲线可以将高维空间数据降维表示为一维数据,所以服务器可以按照预设的空间填充曲线编码规则,对每行待编码数据进行编码,得到该行待编码数据对应的一维数据。其中,预设的空间填充曲线编码规则可以为Xz-ordering曲线编码、Z排序编码、莫顿编码、希尔伯特编码、格雷编码等,在此不做具体限定。

S203,将所述一维数据确定为该行待编码数据对应的高维空间标签。

得到该行待编码数据对应的一维数据后,服务器可以将该一维数据确定为该行待编码数据对应的高维空间标签。例如,服务器将某行待编码数据按照Xz-ordering曲线编码得到一维数据为53698710,那么便可以将53698710确定为该行待编码数据对应的高维空间标签。

在得到高维空间标签之后,服务器可以将该高维空间标签添加至该行空间数据对应的一维行标签中,与其一维时间标签以及其他一维信息共同构成该行空间数据的行标签。为了减少存储空间的占用,服务器还可以删除所获取的上一个时间片对应的已存储高维数据。

例如,针对基于HBase的OpenTSDB时序数据库,时间片为按照一个小时为一个时间片划分的,服务器可以获取上一小时对应的已存储高维数据,作为待编码数据。已存储高维数据可以为车辆的位置坐标,由于OpenTSDB度量值只支持数值,为了能够获取上一个时间片对应的已存储高维数据,可以先对OpenTSDB进行改动,使其支持字符串度量值,位置坐标可以使用WKT(Well-known text)方式表示,其中,WKT是一种文本标记语言,用于表示矢量几何对象、空间参照系统及空间参照系统之间的转换。

服务器可以采用Xz-ordering曲线编码将每行待编码数据进行编码得到对应的一维数据,也就是将这一小时内的车辆的位置坐标进行编码得到对应的一维数据,作为该行待编码数据对应的高维空间标签。在得到高维空间标签之后,服务器可以将该高维空间标签添加至该行待编码数据已有的一维行标签中,得到该行空间数据的行标签。

例如,已存储高维数据的存储方式为每行对应一个时间片的空间数据,行标签(RowKey)中包括该行空间数据对应的一维时间标签,具体为该时间片的开始时间点,还包括指标属性、车牌颜色以及车牌号,例如,如下表所示。

RowKey
Local|1576119600|color=1|plateNO=浙A123XX

其中,Local为指标属性,1576119600为该时间片的开始时间点对应的时间戳,color=1表示车牌颜色为白色,plateNO=浙A123XX为车牌号。那么服务器可以将高维空间标签添加至该行空间数据已有的行标签中,添加后得到该行空间数据的行标签如下表所示:

RowKey
Local|1576119600|color=1|xzcode|plateNO=浙A123XX

其中,xzcode为该行空间数据对应的高维空间标签。对于高维空间标签的具体添加位置不做限定,可以添加至常用一维标签之后,例如,数据查询频率较高的方式是基于时间+车牌颜色+空间范围进行查询,那么便可以将高维空间标签添加至一维标签车牌颜色之后,以方便进行数据查询。

可见,本实施例中,服务器可以获取上一个时间片对应的已存储高维数据,作为待编码数据,按照预设的空间填充曲线编码规则,对每行待编码数据进行编码,得到该行待编码数据对应的一维数据,将一维数据确定为该行待编码数据对应的高维空间标签,这样生成高维空间标签的过程简便,并且高维空间标签可以准确的表征该行空间数据,进而可以提高数据查询效率和准确率。

作为本发明实施例的一种实施方式,如图3所示,上述获取上一个时间片对应的已存储高维数据,作为待编码数据的步骤,可以包括:

S301,获取上一个时间片对应的已存储高维数据;

S302,将所获取的每行已存储高维数据按照时间顺序排列,得到一条时间线上的空间数据,作为待编码数据。

由于上一个时间片对应的已存储高维数据包括该时间片内的多个时间点对应的空间数据,而利用空间填充曲线编码规则可以将线或面上的空间数据进行编码,从降维得到对应的一维数据。所以服务器可以获取上一个时间片对应的已存储高维数据,对所获取的该行已存储的空间数据进行扫描,确定该行空间数据中每个时间点对应的空间数据。

进而将各行已存储高维数据按照时间顺序进行排列,得到一条时间线对应的线或面上的空间数据,作为待编码数据,其中,时间顺序可以为从早到晚的顺序,也可以为从晚到早的顺序,在此不做具体限定。

例如,服务器获取的上一个时间片对应的已存储高维数据,如下表所示:

那么服务器可以将所获取的该行已存储高维数据按照时间从早到晚的顺序进行排列,得到一条时间线上的空间数据,作为该行待编码数据,即如下表所示。

可以看出,该一条时间线上的空间数据形成了面上的空间数据,进而服务器便可以预设的空间填充曲线编码规则,对该面上的空间数据进行编码,得到对应的一维数据。

可见,本实施例中,服务器可以获取上一个时间片对应的已存储高维数据,将所获取的每行已存储高维数据按照时间顺序排列,得到一条时间线上的空间数据,作为待编码数据。这样可以得到线或面上的空间数据,方便构建空间索引,即建立高维空间标签。

作为本发明实施例的一种实施方式,如图4所示,上述基于所述一维查询条件以及所述高维查询条件,确定所述时间条件和所述空间条件组成的查询条件集合的步骤,可以包括:

S401,根据所述一维查询条件包括的时间条件以及所述一维时间标签中的时间标签的设置方式,将所述时间条件按照时间划分为多个一维时间子条件,得到一维时间条件集合;

由于不同的高维数据的行标签中的一维时间标签的设置方式可能不同,所以为了准确确定一维时间条件集合,服务器可以根据一维查询条件包含的时间条件以及一维时间标签的设置方式,将时间条件按照时间划分为多个一维时间子条件,得到一维时间条件集合。其中,每个一维时间子条件所包含的时间条件不同,其他条件可以相同。

在一种实施方式中,由于一维时间标签一般是与时间片的划分方式相对应的,例如,一维时间标签可以为对应的时间片的开始时间点的时间戳,所以服务器可以根据高维数据的时间片的划分方式将时间条件按照时间划分为多个一维时间子条件。

例如,针对基于HBase的OpenTSDB时序数据库,查询条件为BBOX(120.223,30215179;120.323,30.31533),color=1,查询时间为2019-12-1310:00:00-2019-12-1312:00:00。其中,BBOX(120.223,30215179;120.323,30.31533)为高维查询条件,表示对角点坐标为(120.223,30215179)和(120.323,30.31533)的矩形区域,color=1表示车牌颜色为白色。

如果已存储高维数据的一维时间标签的设置方式为时间片的开始时间点的时间戳,时间片的划分方式为一个小时为一个时间片。那么查询时间2019-12-13 10:00:00-2019-12-13 12:00:00即包括了两个时间片,一个为开始时间点为2019-12-13 10:00:00的时长为一小时的时间片,另一个为开始时间点为2019-12-13 11:00:00的时长为一小时的时间片。

服务器则可以将一维查询条件按照上述两个时间片的开始时间点划分为两个一维时间子条件,即Local|2019-12-13 10:00:00|color=1和Local|2019-12-1311:00:00|color=1,这两个一维时间子条件即组成了一维时间条件集合A。

S402,根据所述空间填充曲线编码规则,将所述高维查询条件转化为多个一维数据范围,作为高维空间条件集合;

由于一个一维数据是根据某个目标对应的一条时间线上的高维数据降维处理得到的,所以一个一维数据可以标识该目标对应的在这一条时间线上的高维数据,即这一条时间线上的一行空间数据。但是高维查询条件往往对应的多个目标在一段时间内的多行空间数据,所以将高维查询条件根据空间填充曲线编码规则转化为一维数据时往往会得到多个一维数据范围。

服务器根据空间填充曲线编码规则,将高维查询条件转化为多个一维数据范围后,可以将该多个一维数据范围作为高维空间条件集合。一维数据范围的具体数量是由空间填充曲线编码规则和高维查询条件对应的查询范围的大小决定的,在此不做具体限定。

例如,服务器根据xz编码规则,将高维查询条件转化为一维数据,得到两个一维数据范围,分别为[1234111-1234222]和[1234888-1234999],那么[1234111-1234222]和[1234888-1234999]即组成了高维空间条件集合B。

S403,将所述一维时间条件集合与所述高维空间条件集合进行笛卡尔积合并,得到查询条件集合。

由于查询结果需要同时满足一维时间条件集合与高维空间条件集合,而两个集合X和Y的笛卡尔积(Cartesian product),又称直积,表示为X×Y,第一个对象是集合X的成员,第二个对象是集合Y的所有可能有序对中的一个成员,因此,两个集合的笛卡尔积可以表示两个集合的合并结果,所以服务器可以将一维时间条件集合与高维空间条件集合进行笛卡尔积合并,得到时间条件和空间条件组成的查询条件集合。

例如,如果一维时间条件集合为Local|2019-12-13 10:00:00|color=1、Local|2019-12-13 11:00:00|color=1;高维空间条件集合为[1234111-1234222]、[1234888-1234999],那么服务器将两个集合进行笛卡尔积合并,得到查询条件集合如下表所示:

其中,StartKey表示对应的查询条件的起始标签,EndKey表示对应的查询条件范围的终止标签,每对StartKey和EndKey标识一个查询条件,共得到4个查询条件,每个查询条件对应一个查询范围,该4个查询条件组成了查询条件集合。

可见,本实施例中,服务器可以根据一维时间条件包括的时间条件以及一维时间标签的设置方式,将时间条件按照时间划分为多个一维时间子条件,得到一维时间条件集合,根据空间填充曲线编码规则,将高维查询条件转化为多个一维数据范围,作为高维空间条件集合,将一维时间条件集合与高维空间条件集合进行笛卡尔积合并,得到查询条件集合。这样便可以获取到准确的查询条件集合,进而可以提高数据查询效率和准确率。

作为本发明实施例的一种实施方式,如图5所示,上述根据已存储的高维数据的行标签,确定满足所述查询条件集合的目标高维数据的步骤,可以包括:

S501,针对所述查询条件集合中的每个查询条件,从已存储的高维数据的行标签中查找满足该查询条件的行标签,作为目标标签;

服务器可以针对查询条件集合中的每个查询条件,从已存储的高维数据的行标签中查找满足该查询条件的行标签。已存储高维数据的行标签包括一维时间标签和高维空间标签,每个查询条件可以标识一维时间标签和高维空间标签的范围,因此,服务器便可以从已存储的高维数据的行标签中查找属于该范围的行标签,即为目标标签。

例如,针对上述查询条件1,其StartKey为Local|2019-12-13 10:00:00|color=1|1234111,EndKey为Local|2019-12-13 10:00:00|color=1|1234222,表示的查询范围为:一维标签为Local|2019-12-13 10:00:00|color=1,高维空间标签为从12341111234222。那么服务器便可以从已存储的高维数据的行标签中查找到从Loc al|2019-12-13 10:00:00|color=1|1234111到Local|2019-12-13 10:00:00|color=1|1234222的行标签,作为目标标签。

S502,将所述目标标签对应的已存储的高维数据确定为满足所述查询条件集合的目标高维数据。

服务器在得到目标标签后,服务器便可以将目标标签对应的已存储的高维数据确定为满足查询条件集合的目标高维数据。例如,针对上述4个查询条件来说,服务器可以分别查询满足该4个查询条件的目标标签,进而将所有目标标签对应的已存储的高维数据确定为目标高维数据。

可见,本实施例中,服务器可以针对查询条件集合中的每个查询条件,从已存储的高维数据的行标签中查找满足该查询条件的行标签,作为目标标签,将目标标签对应的已存储的高维数据确定为满足查询条件集合的目标高维数据。这样服务器便可以得到满足查询条件集合的目标高维数据,可以快速准确的查找到满足查询条件集合的目标高维数据,提高数据查询效率。

作为本发明实施例的一种实施方式,上述方法还可以包括:

基于所述空间条件对所述查询结果进行过滤,去除不在所述空间条件所表示的范围内的查询结果,得到最终的查询结果。

采用空间填充曲线编码规则确定的高维空间标签对应的空间数据是一段时间内多个时间点的空间数据,也就是说,一个高维空间标签对应多个时间点的空间数据。由于在一些情况下,查询条件集合所指示的空间数据的范围可能不是恰好与一个或多个高维空间标签所对应的空间数据的范围重合,那么就会导致根据已存储的高维数据的行标签确定的目标高维数据中存在不在高维查询条件范围内的空间数据。

例如,针对下表所示的空间数据来说,高维空间标签xzcode1用于标识其所对应的时间片内的第一行空间数据,高维空间标签xzcode2用于标识其所对应的时间片内的第二行空间数据。

服务器在查询目标高维数据时,高维空间标签xzcode1可能在查询条件集合所表示的范围内,但是第一行空间数据中的部分空间数据实际上可能并不在空间条件所表示的范围内。

因此,为了使得查询结果更加准确,服务器可以基于空间条件对查询结果进行过滤,去除不在空间条件所表示的范围内的查询结果,得到最终的查询结果。在一种实施方式中,服务器可以将查询结果所包括的空间数据与空间条件所表示的范围进行比对,以确定该空间数据是否在空间条件所表示的范围内,如果不在空间条件范围内,则将该空间数据去除,进而便可以得到最终的查询结果。

可见,本实施例中,服务器可以基于空间条件对查询结果进行过滤,去除不在空间条件所表示的范围内的查询结果,得到最终的查询结果,这样能够使最终的查询结果更加精确,提高查询结果的准确度。

相应于上述一种数据查询方法,本发明实施例还提供了一种数据查询装置,下面对本发明实施例所提供的一种数据查询装置进行介绍。

如图6所示,一种数据查询装置,应用于时序数据库的服务器,所述装置包括:

查询请求获取模块610,用于获取数据查询请求;

其中,所述数据查询请求包括一维查询条件以及高维查询条件,所述一维查询条件包括时间条件,所述高维查询条件包括空间条件。

条件集合确定模块620,用于基于所述一维查询条件以及所述高维查询条件,确定所述时间条件和所述空间条件组成的查询条件集合;

高维数据查询模块630,用于根据已存储的高维数据的行标签,确定满足所述查询条件集合的目标高维数据,作为查询结果。

其中,所述高维数据包括按照时间顺序排列的各行空间数据,每行空间数据具有行标签,所述行标签包括一维时间标签和高维空间标签,所述高维空间标签为一维数据,用于标识该行已存储的空间数据。

可见,本发明实施例提供的方案中,服务器可以获取数据查询请求,其中,数据查询请求包括一维查询条件以及高维查询条件,一维查询条件包括时间条件,高维查询条件包括空间条件,基于一维查询条件以及高维查询条件,确定时间条件和空间条件组成的查询条件集合,根据已存储的高维数据的行标签,确定满足查询条件集合的目标高维数据,作为查询结果,其中,高维数据包括按照时间顺序排列的各行空间数据,每行空间数据具有行标签,行标签包括一维时间标签和高维空间标签,高维空间标签为一维数据,用于标识该行已存储的空间数据。由于高维空间标签为可以标识该行已存储的空间数据的一维数据,实现将高维空间数据降维为一维数据的效果,进而,服务器可以根据已存储的高维数据的行标签,即根据一维数据来确定满足一维查询条件以及高维查询条件的目标高维数据,而不是通过一一对比的方式或者过程复杂的R树索引来查询目标高维数据,可以大大提高高维数据的查询效率。

作为本发明实施例的一种实施方式,如图7所示,上述装置还可以包括:

数据获取模块640,用于获取上一个时间片对应的已存储高维数据,作为待编码数据;

数据编码模块650,用于按照预设的空间填充曲线编码规则,对每行待编码数据进行编码,得到该行待编码数据对应的一维数据;

标签构建模块660,用于将所述一维数据确定为该行待编码数据对应的高维空间标签。

作为本发明实施例的一种实施方式,上述数据获取模块640可以包括:

获取单元,用于获取上一个时间片对应的已存储高维数据;

排列单元,用于将所获取的每行已存储高维数据按照时间顺序排列,得到一条时间线上的空间数据,作为待编码数据。

作为本发明实施例的一种实施方式,上述条件合集确定模块620可以包括:

划分单元,用于根据所述一维查询条件包括的时间条件以及所述一维时间标签的设置方式,将所述时间条件按照时间划分为多个一维时间子条件,得到一维时间条件集合;

转化单元,用于根据所述空间填充曲线编码规则,将所述高维查询条件转化为多个一维数据范围,作为高维空间条件集合;

合并单元,用于将所述一维时间条件集合与所述高维空间条件集合进行笛卡尔积合并,得到查询条件集合。

作为本发明实施例的一种实施方式,上述高维数据查询模块630包括:

查找单元,用于针对所述查询条件集合中的每个查询条件,从已存储的高维数据的行标签中查找满足该查询条件的行标签,作为目标标签;

确定单元,用于将所述目标标签对应的已存储的高维数据确定为满足所述查询条件集合的目标高维数据。

作为本发明实施例的一种实施方式,如图8所示,上述装置还可以包括:

去除模块670,用于基于所述空间条件对所述查询结果进行过滤,去除不在所述空间条件所表示的范围内的查询结果,得到最终的查询结果。

本发明实施例还提供了一种服务器,如图9所示,包括处理器901、通信接口902、存储器903和通信总线904,其中,处理器901,通信接口902,存储器903通过通信总线904完成相互间的通信,

存储器903,用于存放计算机程序;

处理器901,用于执行存储器903上所存放的程序时,实现上述任一实施例所述的一种数据查询方法。

可见,本发明实施例提供的方案中,服务器可以获取数据查询请求,其中,数据查询请求包括一维查询条件以及高维查询条件,一维查询条件包括时间条件,高维查询条件包括空间条件,基于一维查询条件以及高维查询条件,确定时间条件和空间条件组成的查询条件集合,根据已存储的高维数据的行标签,确定满足查询条件集合的目标高维数据,作为查询结果,其中,高维数据包括按照时间顺序排列的各行空间数据,每行空间数据具有行标签,行标签包括一维时间标签和高维空间标签,高维空间标签为一维数据,用于标识该行已存储的空间数据。由于高维空间标签为可以标识该行已存储的空间数据的一维数据,实现将高维空间数据降维为一维数据的效果,进而,服务器可以根据已存储的高维数据的行标签,即根据一维数据来确定满足一维查询条件以及高维查询条件的目标高维数据,而不是通过一一对比的方式或者过程复杂的R树索引来查询目标高维数据,可以大大提高高维数据的查询效率。

上述服务器提到的通信总线可以是外设部件互连标准(Peripheral ComponentInterconnect,PCI)总线或扩展工业标准结构(Extended Industry StandardArchitecture,EISA)总线等。该通信总线可以分为地址总线、数据总线、控制总线等。为便于表示,图中仅用一条粗线表示,但并不表示仅有一根总线或一种类型的总线。

通信接口用于上述服务器与其他设备之间的通信。

存储器可以包括随机存取存储器(Random Access Memory,RAM),也可以包括非易失性存储器(Non-Volatile Memory,NVM),例如至少一个磁盘存储器。可选的,存储器还可以是至少一个位于远离前述处理器的存储装置。

上述的处理器可以是通用处理器,包括中央处理器(Central Processing Unit,CPU)、网络处理器(Network Processor,NP)等;还可以是数字信号处理器(Digital SignalProcessor,DSP)、专用集成电路(Application Specific Integrated Circuit,ASIC)、现场可编程门阵列(Field-Programmable Gate Array,FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。

在本发明提供的又一实施例中,还提供了一种计算机可读存储介质,该计算机可读存储介质内存储有计算机程序,所述计算机程序被处理器执行时实现上述任一实施例所述的数据查询方法的步骤。

在本发明提供的又一实施例中,还提供了一种包含指令的计算机程序产品,当其在计算机上运行时,使得计算机执行上述实施例中任一所述的数据查询方法。

在上述实施例中,可以全部或部分地通过软件、硬件、固件或者其任意组合来实现。当使用软件实现时,可以全部或部分地以计算机程序产品的形式实现。所述计算机程序产品包括一个或多个计算机指令。在计算机上加载和执行所述计算机程序指令时,全部或部分地产生按照本发明实施例所述的流程或功能。所述计算机可以是通用计算机、专用计算机、计算机网络、或者其他可编程装置。所述计算机指令可以存储在计算机可读存储介质中,或者从一个计算机可读存储介质向另一个计算机可读存储介质传输,例如,所述计算机指令可以从一个网站站点、计算机、服务器或数据中心通过有线(例如同轴电缆、光纤、数字用户线(DSL))或无线(例如红外、无线、微波等)方式向另一个网站站点、计算机、服务器或数据中心进行传输。所述计算机可读存储介质可以是计算机能够存取的任何可用介质或者是包含一个或多个可用介质集成的服务器、数据中心等数据存储设备。所述可用介质可以是磁性介质,(例如,软盘、硬盘、磁带)、光介质(例如,DVD)、或者半导体介质(例如固态硬盘Solid State Disk(SSD))等。

需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。

本说明书中的各个实施例均采用相关的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于方法、装置、服务器、计算机可读存储介质以及计算机程序产品而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。

以上所述仅为本发明的较佳实施例,并非用于限定本发明的保护范围。凡在本发明的精神和原则之内所作的任何修改、等同替换、改进等,均包含在本发明的保护范围内。

22页详细技术资料下载
上一篇:一种医用注射器针头装配设备
下一篇:交通拥堵态势预测方法、装置、设备及存储介质

网友询问留言

已有0条留言

还没有人留言评论。精彩留言会获得点赞!

精彩留言,会给你点赞!