掌桥专利:专业的专利平台
掌桥专利
首页

数据查询链路确定方法、装置、电子设备及可读存储介质

文献发布时间:2024-04-29 00:47:01


数据查询链路确定方法、装置、电子设备及可读存储介质

技术领域

本申请属于数据处理技术领域,具体涉及一种数据查询链路确定方法、装置、电子设备及可读存储介质。

背景技术

在关系型数据库管理系统(Relational Database Management System,RDBMS)中,数据通常被存在不同的数据表中。为了获取完整的信息,通常需要确定出数据查询路径,根据数据查询路径,执行多表关联查询。

在相关技术中,通过人工处理方法,确定出存在关联关系的数据表,根据存在关联关系的数据表,构建数据查询路径。

随着信息技术的快速发展,数据量呈现快速的增长,对应的,数据表的个数也随之增加,根据相关技术中的方法,无法快速获取能满足数据查询成本要求的数据查询路径。

发明内容

本申请旨在提供一种数据查询链路确定方法、装置、电子设备及可读存储介质,至少解决在先技术中,无法快速获取满足数据查询成本要求的查询路径的问题。

第一方面,本申请实施例公开了一种数据查询链路确定方法,所述方法包括:

响应于数据查询请求,提取所述数据查询请求中的查询词,以及需要根据所述查询词进行查询的目标数据的数据类型;

根据所述查询词和所述数据类型,从包括多个数据表的拓扑结构中,确定出从第一数据表到第二数据表的查询链路,所述第一数据表包括所述查询词,所述第二数据表包括属于所述数据类型的数据;

根据查询链路中所有相邻数据表之间的子成本权重值,从多条所述查询链路中,选择出总成本权重值最小的目标查询链路,以根据所述目标查询链路进行数据查询,得到所述目标数据;成本权重值和查询成本正相关。

第二方面,本申请实施例公开了一种数据查询链路确定装置,所述装置包括:

提取模块,用于响应于数据查询请求,提取所述数据查询请求中的查询词,以及需要根据所述查询词进行查询的目标数据的数据类型;

第一确定模块,用于根据所述查询词和所述数据类型,从包括多个数据表的拓扑结构中,确定出从第一数据表到第二数据表的查询链路,所述第一数据表包括所述查询词,所述第二数据表包括属于所述数据类型的数据;

第一选择模块,用于根据查询链路中所有相邻数据表之间的子成本权重值,从多条所述查询链路中,选择出总成本权重值最小的目标查询链路,以根据所述目标查询链路进行数据查询,得到所述目标数据;成本权重值和查询成本正相关。

第三方面,本申请实施例还公开了一种电子设备,包括处理器和存储器,所述存储器存储可在所述处理器上运行的程序或指令,所述程序或指令被所述处理器执行时实现如第一方面所述的方法的步骤。

第四方面,本申请实施例还公开了一种可读存储介质,所述可读存储介质上存储有程序或指令,所述程序或指令被处理器执行时实现如第一方面所述的方法的步骤。

综上,从包括多个数据表的拓扑结构中,动态选择出总成本权重值最小的目标查询链路。成本权重值和查询成本正相关,因此,在第一数据表到第二数据表的查询链路中,目标查询链路的查询成本最小,基于该目标查询链路进行数据查询,可以满足查询成本需求。另外,从拓扑结构中自动选择查询链路,然后根据子成本权重值获取查询链路的总成本权重值,根据查询链路的总成本权重值,自动确定出满足查询成本要求的目标查询链路。相关技术中,通过人工确定查询链路,得到的查询链路的路径长,需要的查询时间长,数据查询效率低本。相对于相关技术的方法,本实施例根据拓扑结构确定目标查询链路,避免了对所有数据表进行扫描,根据所有数据表的扫描结果确定查询链路所造成的耗时长的问题,本实施例节省了数据表扫描的时间,提高了确定目标查询链路的效率,进而提高了数据查询效率。

附图说明

在附图中:

图1是本申请实施例提供的一种数据查询链路确定方法的步骤流程图;

图2是本申请实施例提供的一种拓扑结构示意图;

图3是本申请实施例提供的另一种数据查询链路确定方法的步骤流程图;

图4是本申请实施例提供的又一种数据查询链路确定方法的步骤流程图;

图5是本申请实施例提供的另一种拓扑结构示意图;

图6是本申请实施例提供的一种数据查询链路确定装置的框图;

图7是本申请实施例提供的一个实施例的电子设备的框图;

图8是本申请实施例提供的另一个实施例的电子设备的框图。

具体实施方式

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

本申请的说明书和权利要求书中的术语“第一”、“第二”等是用于区别类似的对象,而不用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便本申请的实施例能够以除了在这里图示或描述的那些以外的顺序实施,且“第一”、“第二”等所区分的对象通常为一类,并不限定对象的个数,例如第一对象可以是一个,也可以是多个。此外,说明书以及权利要求中“和/或”表示所连接对象的至少其中之一,字符“/”,一般表示前后关联对象是一种“或”的关系。

图1是本实施例提供的一种数据查询链路确定方法的步骤流程图,参照图1,方法可以包括如下步骤:

步骤101,响应于数据查询请求,提取数据查询请求中的查询词,以及需要根据查询词进行查询的目标数据的数据类型。

示例地,本实施例的执行主体为后端设备,后端设备可以为服务器、计算机,或者其他处理设备。

示例地,数据查询请求为前端设备发送至后端设备的请求,其中,前端设备可以为服务器、计算机、平板电脑,或者其他处理设备。

具体的,数据查询请求中包括查询词,以及与查询词对应的目标数据,目标数据具有对应的数据类型。

比如,在一个实现场景中,需要根据用户电话号码,查询用户设备,其中,数据查询请求包括用于描述如下需求的指令:根据用户电话号码“13x”,查询与用户电话号码“13x”对应的用户设备。其中,x表示电话号码中的部分数字。在该实现场景中,查询词为用户电话号码,目标数据为需要根据用户电话号码查询的用户设备,目标数据的数据类型为设备。

步骤102,根据查询词和数据类型,从包括多个数据表的拓扑结构中,确定出从第一数据表到第二数据表的查询链路。

具体的,第一数据表包括查询词,第二数据表包括属于数据类型的数据。

示例地,拓扑结构包括多条查询链路,多条查询链路至少包括:从第一数据表到第二数据表的查询链路。每条查询链路中包括多个数据表,每个相邻数据表之间存在关联关系,各数据表构成其所在的查询链路的节点,相邻数据表之间的关联关系,构成了查询链路中,连接相邻数据表的边。

比如,图2示出的是本申请提供的一种拓扑结构示意图,参照图2,拓扑结构包括数据表1、数据表2、数据表3、数据表4、数据表5,以及数据表6。示例地,数据表1和数据表2为相邻数据表,数据表1和数据表2之间存在关联关系,则在图2中,数据表2和数据表2之间,存在用于连接数据表1和数据表2的边。

其中,第一数据表为数据表1,第二数据表为数据表6,则从第一数据表到第二数据表之间的查询链路至少包括“数据表1→数据表2→数据表3→数据表6”,其他从第一数据表到第二数据表之间的查询链路,不再一一列举。

示例地,数据类型可以为目标数据的种类名称。多个数据表中的每个数据表,均包括多列数据,每列数据具有对应的数据类型,以及与该数据类型对应的具体数据。比如,多个数据表中,包括如表1所示的用户表:

表1

其中,数据类型包括“用户身份标识(Identity Document,ID)”、“用户电话号码”,以及“用户姓名”,与数据类型“用户ID”对应的“001”和“001”,是与该数据类型对应的具体数据;与数据类型“用户电话号码”对应的“13x”和“13y”,是与该数据类型对应的具体数据,其中,y表示电话号码的部分数字;与数据类型“用户姓名”对应的“张一”和“张二”,是与该数据类型对应的具体数据。

示例地,数据查询请求包括用于描述如下需求的指令:根据用户电话号码“13x”,查询与用户电话号码“13x”对应的用户设备。多个数据表中,包括如表2所示的数据表:

表2

示例地,表2中的数据类型为“用户ID”,数据类型列的数据为具体的用户ID,则表1和表2通过用户ID列互相关联。其中,表1包括查询词“13x”,表2包括数据类型“设备”的数据(比如,表2中的冰箱和空调),则表1为包括查询词的第一数据表,表2为包括属于“设备”这一数据类型的数据的第二数据表。

步骤103,根据查询链路中所有相邻数据表之间的子成本权重值,从多条查询链路中,选择出总成本权重值最小的目标查询链路,以根据目标查询链路进行数据查询,得到目标数据。

其中,成本权重值和查询成本正相关。具体的,成本权重值越大,查询成本越高,成本权重值越小,查询成本越低。示例地,查询成本可以包括:查询所用的时间、查询所用的资源消耗,或者其他可以反映查询开销的数据。

示例地,获取相邻数据表之间的关联关系,根据关联关系,以及预设关联关系与成本权重值之间的对应关系,从对应关系中,确定出与相邻数据表之间的关联关系对应的成本权重值,将该成本权重值确定为相邻数据表之间的子成本权重值。

示例地,关联关系可以包括:相邻数据表之间是否有索引,索引的类型、用于描述关联关系的关联字段的数据类型,或者其他和在相邻数据表之间,进行数据查询的查询成本相关的数据。

示例地,查询链路的总成本权重值,等于查询链路中,所有相邻数据表之间的子成本权重值的总和。示例地,参照图2,图2中标注在各相邻数据表之间的边上的数字,为相邻数据表之间的子成本权重值。以查询链路“数据表1→数据表2→数据表3→数据表6”为例,对查询链路的总成本权重值进行示例性说明,在该查询链路中,数据表1和数据表2之间的子成本权重值为1,数据表2和数据表3之间的子成本权重值为1,数据表3和数据表6之间的子成本权重值为3,则该查询链路的总成本权重值为5。

示例地,根据目标查询链路生成查询计划,按照查询计划进行数据查询,得到目标数据。具体的,目标查询链路包括多个依次关联的数据表,根据多个依次关联的数据表,以及其中各相邻数据表之间的关联关系,生成查询计划,根据查询计划进行数据查询,得到目标数据。

比如,参照图2,根据查询链路中所有相邻数据表之间的子成本权重值,从多条查询链路中,选择出总成本权重值最小的目标查询链路为“数据表1→数据表2→数据表3→数据表6”,则根据各相邻数据表之间的关联关系,生成依次执行对数据表1、数据表2、数据表3和数据表6的查询计划,得到目标数据。

示例地,根据目标查询链路中,各相邻数据表之间的关联关系,生成查询计划。比如,目标查询链路为:用户表→家庭表→设备表。用户表包括用户ID列、用户电话号码列;家庭表包括用户ID列和设备类型列;设备表包括设备类型列和设备数据列。用户表和家庭表通过用户ID列关联,家庭表和设备表通过设备类型列关联。

查询请求为:根据用户电话号码查询设备数据。则根据目标查询链路,以及其中各关联关系生成的查询计划为:则根据用户表,确定出与用户电话号码对应的用户ID,根据家庭表,确定出与用户ID对应的设备类型,根据设备表,确定出与设备类型对应的设备数据。从设备表中确定出的设备数据,即为需要根据查询请求中的用户电话号码所查询的目标数据。

综上,在本实施例中,响应于数据查询请求,获取查询词和目标数据的数据类型,从包括多个数据表的拓扑结构中,确定出从第一数据表到第二数据表的查询链路,根据查询链路中所有相邻数据表之间的子成本权重值,从多条查询链路中,可以动态选择出总成本权重值最小的目标查询链路。成本权重值和查询成本正相关,因此,在第一数据表到第二数据表的查询链路中,目标查询链路的查询成本最小,基于该目标查询链路进行数据查询,可以满足查询成本需求。另外,从拓扑结构中自动选择查询链路,然后根据子成本权重值获取查询链路的总成本权重值,根据查询链路的总成本权重值,自动确定出满足查询成本要求的目标查询链路。相关技术中,通过人工确定查询链路,得到的查询链路的路径长,需要的查询时间长,数据查询效率低本。相对于相关技术的方法,本实施例根据拓扑结构确定目标查询链路,避免了对所有数据表进行扫描,根据所有数据表的扫描结果确定查询链路所造成的耗时长的问题,本实施例节省了数据表扫描的时间,提高了确定目标查询链路的效率,进而提高了数据查询效率。

图3是本申请实施例提供的另一个数据查询链路确定方法的步骤流程图,参照图3,方法可以包括如下步骤:

步骤201,响应于数据查询请求,提取数据查询请求中的查询词,以及需要根据查询词进行查询的目标数据的数据类型。

本步骤的方法,在前述步骤101中已作说明,此处不再赘述。

步骤202,根据查询词和数据类型,从包括多个数据表的拓扑结构中,确定出从第一数据表到第二数据表的查询链路。

其中,第一数据表包括查询词,第二数据表包括属于数据类型的数据;

本步骤的方法,在前述步骤102中已作说明,此处不再赘述。

步骤203,使用预设的最短路径算法,根据查询链路中相邻数据表之间的子成本权重值,从多条查询链路中,选择出总成本权重值最小的目标查询链路,以根据目标查询链路进行数据查询,得到目标数据。

其中,成本权重值和查询成本正相关。

示例地,可以通过迪克斯特拉(Dijkstra)算法,根据查询链路中相邻数据表之间的子成本权重值,从多条查询链路中,选择出总成本权重值最小的目标查询链路。

在本实施例中,响应于数据查询请求,获取查询词和目标数据的数据类型,从包括多个数据表的拓扑结构中,确定出从第一数据表到第二数据表的查询链路,根据查询链路中所有相邻数据表之间的子成本权重值,以及最短路径算法,可以快速从多条查询链路中,动态选择出总成本权重值最小的目标查询链路。目标查询链路的查询成本最小,基于该目标查询链路进行数据查询,可以满足查询成本需求,相对于相关技术中,通过人工确定查询链路的方法,本实施例提高了确定目标查询链路的效率,进而提高了数据查询效率。

另外,在相关技术中,数据库系统在进行多表关联查询时,可以通过嵌套循环连接(Nested Loop Join)、排序合并连接(Sort-Merge Join)或散列连接(Hash Join)等算法,进行数据查询,但这些算法通常需要针对所有参与查询的数据表进行扫描,这个过程需要进行大量的输入/输出(I/O)操作和计算,这会导致查询效率低,在数据表之间没有索引时,查询效率会进一步下降。相关技术中,还可以通过查询缓存、物化视图等方法,进行查询性能优化,但这种方法需要使用额外的存储控件进行数据存储,在数据更新频繁的情况下,基于这种方法进行查询性能优化,需要较大的维护开销。

通过本实施例的方法,根据相邻数据表之间的子成本权重值,动态确定目标查询链路,方法适应大数据环境下的查询需求,且减少了数据扫描和I/O操作计算,提高了查询效率和性能。

在一个实施例中,在查询链路中,相邻数据表之间具有关联关系;在步骤203之前,还包括:

步骤204,根据相邻数据表之间的关联关系,以及预设关联关系与成本权重值之间的对应关系,确定与关联关系对应的目标成本权重值。

示例地,关联关系可以包括:是否具有索引,索引的索引类型,用于描述关联关系的关联字段的数据类型等。

示例地,确定多个预设关联关系,并根据经验数据,确定与预设关联关系对应的成本权重值,进而根据多个预设关联关系,以及分别与每个预设关联关系对应的成本权重值,构建预设关联关系与成本权重值之间的对应关系。

步骤205,将目标成本权重值,确定为与关联关系对应的相邻数据表之间的子成本权重值。

示例地,比对相邻数据表之间的关联关系,以及对应关系中的关联关系,从对应关系的关联关系中,确定出与相邻数据表之间的关联关系相匹配的目标关联关系,确定在对应关系中,和目标关联关系对应的成本权重值,为目标成本权重值,并将目标成本权重值,确定为与关联关系对应的相邻数据表之间的子成本权重值。

根据相邻数据表之间的关联关系,以及预设关联关系与成本权重值之间的对应关系,可以快速确定与关联关系对应的目标成本权重值,进而快速得到相邻数据表之间的子成本权重值。

在一个实施例中,在查询链路中,相邻数据表之间具有关联关系。对应的,在步骤203之前,还包括:

步骤206,获取相邻数据表之间的关联关系。

示例地,关联关系包括是否有索引。对应的,通过分析相邻数据表之间是否有索引,获取相邻数据表之间的关联关系。

步骤207,将相邻数据表之间的关联关系输入成本权重值预测模型中,获取成本权重值预测模型输出的成本权重值预测结果。

示例地,提取相邻数据表之间的关联关系的特征向量,将其输入成本权重预测模型中,得到成本权重预测值。

示例地,权重预测模型,是用于根据输入的关联关系,得到成本权重值预测结果的模型。

步骤208,将成本权重值预测结果,确定为相邻数据表之间的子成本权重值。

在本实施例中,通过权重预测模型,可以快速得到相邻数据表之间的子成本权重值。

在一个实施例中,在步骤207之前,还包括:

步骤209,获取查询链路样本的样本数据,样本数据包括:在查询链路样本中,相邻数据表样本之间的关联关系。

其中,样本数据具有对应的成本权重值。

示例地,查询链路样本可以为步骤202中的拓扑结构所包括的查询链路,也可以是根据其他数据表构建的查询链路。

示例地,样本数据包括两个具有关联关系的数据表,这两个数据表为相邻数据表。示例地,获取样本数据包括的关联关系,根据历史数据,设定与样本数据对应的成本权重值。比如,关联关系包括:相邻数据表之间的索引。

统计历史数据中,在有索引的相邻数据表之间进行数据查询的查询成本(比如,查询时间),以及在删除索引后,在相邻数据表之间进行数据查询的查询成本。实际应用中,在有索引的相邻数据表之间进行数据查询时,查询成本通常比较低,在没有索引的相邻数据表之间进行数据查询时,查询成本通常比较高。

将任意数作为有索引的相邻数据表之间进行数据查询的成本权重值,设置大于1的比例系数,使用比例系数,乘以有索引的相邻数据表之间进行数据查询的成本权重值,将得到的乘法结果,作为在没有索引的相邻数据表之间进行数据查询的成本权重值。比如,将有索引的相邻数据表之间进行数据查询的成本权重值设置为1,设置比例系数为3,则在没有索引的相邻数据表之间进行数据查询的成本权重值为3。

示例地,可以对没有索引的相邻数据表之间进行数据查询的查询成本,与有索引的相邻数据表之间进行数据查询的查询成本进行比值计算,将得到的比值确定为比例系数。

步骤210,将与样本数据对应的成本权重值作为标签,使用样本数据和标签训练机器学习模型,得到成本权重值预测模型。

示例地,机器学习模型为需要根据标签进行模型参数优化的模型。示例地,机器学习模型可以为回归模型,可以为随机森林模型、梯度提升树或者其他有监督的神经网络模型。

使用包括相邻数据表样本之间的关联关系的样本数据,以及样本数据对应的成本权重值作为标签,可以得到能根据关联关系,预测成本权重值的成本权重值预测模型。

在一个实施例中,在步骤207之后,还包括:

步骤211,将相邻数据表之间的关联关系作为新的样本数据,并将权重值预测结果,作为与新的样本数据对应的标签。

示例地,将新的数据样本,添加至步骤209中的样本数据中,得到更新的样本数据,并将与新的样本数据对应的标签,作为更新的样本数据中,与新的数据样本对应的标签。

步骤212,使用新的样本数据,以及与新的样本数据对应的标签,优化成本权重值预测模型。

示例地,将新的样本数据的成本权重值作为标签,使用新的样本数据和标签训练机器学习模型,得到成本权重值预测模型,由此实现成本权重值预测模型的优化。

使用新的样本数据,以及与新的样本数据对应的标签,可以及时对权重值预测模型进行优化,以确保权重值预测模型预测结果的准确度。

在一个实施例中,在步骤203之后,还包括:

步骤213,存储目标查询链路,以在后续需要从第一数据表到第二数据表之间的查询链路中,确定出总成本权重值最小的最优查询链路时,将目标查询链路确定为最优查询链路。

示例地,在后续的处理过程中,接收到了新的数据查询请求,新的数据查询请求中,查询词的类型与步骤201中查询词的类型相同,用于根据查询词进行查询的数据的数据类型,与步骤201中目标数据的数据类型相同,则根据新的数据查询请求,确定出的起始数据表,为包括新的查询词的第一数据表,根据新的查询请求,确定出的终点数据表,为包括对应数据类型的数据的第二数据表。

在这种情况下,针对新的查询请求,无需再次执行从多个数据表的拓扑结构中,确定出从第一数据表到第二数据表的查询链路,根据查询链路中所有相邻数据表之间的子成本权重值,从多条查询链路中,选择出总成本权重值最小的目标查询链路的操作,而是可以直接将存储的目标查询链路,作为针对新的查询请求的目标查询链路。相对于每次接收到数据查询请求后,均需要进行多表关联查询的方法,本实施例通过缓存目标查询链路,进一步提高了常见查询的响应速度和系统的整体性能

图4是本申请实施例提供的一种数据查询链路确定方法的步骤流程图,参照图4,方法可以包括如下步骤:

步骤S1,构建包括多个数据表的拓扑结构。

示例地,多个数据表为预设数据库中的数据表。分析数据库中,所有数据表之间的关联关系,关联关系包括数据表的外键。

将数据表作为节点,将关联关系作为连接两个节点的边,根据关联关系包括的是否有索引,关联字段的数据类型等信息,确定对应的两个数据表之间的子成本权重值。

比如,参照图5,数据表包括用户表、家庭表和设备表。其中,这三个数据表构成拓扑结构中的三个节点。其中,用户表和家庭表之间存在关联关系,家庭表和设备表之间存在关联关系,用户表和设备表之间也存在关联关系。

比如,根据查询请求解析出的查询条件是:根据用户ID,查询得到用户ID对应的设备。可以确定出作为起始数据表的第一数据表为用户表,作为目的数据表的第二数据表为设备表时,可以确定出从第一数据表到第二数据表的数据查询链路有两条,分别是“用户表→家庭表→设备表”,以及“用户表→设备表”。

多个数据表构成了拓扑结构,拓扑结构可以是如图2或图5所示的网状结构。其中,每个连接路径中,根据关联关系的连接字段是否包括索引,确定出对应的预设子成本权重值,比如,有索引时,预设的子成本权重值为1,没有索引时,预设的子成本权重值为3。

步骤S2,获取拓扑结构的所有查询链路中,各相邻数据表之间的子成本权重值。

示例地,收集数据库中,每个数据表的统计信息,统计信息包括数据表的行数、索引的类型等。收集历史查询数据,包括:在数据库的多个数据表中,针对每个数据表的查询频率,在两个相邻数据表之间进行数据查询所用的查询时间等。根据统计信息和历史查询数据,确定各相邻数据表之间的子成本权重值。

示例地,两个相邻数据表为用户表和设备表,用户表和设备表通过用户ID关联。

根据历史查询数据,在使用非索引列“设备类型”作为数据过滤条件时,查询速度比较慢。如果通过机器学习模型,根据历史查询数据,学习到当查询条件为设备类型时,用户表和设备表之间的查询成本值比较高。则可以提高用户表和设备表之间的子成本权重值。

在用户表和设备表之间的子成本权重值比较大的情况下,根据总成本权重值确定目标查询链路时,确定出的目标查询链路为用户表和设备表之外的查询链路。

如果在用户表和设备表中添加索引“设备类型”,则基于设备类型这一查询条件,在用户表和设备表中进行数据查询时,用户表和设备表之间的查询成本值比较低。

统计改进前后的查询成本,根据机器学习模型分析查询模式和统计信息的变化,进而动态调整拓扑结构中,相邻数据表之间的子成本权重值,以优化相邻数据表之间的子成本权重值。

示例地,机器学习模型可以为回归模型,根据回归模型得到的子成本权重值,与在两个相邻数据表之间进行数据查询时的查询成本正相关。

示例地,将统计信息和历史查询数据作为前述实施例中的样本数据,将预设的子成本权重值作为前述实施例中,与样本数据对应的标签,根据样本数据和标签训练机器学习模型,得到权重值预测模型。在查询链路中存在未确定子成本权重值的相邻数据表时,将相邻数据表的关联关系输入成本权重值预测模型中,得到相邻数据表的子成本权重值。

比如,拓扑结构中的节点包括数据表,相邻数据表之间的边,标识相邻数据表之间的关联关系。相邻数据表之间的边的权重,为两个相邻数据表之间的子成本权重值。子成本权重值可以反映在两个相邻数据表之间进行数据查询时,查询成本的大小,查询成本可以包括:输入/输出(I/O)消耗、中央处理器(Central Processing Unit,CPU)响应时间、查询时延,或者其他能反映查询成本的参数。

收集查询日志数据,包括进行了数据查询的查询链路,实际查询成本等。其中,实际查询成本包括查询时间、资源消耗等。将数据链路分解为相邻数据表之间的边的集合,并将实际查询成本关联至边上。

选择机器学习模型。机器学习模型可以为随机森林、梯度提升树或者神经网络模型。

将从关联关系中提取的特征作为样本数据,将子成本权重值作为标签,使用样本数据和标签训练机器学习模型,得到成本权重值预测模型。示例地,可以通过交叉验证方法,验证成本权重预测模型的准确性和泛化能力。

获取成本权重值预测模型后,将其部署在查询优化器中,以根据查询优化器中的成本权重值预测模型,进行子成本权重值的预测。并在使用预测的子成本权重值确定最优查询链路后,使用最优查询链路进行数据查询的查询性能不满足预设查询要求时,优化成本权重预测模型。

通过这种基于机器学习的成本权重预测方法,数据库查询优化器可以更加智能地动态调整拓扑结构图中的子成本权重值,以适应查询模式的变化和数据分布的演化。使得查询优化器能够提供更加精确的查询执行路径,从而优化查询性能。

进一步的,使用成本权重值预测模型,预测拓扑结构的查询链路中,相邻数据表之间的子成本权重值。根据预测得到的相邻数据表之间的子成本权重值,动态调整相邻数据表之间的子成本权重值。

步骤S3,解析数据查询请求,确定和查询请求相关的数据表,以及各数据表之间的关联关系。

示例地,解析数据查询请求中的查询词,以及需要根据查询词进行数据查询的目标数据的数据类型。

根据查询词和数据类型,确定出作为起始数据表的第一数据表,以及作为目的数据表的第二数据表。根据拓扑结构,确定出从第一数据表和第二数据表之间的查询链路,并获取查询链路中的各数据表,以及相邻数据表之间的关联关系。

其中,从第一数据表和第二数据表之间的查询链路中的所有数据表,即为和查询请求相关的数据表。从第一数据表和第二数据表之间的查询链路中的所有数据表中,相邻数据表之间的关联关系,即为和查询请求相关的数据表的关联关系。

步骤S4,根据和查询请求相关的数据表,以及各数据表之间的关联关系,得到和数据查询请求相关的多条查询链路。

示例地,和查询请求相关的数据表,以及各数据表之间的关联关系,构成和数据查询请求相关的多条查询链路。

步骤S5,使用图论算法中的最短路径算法,从多条查询链路中,确定出最优查询链路,以根据最优查询链路,生成查询计划。

示例地,根据Dijkstra算法,在多条查询链路中确定出最优查询链路。其中,最优查询链路,即为前述实施例中的目标查询链路。

进一步的,以查询链路的总成本权重值最小为约束,根据Dijkstra算法,在多条查询链路中确定出最优查询链路。

示例地,关联关系表征数据表与数据表之间的连接关系。比如,数据表包括家庭表和用户表,家庭表和用户表中都具有用户ID的列,则家庭表和用户表,可以通过用户ID进行关联。

在一个实施例中,获取查询链路的总成本权重值,以及查询链路中数据表的个数,根据第一预设权重值,对总成本权重值进行加权处理,得到第一加权处理值,根据第二预设权重值,对数据表的个数进行加权处理,得到第二加权处理值。对第一加权处理值和第二加权处理值进行求和处理,将得到的求和结果,作为查询链路的目标成本权重值。从多条查询链路中,选出目标成本权重值最小的查询链路,将其确定为目标查询链路。

比如,查询链路的总成本权重值为3,数据表的个数为3,第一预设权重值为0.7,第二预设权重值为0.3,则得到的目标成本权重值为:3×0.7+3×0.3。

步骤S6,执行查询计划,得到数据查询结果。

示例地,确定出的最优查询链路

步骤S7,存储最优查询链路,和/或数据查询结果。

示例地,获取使用最优查询链路进行数据查询的频率,在频率大于或等于第一预设频率阈值的情况下,确定最优查询链路为常用查询链路,将最优查询链路的信息存储在预设数据表中。

示例地,获取响应数据查询请求,进行数据查询的执行频率,在执行频率大于或等于第二预设频率阈值的情况下,确定该查询请求为频繁操作的查询请求,将与该查询请求对应的数据查询结果,存储在预设数据表中。

步骤S8,获取根据最优查询链路进行数据查询时的查询性能,根据查询性能,调整相邻数据表之间的子成本权重值,并返回步骤S2。

其中,查询性能用于表示实际查询成本是否符合预设查询要求,比如,在实际查询成本大于或等于预设成本阈值的情况下,确定查询性能不符合预设查询要求,在实际查询成本小于预设成本阈值的情况下,确定查询性能符合预设查询要求。

在查询性能不符合预设查询要求的情况下,调整查询链路中各相邻数据表之间的子成本权重值,并基于调整后的子成本权重值,重新获取最优查询链路,直至得到的最优查询链路对应的查询性能,符合预设测试要求。

将调整后的子成本权重值作为新的标签,将对应的相邻数据表的关联关系作为新的样本数据,优化成本权重值预测模型,并根据优化后的成本权重值预测模型,得到调整后的子成本权重值,然后返回步骤S2,以供后续接收道新的数据查询请求时,根据调整后的子成本权重值,确定最优的查询链路。

示例地,按照预设的时间周期,定期分析查询性能是否满足预设查询要求,并根据确定结果,调整子成本权重值。

在本实施例中,根据数据查询请求,自适应的从多条查询链路中,确定出目标查询链路。方法不仅考虑了数据表之间的静态关联关系,还根据统计信息和历史查询数据优化子成本权重值,以根据优化后的子成本权重值优化查询链路。通过动态调整机制和缓存处理方法,在数据库中的数据表发生变化时,能够确保数据查询方法能自适应数据表和查询模式的变化,以确保高效的数据查询性能。

参考图6,其示出了本申请实施例提供的一种数据查询链路确定装置40,数据查询链路确定装置40包括:

提取模块401,用于响应于数据查询请求,提取数据查询请求中的查询词,以及需要根据查询词进行查询的目标数据的数据类型;

第一确定模块402,用于根据查询词和数据类型,从包括多个数据表的拓扑结构中,确定出从第一数据表到第二数据表的查询链路,第一数据表包括查询词,第二数据表包括属于数据类型的数据;

第一选择模块403,用于根据查询链路中所有相邻数据表之间的子成本权重值,从多条查询链路中,选择出总成本权重值最小的目标查询链路,以根据目标查询链路进行数据查询,得到目标数据;成本权重值和查询成本正相关

可选地,第一选择模块403可以包括:

第一选择子模块,用于使用预设的最短路径算法,根据查询链路中相邻数据表之间的子成本权重值,从多条查询链路中,选择出总成本权重值最小的目标查询链路。

可选地,在查询链路中,相邻数据表之间具有关联关系;

数据查询链路确定装置40还包括:

第一确定模块,用于在根据查询链路中所有相邻数据表之间的子成本权重值,从多条查询链路中,选择出总成本权重值最小的目标查询链路之前,根据相邻数据表之间的关联关系,以及预设关联关系与成本权重值之间的对应关系,确定与关联关系对应的目标成本权重值;

第二确定模块,用于将目标成本权重值,确定为与关联关系对应的相邻数据表之间的子成本权重值。

可选地,在查询链路中,相邻数据表之间具有关联关系;

数据查询链路确定装置40还包括:

第一获取模块,用于在根据查询链路中所有相邻数据表之间的子成本权重值,从多条查询链路中,选择出总成本权重值最小的目标查询链路之前,获取相邻数据表之间的关联关系;

第二获取模块,用于将相邻数据表之间的关联关系输入成本权重值预测模型中,获取成本权重值预测模型输出的成本权重值预测结果;

第三确定模块,用于将成本权重值预测结果,确定为相邻数据表之间的子成本权重值。

可选地,数据查询链路确定装置40还包括:

第三获取模块,用于在获取相邻数据表之间的关联关系,将关联关系输入成本权重值预测模型中,获取成本权重值预测模型输出的成本权重值预测结果之前,获取查询链路样本的样本数据,样本数据包括:在查询链路样本中,相邻数据表样本之间的关联关系;样本数据具有对应的成本权重值;

第四获取模块,用于将与样本数据对应的的成本权重值作为标签,使用样本数据和标签训练机器学习模型,得到成本权重值预测模型。

可选地,数据查询链路确定装置40还包括:

第五获取模块,用于在将相邻数据表之间的关联关系输入成本权重值预测模型中,获取成本权重值预测模型输出的成本权重值预测结果之后,将相邻数据表之间的关联关系作为新的样本数据,并将权重值预测结果,作为与新的样本数据对应的标签;

优化模块,用于使用新的样本数据,以及与新的样本数据对应的标签,优化成本权重值预测模型。

可选地数据查询链路确定装置40还包括:

存储模块,用于在从多条查询链路中,选择出总成本权重值最小的目标查询链路之后,存储目标查询链路,以在后续需要从第一数据表到第二数据表之间的查询链路中,确定出总成本权重值最小的最优查询链路时,将目标查询链路确定为最优查询链路。

在本实施例中,在本实施例中,响应于数据查询请求,获取查询词和目标数据的数据类型,从包括多个数据表的拓扑结构中,确定出从第一数据表到第二数据表的查询链路,根据查询链路中所有相邻数据表之间的子成本权重值,从多条查询链路中,可以动态选择出总成本权重值最小的目标查询链路。成本权重值和查询成本正相关,因此,在第一数据表到第二数据表的查询链路中,目标查询链路的查询成本最小,基于该目标查询链路进行数据查询,可以满足查询成本需求。另外,从拓扑结构中自动选择查询链路,然后根据子成本权重值获取查询链路的总成本权重值,根据查询链路的总成本权重值,自动确定出满足查询成本要求的目标查询链路。相关技术中,通过人工确定查询链路,得到的查询链路的路径长,需要的查询时间长,数据查询效率低本。相对于相关技术的方法,本实施例根据拓扑结构确定目标查询链路,避免了对所有数据表进行扫描,根据所有数据表的扫描结果确定查询链路所造成的耗时长的问题,本实施例节省了数据表扫描的时间,提高了确定目标查询链路的效率,进而提高了数据查询效率。

参照图7,电子设备500可以包括以下一个或多个组件:处理组件502,存储器504,电源组件506,多媒体组件508,音频组件510,输入/输出(I/O)接口512,传感器组件514,以及通信组件516。

处理组件502通常控制电子设备500的整体操作,诸如与显示,电话呼叫,数据通信,相机操作和记录操作相关联的操作。处理组件502可以包括一个或多个处理器520来执行指令,以完成上述的方法的全部或部分步骤。此外,处理组件502可以包括一个或多个模块,便于处理组件502和其他组件之间的交互。例如,处理组件502可以包括多媒体模块,以方便多媒体组件508和处理组件502之间的交互。

存储器504用于存储各种类型的数据以支持在电子设备500的操作。这些数据的示例包括用于在电子设备500上操作的任何应用程序或方法的指令,联系人数据,电话簿数据,消息,图片,多媒体等。存储器504可以由任何类型的易失性或非易失性存储设备或者它们的组合实现,如静态随机存取存储器(SRAM),电可擦除可编程只读存储器(EEPROM),可擦除可编程只读存储器(EPROM),可编程只读存储器(PROM),只读存储器(ROM),磁存储器,快闪存储器,磁盘或光盘。

电源组件506为电子设备500的各种组件提供电力。电源组件506可以包括电源管理系统,一个或多个电源,及其他与为电子设备500生成、管理和分配电力相关联的组件。

多媒体组件508包括在电子设备500和用户之间的提供一个输出接口的界面。在一些实施例中,界面可以包括液晶显示器(LCD)和触摸面板(TP)。如果界面包括触摸面板,界面可以被实现为触摸屏,以接收来自用户的输入信号。触摸面板包括一个或多个触摸传感器以感测触摸、滑动和触摸面板上的手势。触摸传感器可以不仅感测触摸或滑动动作的分界,而且还检测与触摸或滑动操作相关的持续时间和压力。在一些实施例中,多媒体组件508包括一个前置摄像头和/或后置摄像头。当电子设备500处于操作模式,如拍摄模式或多媒体模式时,前置摄像头和/或后置摄像头可以接收外部的多媒体数据。每个前置摄像头和后置摄像头可以是一个固定的光学透镜系统或具有焦距和光学变焦能力。

音频组件510用于输出和/或输入音频信号。例如,音频组件510包括一个麦克风(MIC),当电子设备500处于操作模式,如呼叫模式、记录模式和语音识别模式时,麦克风用于接收外部音频信号。所接收的音频信号可以被进一步存储在存储器504或经由通信组件516发送。在一些实施例中,音频组件510还包括一个扬声器,用于输出音频信号。

输入/输出I/O接口512为处理组件502和外围接口模块之间提供接口,上述外围接口模块可以是键盘,点击轮,按钮等。这些按钮可包括但不限于:主页按钮、音量按钮、启动按钮和锁定按钮。

传感器组件514包括一个或多个传感器,用于为电子设备500提供各个方面的状态评估。例如,传感器组件514可以检测到电子设备500的打开/关闭状态,组件的相对定位,例如组件为电子设备500的显示器和小键盘,传感器组件514还可以检测电子设备500或电子设备500一个组件的位置改变,用户与电子设备500接触的存在或不存在,电子设备500方位或加速/减速和电子设备500的温度变化。传感器组件514可以包括接近传感器,被配置用来在没有任何的物理接触时检测附近物体的存在。传感器组件514还可以包括光传感器,如CMOS或CCD图像传感器,用于在成像应用中使用。在一些实施例中,该传感器组件514还可以包括加速度传感器,陀螺仪传感器,磁传感器,压力传感器或温度传感器。

通信组件516用于便于电子设备500和其他设备之间有线或无线方式的通信。电子设备500可以接入基于通信标准的无线网络,如WiFi,运营商网络(如2G、3G、4G或5G),或它们的组合。在一个示例性实施例中,通信组件516经由广播信道接收来自外部广播管理系统的广播信号或广播相关信息。在一个示例性实施例中,通信组件516还包括近场通信(NFC)模块,以促进短程通信。例如,在NFC模块可基于射频识别(RFID)技术,红外数据协会(IrDA)技术,超宽带(UWB)技术,蓝牙(BT)技术和其他技术来实现。

在示例性实施例中,电子设备500可以被一个或多个应用专用集成电路(ASIC)、数字信号处理器(DSP)、数字信号处理设备(DSPD)、可编程逻辑器件(PLD)、现场可编程门阵列(FPGA)、控制器、微控制器、微处理器或其他电子元件实现,用于实现本申请实施例提供的一种数据查询链路确定方法。

在示例性实施例中,还提供了一种包括指令的非临时性计算机可读存储介质,例如包括指令的存储器504,上述指令可由电子设备500的处理器520执行以完成上述方法。例如,非临时性存储介质可以是ROM、随机存取存储器(RAM)、CD-ROM、磁带、软盘和光数据存储设备等。

图8是本发明另一个实施例的电子设备600的框图。例如,电子设备600可以被提供为一服务器。参照图8,电子设备600包括处理组件622,其进一步包括一个或多个处理器,以及由存储器632所代表的存储器资源,用于存储可由处理组件622的执行的指令,例如应用程序。存储器632中存储的应用程序可以包括一个或一个以上的每一个对应于一组指令的模块。此外,处理组件622被配置为执行指令,以执行本申请实施例提供的一种数据查询链路确定方法。

电子设备600还可以包括一个电源组件626被配置为执行电子设备600的电源管理,一个有线或无线网络接口650被配置为将电子设备600连接到网络,和一个输入/输出(I/O)接口658。电子设备600可以操作基于存储在存储器632的操作系统,例如WindowsServerTM,Mac OS XTM,UnixTM,LinuxTM,FreeBSDTM或类似。

本领域技术人员在考虑说明书及实践这里公开的申请后,将容易想到本申请的其它实施方案。本申请旨在涵盖本申请的任何变型、用途或者适应性变化,这些变型、用途或者适应性变化遵循本申请的一般性原理并包括本公开未公开的本技术领域中的公知常识或惯用技术手段。说明书和实施例仅被视为示例性的,本申请的真正范围和精神由下面的权利要求指出。

应当理解的是,本申请并不局限于上面已经描述并在附图中示出的精确结构,并且可以在不脱离其范围进行各种修改和改变。本申请的范围仅由所附的权利要求来限制

相关技术
  • 数据查询方法、装置、电子设备及计算机可读存储介质
  • 对象特征参数确定方法、装置、电子设备及可读存储介质
  • 通行确定方法及装置、电子设备、计算机可读存储介质
  • 图片真实性的确定方法、装置、电子设备及可读存储介质
  • 对象标签值确定方法、装置、电子设备及可读存储介质
  • 链路确定方法、装置、电子设备及可读存储介质
  • 数据存储方法和装置、数据查询方法和装置、数据结构、电子设备及计算机可读存储介质
技术分类

06120116593929