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

数据查询方法及装置

文献发布时间:2024-04-18 19:57:31


数据查询方法及装置

技术领域

本申请主要涉及数据库技术领域,具体涉及一种数据查询方法及装置。

背景技术

随着信息化的不断深入发展,数据生成速度正在提高,需要处理的数据量急速膨胀,大数据时代即将到来。所谓大数据指所涉及的数据量规模巨大,以至于无法通过主流软件在合理的时间内进行处理的数据。在面对海量数据时,传统关系数据库虽然具有支持完整性约束、支持事务等优点,但是在大规模海量数据面前显得力不从心。大数据查询技术是大数据管理的核心技术之一,伴随着云计算技术以及NoSQL数据库技术的发展,针对大数据查询已经产生了许多新型的查询技术。目前,关于大数据的查询技术都是完整查询,即无论如何定义查询条件匹配算法,无论如何对查询结果集排序,查询都将确定地返回所有匹配数据,查询所需的时间代价较大。并且现有技术要么在联邦查询引擎进行联邦查询,要么通过数据库直接查询,没有根据查询请求的特点选择合适的查询执行方式,造成数据查询效率较低。

也即,现有技术中数据查询效率较低。

发明内容

本申请提供一种数据查询方法及装置,旨在解决现有技术中数据查询效率较低的问题。

第一方面,本申请提供一种数据查询方法,应用于数据查询系统,所述数据查询系统包括联邦查询引擎和多个数据源,所述数据查询方法包括:

获取查询请求;

将所述查询请求拆分为多个查询片段,其中,一个查询片段对应一个数据源;

分别计算所述查询片段在联邦查询引擎执行的联邦执行开销和在多个数据源执行的数据源执行开销;

基于所述查询片段的联邦执行开销和数据源执行开销将各个所述查询片段发送至联邦查询引擎或者多个数据源执行,得到联邦查询引擎执行得到的联邦查询结果或多个数据源执行得到的数据源查询结果;

将所述联邦查询结果和所述数据源查询结果发送至联邦查询引擎进行关联操作,得到目标查询结果。

可选地,所述基于所述查询片段的联邦执行开销和数据源执行开销将各个所述查询片段发送至联邦查询引擎或者多个数据源执行,得到联邦查询引擎执行得到的联邦查询结果或多个数据源执行得到的数据源查询结果,包括:

判断所述查询片段的联邦执行开销是否大于数据源执行开销;

若所述查询片段的联邦执行开销大于数据源执行开销,则将所述查询片段发送对应的数据源执行,得到数据源查询结果;

若所述查询片段的联邦执行开销不大于数据源执行开销,则将所述查询片段发送至联邦查询引擎执行,得到联邦查询结果。

可选地,所述数据查询系统包括多个数据中心,每个所述数据中心包括多个所述数据源;

所述若所述查询片段的联邦执行开销不大于数据源执行开销,则将所述查询片段发送至联邦查询引擎执行,得到联邦查询结果,包括:

若所述查询片段的联邦执行开销不大于数据源执行开销,分别将各个数据中心确定为目标数据中心;

获取所述联邦查询引擎在所述目标数据中心运行时,所述目标数据中心与各个其他数据中心的数据传输量和传输权重;

基于所述目标数据中心与各个其他数据中心的数据传输量和传输权重确定所述联邦查询引擎在所述目标数据中心运行时的运行开销,得到各个数据中心的运行开销;

将所述查询片段发送至联邦查询引擎,控制所述联邦查询引擎在运行开销最小的数据中心执行,得到联邦查询结果。

可选地,所述将所述查询片段发送至联邦查询引擎,控制所述联邦查询引擎在运行开销最小的数据中心执行,得到联邦查询结果,包括:

获取查询片段的语句特征;

判断所述语句特征是否属于流计算特征类型;

若所述语句特征属于流计算特征类型,则将所述查询片段发送至联邦查询引擎,控制所述联邦查询引擎在运行开销最小的数据中心启动流处理型引擎实例运行,得到联邦查询结果。

可选地,所述若所述语句特征属于流计算特征类型,则将所述查询片段发送至联邦查询引擎,控制所述联邦查询引擎在运行开销最小的数据中心启动流处理型引擎实例运行,得到联邦查询结果,包括:

若所述语句特征不属于流计算特征类型,则获取所述查询片段的访问数据量;

若所述访问数据量高于预设数据量,则将所述查询片段发送至联邦查询引擎,控制所述联邦查询引擎在运行开销最小的数据中心启动批处理型引擎实例运行,得到联邦查询结果。

可选地,所述分别计算所述查询片段在联邦查询引擎执行的联邦执行开销和在多个数据源执行的数据源执行开销,包括:

对所述查询片段进行语句解析,得到查询片段中的关联操作;

基于所述关联操作在联邦查询引擎执行时的联邦开销指标计算所述查询片段在联邦查询引擎执行的联邦执行开销,所述联邦开销指标包括输入数据量、输出数据量、网络IO开销以及计算CPU开销至少一种;

基于所述关联操作在多个数据源执行时的数据源开销指标计算所述查询片段在多个数据源执行的数据源执行开销,所述数据源开销指标包括输入数据量、输出数据量、网络IO开销、计算CPU开销以及数据源类型权重中至少一种。

可选地,所述将所述查询请求拆分为多个查询片段,包括:

对查询请求进行基于规则的优化,得到基于规则优化的查询请求;

对基于规则优化的查询请求进行基于代价的优化,得到基于代价优化的查询请求;

将基于代价优化的查询请求拆分为多个查询片段。

第二方面,本申请提供一种数据查询装置,所述数据查询装置应用于数据查询系统,所述数据查询系统包括联邦查询引擎和多个数据源,所述数据查询装置包括:

获取单元,用于获取查询请求;

查询拆分单元,用于将所述查询请求拆分为多个查询片段,其中,一个查询片段对应一个数据源;

开销计算单元,用于分别计算所述查询片段在联邦查询引擎执行的联邦执行开销和在多个数据源执行的数据源执行开销;

查询执行单元,用于基于所述查询片段的联邦执行开销和数据源执行开销将各个所述查询片段发送至联邦查询引擎或者多个数据源执行,得到联邦查询引擎执行得到的联邦查询结果或多个数据源执行得到的数据源查询结果;

查询关联单元,用于将所述联邦查询结果和所述数据源查询结果发送至联邦查询引擎进行关联操作,得到目标查询结果。

可选地,所述查询执行单元,用于:

判断所述查询片段的联邦执行开销是否大于数据源执行开销;

若所述查询片段的联邦执行开销大于数据源执行开销,则将所述查询片段发送对应的数据源执行,得到数据源查询结果;

若所述查询片段的联邦执行开销不大于数据源执行开销,则将所述查询片段发送至联邦查询引擎执行,得到联邦查询结果。

可选地,所述数据查询系统包括多个数据中心,每个所述数据中心包括多个所述数据源;

所述查询执行单元,用于:

若所述查询片段的联邦执行开销不大于数据源执行开销,分别将各个数据中心确定为目标数据中心;

获取所述联邦查询引擎在所述目标数据中心运行时,所述目标数据中心与各个其他数据中心的数据传输量和传输权重;

基于所述目标数据中心与各个其他数据中心的数据传输量和传输权重确定所述联邦查询引擎在所述目标数据中心运行时的运行开销,得到各个数据中心的运行开销;

将所述查询片段发送至联邦查询引擎,控制所述联邦查询引擎在运行开销最小的数据中心执行,得到联邦查询结果。

可选地,所述查询执行单元,用于:

获取查询片段的语句特征;

判断所述语句特征是否属于流计算特征类型;

若所述语句特征属于流计算特征类型,则将所述查询片段发送至联邦查询引擎,控制所述联邦查询引擎在运行开销最小的数据中心启动流处理型引擎实例运行,得到联邦查询结果。

可选地,所述查询执行单元,用于:

若所述语句特征不属于流计算特征类型,则获取所述查询片段的访问数据量;

若所述访问数据量高于预设数据量,则将所述查询片段发送至联邦查询引擎,控制所述联邦查询引擎在运行开销最小的数据中心启动批处理型引擎实例运行,得到联邦查询结果。

可选地,所述开销计算单元,用于:

对所述查询片段进行语句解析,得到查询片段中的关联操作;

基于所述关联操作在联邦查询引擎执行时的联邦开销指标计算所述查询片段在联邦查询引擎执行的联邦执行开销,所述联邦开销指标包括输入数据量、输出数据量、网络IO开销以及计算CPU开销至少一种;

基于所述关联操作在多个数据源执行时的数据源开销指标计算所述查询片段在多个数据源执行的数据源执行开销,所述数据源开销指标包括输入数据量、输出数据量、网络IO开销、计算CPU开销以及数据源类型权重中至少一种。

可选地,所述查询拆分单元,用于:

对查询请求进行基于规则的优化,得到基于规则优化的查询请求;

对基于规则优化的查询请求进行基于代价的优化,得到基于代价优化的查询请求;

将基于代价优化的查询请求拆分为多个查询片段。

第三方面,本申请提供一种计算机设备,所述计算机设备包括:

一个或多个处理器;

存储器;以及

一个或多个应用程序,其中所述一个或多个应用程序被存储于所述存储器中,并配置为由所述处理器执行以实现第一方面中任一项所述的数据查询方法。

第四方面,本申请提供一种计算机可读存储介质,所述计算机可读存储介质存储有多条指令,所述指令适于处理器进行加载,以执行第一方面中任一项所述的数据查询方法中的步骤。

本申请提供一种数据查询方法及装置,应用于数据查询系统,数据查询系统包括联邦查询引擎和多个数据源,数据查询方法包括:获取查询请求;将查询请求拆分为多个查询片段,其中,一个查询片段对应一个数据源;分别计算查询片段在联邦查询引擎执行的联邦执行开销和在多个数据源执行的数据源执行开销;基于查询片段的联邦执行开销和数据源执行开销将各个查询片段发送至联邦查询引擎或者多个数据源执行,得到联邦查询引擎执行得到的联邦查询结果或多个数据源执行得到的数据源查询结果;将联邦查询结果和数据源查询结果发送至联邦查询引擎进行关联操作,得到目标查询结果。本申请在现有技术中将查询请求要么放在联邦查询引擎执行要么放在多个数据源处执行,没有根据查询请求的特点选择合适的执行方式,导致数据查询效率较低的情况下,创造性地提出一种数据查询方法,先将查询请求分为多个查询片段,然后根据各个查询片段的联邦执行开销和数据源执行开销确定各个查询片段的执行位置,从而使各个查询片段都能够通过对应的执行方式快速完成查询,得到对应的查询结果,最后将各个查询片段的查询结果关联得到目标查询结果,能够提高数据查询效率。

附图说明

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

图1是本申请实施例所提供的数据查询系统的场景示意图;

图2是本申请实施例中数据查询方法的一个实施例流程示意图;

图3是本申请实施例中提供的数据查询装置的一个实施例结构示意图;

图4是本申请实施例中提供的计算机设备的一个实施例结构示意图。

具体实施方式

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

在本申请的描述中,需要理解的是,术语“中心”、“纵向”、“横向”、“长度”、“宽度”、“厚度”、“上”、“下”、“前”、“后”、“左”、“右”、“竖直”、“水平”、“顶”、“底”、“内”、“外”等指示的方位或位置关系为基于附图所示的方位或位置关系,仅是为了便于描述本申请和简化描述,而不是指示或暗示所指的装置或元件必须具有特定的方位、以特定的方位构造和操作,因此不能理解为对本申请的限制。此外,术语“第一”、“第二”仅用于描述目的,而不能理解为指示或暗示相对重要性或者隐含指明所指示的技术特征的数量。由此,限定有“第一”、“第二”的特征可以明示或者隐含地包括一个或者更多个特征。在本申请的描述中,“多个”的含义是两个或两个以上,除非另有明确具体的限定。

在本申请中,“示例性”一词用来表示“用作例子、例证或说明”。本申请中被描述为“示例性”的任何实施例不一定被解释为比其它实施例更优选或更具优势。为了使本领域任何技术人员能够实现和使用本申请,给出了以下描述。在以下描述中,为了解释的目的而列出了细节。应当明白的是,本领域普通技术人员可以认识到,在不使用这些特定细节的情况下也可以实现本申请。在其它实例中,不会对公知的结构和过程进行详细阐述,以避免不必要的细节使本申请的描述变得晦涩。因此,本申请并非旨在限于所示的实施例,而是与符合本申请所公开的原理和特征的最广范围相一致。

本申请实施例提供一种数据查询方法及装置,以下分别进行详细说明。

请参阅图1,图1是本申请实施例所提供的数据查询系统的场景示意图,该数据查询系统可以包括计算机设备100,计算机设备100中集成有数据查询装置。

本申请实施例中,该计算机设备100可以是独立的服务器,也可以是服务器组成的服务器网络或服务器集群,例如,本申请实施例中所描述的计算机设备100,其包括但不限于计算机、网络主机、单个网络服务器、多个网络服务器集或多个服务器构成的云服务器。其中,云服务器由基于云计算(CloudComputing)的大量计算机或网络服务器构成。

本申请实施例中,上述的计算机设备100可以是一个通用计算机设备或者是一个专用计算机设备。在具体实现中计算机设备100可以是台式机、便携式电脑、网络服务器、掌上电脑(Personal Digital Assistant,PDA)、移动手机、平板电脑、无线终端设备、通信设备、嵌入式设备等,本实施例不限定计算机设备100的类型。

本申请实施例中,数据查询系统包括与计算机设备100连接的联邦查询引擎110和多个数据中心120,每个数据中心120管理多个数据源130。数据中心是全球协作的特定设备网络,用来在internet网络基础设施上传递、加速、展示、计算、存储数据信息。数据源是指数据库应用程序所使用的数据库或者数据库服务器。数据源(Data Source)顾名思义,数据的来源,是提供某种所需要数据的器件或原始媒体。在数据源中存储了所有建立数据库连接的信息。就像通过指定文件名称可以在文件系统中找到文件一样,通过提供正确的数据源名称,你可以找到相应的数据库连接。数据源可以为MySQL、Hbase、Redis、Mongodb、Hive、Hadoop等。

如果我们需要将不同存储来源的数据进行关联,我们需要对数据进行提取,并放到同一种存储介质里面,比如都放到HBase中,然后再进行关联操作。这种数据割裂,会对我们的数据关联分析带来很大的麻烦,联邦查询引擎能够分别查询不同数据源的数据,然后直接进行关联操作,得到最终查询结果。联邦查询引擎可以为JdbcStorageHandler,联邦查询引擎可以在Hive中使用标准的JDBC方式读取存储在不同数据存储里面的数据。比如我们可以在Hive中分别读取MySQL和Phoenix里面的数据,然后进行关联。进行关联使用关联操作jion语句。关联操作jion是利用两张或多张表中相同的属性,将两张或多张表的记录结合在一起的操作。其提供高效,统一的SQL访问。

本领域技术人员可以理解,图1中示出的应用环境,仅仅是本申请方案的一种应用场景,并不构成对本申请方案应用场景的限定,其他的应用环境还可以包括比图1中所示更多或更少的计算机设备,例如图1中仅示出1个计算机设备,可以理解的,该数据查询系统还可以包括一个或多个可处理数据的其他计算机设备,具体此处不作限定。

另外,如图1所示,该数据查询系统还可以包括存储器200,用于存储数据。

需要说明的是,图1所示的数据查询系统的场景示意图仅仅是一个示例,本申请实施例描述的数据查询系统以及场景是为了更加清楚的说明本申请实施例的技术方案,并不构成对于本申请实施例提供的技术方案的限定,本领域普通技术人员可知,随着数据查询系统的演变和新业务场景的出现,本申请实施例提供的技术方案对于类似的技术问题,同样适用。

首先,本申请实施例中提供一种数据查询方法,该数据查询方法包括:获取查询请求;将查询请求拆分为多个查询片段,其中,一个查询片段对应一个数据源;分别计算查询片段在联邦查询引擎执行的联邦执行开销和在多个数据源执行的数据源执行开销;基于查询片段的联邦执行开销和数据源执行开销将各个查询片段发送至联邦查询引擎或者多个数据源执行,得到联邦查询引擎执行得到的联邦查询结果或多个数据源执行得到的数据源查询结果;将联邦查询结果和数据源查询结果发送至联邦查询引擎进行关联操作,得到目标查询结果。

如图2所示,图2是本申请实施例中数据查询方法的一个实施例流程示意图,该数据查询方法包括如下步骤S201~S205:

S201、获取查询请求。

在一个具体的实施例中,通过统一接口获取用户输入的查询请求。查询请求为SQL语句。结构化查询语言(Structured Query Language)简称SQL,是一种特殊目的的编程语言,是一种数据库查询和程序设计语言,用于存取数据以及查询、更新和管理关系数据库系统。统一接口可以为JDBC接口。JDBC的全称是Java Database Connectivity,即Java数据库连接,它是一种可以执行SQL语句的Java API。程序可以通过JDBC API连接到关系数据库,并使用结构化查询语言来完成对数据库的查询和更新。

S202、将查询请求拆分为多个查询片段,其中,一个查询片段对应一个数据源。

将查询请求拆分成一个查询片段对应一个数据源,对同一个数据源的查询作为一个查询片段统一进行查询,可以提高查询效率。具体的,可以使用leftjoin语句进行查询拆分。

在一个具体的实施例中,在将查询请求拆分为多个查询片段之前,获取查询请求中的过滤操作和关联操作。过滤操作使用where语句,过滤条件一般由要过滤的字段、操作符、限定值三部分组成。关联操作join用于根据两个或多个表中的列之间的关系,从这些表中查询数据。对SQL查询请求中的过滤操作和关联操作进行重排,将SQL查询请求中的过滤操作排序在关联操作之前。可以使SQL查询请求先执行过滤操作再进行关联操作,能够提高查询速度。

本申请实施例中,将查询请求拆分为多个查询片段,可以包括:

(1)对查询请求进行基于规则的优化,得到基于规则优化的查询请求。

SQL优化器分为RBO(Rule-Based Optimizer,基于规则的优化器)和CBO(Cost-Based Optimizer,基于代价的优化器)。目的是为了得到SQL查询请求的执行计划。RBO按照硬编码在数据库中的一系列规则来决定SQL的执行计划。以Oracle数据库为例,RBO根据Oracle指定的优先顺序规则,对指定的表进行执行计划的选择。比如在规则中:索引的优先级大于全表扫描。CBO通过根据优化规则对关系表达式进行转换,生成多个执行计划。具体的,对查询请求的语句进行解析,得到查询请求的关系表达式,根据多个优化规则对关系表达式进行转换,生成多个执行计划。例如一个优化规则为将关系表达式中的扫描方式修改为全表扫描,全表扫描指令为:Access Path:TableScan。另一个优化规则为将关系表达式中的扫描方式修改为索引全顺序扫描,索引全顺序扫描指令为:Access Path:index(AllEqRange)。然后CBO会通过根据统计信息(Statistics)和代价模型(Cost Model)计算各种可能“执行计划”的“代价”,即COST,从中选用COST最低的执行方案,作为实际运行方案。CBO依赖数据库对象的统计信息,统计信息的准确与否会影响CBO做出最优的选择。以Oracle数据库为例,统计信息包括SQL执行路径的I/O、网络资源、CPU的使用情况。

具体的,利用CBO对查询请求进行基于规则的优化,得到基于规则优化的查询请求。

(2)对基于规则优化的查询请求进行基于代价的优化,得到基于代价优化的查询请求。

利用CBO对查询请求进行基于代价的优化,得到基于代价优化的查询请求。

(3)将基于代价优化的查询请求拆分为多个查询片段。

S203、分别计算查询片段在联邦查询引擎执行的联邦执行开销和在多个数据源执行的数据源执行开销。

执行开销是程序执行过程中消耗在与程序本身逻辑不直接相关的代码上的时间。如操作系统调度的开销。执行开销越小,执行效率越高。

在一个具体的实施例中,分别计算查询片段在联邦查询引擎执行的联邦执行开销和在多个数据源执行的数据源执行开销,可以包括:

(1)对查询片段进行语句解析,得到查询片段中的关联操作。

查询片段中的关联操作为查询片段中的所有关联操作jion语句。

(2)基于关联操作在联邦查询引擎执行时的联邦开销指标计算查询片段在联邦查询引擎执行的联邦执行开销,联邦开销指标包括输入数据量、输出数据量、网络IO开销以及计算CPU开销至少一种。

具体的,通过SQL Server获取关联操作执行时输入数据量、输出数据量、网络IO开销以及计算CPU开销。将输入数据量、输出数据量、网络IO开销以及计算CPU开销归一化并求和,得到联邦执行开销。

(3)基于关联操作在多个数据源执行时的数据源开销指标计算查询片段在多个数据源执行的数据源执行开销,数据源开销指标包括输入数据量、输出数据量、网络IO开销、计算CPU开销以及数据源类型权重中至少一种。

具体的,通过SQL Server获取关联操作执行时输入数据量、输出数据量、网络IO开销、计算CPU开销以及数据源类型权重。其中,数据源类型权重为数据源执行关联操作时的权重系数,不同类型的数据源的数据源类型权重不同,根据具体情况设定即可。将输入数据量、输出数据量、网络IO开销以及计算CPU开销,将输入数据量、输出数据量、网络IO开销以及计算CPU开销归一化并求和,得到执行总开销,将执行总开销与数据源类型权重相乘,得到数据源执行开销。

S204、基于查询片段的联邦执行开销和数据源执行开销将各个查询片段发送至联邦查询引擎或者多个数据源执行,得到联邦查询引擎执行得到的联邦查询结果或多个数据源执行得到的数据源查询结果。

其中,各个查询片段中每个查询片段被发送至联邦查询引擎或者数据源执行,每个查询片段对应一个联邦查询结果或者一个数据源查询结果。当查询片段被发送至联邦查询引擎时,得到查询片段对应的联邦查询结果;当查询片段被发送至数据源时,得到查询片段对应的数据源查询结果,所以最终的所有查询结果中可能存在联邦查询结果和数据源查询结果,也可能只存在联邦查询结果或数据源查询结果。

在一个具体的实施例中,基于查询片段的联邦执行开销和数据源执行开销将各个查询片段发送至联邦查询引擎或者多个数据源执行,得到联邦查询引擎执行得到的联邦查询结果或多个数据源执行得到的数据源查询结果,可以包括:

(1)判断查询片段的联邦执行开销是否大于数据源执行开销。

(2)若查询片段的联邦执行开销大于数据源执行开销,则将查询片段发送至对应的数据源执行,得到数据源查询结果。

(3)若查询片段的联邦执行开销不大于数据源执行开销,则将查询片段发送至联邦查询引擎执行,得到联邦查询结果。

将查询片段发送至执行开销较小的位置进行查询,能够提高查询效率。

在一个具体的实施例中,若查询片段的联邦执行开销不大于数据源执行开销,则将查询片段发送至联邦查询引擎执行,得到联邦查询结果,包括:

(1)若查询片段的联邦执行开销不大于数据源执行开销,分别将各个数据中心确定为目标数据中心。

本申请实施例中,数据中心是全球协作的特定设备网络,用来在internet网络基础设施上传递、加速、展示、计算、存储数据信息。数据查询系统包括多个数据中心。每个数据中心管理多个数据源。

(2)获取联邦查询引擎在目标数据中心运行时,目标数据中心与各个其他数据中心的数据传输量和传输权重。

具体的,根据数据中心之间进行数据传输的传输带宽确定传输权重。不同数据中心之间进行数据传输的传输带宽不同,传输带宽越大传输权重越小。

(3)基于目标数据中心与各个其他数据中心的数据传输量和传输权重确定联邦查询引擎在目标数据中心运行时的运行开销,得到各个数据中心的运行开销。

具体的,基于目标数据中心与各个其他数据中心的数据传输量和传输权重进行加权求和,得到目标数据中心的运行开销。分别将各个数据中心确定为目标数据中心计算运行开销,得到各个数据中心的运行开销。

(4)将查询片段发送至联邦查询引擎,控制联邦查询引擎在运行开销最小的数据中心执行,得到联邦查询结果。

数据传输量越大,表明将目标数据中心作为联邦查询引擎执行位置传输的数据量越大,运行开销越大;传输权重越大,说明传输带宽越小,表明将目标数据中心作为联邦查询引擎执行位置传输数据越慢,运行开销越大。因此,将联邦查询引擎在运行开销最小的数据中心执行,能够在运行开销最小的情况下完成查询,能够减少数据传输,增加数据传输速度,从而提高查询效率。

进一步的,将查询片段发送至联邦查询引擎,控制联邦查询引擎在运行开销最小的数据中心执行,得到联邦查询结果,可以包括:

(1)获取查询片段的语句特征。

例如,语句特征可以为HOP-WINDOW、Session window等语法。

(2)判断语句特征是否属于流计算特征类型。

例如,流计算特征类型可以为HOP-WINDOW。

(3)若语句特征属于流计算特征类型,则将查询片段发送至联邦查询引擎,控制联邦查询引擎在运行开销最小的数据中心启动流处理型引擎实例运行,得到联邦查询结果。

流计算型引擎适合执行低时延的流处理任务,包括但不限于Flink引擎。启动流处理型引擎实例执行流计算特征类型的查询片段,能够符合查询片段的语句特征,从而能够更快进行查询。

进一步的,若语句特征不属于流计算特征类型,则获取查询片段的访问数据量。访问数据量为查询片段所访问的数据表的数据量总和。若访问数据量高于预设数据量,表明此时数据量较大,则将查询片段发送至联邦查询引擎,控制联邦查询引擎在运行开销最小的数据中心启动批处理型引擎实例运行,得到联邦查询结果。批计算型引擎适合执行大规模批处理任务,适用于数据量大,对稳定性要求高的场景,包括但不限于Spark引擎。启动流处理型引擎实例执行查询片段,能够符合查询片段数据量较大的特征,从而能够更快进行查询。

进一步的,若访问数据量不高于预设数据量,则将查询片段发送至联邦查询引擎,控制联邦查询引擎在运行开销最小的数据中心启动OLAP型引擎实例运行,得到联邦查询结果。OLAP型引擎适合执行即席查询,适用于数量不大,对返回结果时延要求较高的场景,包括但不限于Presto引擎。启动LAP型引擎实例执行查询片段,能够符合查询片段数量不大的特征,从而能够更快进行查询。

S205、将联邦查询结果和数据源查询结果发送至联邦查询引擎进行关联操作,得到目标查询结果。

其中,目标查询结果包括各个发送至数据源执行返回的多个查询片段对应的多个片段查询结果。

具体的,将联邦查询结果和数据源查询结果发送至联邦查询引擎,控制联邦查询引擎对联邦查询结果和数据源查询结果进行关联操作,得到目标查询结果。即,通过联邦查询引擎将数据源查询结果中多个片段查询结果与联邦查询结果组合为一个整体的目标查询结果。联邦查询结果和数据源查询结果以表的形式存储。进行关联操作使用关联操作jion语句,关联操作jion是利用两张或多张表中相同的属性,将两张或多张表的记录结合在一起的操作。

进一步的,将目标查询结果通过同一接口发送至用户端。

为了更好实施本申请实施例中数据查询方法,在数据查询方法基础之上,本申请实施例中还提供一种数据查询装置,如图3所示,数据查询装置300包括:

获取单元301,用于获取查询请求;

查询拆分单元302,用于将查询请求拆分为多个查询片段,其中,一个查询片段对应一个数据源;

开销计算单元303,用于分别计算查询片段在联邦查询引擎执行的联邦执行开销和在多个数据源执行的数据源执行开销;

查询执行单元304,用于基于查询片段的联邦执行开销和数据源执行开销将各个查询片段发送至联邦查询引擎或者多个数据源执行,得到联邦查询引擎执行得到的联邦查询结果或多个数据源执行得到的数据源查询结果;

查询关联单元305,用于将联邦查询结果和数据源查询结果发送至联邦查询引擎进行关联操作,得到目标查询结果。

可选地,查询执行单元304,用于:

判断查询片段的联邦执行开销是否大于数据源执行开销;

若查询片段的联邦执行开销大于数据源执行开销,则将查询片段发送对应的数据源执行,得到数据源查询结果;

若查询片段的联邦执行开销不大于数据源执行开销,则将查询片段发送至联邦查询引擎执行,得到联邦查询结果。

可选地,数据查询系统包括多个数据中心,每个数据中心包括多个数据源;

查询执行单元304,用于:

若查询片段的联邦执行开销不大于数据源执行开销,分别将各个数据中心确定为目标数据中心;

获取联邦查询引擎在目标数据中心运行时,目标数据中心与各个其他数据中心的数据传输量和传输权重;

基于目标数据中心与各个其他数据中心的数据传输量和传输权重确定联邦查询引擎在目标数据中心运行时的运行开销,得到各个数据中心的运行开销;

将查询片段发送至联邦查询引擎,控制联邦查询引擎在运行开销最小的数据中心执行,得到联邦查询结果。

可选地,查询执行单元304,用于:

获取查询片段的语句特征;

判断语句特征是否属于流计算特征类型;

若语句特征属于流计算特征类型,则将查询片段发送至联邦查询引擎,控制联邦查询引擎在运行开销最小的数据中心启动流处理型引擎实例运行,得到联邦查询结果。

可选地,查询执行单元304,用于:

若语句特征不属于流计算特征类型,则获取查询片段的访问数据量;

若访问数据量高于预设数据量,则将查询片段发送至联邦查询引擎,控制联邦查询引擎在运行开销最小的数据中心启动批处理型引擎实例运行,得到联邦查询结果。

可选地,开销计算单元303,用于:

对查询片段进行语句解析,得到查询片段中的关联操作;

基于关联操作在联邦查询引擎执行时的联邦开销指标计算查询片段在联邦查询引擎执行的联邦执行开销,联邦开销指标包括输入数据量、输出数据量、网络IO开销以及计算CPU开销至少一种;

基于关联操作在多个数据源执行时的数据源开销指标计算查询片段在多个数据源执行的数据源执行开销,数据源开销指标包括输入数据量、输出数据量、网络IO开销、计算CPU开销以及数据源类型权重中至少一种。

可选地,查询拆分单元302,用于:

对查询请求进行基于规则的优化,得到基于规则优化的查询请求;

对基于规则优化的查询请求进行基于代价的优化,得到基于代价优化的查询请求;

将基于代价优化的查询请求拆分为多个查询片段。

本申请实施例还提供一种计算机设备,其集成了本申请实施例所提供的任一种数据查询装置,计算机设备包括:

一个或多个处理器;

存储器;以及

一个或多个应用程序,其中一个或多个应用程序被存储于存储器中,并配置为由处理器执行上述数据查询方法实施例中任一实施例中的数据查询方法中的步骤。

如图4所示,其示出了本申请实施例所涉及的计算机设备的结构示意图,具体来讲:

该计算机设备可以包括一个或者一个以上处理核心的处理器401、一个或一个以上计算机可读存储介质的存储器402、电源403和输入单元404等部件。本领域技术人员可以理解,图中示出的计算机设备结构并不构成对计算机设备的限定,可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件布置。其中:

处理器401是该计算机设备的控制中心,利用各种接口和线路连接整个计算机设备的各个部分,通过运行或执行存储在存储器402内的软件程序和/或模块,以及调用存储在存储器402内的数据,执行计算机设备的各种功能和处理数据,从而对计算机设备进行整体监控。可选的,处理器401可包括一个或多个处理核心;处理器401可以是中央处理单元(Central Processing Unit,CPU),还可以是其他通用处理器、数字信号处理器(DigitalSignal Processor,DSP)、专用集成电路(Application Specific Integrated Circuit,ASIC)、现成可编程门阵列(Field-Programmable Gate Array,FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等,优选的,处理器401可集成应用处理器和调制解调处理器,其中,应用处理器主要处理操作系统、用户界面和应用程序等,调制解调处理器主要处理无线通信。可以理解的是,上述调制解调处理器也可以不集成到处理器401中。

存储器402可用于存储软件程序以及模块,处理器401通过运行存储在存储器402的软件程序以及模块,从而执行各种功能应用以及数据处理。存储器402可主要包括存储程序区和存储数据区,其中,存储程序区可存储操作系统、至少一个功能所需的应用程序(比如声音播放功能、图像播放功能等)等;存储数据区可存储根据计算机设备的使用所创建的数据等。此外,存储器402可以包括高速随机存取存储器,还可以包括非易失性存储器,例如至少一个磁盘存储器件、闪存器件、或其他易失性固态存储器件。相应地,存储器402还可以包括存储器控制器,以提供处理器401对存储器402的访问。

计算机设备还包括给各个部件供电的电源403,优选的,电源403可以通过电源管理系统与处理器401逻辑相连,从而通过电源管理系统实现管理充电、放电、以及功耗管理等功能。电源403还可以包括一个或一个以上的直流或交流电源、再充电系统、电源故障检测电路、电源转换器或者逆变器、电源状态指示器等任意组件。

该计算机设备还可包括输入单元404,该输入单元404可用于接收输入的数字或字符信息,以及产生与用户设置以及功能控制有关的键盘、鼠标、操作杆、光学或者轨迹球信号输入。

尽管未示出,计算机设备还可以包括显示单元等,在此不再赘述。具体在本实施例中,计算机设备中的处理器401会按照如下的指令,将一个或一个以上的应用程序的进程对应的可执行文件加载到存储器402中,并由处理器401来运行存储在存储器402中的应用程序,从而实现各种功能,如下:

获取查询请求;将查询请求拆分为多个查询片段,其中,一个查询片段对应一个数据源;分别计算查询片段在联邦查询引擎执行的联邦执行开销和在多个数据源执行的数据源执行开销;基于查询片段的联邦执行开销和数据源执行开销将各个查询片段发送至联邦查询引擎或者多个数据源执行,得到联邦查询引擎执行得到的联邦查询结果或多个数据源执行得到的数据源查询结果;将联邦查询结果和数据源查询结果发送至联邦查询引擎进行关联操作,得到目标查询结果。

本领域普通技术人员可以理解,上述实施例的各种方法中的全部或部分步骤可以通过指令来完成,或通过指令控制相关的硬件来完成,该指令可以存储于一计算机可读存储介质中,并由处理器进行加载和执行。

为此,本申请实施例提供一种计算机可读存储介质,该存储介质可以包括:只读存储器(ROM,Read Only Memory)、随机存取记忆体(RAM,RandomAccess Memory)、磁盘或光盘等。其上存储有计算机程序,计算机程序被处理器进行加载,以执行本申请实施例所提供的任一种数据查询方法中的步骤。例如,计算机程序被处理器进行加载可以执行如下步骤:

获取查询请求;将查询请求拆分为多个查询片段,其中,一个查询片段对应一个数据源;分别计算查询片段在联邦查询引擎执行的联邦执行开销和在多个数据源执行的数据源执行开销;基于查询片段的联邦执行开销和数据源执行开销将各个查询片段发送至联邦查询引擎或者多个数据源执行,得到联邦查询引擎执行得到的联邦查询结果或多个数据源执行得到的数据源查询结果;将联邦查询结果和数据源查询结果发送至联邦查询引擎进行关联操作,得到目标查询结果。

在上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述的部分,可以参见上文针对其他实施例的详细描述,此处不再赘述。

具体实施时,以上各个单元或结构可以作为独立的实体来实现,也可以进行任意组合,作为同一或若干个实体来实现,以上各个单元或结构的具体实施可参见前面的方法实施例,在此不再赘述。

以上各个操作的具体实施可参见前面的实施例,在此不再赘述。

以上对本申请实施例所提供的一种数据查询方法及装置进行了详细介绍,本文中应用了具体个例对本申请的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本申请的方法及其核心思想;同时,对于本领域的技术人员,依据本申请的思想,在具体实施方式及应用范围上均会有改变之处,综上,本说明书内容不应理解为对本申请的限制。

相关技术
  • 射频数据表生成方法及装置、射频值查询方法及装置
  • 电子装置、基于多个临时数据表的数据查询方法及存储介质
  • 基于分布式数据库的信息查询方法及装置、电子设备
  • 一种数据查询方法、装置、电子设备及存储介质
  • 数据查询方法、装置、计算机存储介质及服务器
  • 硬件数据库查询方法、数据库系统查询方法及装置
  • 硬件数据库查询方法、数据库系统查询方法及装置
技术分类

06120116458622