查询语句的处理方法、装置、设备及介质与流程

文档序号:26004722发布日期:2021-07-23 21:22阅读:60来源:国知局
查询语句的处理方法、装置、设备及介质与流程

本发明属于计算机技术领域,尤其涉及一种查询语句的处理方法、装置、设备及介质。



背景技术:

在用户利用结构化查询语言(structuredquerylanguage,sql)查询语句进行数据查询时,当服务器接收到sql查询语句后,首先会将sql查询语句中的表达式解析成表达式树,然后以递归的方式调用并执行表达式树中各个节点对应的计算单元,从而得到sql查询语句的运算处理结果。

但是,以递归的方式调用表达式中的各个计算单元的过程中,会降低表达式的运算处理速度,从而降低sql查询语句对应的运算处理速度,进而降低数据查询效率。



技术实现要素:

本发明实施例提供一种查询语句的处理方法、装置、设备及介质,能够提高查询语句对应的运算处理速度。

第一方面,本发明实施例提供了一种查询语句的处理方法,包括:

获取查询语句中的第一计算表达式;其中,第一计算表达式包括多个第一计算单元;

根据运算优先级由高到低的顺序,生成多个第一计算单元对应的第一计算单元序列;

按照第一计算单元序列的序列顺序,对每个第一计算单元的输入数据执行该第一计算单元对应的运算处理,得到查询语句对应的运算处理结果。

第二方面,本发明实施例提供了一种查询语句的处理装置,包括:

第一表达式获取模块,用于获取查询语句中的第一计算表达式;其中,第一计算表达式包括多个第一计算单元;

第一序列生成模块,用于根据运算优先级由高到低的顺序,生成多个第一计算单元对应的第一计算单元序列;

运算处理模块,用于按照第一计算单元序列的序列顺序,对每个第一计算单元的输入数据执行该第一计算单元对应的运算处理,得到查询语句对应的运算处理结果。

第三方面,本发明实施例提供了一种查询语句的处理设备,设备包括:处理器以及存储有计算机程序指令的存储器;

处理器执行计算机程序指令时实现如第一方面所述的查询语句的处理方法。

第四方面,本发明实施例提供了一种计算机可读存储介质,计算机可读存储介质上存储有计算机程序指令,计算机程序指令被处理器执行时实现如第一方面所述的查询语句的处理方法。

本发明实施例的查询语句的处理方法、装置、设备及介质,能够在获取查询语句中的第一计算表达式之后,按照第一计算表达式中的多个第一计算单元的运算优先级由高到低的顺序,生成第一计算单元序列,并按照第一计算单元序列的序列顺序,对每个第一计算单元的输入数据执行该第一计算单元对应的运算处理,得到查询语句对应的运算处理结果,从而实现以非递归的方式依次调用第一表达式中的每个第一计算单元,相比于以递归的方式调用表达式中的计算单元的方法,可以提高表达式中的计算单元的调用速度和运算效率,从而提高查询语句的运算处理速度,进而提高数据查询效率。

附图说明

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

图1是本发明一个实施例提供的查询语句的处理方法的流程示意图;

图2是本发明一个实施例提供的表达式树的抽象结构示意图;

图3是本发明实施例提供的表达式树的一个具体示例的结构示意图;

图4是图2所示表达式树的遍历流程示意图;

图5是图3所示表达式树的遍历结果示意图;

图6是本发明一个实施例提供的数据槽的结构示意图;

图7是本发明一个实施例提供的运算处理过程的流程示意图;

图8是本发明一个实施例提供的控制数据槽的工作原理示意图;

图9是本发明一个实施例提供的多线程运算处理的流程示意图;

图10是本发明一个实施例提供的查询语句的处理装置的结构示意图;

图11是本发明实施例提供的查询语句的处理设备的硬件结构示意图。

具体实施方式

下面将详细描述本发明的各个方面的特征和示例性实施例,为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及具体实施例,对本发明进行进一步详细描述。应理解,此处所描述的具体实施例仅被配置为解释本发明,并不被配置为限定本发明。对于本领域技术人员来说,本发明可以在不需要这些具体细节中的一些细节的情况下实施。下面对实施例的描述仅仅是为了通过示出本发明的示例来提供对本发明更好的理解。

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

在用户利用sql查询语句进行数据查询时,当服务器接收到sql查询语句后,首先会将sql查询语句中的表达式解析成表达式树,然后以递归的方式调用并执行表达式树中各个节点对应的计算单元,从而得到sql查询语句的运算处理结果。具体地,首先调用表达式树的根节点对应的计算单元,而根节点对应的计算单元会调用自身的子节点对应的计算单元,这样的调用会不断递归下下去,直到叶子节点对应的计算单元返回,等待叶子节点对应的计算单元及各个子节点的计算单元完成计算后,根节点对应的计算单元才获取所需的数据,并且完成计算获取最终的表达式运算结果。

但是,以递归的方式调用表达式中的各个计算单元的过程中,会降低表达式的运算处理速度,从而降低sql查询语句对应的运算处理速度,进而降低数据查询效率。

为了解决现有技术问题,本发明实施例提供了一种查询语句的处理方法、装置、设备及介质。下面首先对本发明实施例所提供的查询语句的处理方法进行介绍。

图1示出了本发明一个实施例提供的查询语句的处理方法的流程示意图。图1所示的方法可以由执行数据查询的服务器来执行。其中,服务器可以是一种高性能的电子计算器,用于存储和处理数据。

如图1所示,该查询语句的处理方法可以包括:

s110、获取查询语句中的第一计算表达式;其中,第一计算表达式包括多个第一计算单元;

s120、根据运算优先级由高到低的顺序,生成多个第一计算单元对应的第一计算单元序列;

s130、按照第一计算单元序列的序列顺序,对每个第一计算单元的输入数据执行该第一计算单元对应的运算处理,得到查询语句对应的运算处理结果。

在本发明实施例中,能够在获取查询语句中的第一计算表达式之后,按照第一计算表达式中的多个第一计算单元的运算优先级由高到低的顺序,生成第一计算单元序列,并按照第一计算单元序列的序列顺序,对每个第一计算单元的输入数据执行该第一计算单元对应的运算处理,得到查询语句对应的运算处理结果,从而实现以非递归的方式依次调用第一表达式中的每个第一计算单元,相比于以递归的方式调用表达式中的计算单元的方法,可以提高表达式中的计算单元的调用速度和运算效率,从而提高查询语句的运算处理速度,进而提高数据查询效率。

在本发明一些实施例中,执行数据查询的服务器可以为数据库提供方的服务器。当服务器接收到数据查询设备发送的查询语句后,即可以根据本发明实施例提供的查询语句的处理方法对接收到的查询语句进行处理。

其中,数据查询设备具体可以是手机、平板电脑、个人电脑等。

在本发明一些实施例中,查询语句可以包括sql查询语句、对象查询语言(objectquerylanguage,oql)查询语句等,查询语句的类型并不局限于上述的举例,还可以为其它类型的查询语句,在此不做赘述。

在本发明一些实施例的s110中,可以查询语句进行解析,以获取第一计算表达式,其中,第一计算表达式可以是查询语句中不受任何条件限制的、单独存在的计算表达式。

为了简化计算表达式,可以将第一计算表达式抽象为多个第一计算单元,即在本发明实施例中,第一计算表达式包括多个第一计算单元。其中,每个完整的第一计算单元包括三个部分:输入、运算功能和输出,具体地,第一计算单元的计算过程为对输入进行运算功能对应的运算处理得到输出。

在本发明一些实施例中,s120的具体方法可以包括:

将第一计算表达式解析为第一表达式树;其中,第一表达式树的每个节点对应一个第一计算单元,第一表达式树的根节点为运算优先级最低的第一计算单元,第一表达式树的叶子节点为运算优先级最高的第一计算单元;

按照后序深度优先顺序,由根节点向叶子节点遍历第一表达式树的每个节点对应的第一计算单元,生成第一计算单元序列。

在这些实施例中,可以将运算优先级最低的第一计算单元,作为第一表达式树的根节点,将运算优先级高于根节点对应的第一计算单元且与其具有直接运算关系的第一计算单元,作为该根节点的一级子节点对应的第一计算单元,以此类推,将运算优先级最高的第一计算单元,作为第一表达式树的叶子节点。

可见,第一表达式树中的每个节点拥有0个或至少一个子节点,每个节点对应的第一计算单元的计算,只有在该节点的所有子节点计算完成的情况下才能执行。

图2示出了本发明一个实施例提供的表达式树的抽象结构示意图。如图2所示,在该表达式树中,运算优先级由根节点至叶子节点越来越高。其中,该表达式树中的根节点对应计算单元1,根节点的一级子节点有2个,分别对应计算单元2和计算单元3,计算单元2和计算单元3的输出为计算单元1的输入,即计算单元2和计算单元3与计算单元1具有直接运算关系。计算单元2对应的二级子节点的叶子节点有2个,分别对应计算单元4和计算单元5,计算单元4和计算单元5的输出为计算单元2的输入,即计算单元4和计算单元5与计算单元2具有直接运算关系,计算单元4和计算单元5与计算单元1具有间接运算关系。计算单元3对应的二级子节点的叶子节点有2个,分别对应计算单元6和计算单元7,计算单元6和计算单元7的输出为计算单元3的输入,即计算单元6和计算单元7与计算单元3具有直接运算关系,计算单元6和计算单元7与计算单元1具有间接运算关系。

图3示出本发明实施例提供的表达式树的一个具体示例的结构示意图。如图3所示,以第一计算单元(a+b)<d×2对应的第一表达式树为例,根据式中的各个第一计算单元的运算优先级可以确定:第一表达式树的根节点为“<”对应的第一计算单元,根节点的一级子节点分别为“+”和“×”对应的第一计算单元,一级子节点“+”的二级子节点分别为“a”和“b”对应的第一计算单元,一级子节点“×”的二级子节点分别为“d”和“2”对应的第一计算单元。

在这些实施例中,可以按照后序深度优先顺序,由根节点向叶子节点遍历第一表达式树的每个节点对应的第一计算单元,生成第一计算单元序列,以将需要递归计算的第一计算表达式转换为非递归计算的第一计算单元序列,作为非递归计算的执行模型。

图4示出了图2所示表达式树的遍历流程示意图。如图4所示,可以按照顺序编号1-12的顺序对该表达式树的每个节点进行遍历,记录每个节点对应的计算单元的运算优先级,并在对表达式树的节点完成遍历之后,按照运算优先级由高到低的顺序,将计算单元压入计算单元队列,生成计算单元序列。

若同一运算优先级存在多个计算单元,则可以按照由表达式树的左侧节点向右侧节点的顺序,对这些计算单元进行排序。

图5示出了图3所示表达式树的遍历结果示意图。如图5所示,继续以第一计算单元(a+b)<d×2对应的第一表达式树为例,按照图4所示的遍历方法遍历第一表达式树中的各个第一计算单元后,能够得到如图5所示的第一计算单元序列。

因此,只需要按照第一计算单元序列的序列顺序,从前往后执行每一个第一计算单元,即可完成第一表达式的完整计算过程。

在本发明另一些实施例中,s120的具体方法可以包括:

将第一计算表达式解析为第一表达式树;其中,第一表达式树的每个节点对应一个第一计算单元,第一表达式树的根节点为运算优先级最低的第一计算单元,第一表达式树的叶子节点为运算优先级最高的第一计算单元;

由根节点向叶子节点递归调用第一表达式树的每个节点对应的第一计算单元,生成第一计算单元序列。

其中,将第一计算表达式解析为第一表达式树的方法与上述实施例中的方法相同,在此不做赘述。

由根节点向叶子节点递归调用第一表达式树的每个节点对应的第一计算单元后,当第一表达式树的叶子节点对应的计算单元返回,可以由叶子节点对应的计算单元开始,依次将叶子节点的每一个上级节点对应的计算单元压入计算单元队列,生成第一计算单元序列。

在每个第一计算单元中,将第一计算单元的输入和输出分别抽象成统一的数据对象,并且将第一计算单元的运算功能抽象为计算函数,从而能够将第一计算单元分离为输入数据、输出数据和计算函数,并且对输入数据、输出数据和计算函数进行模块化管理,以减少查询所占用的空间,并且进一步提高计算表达式的运算效率。具体地,计算函数可以存储于第一计算单元序列中对应的第一计算单元中。

图6示出了本发明一个实施例提供的数据槽的结构示意图。如图6所示,该数据槽用于存储第一计算单元抽象过后的输入数据和输出数据。其中,数据槽包括控制数据槽和计算数据槽,即控制数据槽和计算数据槽分别位于数据槽内。具体地,图6所示的0号数据槽为控制数据槽,其他数据槽为计算数据槽,计算数据槽用于存储输入数据和输出数据,控制数据槽用于存储计算单元标识,计算单元标识用于指示当前执行的第一计算单元。

因此,在本发明一些实施例中,在s120之后,该查询语句的处理方法还可以包括:

在计算数据槽内为每个第一计算单元分配对应的输入数据槽和输出数据槽。

在本发明另一些实施例中,在s120中生成多个第一计算单元对应的第一计算单元序列的过程中,该查询语句的处理方法还可以包括:

在计算数据槽内为每个第一计算单元分配对应的输入数据槽和输出数据槽。

综上,在本发明实施例中,并不对为每个第一计算单元分配对应的输入数据槽和输出数据槽的时间进行限制。

由于每个计算数据槽均有与其一一对应的数据槽编号,因此,在为第一计算单元分配对应的输入数据槽和输出数据槽的过程中,仅需要将作为其输入数据槽和输出数据槽的数据槽编号分配给该第一计算单元即可,分配得到的数据槽编号将被存储于第一计算单元中。这样,第一计算单元便可以根据数据槽编号从对应的输入数据槽中取出输入数据,并且将输出数据输出至对应的输出数据槽中。

进一步地,运算优先级最高的第一计算单元,其输入数据槽是为其分配的新的计算数据槽,运算优先级非最高的第一计算单元,其输入数据槽是在已分配的计算数据槽中确定的,具体地,其输入数据槽为与其具有直接运算关系并且序列位置在其之前的第一计算单元的输出数据槽。由此,可以进一步减少查询所占用的空间。

在这些实施例的s130中,可选地,对每个第一计算单元的输入数据执行该第一计算单元对应的运算处理的具体方法可以包括:

从每个第一计算单元对应的输入数据槽中,获取该第一计算单元的输入数据;

对每个第一计算单元的输入数据执行该第一计算单元对应的运算处理,得到每个第一计算单元的输出数据;

将每个第一计算单元的输出数据,存储至该第一计算单元对应的输出数据槽中。

具体地,每个第一计算单元可以根据其输入数据槽的数据槽编号,从计算数据槽内取出输入数据,然后对取出的输入数据执行其计算函数对应的运算处理,并根据其输出数据槽的数据槽编号,将计算函数输出的输出数据存入计算数据槽,以方便其他第一计算单元根据其输出数据继续进行运算处理。

图7示出了本发明一个实施例提供的运算处理过程的流程示意图。如图7所示,计算单元序列中的各个计算单元按照序列位置由左向右的顺序依次执行,每个计算单元从起对应的输入数据槽内取出输入数据,并且将输出数据存入输出数据槽。以计算单元2为例,计算单元2的输入数据槽的数据槽编号分别为2和4,输出数据槽的数据槽编号为5,计算单元2可以从2号数据槽和4号数据槽取出输入数据,并且将输出数据存入5号数据槽。

图8示出了本发明一个实施例提供的控制数据槽的工作原理示意图。如图8所示,计算单元序列中的各个计算单元按照序列位置由左向右的顺序依次执行,当前执行的计算单元为计算单元2,计算单元2所处的序列位置为第3位,其对应的计算单元标识为3,此时,控制数据槽即0号数据槽内存储的计算单元标识为3。

在本发明一些实施例中,计算数据槽的数量为多个,多个计算数据槽均位于一个数据槽内,使得该数据槽分为多组,多组数据槽包括一个计算数据槽。

在这些实施例中,在计算数据槽内为每个第一计算单元分配对应的输入数据槽和输出数据槽的具体方法可以包括:

针对每一个计算数据槽,在该计算数据槽内为每个第一计算单元分配对应的输入数据槽和输出数据槽。

在本发明另一些实施例中,计算数据槽的数量为多个,每个计算数据槽位于一个数据槽内,即数据槽的数量为多个,每个数据槽包括控制数据差和计算数据槽。

在这些实施例中,在计算数据槽内为每个第一计算单元分配对应的输入数据槽和输出数据槽的具体方法可以包括:

针对每一个计算数据槽,在该计算数据槽内为每个第一计算单元分配对应的输入数据槽和输出数据槽。

具体地,当数据槽的数量为多个时,可以在每个数据槽内为第一计算单元分配对应的输入数据槽和输出数据槽,使得每个数据槽对应一个执行线程,从而实现对第一计算表达式的多线程运算处理。

在这些实施例中,可选地,针对每个第一计算单元,对每个第一计算单元的输入数据执行该第一计算单元对应的运算处理的具体方法可以包括:

同步从每个第一计算单元对应的多个输入数据槽中,获取该第一计算单元的多个输入数据;

同步对每个第一计算单元的多个输入数据执行该第一计算单元对应的运算处理,得到每个第一计算单元的多个输出数据;

同步将每个第一计算单元的多个输出数据,分别存储至该第一计算单元对应的多个输出数据槽中。

在这些实施例中,可以将第一计算单元序列复制为多个,并且使多个第一计算单元同步利用其对应的数据槽,实现对第一计算表达式的多线程同步运算处理,进一步提高执行效率。

在这些实施例中,可选地,针对每个第一计算单元,对每个第一计算单元的输入数据执行该第一计算单元对应的运算处理的具体方法还可以包括:

依次从每个第一计算单元对应的多个输入数据槽中,获取该第一计算单元的多个输入数据;

依次对每个第一计算单元的多个输入数据执行该第一计算单元对应的运算处理,得到每个第一计算单元的多个输出数据;

依次将每个第一计算单元的多个输出数据,分别存储至该第一计算单元对应的多个输出数据槽中。

图9示出了本发明一个实施例提供的多线程运算处理的流程示意图。如图9所示,当计算单元4从数据槽2的1号数据槽中取出输入数据的过程中,计算单元5从数据槽1的3号数据槽中取出数据,当两个计算单元取出数据后,对取出的输入数据进行运算处理,然后,计算单元4将输出数据存入数据槽2的2号数据槽中,计算单元5将输出数据存入数据槽1的4号数据槽中,数据槽1记录当前执行的计算单元标识2,数据槽2记录当前执行的计算单元标识1。

因此,在这些实施例中,每个第一计算单元和数据槽均不会互相产生干扰,各个线程之间独立之星,可以在多线程执行第一计算表达式的过程中,降低运算错误率。

由于在查询语句中,可能还存在受到条件限制的、非单独存在的计算表达式,例如,在跳转语句中的计算表达式,该跳转语句中还包括条件表达式,若满足条件表达式对应的预设条件,则跳转至跳转语句中的计算表达式进行运算处理。

因此,在本发明一些实施例中,在s130之前,还包括:

获取查询语句中的第二计算表达式,第二计算表达式位于查询语句的目标语句内,其中,目标语句还包括条件表达式,第二计算表达式包括多个第二计算单元;

根据运算优先级由高到低的顺序,生成多个第二计算单元对应的第二计算单元序列;

将条件表达式对应的条件计算单元插入第二计算单元序列中的第一目标位置,得到更新后的第二计算单元序列;其中,第一目标位置为第二计算单元序列的首个序列位置。

在这些实施例中,也需要获取在目标语句中的第二计算表达式,其中,目标语句可以为上述的跳转语句,也可以为其他的具有条件表达式,并通过该条件表达式实现由第一计算表达式跳转至第二计算表达式的语句。

需要说明的是,生成第二计算单元序列的方法与生成第一计算单元序列的方法的原理相同,在此不做赘述。

由于条件表达式是跳转至第二计算表达式的条件,因此,为了在满足条件表达式对应的预设条件后,能够按照第二计算单元序列进行运算处理,需要将条件表达式对应的条件计算单元插入第二计算单元序列中的首个序列位置,以实现条件计算单元的跳转功能。

由于条件计算单元为在某一第一计算单元的运算处理结果满足条件表达式对应的预设条件后跳转至第二计算单元序列,则条件计算单元仅包括输入、条件函数和跳转,而不包括输出。如果某一第一计算单元的运算处理结果不满足条件表达式对应的预设条件,则继续执行第一计算单元序列。因此,可以通过条件计算单元实现跳转功能。

在本发明另一些实施例中,根据运算优先级由高到低的顺序生成多个第二计算单元对应的第二计算单元序列之后,还可以将第二计算单元序列拼接于第一计算单元序列之后,并且在条件计算单元中存储所需跳转的第二计算单元的计算单元标识。

在本发明一些实施例中,在将条件表达式对应的条件计算单元插入第二计算单元序列中的第一目标位置得到更新后的第二计算单元序列之后,还可以包括:

将条件计算单元插入第一计算单元序列中的第二目标位置,得到更新后的第一计算单元序列;其中,第二目标位置为在第一计算单元序列中与目标第一计算单元后相邻的序列位置,目标第一计算单元的输出数据为条件计算单元的输入数据。

具体地,由于应当是在执行第一计算单元序列的运算处理的过程中,当某一第一计算单元的运算处理结果满足条件表达式对应的预设条件后,跳转至第二计算单元序列继续执行运算处理,因此,也应将条件表达式对应的条件计算单元插入第一计算单元序列中,为了降低数据处理量,提高数据处理效率,可以直接在输出条件计算单元的输入数据的目标第一计算单元后相邻的序列位置插入该条件计算单元。

在这些实施例中,可选地,s130的具体方法可以包括:

按照更新后的第一计算单元序列的序列顺序,对序列位置在条件计算单元之前的每个第一计算单元的输入数据执行该第一计算单元对应的运算处理,得到条件计算单元的输入数据;

对条件计算单元的输入数据执行条件计算单元对应的条件运算处理,得到条件计算单元的条件运算结果;

在条件运算结果为不符合预设条件的情况下,继续按照第一计算单元序列的序列顺序,对序列位置在条件计算单元之后的每个第一计算单元的输入数据执行该第一计算单元对应的运算处理,得到第一计算单元对应的运算处理结果。

可选地,在得到条件计算单元的条件运算结果之后,s130的具体方法还可以包括:

在条件运算结果为符合预设条件的情况下,按照更新后的第二计算单元序列的序列顺序,对序列位置在条件计算单元之后的每个第二计算单元的输入数据执行该第二计算单元对应的运算处理,得到所第二计算单元对应的运算处理结果。

需要说明的是,执行每个第二计算单元对应的运算处理的方法与执行每个第一计算单元对应的运算处理的方法的原理相似,在此不做赘述。

图10示出了本发明一个实施例提供的查询语句的处理装置的结构示意图。图10所示的装置可以设置于数据查询的服务器内。其中,服务器可以是一种高性能的电子计算器,用于存储和处理数据。

如图10所示,该查询语句的处理装置可以包括:

第一表达式获取模块210,用于获取查询语句中的第一计算表达式;其中,第一计算表达式包括多个第一计算单元;

第一序列生成模块220,用于根据运算优先级由高到低的顺序,生成多个第一计算单元对应的第一计算单元序列;

运算处理模块230,用于按照第一计算单元序列的序列顺序,对每个第一计算单元的输入数据执行该第一计算单元对应的运算处理,得到查询语句对应的运算处理结果。

在本发明实施例中,能够在获取查询语句中的第一计算表达式之后,按照第一计算表达式中的多个第一计算单元的运算优先级由高到低的顺序,生成第一计算单元序列,并按照第一计算单元序列的序列顺序,对每个第一计算单元的输入数据执行该第一计算单元对应的运算处理,得到查询语句对应的运算处理结果,从而实现以非递归的方式依次调用第一表达式中的每个第一计算单元,相比于以递归的方式调用表达式中的计算单元的方法,可以提高表达式中的计算单元的调用速度和运算效率,从而提高查询语句的运算处理速度,进而提高数据查询效率。

在本发明一些实施例中,执行数据查询的服务器可以为数据库提供方的服务器。当查询语句的处理装置接收到数据查询设备发送的查询语句后,即可以对接收到的查询语句进行处理。其中,数据查询设备具体可以是手机、平板电脑、个人电脑等。

在本发明一些实施例中,第一序列生成模块220具体用于:

将第一计算表达式解析为第一表达式树;其中,第一表达式树的每个节点对应一个第一计算单元,第一表达式树的根节点为运算优先级最低的第一计算单元,第一表达式树的叶子节点为运算优先级最高的第一计算单元;

按照后序深度优先顺序,由根节点向叶子节点遍历第一表达式树的每个节点对应的第一计算单元,生成第一计算单元序列。

在本发明一些实施例中,该查询语句的处理装置还可以包括:

数据槽分配模块,用于在计算数据槽内为每个第一计算单元分配对应的输入数据槽和输出数据槽。

在这些实施例中,可选地,运算处理模块230在对每个第一计算单元的输入数据执行该第一计算单元对应的运算处理时,具体用于:

从每个第一计算单元对应的输入数据槽中,获取该第一计算单元的输入数据;

对每个第一计算单元的输入数据执行该第一计算单元对应的运算处理,得到每个第一计算单元的输出数据;

将每个第一计算单元的输出数据,存储至该第一计算单元对应的输出数据槽中。

在本发明一些实施例中,计算数据槽的数量为多个。

在这些实施例中,数据槽分配模块具体用于:

针对每一个计算数据槽,在该计算数据槽内为每个第一计算单元分配对应的输入数据槽和输出数据槽。

在这些实施例中,可选地,运算处理模块230在针对每个第一计算单元,对每个第一计算单元的输入数据执行该第一计算单元对应的运算处理时,具体用于:

同步从每个第一计算单元对应的多个输入数据槽中,获取该第一计算单元的多个输入数据;

同步对每个第一计算单元的多个输入数据执行该第一计算单元对应的运算处理,得到每个第一计算单元的多个输出数据;

同步将每个第一计算单元的多个输出数据,分别存储至该第一计算单元对应的多个输出数据槽中。

在本发明一些实施例中,计算数据槽位于数据槽内,数据槽还包括控制数据槽,控制数据槽用于存储计算单元标识,计算单元标识用于指示当前执行的第一计算单元。

在本发明一些实施例中,该查询语句的处理装置还可以包括:

第二表达式获取模块,用于获取查询语句中的第二计算表达式,第二计算表达式位于查询语句的目标语句内,其中,目标语句还包括条件表达式,第二计算表达式包括多个第二计算单元;

第二序列生成模块,用于根据运算优先级由高到低的顺序,生成多个第二计算单元对应的第二计算单元序列;

第二序列更新模块,用于将条件表达式对应的条件计算单元插入第二计算单元序列中的第一目标位置,得到更新后的第二计算单元序列;其中,第一目标位置为第二计算单元序列的首个序列位置。

在这些实施例中,可选地,该查询语句的处理装置还可以包括:

第一序列更新模块,用于将条件计算单元插入第一计算单元序列中的第二目标位置,得到更新后的第一计算单元序列;其中,第二目标位置为在第一计算单元序列中与目标第一计算单元后相邻的序列位置,目标第一计算单元的输出数据为条件计算单元的输入数据。

在本发明一些实施例中,运算处理模块230具体用于:

按照更新后的第一计算单元序列的序列顺序,对序列位置在条件计算单元之前的每个第一计算单元的输入数据执行该第一计算单元对应的运算处理,得到条件计算单元的输入数据;

对条件计算单元的输入数据执行条件计算单元对应的条件运算处理,得到条件计算单元的条件运算结果;

在条件运算结果为不符合预设条件的情况下,继续按照第一计算单元序列的序列顺序,对序列位置在条件计算单元之后的每个第一计算单元的输入数据执行该第一计算单元对应的运算处理,得到第一计算单元对应的运算处理结果。

在这些实施例中,可选地,运算处理模块230还具体用于:

在条件运算结果为符合预设条件的情况下,按照更新后的第二计算单元序列的序列顺序,对序列位置在条件计算单元之后的每个第二计算单元的输入数据执行该第二计算单元对应的运算处理,得到第二计算单元对应的运算处理结果。

需要说明的是,本发明实施例提供的查询语句的处理装置能够实现图1至图9所示的方法实施例中的各个过程和效果,并且原理相似,为避免重复,这里不再赘述。

图11示出了本发明实施例提供的查询语句的处理设备的硬件结构示意图。本说明书实施例所述的查询语句的处理设备可以为服务器。如图11所示,查询语句的处理设备300包括输入设备301、输入接口302、处理器303、存储器304、输出接口305、以及输出设备306。其中,输入接口302、处理器303、存储器304、以及输出接口305通过总线310相互连接,输入设备301和输出设备306分别通过输入接口302和输出接口305与总线310连接,进而与查询语句的处理设备300的其他组件连接。

具体地,输入设备301接收来自外部的输入信息,并通过输入接口302将输入信息传送到处理器303;处理器303基于存储器304中存储的计算机可执行指令对输入信息进行处理以生成输出信息,将输出信息临时或者永久地存储在存储器304中,然后通过输出接口305将输出信息传送到输出设备306;输出设备306将输出信息输出到查询语句的处理设备300的外部供用户使用。

其中,处理器303可以包括:中央处理器(centralprocessingunit,cpu)、网络处理器(networkprocessingunit,npu)、张量处理器(tensorprocessingunit,tpu)tpu、现场可编程门阵列(fieldprogrammablegatearray,fpga)芯片或者人工智能(artificialintelligence,ai)芯片等类型的处理器,该附图仅为示例性说明,并不局限于文中列举的类型的处理器。。

也就是说,图11所示的查询语句的处理设备也可以被实现为包括:存储有计算机可执行指令的存储器;以及处理器,该处理器在执行计算机可执行指令时可以实现本说明书实施例描述的查询语句的处理方法和装置。

本说明书实施例还提供一种计算机可读存储介质,该计算机可读存储介质上存储有计算机程序指令;该计算机程序指令被处理器执行时实现本说明书实施例提供的查询语句的处理方法。

以上的结构框图中所示的功能块可以实现为硬件、软件、固件或者它们的组合。当以硬件方式实现时,其可以例如是电子电路、专用集成电路(asic)、适当的固件、插件、功能卡等等。当以软件方式实现时,本说明书的元素是被用于执行所需任务的程序或者代码段。程序或者代码段可以存储在机器可读介质中,或者通过载波中携带的数据信号在传输介质或者通信链路上传送。“机器可读介质”可以包括能够存储或传输信息的任何介质。机器可读介质的例子包括电子电路、半导体存储器设备、rom、闪存、可擦除rom(erom)、软盘、cd-rom、光盘、硬盘、光纤介质、射频(rf)链路,等等。代码段可以经由诸如因特网、内联网等的计算机网络被下载。

还需要说明的是,上述对本说明书特定实施例进行了描述。其它实施例在所附权利要求的范围内。在一些情况下,在权利要求书中记载的动作或步骤可以按照不同实施例中的顺序来执行并且仍然可以实现期望的结果。另外,在附图中描绘的过程不一定要求示出的特定顺序或连续顺序才能实现期望的结果。在某些实施方式中,多任务处理和并行处理也是可以的或者可能是有利的。

以上所述,仅为本说明书的具体实施方式,所属领域的技术人员可以清楚地了解到,为了描述的方便和简洁,上述描述的系统、模块和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。应理解,本说明书的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本说明书揭露的技术范围内,可轻易想到各种等效的修改或替换,这些修改或替换都应涵盖在本说明书的保护范围之内。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1