一种数据查询方法、装置、分布式数据查询系统与流程

文档序号:27315253发布日期:2021-11-09 23:44阅读:70来源:国知局
一种数据查询方法、装置、分布式数据查询系统与流程

1.本发明涉及大数据分析技术领域,特别是涉及一种数据查询方法、装置、分布式数据查询系统。


背景技术:

2.在数据分析时往往会面对海量原始数据,并非所有原始数据都是用户感兴趣的数据。用户可以输入多个用于表示筛选条件的条件表达式(下文称谓词),具有数据查询功能的电子设备,如计算引擎,可以根据用户输入的谓词进行数据查询,以从原始数据中确定出同时满足所有谓词所表示的筛选条件的目标数据,并返回所有目标数据,以使得用户可以根据返回的目标数据进行数据分析,从而降低数据分析的计算量。为描述方便,下文以命中谓词代指满足谓词所表示的筛选条件。
3.在进行数据查询时,电子设备可以依次针对每个原始数据进行查询,以确定该原始数据是否为目标数据。在查询的过程中,电子设备可以按照谓词判断顺序依次使用输入的每个谓词对原始数据进行判断,如果原始数据命中该谓词,则继续使用下一个谓词对原始数据进行判断,如果原始数据未命中该谓词,则停止判断并确定原始数据不为目标数据。如果原始数据命中所有谓词,则确定原始数据为目标数据。
4.假设输入的谓词为谓词1-5,一原始数据命中谓词1-4,未命中谓词5。则如果谓词判断顺序中谓词5位于第一位,则可以通过一次判断确定该原始数据不为目标数据,而如果谓词判断顺序中谓词5位于第五位,则需要通过五次判断才能确定该原始数据不为目标数据。可见,查询时所使用的谓词判断顺序将会影响查询效率,即谓词判断顺序将影响数据查询的效率。因此如何合理设置谓词判断顺序,以提高数据查询效率,成为亟待解决的技术问题。


技术实现要素:

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.根据该谓词的所述命中率和所述耗时代价,计算该谓词的阶段得分,所述阶段得分所表示的效率与所述命中率负相关,并且与所述耗时代价负相关。
41.在一种可能的实施例中,所述命中率通过以下方式计算得到:
42.按照预设采样规则,从本阶段已查询数据中采样得到本阶段采样数据;
43.统计所述本阶段采样数据中命中谓词的原始数据的占比,作为该谓词的命中率。
44.在一种可能的实施例中,所述耗时代价通过以下方式计算得到:
45.按照预设采样规则,从本阶段已查询数据中采样得到本阶段采样数据;
46.统计判断所述本阶段采样数据是否命中谓词所耗费的累计耗时;
47.对所述累计耗时进行均值归一化处理,得到该谓词的耗时代价。
48.在一种可能的实施例中,所述得分计算模块根据该谓词的所述阶段得分与该谓词的历史得分,计算该谓词的当前得分,包括:
49.对该谓词的所述阶段得分和该谓词的历史得分进行加权相加,得到该谓词的当前得分。
50.在本发明实施例的第三方面,提供了一种电子设备,包括:
51.存储器,用于存放计算机程序;
52.处理器,用于执行存储器上所存放的程序时,实现上述第一方面任一所述的方法
步骤。
53.在本发明实施例的第三方面,提供了一种计算机可读存储介质,所述计算机可读存储介质内存储有计算机程序,所述计算机程序被处理器执行时实现上述第一方面任一所述的方法步骤。
54.本发明实施例还提供了一种包含指令的计算机程序产品,当其在计算机上运行时,使得计算机执行上述任一所述的数据查询方法。
55.本发明实施例有益效果:
56.本发明实施例提供的数据查询方法、装置、分布式数据查询系统,可以根据已经查询的原始数据,自适应的调整谓词判断顺序,以将效率更高的谓词设置于更高的顺位,由于原始数据之间往往具有一定的相似性,因此可以认为判断已经查询的原始数据是否为目标数据时效率较高的谓词,同样为判断未查询的原始数据是否为目标数据时效率较高的谓词,因此将这些谓词设置于更高的顺位可以提高对未查询的原始数据进行查询时的效率,即可以提高数据查询效率。当然,实施本发明的任一产品或方法并不一定需要同时达到以上所述的所有优点。
附图说明
57.为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
58.图1为本发明实施例提供的数据查询方法的一种流程示意图;
59.图2为本发明实施例提供的当前得分计算方法的一种流程示意图;
60.图3为本发明实施例提供的阶段得分计算方法的一种流程示意图;
61.图4为本发明实施例提供的数据查询方法的另一种流程示意图;
62.图5a为本发明实施例提供的分布式数据查询系统的一种结构示意图;
63.图5b为本发明实施例提供的可插拔插件启用流程的一种示意图;
64.图6为本发明实施例提供的数据查询装置的一种结构示意图;
65.图7为本发明实施例提供的电子设备的一种结构示意图。
具体实施方式
66.下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
67.为了更清楚的对本发明实施例提供的数据查询方法进行说明,下面将对本发明实施例提供的数据查询方法的一种可能的应用场景进行示例性的说明,可以理解的是,本发明实施例提供的数据查询方法在其他可能的实施例中也可以应用于其他可能的应用场景中,以下示例对此不做任何限制。
68.假设数据库中存储有100万个人员数据,用户处于实际需求需要获取其中特定的
人员数据,例如用户需要获取其中同时满足以下筛选条件的人员数据:
69.筛选条件1:采集时间早于2018年11月15号06:00:00;
70.筛选条件2:采集时间晚于2018年11月15号00:00:01;
71.筛选条件3:采集到该人员数据的相机编号大于等于9999;
72.筛选条件4:采集到该人员数据的相机编号小于等于19999;
73.筛选条件5:采集到该人员数据的终端设备的编号大于153;
74.筛选条件6:没穿夹克;
75.筛选条件7:性别为男性。
76.则用户可以向数据库的计算引擎中输入携带有谓词1-7的查询指令,其中谓词1表示筛选条件1,谓词2表示筛选条件2,依次类推。可以理解的是,根据所使用的编程语言、以及编程规范的不同,各个谓词以及查询指令的编程语言表示形式可以不同,示例性的,查询指令可以如下所示:
77.where time<2018-11-15 06:00:00and time>2018-11-15 00:00:01 and camera_id>=9999 and camera_id<=19999 and device_id>153 and jacket_type!=1and sex=male
78.其中,“time<2018-11-15 06:00:00”为谓词1,“time>2018-11-15 00:00:01”为谓词2,“camera_id>=9999”为谓词3,“camera_id<=19999”为谓词4,“device_id>153”为谓词5,“jacket_type!=1”为谓词6,“sex=male”为谓词7。
79.计算引擎在接收到该查询指令后,按照查询指令中各谓词的声明顺序确定谓词判断顺序,在声明顺序中顺位越高的谓词在谓词判断顺序顺位越高,以上述查询指令为例,谓词判断顺序可以为:{谓词1;谓词2;谓词3;谓词4;谓词5;谓词6;谓词7}。计算引擎可以依次针对100万个人员数据中的每个人员进行查询。
80.由于谓词判断顺序为{谓词1;谓词2;谓词3;谓词4;谓词5;谓词6;谓词7},因此在对人员数据查询时,计算引擎首先使用谓词1对人员数据进行判断,如果人员数据未命中谓词1,则确定该人员数据不为目标数据,并开始对下一个人员数据进行查询,如果人员数据命中谓词1,则继续使用谓词2对人员数据进行判断,如果人员数据未命中谓词2,则确定该人员数据不为目标数据,并开始对下一个人员数据进行查询,如果人员数据命中谓词2,则继续使用谓词3对人员数据进行判断,依次类推,如果人员数据命中谓词7,则可以确定该人员数据为目标数据。
81.可见,如果一个人员数据不为目标数据,则该人员数据未命中的谓词在谓词判断顺序中的顺位越高,则对该人员数据进行查询所花费的时间越少。因此,谓词判断顺序将影响人员数据查询效率,并且根据数据库中的人员数据的不同,理论上最优的谓词判断顺序不同。由于数据库中的数据可能随着时间而变化,因此用户难以预见较优的谓词判断顺序。
82.而查询指令中谓词的声明顺序往往是由用户根据经验确定的,而一方面数据库中的人员数据可能随着时间而变化,并且这些变化具有一定的不可预测性,因此用户根据经验确定的声明顺序无法较好的适用于变化后的人员数据,导致数据查询效率较低。另一方面,如果每次数据查询前都由工作人员对数据库中的人员数据进行统计分析,以确定较优的声明顺序,则由于统计分析也将花费一定的时间,因此也会导致数据查询效率较低。
83.基于此,本发明实施例提供了一种数据查询方法,可以参见图1,图1所示为本发明
实施例提供的数据查询方法的一种流程示意图,可以包括:
84.s101,按照第一谓词判断顺序,依次对每个原始数据进行查询,以确定原始数据是否为同时命中多个谓词的目标数据,直至已经查询的原始数据的数量满足预设顺序更替条件或完成所有原始数据的查询。
85.s102,当已经查询的原始数据的数量满足预设顺序更替条件时,针对多个谓词中的每个谓词,根据已经查询的原始数据的数据特征,计算该谓词的当前得分。
86.s103,依据每个谓词的当前得分所表示的效率由高到低的顺序,生成第二谓词判断顺序。
87.s104,将第二谓词判断顺序作为新的第一谓词判断顺序,返回执行s101。
88.选用该实施例,可以根据已经查询的原始数据,自适应的调整谓词判断顺序,以将效率更高的谓词设置于更高的顺位,由于原始数据的变化往往具有一定的连续性,该连续性可以是空间连续性,例如在相邻区域采集到的原始数据之间相似性可能较高,也可以是时间连续性,例如相邻两个时间窗口内采集到的原始数据之间相似性较高,因此可以认为原始数据之间具有一定的相似性,所以可以认为判断已经查询的原始数据是否为目标数据时效率较高的谓词,同样为判断未查询的原始数据是否为目标数据时效率较高的谓词,因此将这些谓词设置于更高的顺位可以提高对未查询的原始数据进行查询时的效率,即可以提高数据查询效率。
89.在s101中,第一谓词判断顺序用于表示查询过程中多个谓词的判断顺序,第一谓词判断顺序初始时为预设初始顺序。预设初始顺序可以是由用户根据经验预先设置的,也可以是按照预设规则计算得到的,本实施例对此不做限制。
90.已经查询的原始数据是指已经按照第一谓词判断顺序进行过查询,关于如何按照谓词判断顺序进行查询可以参见前述相关说明,在此不再赘述。预设顺序更替条件可以根据应用场景的不同而不同,示例性的,在一种可能的实施例中,预设顺序更替条件可以是数量为预设更替间隔的整数倍,预设更替间隔可以根据实际需求或用户经验进行设置,例如预设更替间隔可以为300万,即每当已经查询的原始数据的数量为300万、600万、900万等数值时满足预设顺序更替条件。
91.理论上在完成所有原始数据的查询之前,已经查询的原始数的数量应当至少满足一次预设顺序更替条件,可以理解的是,如果在完成所有原始数据的查询之前,已经查询的原始数据的数量一直无法满足预设顺序更替条件,则可以认为原始数据的总数量较少,当原始数据的总数量较少时,数据查询效率对完成数据查询所花费的时间的影响较少,例如假设以特定的谓词判断顺序进行数据查询时,数据查询所花费的时间为0.3ms,则即使通过优化谓词判断顺序将效率提高了200%,也只能缩短0.2ms的耗时。此时不存在本发明实施例提供的数据查询方法所需要解决的技术问题,因此下文将不再对该情况进行说明。
92.在s102中,数据特征包括原始数据命中谓词的状况,和/或,查询原始数据的耗时。关于数据特征如何影响谓词的效率将在后续的实施例中进行说明,在此不再赘述。
93.当前得分用于表示使用该谓词判断当前已经查询的原始数据是否为目标数据时的效率。关于当前得分的计算将在后续的实施例中进行描述,在此不再赘述。
94.可以理解的是,当前得分的表示方式可以根据实际应用场景的不同而不同,例如当前得分可以是数值,也可以是字母,还可以是其他字符,本实施例对此不做限制。并且,当
当前得分为数值时,当前得分的数值与当前得分所表示的效率可以是正相关的,也可以是负相关的。例如,在一种可能的实施例中,当前得分越低,则当前得分所表示的效率越高,在另一种可能的实施例中,当前得分越高,则当前得分所表示的效率越高。
95.在s103中,如果一个原始数据为目标数据,需要使用所有谓词对该原始数据进行判断,如果一个原始数据不为目标数据,则不需要使用谓词判断顺序中位于该原始数据未命中的谓词之后的谓词对该原始数据进行判断。因此如果效率越高的谓词在谓词判断顺序中的顺序为越高,则理论上对原始数据进行查询的效率越高。因此,可以认为按照第二谓词判断顺序对已经查询的原始数据进行查询时的效率,理论上高于按照第二谓词判断顺序对已经查询的原始数据进行查询时的效率。
96.在s104中,如前述分析原始数据之间往往具有一定的相似性,该相似性的高低取决于原始数据变化的连续性,也可能取决于其他因素,将在后续实施例中进行相似说明,在此不再赘述。例如假设第1-3000000个原始数据中50%的原始数据为男性人员的人员数据,则理论上第3000001-6000000个原始数据中男性人员的人员数据的占比具有一定概率也接近于50%,。因此,可以认为按照相同的谓词顺序分别对已经查询的原始数据和尚未查询的原始数据进行查询时的效率相近。因此,由s103中的分析可知,理论上按照第二判断顺序对尚未查询的原始数据进行查询时的效率,高于按照第一判断顺序对尚未查询的原始数据进行查询时的效率。因此使用第二谓词判断顺序作为新的第一谓词判断顺序,并继续进行查询,可以有效提高查询效率,即提高数据查询效率。
97.是否准确计算当前得分,影响到第二谓词判断顺序中各谓词是否能够准确按照效率排序。如前述分析,如果效率越高的谓词在谓词判断顺序中的顺序为越高,则理论上对原始数据进行查询的效率越高。因此,能否准确计算当前得分,将直接影响数据查询的效率。
98.基于此,在一种可能的实施例中,谓词的当前得分,可以是根据本阶段已查询数据的数据特征计算得到的。其中,本阶段已查询数据为已经使用当前的第一谓词判断顺序进行查询的原始数据。
99.如果在计算当前得分时,已经查询的原始数据的数量第一次满足预设顺序更替条件,则当前的第一谓词判断顺序是指初始时的第一谓词判断顺序,即预设初始顺序。如果在计算当前得分时,已经查询的原始数据的数量并非第一次满足预设顺序更替条件,则当前的第一谓词判断顺序为最近一次生成的第二谓词判断顺序。
100.以预设顺序更替条件为:数量为预设更替间隔的整数倍,并且预设更替间隔为3000000为例,则在已经查询的原始数据的数量达到3000000个时第一次满足预设顺序更替条件,此时当前的第一谓词判断顺序为预设初始顺序,本阶段已查询数据为第1-3000000个原始数据。在已经查询的原始数据的数量达到6000000个时第二次满足预设顺序更替条件,则当前的第一谓词判断顺序为在已经查询的原始数据的数量达到3000000个时生成的第二谓词判断顺序,本阶段已查询数据为第3000001-6000000个原始数据,依次类推。
101.可以理解的是,原始数据之间具有相似性,而由于原始数据的排布往往是按照一定规律排布,因此两个原始数据之间相似性的强弱往往与两个原始数据之间间隔的原始数据的数量负相关。例如,假设原始数据为某电子设备在不同时刻的性能参数,则由于电子设备的性能参数在一定时间段内的变化往往是规律的,因此两个原始数据的采集时间的间隔越短,则这两个原始数据之间的相似性越强,而在该应用场景中,原始数据的排布往往是按
照采集时间排布的,因此两个原始数据之间间隔的原始数据的数量越少,则这两个原始数据的相似性越强。
102.因此,可以认为相比于已经查询的原始数据中并非本阶段已查询数据的其他原始数据,本阶段已查询数据与尚未查询的原始数据之间的相似性更强。因此,根据本阶段已查询数据的数据特征计算得到的当前得分,可以更好地反映出使用该谓词对尚未查询的原始数据是否为目标数据时的效率。因此选用该实施例,可以有效提高计算得到的当前得分的准确性,从而进一步提高数据查询效率。
103.在一些应用场景中,如果已经查询的原始数据的数量多次满足预设顺序更替条件,则本阶段已查询数据的数量相比于已经查询的原始数据的数量可能较少,而原始数据存在一定的随机性,因此本阶段已查询数据可能受限制于数量有限,本阶段已查询数据的数据特征可能受到数据随机性的影响较大,导致计算得到的当前得分可能无法较好地反映出使用该谓词对尚未查询的原始数据是否为目标数据时的效率,因此导致数据查询效率的稳定性较低。
104.基于此,在一种可能的实施例中,可以参见图2,图2所示为本发明实施例提供的当前得分计算方法的一种流程示意图,可以包括:
105.s201,本阶段已查询数据的数据特征,计算谓词的阶段得分。
106.其中,阶段得分用于表示使用该谓词判断本阶段已查询数据是否为目标数据的效率。
107.s202,根据谓词的阶段得分与谓词的历史得分,计算谓词的当前得分。
108.其中,历史得分为生成上一次生成第二谓词判断顺序时谓词所依据的得分,并且历史得分的初始值为预设得分,即如果在计算当前得分时,已经查询的原始数据的数量并非第一次满足预设顺序更替条件,则谓词的历史得分为上一次生成第二谓词判断顺序时谓词的当前得分。如果在计算当前得分时,已经查询的原始数据的数量第一次满足预设顺序更替条件,则谓词的得分为预设得分。并且当前得分所表示的效率与阶段得分所表示的效率正相关,并且与历史得分所表示的效率正相关。
109.在一种可能的实施例中,预设得分可以用于表示使用谓词判断原始数据是否为目标数据时的预估效率,预设得分可以是根据用户经验预先设置的,也可以是按照预设规则计算得到的,本实施例对此不做限制。在该实施例中,预设初始顺序是依据预设得分所表示的预估效率由高到低的顺序,对多个谓词进行排序生成的。
110.可以理解的是,历史得分可以用于表示使用谓词判断已经查询的原始数据中并非本阶段已查询数据的其他数据是否为目标数据时的效率,而阶段得分用于表示使用该谓词判断本阶段已查询数据是否为目标数据的效率。如前述分析,本阶段已查询数据与尚未查询的原始数据之间的相似性更强,而已经查询的原始数据往往拥有比于本阶段已查询数据的更多的数量,因此在计算当前得分时同时考虑阶段得分和历史得分,可以使得计算得到的当前得分在能够更准确地反映出使用谓词判断尚未查询的原始数据时的效率,同时对原始数据的随机性具有较强的抵抗能力。
111.在一种可能的实施例中,可以是对阶段得分和历史得分进行加权相加,得到当前得分。示例性的,假设阶段得分为r,历史得分为s,当前得分为t,则可以按照下式计算当前得分:
112.t=f*s+(1-f)*r
113.f为预设的联系因子,f的取值范围为(0,1),f的取值可以根据实际应用场景的不同而不同,例如在一种可能的实施例中f=0.35。
114.下面将对阶段得分的计算进行描述,参见前述s202中的相关描述,由于历史得分为上一次生成第二谓词判断顺序时的阶段得分,或者预设得分,因此历史得分的确定可以参见前述预设得分的相关描述,以及下文中关于阶段得分的相关描述,在此不再赘述历史得分的确定。
115.可以参见图3,图3所示为本发明实施例提供的阶段得分计算方法的一种流程示意图,可以包括:
116.s301,根据本阶段已查询数据的数据特征,计算谓词的命中率和耗时代价。
117.其中,命中率用于表示本阶段已查询数据中命中该谓词的原始数据所占的比例。例如,假设本阶段已数据共计3000000个,其中有1500000个原始数据命中该谓词,则该谓词的命中率为50%。
118.可以理解的是,如果统计所有本阶段已查询数据则需要花费的计算量较大,因此在一种可能的实施例中,可以按照采样规则,从本阶段已查询数据中采样得到本阶段采样数据,统计本阶段采样数据中命中谓词的原始数据的占比,作为谓词的命中率,选用该实施例可以降低计算阶段得分的计算量。
119.耗时代价用于表示判断本阶段已查询数据是否命中该谓词所耗费的时间。可以理解的是,如果统计所有本阶段已查询数据以确定耗时代价,则需要花费的计算量较大,因此在一种可能的实施例中,可以按照采样规则,从本阶段已查询数据中采样得到本阶段采样数据,统计判断本阶段采用数据是否命中谓词所耗费的累计耗时,并对累计耗时进行均值归一化处理,得到谓词的耗时代价,选用该实施例可以降低计算阶段得分的计算量。
120.s302,根据谓词的命中率和耗时代价,计算谓词的阶段得分。
121.其中,阶段得分所表示的效率与命中率负相关,并且与耗时代价负相关。可以理解的是,如果一个谓词的命中率越低,则表示原始数据命中该谓词的可能性越低,而原始数据未命中一个谓词则可以确定原始数据不为目标数据,因此使用该谓词判断出原始数据不为目标数据的可能性越高,即使用该谓词判断原始数据是否为目标数据的效率越高。而效率与耗时成反比,因此如果一个谓词的耗时代价越低,则使用该谓词判断原始数据是否为目标数据的效率越高。
122.选用该实施例,可以基于耗时代价和命中率以相对简单且准确的方式计算得到阶段得分。
123.在满足阶段得分所表示的效率与命中率负相关,并且与耗时代价负相关的前提下,阶段得分的具体计算公式根据应用不同可以不同。示例性的,在一种可能的实施例中,可以是按照下式计算得到的:
[0124][0125]
其中,h为命中率,c为耗时代价。
[0126]
如前述分析,当原始数据的总数量较少时,数据查询效率对完成数据查询所花费的时间的影响较少,即当原始数据总数量较少时,可以认为选用何种谓词判断顺序,完成数
据查询所花费的时间都在可以接受的范围内。而计算当前得分、生成第二谓词判断顺序需要消耗一定的计算量,因此在一种可能的实施例中,可以判断原始数据的总数量是否大于预设数量阈值,如果总数量大于预设数量阈值,则可以使用本发明实施例提供的数据查询方法进行查询,如果总数量不大于预设数量阈值,则可以使用任意数据查询方法进行查询。
[0127]
为了更清楚的对本发明实施例提供的数据查询方法进行说明,下面将结合具体的应用场景进行说明,可以参见图4,图4所示为本发明实施例提供的数据查询方法的另一种流程示意图,可以包括:
[0128]
s401,判断原始数据的总数量是否大于预设数量阈值threshold,如果总数量大于预设数量阈值,则执行s402,如果总数量不大于预设数量阈值,则结束数据查询。
[0129]
在结束数据查询后,可以使用其他任意的数据查询方法进行数据查询,本实施例对此不做限制。threshold的取值可以根据应用场景的不同而不同,例如可以是9000000。
[0130]
s402,对下一个数据进行查询,并累计已经查询的原始数据的计数rowsnum。
[0131]
关于查询的流程可以参见前述相关说明,在此不再赘述。
[0132]
s403,判断rowsnum是否能被预设采样间隔sampleinterval整除,如果rowsnum能被sampleinterval整除则执行s404,如果rowsnum不能被sampleinterval整除则返回执行s402。
[0133]
sampleinterval的取值可以根据应用场景的不同而不同,例如可以是3000。
[0134]
s404,采样当前的原始数据,并累积已采样的原始数据的计数samplenum、命中的原始数据的计数hitnumarray以及耗时代价计数costarray。
[0135]
其中,每采样一个原始数据,samplenum计数自加1。hitnumarray为一个数列,该数列中每个元素对应于一个谓词,每当所采样的原始数据命中一个谓词时,将数列中与该谓词对应的元素的数值自加1,该数列中每个元素的初始值为0。
[0136]
costarray为一个数列,该数列中每个元素对应于一个谓词,每当采样一个原始数据时,分别针对每个谓词,计算判断该原始数据是否命中该谓词所耗费的时间,并将该时间累加到数列中与该谓词对应的元素的数值中,该数列中每个元素的初始值为0。
[0137]
s405,判断rowsnum是否能被预设更替间隔computeinterval整除,如果rowsnum能被computeinterval整除则执行s406,如果rowsnum不能被computeinterval整除则返回执行s402。
[0138]
该示例中,computeinterval为sampleinterval的整数倍,因此rowsnum能被computeinterval整除的前提是rowsnum能被sampleinterval整除,因此s405是在s403之后执行的,在其他可能的实施例中,如果computeinterval不为sampleinterval的整数倍,则s405也可以是s403并列执行的,本示例对此不做任何限制。
[0139]
关于computeinterval可以参见前述关于预设更替间隔的相关说明,在此不再赘述。在该示例中,computeinterval的取值可以为3000000。
[0140]
s406,计算阶段得分。
[0141]
关于阶段得分的计算,可以参见前述s301、s302的说明,在此不再赘述。在该示例中,一个谓词的命中率可以是通过以下方式计算得到的:
[0142]
可以是将hitnumarray中与该谓词的对应的元素的数值除以samplenum,得到的商作为该谓词的命中率。
[0143]
耗时代价可以是对costarray各个元素的数值进行均值归一化,均值归一化后的各个元素的数值,作为该元素对应的谓词的耗时代价。
[0144]
s407,计算当前得分。
[0145]
关于根据阶段得分计算当前得分,可以参见前述s202中的相关说明,在此不再赘述。
[0146]
s408,根据当前得分调整所使用的谓词判断顺序。
[0147]
即根据当前得分,生成第二谓词判断顺序,并利用第二谓词判断顺序作为新的第一谓词判断顺序。关于第二谓词判断顺序如何生成,可以参见前述s103中的相关说明,在此不再赘述。
[0148]
s409,判断是否完成所有原始数据的查询,如果完成所有原始数据的查询,则结束数据查询,如果尚未完成所有原始数据的查询,则返回执行s402。
[0149]
在结束数据查询后,可以返回所有目标数据。
[0150]
由于数据查询的计算量往往较高,因此相关技术中往往采用分布式数据查询系统,其中包括主节点和多个从节点。例如,apache spark(一种分布式数据查询系统)中包括driver(主节点)和多个executor(从节点),其中driver是应用程序的主入口或结果汇聚口,同时负责原始数据的分配以及数据查询任务的调度与监控。executor用于执行driver所调度的数据查询任务。
[0151]
在一种可能的实施例中,当主节点接收到数据查询任务时,可以将该数据查询任务划分为多个数据查询子任务,并将每个数据查询子任务调度至各个从节点,以使得各个从节点执行所调度的数据查询子任务,从而完成主节点所接收到的数据查询任务。
[0152]
从节点在执行数据查询子任务时,可以是接收主节点向从节点下发的第一谓词判断顺序,并按照第一谓词判断顺序对数据查询子任务所针对的原始数据进行查询,并向主节点反馈部分已经查询的原始数据,以使得主节点基于从节点反馈的已经查询的原始数据,计算各个谓词的当前得分,从而生成第二谓词判断顺序,并将第二谓词判断顺序下发至从节点,以使得从节点使用第二谓词判断顺序,作为新的第一谓词判断顺序继续对原始数据进行查询。但是该实施例中,需要从节点向主节点反馈已经查询的原始数据,将造成主节点和从节点之间带宽的浪费。并且,另一方面各从节点进行数据查询所针对的原始数据可能存在差异化,由主节点对谓词判断顺序进行全局调整,可能使得使用第二谓词判断顺序只能够提高部分从节点的数据查询效率,而导致另一部分从节点的数据查询效率降低。
[0153]
基于此,本发明实施例提供了一种分布式数据查询系统,可以如图5a所示,包括主节点501,已经多个从节点502。其中,主节点501,用于为每个从节点502分配原始数据。从节点502,用于按照本发明实施例提供的任一数据查询方法,对分配的原始数据进行数据查询,以向主节点501返回目标数据。
[0154]
选用该实施例,可以由每个从节点独立进行谓词判断顺序的调整,无需向主节点反馈已经查询的原始数据,因此可以有效降低主节点与从节点之间的带宽压力。并且各从节点可以根据自身所分配的原始数据,有针对性调整谓词判断顺序,提高了调整后的谓词判断顺序对自身所分配的原始数据的适应性,可以充分提高各个从节点的数据查询效率,从而在整体上提高数据查询系统的效率。
[0155]
在一种可能的实施例中,从节点502可以包括可插拔插件。从节点502可以具体用
于加载针对可插拔插件设置的运行环境,在该运行环境中,通过可插拔插件,对所分配的原始数据执行本发明实施例提供的任一数据查询方法。
[0156]
选用该实施例,可以对从节点的谓词判断顺序调整的逻辑进行独立的维护、升级以及拓展,避免了对从节点的其他业务逻辑的干扰,提高了从节点的运行稳定性,以及数据查询的灵活性。
[0157]
从节点502启用可插拔插件的业务逻辑可以如图5b所示,包括:
[0158]
s510,加载针对可插拔插件设置的运行环境。
[0159]
可以是读取针对可插拔插件设置的配置文件,以加载该配置文件中所配置的配置参数,从而实现加载针对可插拔插件设置的运行环境。
[0160]
s520,判断运行环境是否加载成功,如果加载成功执行s530,如果加载失败则执行s550。
[0161]
s530,判断针对可插拔插件设置的使能开关是否开启,如果该开关开启,则执行s540,如果该开关未开启,则结束可插拔插件的启用。
[0162]
s540,启用可插拔插件,以通过可插拔插件实现本发明实施例提供的任一数据查询方法。
[0163]
s550,输出异常信息。
[0164]
可以理解的是,如果加载失败,则可以认为针对可插拔插件设置的运行环境可能存在设置错误,因此可以输出异常信息以提醒相关人员进行维护。
[0165]
参见图6,图6所示为本发明实施例提供的数据查询装置的一种结构示意图,可以包括:
[0166]
查询模块601,用于按照第一谓词判断顺序,依次对每个原始数据进行查询,以确定该原始数据是否为同时命中多个谓词的目标数据,直至已经查询的原始数据的数量满足预设顺序更替条件或完成所有原始数据的查询,所述谓词判断顺序用于表示查询过程中所述多个谓词的判断顺序,所述第一谓词判断顺序初始时为预设初始顺序;
[0167]
得分计算模块602,用于当已经查询的原始数据的数量满足预设顺序更替条件时,针对所述多个谓词中的每个谓词,根据已经查询的原始数据的数据特征,计算该谓词的当前得分,所述当前得分用于表示使用该谓词判断当前已经查询的原始数据是否为目标数据时的效率,所述数据特征包括原始数据命中谓词的状况,和/或,查询原始数据的耗时;
[0168]
重新排序模块603,用于依据每个谓词的所述当前得分所表示的效率由高到低的顺序,生成第二谓词判断顺序;
[0169]
所述查询模块601,还用于将所述第二谓词判断顺序作为新的第一谓词判断顺序,继续执行所述按照第一谓词判断顺序,依次对每个原始数据进行查询的步骤。
[0170]
在一种可能的实施例中,所述得分计算模块602根据已经查询的原始数据的数据特征,计算该谓词的当前得分,包括:
[0171]
根据本阶段已查询数据的数据特征,计算该谓词的当前得分,所述本阶段已查询数据为已经使用当前的第一谓词判断顺序进行查询的原始数据
[0172]
在一种可能的实施例中,所述得分计算模块602根据本阶段已查询数据的数据特征,计算该谓词的当前得分,包括:
[0173]
根据本阶段已查询数据的数据特征,计算该谓词的阶段得分,所述阶段得分用于
表示使用该谓词判断本阶段已查询数据是否为目标数据时的效率;
[0174]
根据该谓词的所述阶段得分与该谓词的历史得分,计算该谓词的当前得分,所述历史得分初始时为预设的初始得分,并且所述历史得分为上一次生成第二谓词判断顺序时该谓词所依据的得分,,所述当前得分所表示的效率与所述阶段得分所表示的效率正相关,并且与所述历史得分所表示的效率正相关。
[0175]
在一种可能的实施例中,所述得分计算模块602根据本阶段已查询数据的数据特征,计算该谓词的阶段得分,包括:
[0176]
根据本阶段已查询数据的数据特征,计算该谓词的命中率和耗时代价,所述命中率用于表示本阶段已查询数据中命中该谓词的原始数据所占的比例,所述耗时代价用于表示判断本阶段已查询数据是否命中该谓词所耗费的时间;
[0177]
根据该谓词的所述命中率和所述耗时代价,计算该谓词的阶段得分,所述阶段得分所表示的效率与所述命中率负相关,并且与所述耗时代价负相关。
[0178]
在一种可能的实施例中,所述命中率通过以下方式计算得到:
[0179]
按照预设采样规则,从本阶段已查询数据中采样得到本阶段采样数据;
[0180]
统计所述本阶段采样数据中命中谓词的原始数据的占比,作为该谓词的命中率。
[0181]
在一种可能的实施例中,所述耗时代价通过以下方式计算得到:
[0182]
按照预设采样规则,从本阶段已查询数据中采样得到本阶段采样数据;
[0183]
统计判断所述本阶段采样数据是否命中谓词所耗费的累计耗时;
[0184]
对所述累计耗时进行均值归一化处理,得到该谓词的耗时代价。
[0185]
在一种可能的实施例中,所述得分计算模块602根据该谓词的所述阶段得分与该谓词的历史得分,计算该谓词的当前得分,包括:
[0186]
对该谓词的所述阶段得分和该谓词的历史得分进行加权相加,得到该谓词的当前得分。
[0187]
本发明实施例还提供了一种电子设备,如图7所示,包括:
[0188]
存储器701,用于存放计算机程序;
[0189]
处理器702,用于执行存储器701上所存放的程序时,实现如下步骤:
[0190]
按照第一谓词判断顺序,依次对每个原始数据进行查询,以确定该原始数据是否为同时命中多个谓词的目标数据,直至已经查询的原始数据的数量满足预设顺序更替条件或完成所有原始数据的查询,所述第一谓词判断顺序用于表示查询过程中所述多个谓词的判断顺序,所述第一谓词判断顺序初始时为预设初始顺序;
[0191]
当已经查询的原始数据的数量满足预设顺序更替条件时,针对所述多个谓词中的每个谓词,根据已经查询的原始数据的数据特征,计算该谓词的当前得分,所述当前得分用于表示使用该谓词判断当前已经查询的原始数据是否为目标数据时的效率,所述数据特征包括原始数据命中谓词的状况,和/或,查询原始数据的耗时;
[0192]
依据每个谓词的所述当前得分所表示的效率由高到低的顺序,生成第二谓词判断顺序;
[0193]
将所述第二谓词判断顺序作为新的第一谓词判断顺序,返回执行所述按照第一谓词判断顺序,依次对每个原始数据进行查询的步骤。
[0194]
在一种可能的实施例中,所述根据已经查询的原始数据的数据特征,计算该谓词
的当前得分,包括:
[0195]
根据本阶段已查询数据的数据特征,计算该谓词的当前得分,所述本阶段已查询数据为已经使用当前的第一谓词判断顺序进行查询的原始数据。
[0196]
在一种可能的实施例中,所述根据本阶段已查询数据的数据特征,计算该谓词的当前得分,包括:
[0197]
根据本阶段已查询数据的数据特征,计算该谓词的阶段得分,所述阶段得分用于表示使用该谓词判断本阶段已查询数据是否为目标数据时的效率;
[0198]
根据该谓词的所述阶段得分与该谓词的历史得分,计算该谓词的当前得分,所述历史得分初始时为预设的初始得分,并且所述历史得分为上一次生成第二谓词判断顺序时该谓词所依据的得分,,所述当前得分所表示的效率与所述阶段得分所表示的效率正相关,并且与所述历史得分所表示的效率正相关。
[0199]
在一种可能的实施例中,所述根据本阶段已查询数据的数据特征,计算该谓词的阶段得分,包括:
[0200]
根据本阶段已查询数据的数据特征,计算该谓词的命中率和耗时代价,所述命中率用于表示本阶段已查询数据中命中该谓词的原始数据所占的比例,所述耗时代价用于表示判断本阶段已查询数据是否命中该谓词所耗费的时间;
[0201]
根据该谓词的所述命中率和所述耗时代价,计算该谓词的阶段得分,所述阶段得分所表示的效率与所述命中率负相关,并且与所述耗时代价负相关。
[0202]
在一种可能的实施例中,所述命中率通过以下方式计算得到:
[0203]
按照预设采样规则,从本阶段已查询数据中采样得到本阶段采样数据;
[0204]
统计所述本阶段采样数据中命中谓词的原始数据的占比,作为该谓词的命中率。
[0205]
在一种可能的实施例中,所述耗时代价通过以下方式计算得到:
[0206]
按照预设采样规则,从本阶段已查询数据中采样得到本阶段采样数据;
[0207]
统计判断所述本阶段采样数据是否命中谓词所耗费的累计耗时;
[0208]
对所述累计耗时进行均值归一化处理,得到该谓词的耗时代价。
[0209]
在一种可能的实施例中,所述根据该谓词的所述阶段得分与该谓词的历史得分,计算该谓词的当前得分,包括:
[0210]
对该谓词的所述阶段得分和该谓词的历史得分进行加权相加,得到该谓词的当前得分。
[0211]
上述电子设备提到的存储器可以包括随机存取存储器(random access memory,ram),也可以包括非易失性存储器(non-volatile memory,nvm),例如至少一个磁盘存储器。可选的,存储器还可以是至少一个位于远离前述处理器的存储装置。
[0212]
上述的处理器可以是通用处理器,包括中央处理器(central processing unit,cpu)、网络处理器(network processor,np)等;还可以是数字信号处理器(digital signal processing,dsp)、专用集成电路(application specific integrated circuit,asic)、现场可编程门阵列(field-programmable gate array,fpga)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。
[0213]
在本发明提供的又一实施例中,还提供了一种计算机可读存储介质,该计算机可读存储介质内存储有计算机程序,所述计算机程序被处理器执行时实现上述任一数据查询
方法的步骤。
[0214]
在本发明提供的又一实施例中,还提供了一种包含指令的计算机程序产品,当其在计算机上运行时,使得计算机执行上述实施例中任一数据查询方法。
[0215]
在上述实施例中,可以全部或部分地通过软件、硬件、固件或者其任意组合来实现。当使用软件实现时,可以全部或部分地以计算机程序产品的形式实现。所述计算机程序产品包括一个或多个计算机指令。在计算机上加载和执行所述计算机程序指令时,全部或部分地产生按照本发明实施例所述的流程或功能。所述计算机可以是通用计算机、专用计算机、计算机网络、或者其他可编程装置。所述计算机指令可以存储在计算机可读存储介质中,或者从一个计算机可读存储介质向另一个计算机可读存储介质传输,例如,所述计算机指令可以从一个网站站点、计算机、服务器或数据中心通过有线(例如同轴电缆、光纤、数字用户线(dsl))或无线(例如红外、无线、微波等)方式向另一个网站站点、计算机、服务器或数据中心进行传输。所述计算机可读存储介质可以是计算机能够存取的任何可用介质或者是包含一个或多个可用介质集成的服务器、数据中心等数据存储设备。所述可用介质可以是磁性介质,(例如,软盘、硬盘、磁带)、光介质(例如,dvd)、或者半导体介质(例如固态硬盘solid state disk(ssd))等。
[0216]
需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个
……”
限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
[0217]
本说明书中的各个实施例均采用相关的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于分布式数据查询系统、装置、电子设备、计算机可读存储介质、计算机程序产品而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
[0218]
以上所述仅为本发明的较佳实施例,并非用于限定本发明的保护范围。凡在本发明的精神和原则之内所作的任何修改、等同替换、改进等,均包含在本发明的保护范围内。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1