基于分布式的时序数据查询方法、设备、介质及产品与流程

文档序号:27947475发布日期:2021-12-11 14:57阅读:100来源:国知局
基于分布式的时序数据查询方法、设备、介质及产品与流程

1.本发明涉及时序数据查询领域,尤其涉及基于分布式的时序数据查询方法、设备、介质及产品。


背景技术:

2.近年来随着移动互联网技术的发展和普及应用,产生了越来越多的带有时间顺序的数据,也即是带有记录时间的数据,比如app的浏览数据、货车的行驶记录数据、服务器的日志数据,这些时序数据都记录有事件发生的时间,比如app的浏览数据会记录用户操作的时间,比如什么时候浏览了首页,什么时候点击了注册按钮等。
3.目前对于时序数据的查询包括两种方案:一、通常是经过数据节点和查询节点进行处理,数据节点负责对实际的数据存储,查询节点负责接收查询请求,并将查询发送到各个数据节点,然后查询节点聚合各个数据节点的处理结果然后返回给客户端,这种查询过程的典型应用为apache druid(高性能实时分析数据库)的查询过程。二、整个时序数据的查询只经过数据节点处理,并由单个数据节点对所有数据查询结果进行汇聚,此时数据节点除了负责实际的数据存储,同时也可以接收查询请求,数据节点临时担任了第一种方案中查询节点的角色,区别是这个数据节点在负责数据的存储处理和结果汇聚,这种查询过程的典型应用为elasticsearch(基于lucene的搜索服务引擎)的查询过程。
4.以上两种方案,第一种方案中数据的聚合以及查询请求的发送均在一个查询节点中进行,聚合的效率受限于这个节点的资源配置,无法真正利用分布式集群的资源;第二种方案中数据节点负责数据的写入存储、接收查询请求以及查询结果汇聚,一个节点兼具多种职能,在写数据的时候,容易影响查询的性能,造成在处理大量中间计算结果的情况下,有比较大的响应延迟。综上,现有的时序数据查询方法存在查询效率较低,有较大响应延迟的问题。


技术实现要素:

5.为了克服现有技术的不足,本发明的目的之一在于提供基于分布式的时序数据查询方法,其能解决现有的时序数据查询方法存在查询效率较低,有较大响应延迟的问题。
6.本发明的目的之二在于提供一种电子设备,其能解决现有的时序数据查询方法存在查询效率较低,有较大响应延迟的问题。
7.本发明的目的之三在于提供一种计算机可读存储介质,其能解决现有的时序数据查询方法存在查询效率较低,有较大响应延迟的问题。
8.本发明的目的之四在于提供一种计算机程序产品,其能解决现有的时序数据查询方法存在查询效率较低,有较大响应延迟的问题。
9.本发明的目的之一采用以下技术方案实现:
10.基于分布式的时序数据查询方法,所述方法应用于若干数据查询节点模块和若干数据节点模块之间,将接收到时序查询请求的数据查询节点模块作为第一数据查询节点模
块,将未接收到时序查询请求的数据查询节点模块作为第二数据查询节点模块,每个所述数据节点模块均与所述第一数据查询节点模块和所述第二数据查询节点模块连接,所述方法由第一数据查询节点模块执行,包括以下步骤:
11.接收查询请求,接收用户通过客户端发送的时序数据查询请求,所述时序数据查询请求中包括查询时间范围;
12.切分查询请求,根据查询时间范围将所述时序数据查询请求切分为若干子时序数据查询请求,每个子时序数据查询请求中均包括子查询时间范围;
13.分配子时序数据查询请求,将一部分所述子时序数据查询请求作为第一查询请求分发至对应的数据节点模块,得到第一数据聚合结果,将剩余部分的所述子时序数据查询请求作为第二子查询请求随机分发至不同的第二数据查询节点模块,并由第二数据查询节点模块发送至其他对应的数据节点模块,得到第二数据聚合结果;
14.返回聚合结果,将所述第一数据聚合结果和第二数据聚合结果汇总并返回至客户端。
15.进一步地,所述分配子时序数据查询请求具体为:随机选取一部分子时序数据查询请求作为第一子查询请求,根据对应子查询时间范围将第一子查询请求发送至对应的数据节点模块,将未被选取的子时序数据查询请求作为第二子查询请求随机分发至不同的第二数据查询节点模块,并由第二数据查询节点模块根据对应子查询时间范围发送至对应的数据节点模块。
16.进一步地,所述第一数据聚合结果为将第一子查询请求对应的数据节点模块返回的第一数据查询结果进行聚合处理后得到。
17.进一步地,所述第二数据聚合结果为将第二子查询请求对应的数据节点模块返回的第二数据查询结果进行聚合处理得到。
18.基于分布式的时序数据查询方法,所述方法应用于若干数据查询节点模块和若干数据节点模块之间,将接收到时序查询请求的数据查询节点模块作为第一数据查询节点模块,将未接收到时序查询请求的数据查询节点模块作为第二数据查询节点模块,每个所述数据节点模块均与所述第一数据查询节点模块和所述第二数据查询节点模块连接,所述方法由第二数据查询节点模块执行,包括以下步骤:
19.获取第二子查询请求,获取由第一数据查询节点模块发送的第二子查询请求,所述第二子查询请求中包括子查询时间范围;
20.发送第二子查询请求,根据子查询时间范围将第二子查询请求发送至对应的不同数据节点模块;
21.接收数据查询结果,接收第二子查询请求对应不同数据节点模块返回的第二数据查询结果;
22.聚合数据查询结果,将不同的第二数据查询结果进行聚合处理,得到第二数据聚合结果;
23.发送数据聚合结果,将第二数据聚合结果发送至第一数据查询节点模块。
24.进一步地,所述发送第二子查询请求具体为:根据不同的子查询时间范围在时序数据分区和数据节点模块的映射关系中筛选出若干对应的数据节点模块,将子时序数据查询请求发送至对应的不同数据节点模块。
25.基于分布式的时序数据查询方法,所述方法应用于若干数据查询节点模块和若干数据节点模块之间,将接收到时序查询请求的数据查询节点模块作为第一数据查询节点模块,将未接收到时序查询请求的数据查询节点模块作为第二数据查询节点模块,每个所述数据节点模块均与所述第一数据查询节点模块和所述第二数据查询节点模块连接,所述方法由数据节点模块执行,包括以下步骤:
26.存储时序数据,将时序数据按照时间粒度切分为若干子时序数据在不同的数据分区中进行分区存储,每个数据分区都关联有时间属性;
27.接收子时序数据查询请求,接收第一数据查询节点模块发送的第一子查询请求或第二数据查询节点模块发送的第二子查询请求,所述第一子查询请求和所述第二子查询请求中均包括子查询时间范围;
28.计算查询结果,根据所述第一子查询请求或所述第二子查询请求中的子查询时间范围查询对应数据分区内的数据并计算结果,得到与所述第一子查询气请求对应的第一数据查询结果或与所述第二子查询请求对应的第二数据查询结果;
29.返回数据查询结果,将第一数据查询结果发送至第一数据查询节点模块或将第二数据查询结果发送至第二数据查询节点模块。
30.本发明的目的之二采用以下技术方案实现:
31.一种电子设备,包括:处理器;
32.存储器;以及程序,其中所述程序被存储在所述存储器中,并且被配置成由处理器执行,所述程序包括用于执行本技术中所述的基于分布式的时序数据查询方法。
33.本发明的目的之三采用以下技术方案实现:
34.一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行本技术中所述的基于分布式的时序数据查询方法。
35.本发明的目的之四采用以下技术方案实现:
36.一种计算机程序产品,包括计算机程序,该计算机程序被处理器执行时实现本技术中所述的基于分布式的时序数据查询方法。
37.相比现有技术,本发明的有益效果在于:本发明中的基于分布式的时序数据查询方法,通过根据查询时间范围将所述时序数据查询请求切分为若干子时序数据查询请求,并将一部分所述子时序数据查询请求作为第二子查询请求分发至不同的第二数据查询节点模块,并由第二数据查询节点模块根据子查询时间范围将对应第二子查询请求发送至对应的数据节点模块,充分利用数据查询节点模块的分布集群并行处理的优势,将时序查询分配至不同数据查询节点来发送查询请求以及对数据查询结果进行聚合,减轻了单个数据查询节点的运行负载,提高了查询效率,避免了查询过程中产生较大的响应延迟。
38.上述说明仅是本发明技术方案的概述,为了能够更清楚了解本发明的技术手段,并可依照说明书的内容予以实施,以下以本发明的较佳实施例并配合附图详细说明如后。本发明的具体实施方式由以下实施例及其附图详细给出。
附图说明
39.此处所说明的附图用来提供对本发明的进一步理解,构成本技术的一部分,本发明的示意性实施例及其说明用于解释本发明,并不构成对本发明的不当限定。在附图中:
40.图1为本发明的基于分布式的时序数据查询方法的流程示意图;
41.图2为本发明的基于分布式的时序数据查询方法的工作原理示意图。
具体实施方式
42.下面,结合附图以及具体实施方式,对本发明做进一步描述,需要说明的是,在不相冲突的前提下,以下描述的各实施例之间或各技术特征之间可以任意组合形成新的实施例。
43.如图1所示,本技术中的基于分布式的时序数据查询方法中,所述方法应用于分布式设置的若干数据查询节点模块和分布式设置的若干数据节点模块之间,将接收到时序查询请求的数据查询节点模块作为第一数据查询节点模块,将未接收到时序查询请求的其他的数据查询节点模块作为第二数据查询节点模块,因此本实施例中第二数据查询节点模块由多个数据查询节点模块组成;每个所述数据节点模块均与所述第一数据查询节点模块和所述第二数据查询节点模块连接。所述第一查询节点模块和所述第二查询节点模块会根据数据分片的时间属性建立从时序数据分区到数据节点模块的映射关系。在本实施例中还包括协调模块,协调模块负责管理集群中的元数据,包括数据分片在集群中的分布,数据表和字段等元数据,同时还负责数据分片在集群内的负载均衡,如图2所示,本实施例中可设置协调节点1和协调节点2,实质为上述的协调模块。
44.上述方法具体包括以下步骤:
45.存储时序数据,数据节点模块将时序数据按照时间粒度切分为若干子时序数据在不同的数据分区中进行分区存储,每个数据分区都关联有时间属性。在本实施例中,时间粒度可以为一天/一周/一季度等,比如以天为粒度,则一个数据分区存储某一天内的数据。
46.接收查询请求,第一数据查询节点模块接收用户通过客户端发送的时序数据查询请求,所述时序数据查询请求中包括查询时间范围。
47.切分查询请求,第一数据查询节点模块根据查询时间范围将所述时序数据查询请求切分为若干子时序数据查询请求,每个子时序数据查询请求中均包括子查询时间范围。
48.分配子时序数据查询请求,第一数据查询节点模块将一部分所述子时序数据查询请求作为第一子查询请求分发至对应的数据节点模块,得到第一数据聚合结果,将剩余部分的所述子时序数据查询请求作为第二子查询请求随机分发至不同的第二数据查询节点模块,并由第二数据查询节点模块发送至其他对应的数据节点模块,得到第二数据聚合结果。在本实施例中,上述步骤具体为:第一数据查询节点模块随机选取一部分子时序数据查询请求作为第一子查询请求,第一数据查询节点模块根据对应子查询时间范围将第一子查询请求发送至对应的数据节点模块,第一数据查询节点模块将未被选取的另一部分子时序数据查询请求作为第二子查询请求随机分发至不同的第二数据查询节点模块,并由第二数据查询节点模块根据子查询时间范围将发送至对应的数据节点模块。
49.获取子时序数据查询请求,第二数据查询节点模块获取由第一数据查询节点模块发送的第二子查询请求,所述第二子查询请求中包括子查询时间范围。
50.发送子时序数据查询请求,第二数据查询节点模块根据子查询时间范围将第二子查询请求发送至对应的不同数据节点模块。
51.接收子时序数据查询请求,数据节点模块接收第一数据查询节点模块发送的第一
子查询请求或第二数据查询节点模块发送的第二子查询请求,所述第一子查询请求和所述第二子查询请求中均包括子查询时间范围。
52.计算查询结果,数据节点模块根据第一子查询请求或第二子查询请求中的子查询时间范围查询对应数据分区内的数据并计算结果,得到与第一子查询请求对应的第一数据查询结果或与第二子查询请求对应的第二数据查询结果。
53.返回数据查询结果,数据节点模块将第一数据查询结果发送至第一数据查询节点模块或将第二数据查询结果发送至第二数据查询节点模块。
54.接收数据查询结果,第二数据查询节点模块接收第二子查询请求对应不同数据节点模块返回的第二数据查询结果。
55.聚合数据查询结果,第二数据查询节点模块将不同的第二数据查询结果进行聚合处理,得到第二数据聚合结果。
56.返回数据聚合结果,第二数据查询节点模块将不同的第二数据聚合结果发送至第一数据查询节点模块。
57.接收数据聚合结果,第一数据查询节点模块接收不同第二数据查询节点模块返回的第二数据聚合结果。在此步骤之前还包括接收第一子查询请求对应的数据节点模块返回的第一数据查询结果并进行聚合处理,得到第一数据聚合结果。
58.返回聚合结果,将不同第二数据查询节点模块返回的第二数据聚合结果与对应不同的数据节点模块返回第一数据聚合结果进行汇总并发送至客户端。
59.为了更好的说明上述步骤,以下举例说明:
60.假设数据查询节点模块有两个,包括数据查询节点模块1和数据查询节点模块2,数据节点模块的数量为四个,分别为数据节点模块1、数据节点模块2、数据节点模块3、数据节点模块4,如图2所示,为了作图需要,图2中的数据节点即为上述的数据节点模块,图2中的查询节点表示上述的数据查询节点模块。此时数据查询节点模块1从客户端接收到时序数据查询请求,时序数据查询请求为“select id,sum(count)from t where time>=2020

01

01and time<=2020

01

04group by id”,此时时序查询请求中的查询时间范围为2020

01

01至2021

01

04。以天为时间粒度,可以将查询时间范围细分为2020

01

01、2020

01

02、2020

01

03、2020

01

04四个子查询时间范围。
61.此时数据查询节点模块1可以将时序数据查询请求按照查询时间范围且分为两个子时序数据查询请求,其中一个子时序数据查询请求内的子查询时间范围为2020

01

01至2020

01

02,另一子时序数据查询请求内的子查询时间范围为2020

01

03至2020

01

04。将子查询时间范围为2020

01

03至2020

01

04的子时序数据查询请求作为第二子查询请求发送至数据查询节点模块2,数据查询节点模块2将子时序数据查询请求(上述第二子查询请求)分别下发至分片时间范围为2020

01

03对应的数据节点模块3以及数据分片时间范围为2020

01

04对应的数据节点模块4;数据查询节点模块1将子查询时间范围为2020

01

01至2020

01

02的子时序数据查询请求作为第一子查询请求分别发送至数据节点模块1、数据节点模块2。在本实施例中数据如下表1所示:
62.表1时序数据表
63.timeidlength所在数据节点模块2020

01

01a10s1
2020

01

01b20s12020

01

02a20s22020

01

03a30s32020

01

03b30s32020

01

03a40s32020

01

04a50s42020

01

04b60s4
64.上述表1中time表示数据的记录时间,不同记录时间的数据会根据时间粒度存储在不同时间范围内的数据分片;length表示时序数据长度,s1表示数据节点模块1、s2表示数据节点模块2、s3表示数据节点模块3,s4表示数据节点模块4。因此在数据查询节点可以根据子查询时间范围将子将子时序数据查询请求发送至对应的数据节点模块,另外上述表1中最后一列仅用作说明数据的分布,不属于数据的一部分。
65.上述数据节点模块1、数据节点模块2、数据节点模块3、数据节点模块4发送的数据查询结果为例如表2所示:
66.表2数据节点查询结果
67.数据节点模块数据查询结果s1(a,10)、(b,20)s2(a,20)s3(a,70)、(b,30)s4(a,50)、(b,60)
68.上述第二查询节点模块需要将数据节点模块3、数据节点模块4的查询结果进行聚合,如表3所示:表3第二查询节点查询结果
[0069][0070]
上述表3中的b2表示第二查询节点模块。
[0071]
上述第一查询节点模块需要将数据节点模块1、数据节点模块2和第二查询节点模块的查询结果进行聚合,如表4所示:
[0072]
表4第一查询节点查询结果
[0073][0074]
上述表4中的b1表示第一查询节点模块。
[0075]
最后,第一查询节点模块将聚合结果(a,150)、(b,110)返回给客户端
[0076]
本发明还提供一种电子设备,包括:处理器;
[0077]
存储器;以及程序,其中所述程序被存储在所述存储器中,并且被配置成由处理器执行,所述程序包括用于执行本技术中所述的基于分布式的时序数据查询方法。
[0078]
本发明还提供一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行本技术中所述的基于分布式的时序数据查询方法。
[0079]
本发明还提供一种计算机程序产品,包括计算机程序,该计算机程序被处理器执行时实现本技术中所述的基于分布式的时序数据查询方法。
[0080]
本发明中的基于分布式的时序数据查询方法,通过根据查询时间范围将所述时序数据查询请求切分为若干子时序数据查询请求,将一部分子时序数据查询请求作为第一子查询请求直接发往对应数据节点,得到第一数据聚合结果,将另一部分子时序数据查询请求作为第二子查询请求随机分发至不同的第二数据查询节点模块,并由第二数据查询节点模块发送至对应的数据节点模块,得到第二数据聚合结果;充分利用数据查询节点模块的分布集群并行处理的优势,将时序查询分配至不同数据查询节点来发送查询请求以及对数据查询结果进行聚合,减轻了单个数据查询节点的运行负载,提高了查询效率,避免了查询过程中产生较大的响应延迟。
[0081]
以上,仅为本发明的较佳实施例而已,并非对本发明作任何形式上的限制;凡本行业的普通技术人员均可按说明书附图所示和以上而顺畅地实施本发明;但是,凡熟悉本专业的技术人员在不脱离本发明技术方案范围内,利用以上所揭示的技术内容而做出的些许更动、修饰与演变的等同变化,均为本发明的等效实施例;同时,凡依据本发明的实质技术对以上实施例所作的任何等同变化的更动、修饰与演变等,均仍属于本发明的技术方案的保护范围之内。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1