CN105677812A - 一种数据查询方法及数据查询装置 - Google Patents
一种数据查询方法及数据查询装置 Download PDFInfo
- Publication number
- CN105677812A CN105677812A CN201511033476.6A CN201511033476A CN105677812A CN 105677812 A CN105677812 A CN 105677812A CN 201511033476 A CN201511033476 A CN 201511033476A CN 105677812 A CN105677812 A CN 105677812A
- Authority
- CN
- China
- Prior art keywords
- operation operator
- handles device
- hardware handles
- perform
- data
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/28—Databases characterised by their database models, e.g. relational or object models
- G06F16/283—Multi-dimensional databases or data warehouses, e.g. MOLAP or ROLAP
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/24—Querying
- G06F16/245—Query processing
- G06F16/2458—Special types of queries, e.g. statistical queries, fuzzy queries or distributed queries
- G06F16/2471—Distributed queries
Abstract
本发明公开了一种数据查询方法及数据查询装置,用于解决在进行数据查询时的查询效率较低的技术问题。所述数据查询方法包括:获取用于指示查询任务的查询命令;根据查询命令确定执行查询任务所需要的操作算子,操作算子用于指示执行查询任务所需进行的操作;从需要的操作算子中确定需要硬件处理器件执行的操作算子;向硬件处理器件发送硬件执行命令,硬件执行命令用于指示硬件处理器件执行需要由硬件处理器件执行的操作算子所指示的操作;接收来自硬件处理器件执行需要由硬件处理器件执行的操作算子所指示的操作所得到的数据查询结果;根据数据查询结果,获得与查询任务对应的数据查询结果。
Description
技术领域
本发明涉及数据查询技术领域,尤其涉及一种数据查询方法及数据查询装置。
背景技术
为了便于用户对数据进行查询,数据查询系统应运而生,不同的数据查询系统一般建立有不同的查询机制,用户可以根据需要查询的数据类型和/或数据量等因素选择合适的数据查询系统以满足查询需求。
在目前的数据查询系统中,整个查询流程一般是服务器(例如电脑)的CPU(CentralProcessingUnit,中央处理器)通过调度软件执行完成,然而,随着数据量的逐渐增大,用户对海量数据的查询需求也越来越大,此时通过CPU对于软件的调度也就更加频繁,CPU的处理负荷也就越来越重。在CPU的时钟频率为定值的前提下,对于数据量越大的数据,例如对于TB(TeraByte,太字节或百万兆字节)级别或PB(PetaByte,拍字节或千万亿字节)级别的数据进行查询所花费的时间也会越来越长,由于CPU时钟频率的限制,将会导致查询效率相对降低,并且在数据查询系统的查询算法方面已经过多年优化,发展较为成熟,优化空间较小,所以较难满足用户对于查询效率的需求。
可见,目前数据查询系统的查询效率较低,较难满足用户对于海量数据的查询需求。
发明内容
本申请提供一种数据查询方法及数据查询装置,用于解决目前在进行数据查询时的查询效率较低的技术问题。
第一方面,提供一种数据查询方法,该方法可以应用于数据查询装置(例如服务器)。在该方法中,首先获取用于指示查询任务的查询命令,再根据获取到的查询命令确定执行所述查询任务所需要的操作算子,进而可以从需要的操作算子中确定需要硬件处理器件执行的操作算子,并通过向硬件处理器件发送硬件执行命令的方式,以指示硬件处理器件执行需要由硬件处理器件执行的操作算子。在向硬件处理器件发送硬件执行命令之后,可以接收来自硬件处理器件执行需要由硬件处理器件执行的操作算子所得到的数据查询结果,并根据硬件处理器件执行需要由硬件处理器件执行的操作算子对应的数据查询结果,获得与查询任务对应的数据查询结果。
其中,操作算子(Operator)用于表明执行查询操作所需进行的操作的类型,例如Hive(一种数据系统)系统中的Filter(过滤)操作算子或Select(投影)操作算子,等等。
其中,硬件处理器件可以是用于逻辑运算的器件,也就是说,硬件处理器件可以是指某些特定的硬件处理器件,例如硬件处理器件可以是FPGA(Field-ProgrammableGateArray,现场可编程门阵列)、GPU(GraphicProcessingUnit,图像处理器)、DSP(DigitalSignalProcessor,数字信号处理器),等等。另外,硬件处理器件可以是数据查询装置中原本设置的器件,或者也可以是通过例如PCIE(PeripheralComponentInterconnectExpress,外部设备互连总线)插槽新接入的器件,等等。
本申请中,在获取到用于指示查询任务的查询命令之后,可以根据查询命令确定执行查询任务所需要的操作算子,进而再从执行查询任务所需要的操作算子中确定需要硬件处理器件执行的操作算子,并将需要硬件处理器件执行的操作算子通过硬件执行命令的方式指示硬件处理器件进行执行,也就是说,可以将原本全部由CPU调度软件执行的查询操作中的部分操作或全部操作发送给硬件处理器件执行,再根据硬件处理器件需要硬件处理器件执行的操作算子获得的数据查询结果以获得最终的数据查询结果,即获得与数据查询任务对应的数据查询结果。通过本申请的技术方案,可以利用特定硬件处理器件相对于调度软件执行操作算子的运算速度更快的硬件特性,通过执行查询任务所需要的操作算子中的部分操作算子或全部操作算子发送给特定硬件处理器件执行,以提高数据查询的效率。
同时,由于将部分操作操作算子或全部操作算子发送给了硬件处理器件执行,自然可以减少CPU对于软件的调度次数,从而可以降低CPU的工作负荷,这样可以在一定程度上降低对于CPU的消耗,延长CPU的使用时间。
结合第一方面,在第一方面的第一种可能的实现方式中,查询任务包括至少一个子任务;从需要的操作算子中确定需要硬件处理器件执行的操作算子,包括:确定至少一个子任务中执行时间大于第一阈值的子任务;确定执行时间大于第一阈值的子任务所需要的操作算子为需要硬件处理器件执行的操作算子。
当查询任务只包含一个子任务时,即子任务即为查询任务本身。
本申请中,通过将多个子任务的执行时间与第一阈值进行比较的方式,可以确定出操作相对比较耗时的一些子任务,而操作比较耗时的子任务说明占用CPU的资源越多,所以可以将执行这些子任务所需要的操作算子中的部分操作算子或全部操作算子发送给硬件处理器件执行,这样可以在较大程度上缩短查询任务的执行总时间,达到提高查询效率的目的。
结合第一方面的第一种可能的实现方式,在第一方面的第二种可能实现的方式中,在执行时间大于第一阈值的子任务所需要的操作算子为至少两种操作算子时,确定执行时间大于第一阈值的子任务所需要的操作算子为需要硬件处理器件执行的操作算子,包括:确定至少两种操作算子中操作耗时比值大于或等于第一比值的操作算子为需要硬件处理器件执行的操作算子,至少两种操作算子中任一操作算子的操作耗时比值为执行任一操作算子所花费的时长与执行至少两种操作算子所花费的总时长的比值。
结合第一方面,在第一方面的第三种可能的实现方式中,在需要的操作算子为至少两种操作算子时,从需要的操作算子中确定需要硬件处理器件执行的操作算子,包括:确定至少两种操作算子中操作耗时比值大于等于第一比值的操作算子为需要硬件处理器件执行的操作算子,至少两种操作算子中任一操作算子的操作耗时比值为执行任一操作算子所花费的时长与执行至少两种操作算子所花费的总时长的比值。
结合第一方面,在第一方面的第四种可能的实现方式中,从需要的操作算子中确定需要硬件处理器件执行的操作算子,包括:从需要的操作算子中确定属于预定的操作算子集合的操作算子为需要硬件处理器件执行的操作算子。
本申请中,可以通过直接比对的方式从M种操作算子中确定出需要发送给硬件处理器件的操作算子,这样可以在提高查询效率的前提下,尽量简化在查询过程中的计算,用户可以根据自己的实际需求对预定的操作算子集合进行设置,可以尽量满足用户的差异化要求。
结合第一方面或第一方面的第一种至第四种可能的实现方式中的任意一种,在第一方面的第五种可能的实现方式中,在需要硬件处理器件执行的操作算子是需要的操作算子中的一部分时,在根据所述数据查询结果,获得与查询任务对应的数据查询结果之前,所述方法还包括:执行需要的操作算子中除需要硬件处理器件执行的操作算子之外的其余操作算子,从而获得其余操作算子对应的数据查询结果;根据数据查询结果,获得与查询任务对应的数据查询结果,包括:根据其余操作算子对应的数据查询结果和硬件处理器件执行需要由硬件处理器件执行的操作算子所指示的操作所得到的数据查询结果,获得与查询任务对应的数据查询结果。
本申请中,在确定将需要硬件处理器件执行的操作算子发送给硬件处理器件执行之后,数据查询装置就不会再执行需要硬件处理器件执行的操作算子了,而只执行除需要硬件处理器件执行的操作算子之外的其余操作算子,这样可以减少对需要硬件处理器件执行的操作算子的重复执行,进而可以避免查询出错,提高准确性,同时还可以避免由于重复操作而导致的更低的查询效率。
结合第一方面或第一方面的第一种至第五种可能的实现方式中的任意一种,在第一方面的第六种可能的实现方式中,所述方法还包括:根据查询命令,确定待查询的数据块;从待查询的数据块中确定有效的数据块;向硬件处理器件发送有效的数据块,或者,向硬件处理器件发送数据块获取指令。其中,所述待查询的数据块是执行所述需要硬件处理器件执行的操作算子时所需查询的数据区域;有效的数据块的地址范围与由查询命令对应的需要查询的地址范围存在交集。
本申请中,可以先对待查询的数据块进行初过滤以获得有效的数据块,再指示硬件处理器件获得筛选过的有效的数据块进行处理,这样可以尽量避免将无效的数据块发送给硬件处理器件,减少无效数据的传输。
结合第一方面的第六种可能的实现方式,在第一方面的第七种可能的实现方式中,从待查询的数据块中确定有效的数据块,包括:
确定Stripe数据块对应在索引数据中的最小索引值和最大索引值;
若最小索引值和最大索引值所代表的地址范围与需要查询的地址范围存在交集时,将Stripe数据块确定为有效的数据块。
本申请中,主要说明针对ORC格式的待查询的数据块进行有效的数据块的具体筛选方式,只要数据存储格式是ORC格式的待查询的数据块,均可以采用本申请中的筛选方式,并且通过最小索引值和最大索引值可以对Stripe数据块是否是有效的数据块进行快速判断,以对待查询的数据块进行快速筛选,在避免无效数据传输的前提下,可以提高筛选的速度,进一步地提高查询效率。
结合第一方面或第一方面的第一种至第五种可能的实现方式,在第一方面的第八种可能的实现方式中,硬件处理器件包括FPGA,所述方法还包括:
向FPGA发送真值表执行指令,真值表执行指令用于指示FPGA根据真值表执行需要硬件处理器件执行的操作算子所指示的操作,真值表是根据查询命令生成的。
本申请中,为了保证FPGA对于逻辑表达式也能够快速地进行处理,可以让FPGA通过查找真值表的方式执行需要硬件处理器件执行的操作算子所指示的操作,进而在待查询的数据块中进行查询,以尽量保证较高的查询效率。
结合第一方面的第八种可能的实现方式,在第一方面的第九种可能的实现方式中,真值表包括:2Q行二进制数,Q为根据查询命令所确定的查询条件的数量,Q为正整数;
其中,真值表中的第N行中存储的二进制数的数值为N-1的二进制形式,真值表中的二进制数按数值预定顺序存储在真值表中,N为小于或等于2Q的正整数;和/或,
真值表中的第N行中存储的二进制数的数值为通过将N-1的二进制形式按照从高位到低位的顺序代入查询命令对应的逻辑表达式中进行逻辑运算获得的逻辑计算结果。
本申请中,可以确定多种形式的真值表,进而方便FPGA可以通过不同形式的真值表采用不同的查询方式,可以为FPGA提供较多查询方式进行选择。
结合第一方面或第一方面的第一种至第五种可能的实现方式中的任意一种,在第一方面的第十种可能的实现方式中,本发明实施例中的数据查询方法还包括:指示硬件处理器件获得待查询的数据块。其中,待查询的数据块是执行需要硬件处理器件执行的操作算子时所需查询的数据,也就是说,需要确定硬件处理器件究竟是对哪些数据块执行查询操作,以使硬件处理器件能够真正完成对数据的查询处理,以满足用户的查询需求。
结合第一方面的第十种可能的实现方式,在第一方面的第十一种可能的实现方式中,向硬件处理器件发送硬件执行命令,包括:根据查询命令,获得针对需要硬件处理器件执行的操作算子的硬件执行计划信息;根据硬件执行计划信息,生成硬件执行命令,并向硬件处理器件发送硬件执行命令。
其中,硬件执行计划信息是指用于表示硬件处理器件需要执行哪些操作算子的配置文件,例如是文件名为plan.xml的配置文件。通过硬件执行计划信息,可以将需要硬件处理器件执行的操作算子和需要继续由数据查询装置执行的操作算子进行区别划分。
结合第一方面的第十一种可能的实现方式中,在第一方面的第十二种可能的实现方式中,根据硬件执行计划信息,生成硬件执行命令,包括:根据查询命令,生成针对M种操作算子的原始执行计划信息;从原始执行计划信息中,确定针对需要硬件处理器件执行的操作算子的硬件执行计划信息。
结合第一方面的第十一种可能的实现方式中,在第一方面的第十三种可能的实现方式中,根据硬件执行计划信息,生成硬件执行命令,包括:根据查询命令,直接生成针对需要硬件处理器件执行的操作算子的硬件执行计划信息。
本申请中,由硬件处理器件通过直接读取的方式获取待查询的数据区的数据传输效率较快,并不需要CPU的干预,所以如果待查询的数据区包括的数据量较大的话,可以获得较快的数据传输速率。
结合第一方面或第一方面的第一种至第五种可能的实现方式中的任意一种,在第一方面的第十四种可能的实现方式中,向硬件处理器件发送需要硬件处理器件执行的操作算子,包括:若确定查询条件的数量小于等于预定数量,则向硬件处理器件发送需要硬件处理器件执行的,其中,查询条件是根据查询命令确定得到的。
其中,预定数量的取值可以用于衡量硬件处理器件的硬件执行能力。例如为了能够充分利用硬件处理器件的硬件性能,可以将预定数量设置为等于或尽量趋近于硬件处理器件能够处理的查询条件的最大数量。
本申请中,在向硬件处理器件发送需要硬件处理器件执行的之前,还可以先判断硬件处理器件是否具有执行需要硬件处理器件执行的的能力,这是考虑到硬件处理器件本身硬件性能的限制,通过在向硬件处理器件发送操作算子之前执行本申请的判断步骤,可以尽量减少操作算子的无效发送,提高数据传输效率。
结合第一方面的第八种可能的实现方式,在第一方面的第十五种可能的实现方式中,在向FPGA发送真值表执行指令之前,还包括:
根据查询命令,确定Q个查询条件;Q个查询条件是根据查询命令所确定的所有查询条件;
判断Q个查询条件是否超过FPGA能够执行的查询条件的最大数量;
若未超过,生成能够对2Q个二进制数分行进行存储的空真值表;
确定Q个查询条件的所有真假值组合,获得2Q个真假值组合;
根据空真值表和2Q个真假值组合确定真值表。
第二方面,提供一种数据查询装置,该数据查询装置包括用于执行第一方面中所述的数据查询方法的模块。
第三方面,提供一种数据查询装置,在一个可能的设计中,所述数据查询装置的结构中包括处理器、发送器和接收器,所述处理器被配置为支持数据查询装置执行第一方面的方法中相应的功能。所述发送器用于向硬件处理器件发送硬件执行命令,所述接收器用于接收来自硬件处理器件执行需要由硬件处理器件执行的操作算子对应的数据查询结果。所述据查询装置还可以包括存储器,所述存储器与处理器耦合,用于保存数据查询装置必要的程序指令和数据。
附图说明
为了更清楚地说明本发明实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简要介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域的普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1为Hive系统的架构示意图;
图2为本发明实施例中数据查询方法的流程图;
图3为查询任务1在Hive系统中对应的多种操作算子的示意图;
图4为本发明实施例中将Map1节点中的Filter和Select发送给硬件处理器件的示意图;
图5为本发明实施例中以Hive系统为例,将第一映射节点中的操作算子发送给FPGA执行的整体架构示意图;
图6为本发明实施例中根据Q个查询条件生成真值表的流程图;
图7为本发明实施例中数据查询装置的结构框图;
图8为本发明实施例中数据查询装置的结构示意图;
图9为本发明实施例中数据查询装置还包括存储器的结构示意图。
具体实施方式
为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
本发明实施例所提供的数据查询方法适用于数据查询系统,该数据查询系统可以在数据查询装置中运行以执行用户的查询操作,也就是说,本发明实施例中的数据查询方法可以应用于数据查询装置(例如服务器),其中,数据查询系统例如是Hive(一种数据仓库工具)系统,等等。
在现有技术中,通过上述数据查询系统执行数据查询任务的整个查询流程一般都是通过数据查询装置的CPU对软件调度完成,然而,在CPU的时钟频率为定值的前提下,随着待查询数据的数据量的逐渐增大,查询所花费的时间相应地也会越来越长,进而导致数据查询的效率也越来越低,无法满足用户对于查询效率的需求,本发明实施例所提供的数据查询方法,就是为了解决目前在进行数据查询时的查询效率较低的技术问题。
进一步地,硬件处理器件在工作过程中无需通过软件频繁调度,占用CPU的资源较少,对CPU的消耗也较低,同时,对于同等数据量的数据来说,通过硬件处理器件进行查询处理处理所花费的时间要少于全部通过CPU调度软件进行查询处理所花费的时间,也就是说,硬件处理器件由于其自身较快的运算能力,相对于全部通过CPU调度软件对数据进行查询处理的效率可以更高,那么如果通过硬件处理器件对原本全部由CPU通过对软件进行调度以进行的查询操作进行分担和协同处理的话,自然也就可以在一定程度上缩短查询时间,进而提高查询效率。
基于上述思想,本发明实施例利用硬件处理器件对原本全部由CPU通过对软件进行调度执行的查询任务进行分担和协同处理的技术方案,提供一种数据查询方法。
本发明实施例中,硬件处理器件可以是指具有逻辑运算能力的某些特定的硬件处理器件,例如可以是FPGA、GPU、DSP,等等。另外,硬件处理器件可以是数据查询装置中原本设置的器件,或者也可以是通过数据查询装置上设置的例如PCIE插槽等接口新接入的器件,等等,本发明对于硬件处理器件与数据处理装置之间的接入方式不做具体限定。
在实际中,不同的数据查询系统一般具有不同的查询机制和查询算法,并且通过硬件处理器件进行辅助查询的具体方式也可能不同,又由于Hive系统可利用集群处理大数据的SQL(StructuredQueryLanguage,结构化查询语言)操作任务,目前已被业界普遍用于对海量数据进行分析和处理,所以,为了便于本领域技术人员对本发明实施例中的技术方案进行理解,本申请人在后续将以Hive系统为例对本发明实施例中的数据查询方法进行说明。
为了便于阅读者后续的理解,以下对Hive系统进行简单介绍。
Hive系统是基于Hadoop(一种软件框架)的数据仓库工具,可以将结构化的数据文件映射为一张数据库表,并提供完整的SQL查询功能,可以将SQL语句转换为Map/Reduce(映射/归约)任务进行运行,Hive系统是一种可以存储、查询和分析大规模数据的机制。Hive系统主要包括用户接口组件、元数据存储组件、驱动组件和Hadoop,请参考图1,图1为Hive系统的架构示意图。
其中,用户接口组件是Hive系统中用于与用户进行交互的接口,一般主要有三个,其中比较常用的是CLI(CommandLineInterface,命令行界面)。
元数据存储组件,,Hive系统通过元数据存储组件将元数据存储在数据库中,Hive系统中的元数据包括表的名字,表的列和分区及其属性、表的属性、表的数据所在目录,等等。
驱动组件,主要可以包括Compiler(编译器)、Optimizer(优化器)和Executor(执行器),用于完成SQL查询语句从词法分析、语法分析、编译、优化以及查询计划的生成,生成的查询计划存储在HDFS(HadoopDistributedFileSystem,Hadoop的分布式文件系统)中,并由Map/Reduce(映射/归约)调用执行。
Hadoop是能够对大量数据进行分布式处理的软件框架,Hadoop的核心设计是便是HDFS和Map/Reduce。
其中,HDFS位于Hadoop的底层,用于存储Hadoop集群中所有存储节点上的文件,至于文件的存储格式可以具有多种,例如Hive系统的表数据一般是以ORC(OptimizedRowColumnar,优化行列)格式存储在HDFS中的。而在HDFS的上一层是Map/Reduce,Map/Reduce用于对大规模数据集进行并行运算,也就是说,在Hive系统中,HDFS用于存储海量数据,Map/Reduce用于对海量数据进行计算和处理。
Map/Reduce是一种编程模型,在分布式计算中,Map/Reduce负责处理并行编程中分布式存储、工作调度、负载均衡、容错均衡、容错处理以及网络通信等复杂问题,可以把Map/Reduce的处理过程高度抽象为两个函数,即Map(映射)和Reduce(归约),Map负责把任务分解成多个任务,Reduce负责把分解后的多任务处理的结果进行汇总。
通过Map/Reduce进行并行运算,可以认为是一台服务器(即数据查询装置)将多块数据进行并行处理,其中,可以将一台服务器看作是一个物理主节点,将Map节点和Reduce节点看作是设置在物理主节点中的逻辑节点,当然,一个物理主节点可以同时管理多个Map节点和多个Reduce节点,而对于整个Hive系统来说,可以包括多个物理主节点,而多个物理主节点分别管理的多个逻辑节点(例如多个Map节点和多个Reduce节点)之间可以跨物理主节点执行任务。可以这样理解,Map/Reduce采用“分而治之”的思想,把对大规模数据集的操作,分发给每个物理主节点管理下的各个分逻辑节点共同完成,然后通过整合各个节点的中间结果,得到最终结果,简单地说,Map/Reduce就是“任务的分解与结果的汇总”。
综上可以看出,Hive系统主要是利用Hadoop平台的Map/Reduce分布并行的处理能力,把SQL操作分配到多个Map节点和多个Reduce节点上进行处理,以实现使用SQL对超大数据库的查询处理。
另外,本文中术语“和/或”,仅仅是一种描述关联对象的关联关系,表示可以存在三种关系,例如,A和/或B,可以表示:单独存在A,同时存在A和B,单独存在B这三种情况。另外,本文中字符“/”,如无特殊说明,一般表示前后关联对象是一种“或”的关系。
下面结合附图对本发明实施例作进一步详细的描述。
请参见图2,本发明实施例提供一种数据查询方法,该方法可以应用于数据查询装置,该数据查询装置中运行有数据查询系统。该方法的流程描述如下。
步骤201:获取用于指示查询任务的查询命令。
当用户具有查询需求时,可以通过数据查询装置输入查询语句,具体来说,可以通过数据查询装置中运行的数据查询系统所提供的用户接口组件输入查询语句,以Hive系统为例,用户可以通过Hive系统中的CLI输入查询语句,在获得查询语句之后,数据查询装置可以对查询语句进行解析,确定出能够通过数据查询装置直接识别的查询命令,实现将用户的查询语句翻译为查询命令的过程,同时可以确定出用以指示数据查询装置具体需要执行的查询任务。
对于用户输入的查询语句的具体类型,可以根据数据查询系统所支持的语言而定,例如对于Hive系统来说,可以支持SQL或HQL(HibernateQueryLanguage,类SQL)查询语句的查询。
步骤202:根据查询命令确定执行查询任务所需要的操作算子,操作算子用于指示执行查询任务所需进行的操作。
例如一般来说,用于执行查询任务所需要的操作算子可以只包括一种,或者也可以包括多种,为了便于描述,本发明中例如将执行查询任务所需要的操作算子称作M种操作算子,那么M的值例如可以是1,5,7,等等,M的具体取值例如一般随数据查询系统的查询机制和查询任务的不同而不同。
以Hive系统为例,请参见图3,图3是在Hive系统中的一个查询任务(例如为查询任务1)所对应的多种操作算子的示意图,即用于执行查询任务1所需要的多种操作算子的示意图,具体来说,是以一个Map(即映射1,例如称作Map1)节点和一个Reduce(即归约1,例如称作Reduce1)节点为例进行说明,其它Map节点和其它Reduce节点与示出的Map1节点和Reduce1节点所执行的操作算子可以相同,所以在图3中就没有将其它Map节点和Reduce节点一一示出了。
可见,对于查询任务1来说,需要先执行RecordReader(文件解析),以从HDFS中读取待查询数据,再通过Map1节点执行5种操作算子,以及通过Reduce1节点执行3种操作算子,可见,根据图3所示,用于执行查询任务1所需要的操作算子有9种,而9种操作算子具体包括RecordReader、Map1节点中的5种操作算子和Reduce1节点中的3种操作算子。
另外,从图3可以看出,示出的Map1节点和Reduce1节点中存在名称相同的操作算子,即Groupby(分组),在具体实施过程中,虽然名称相同,但是由于是在Map1节点和Reduce1节点中分别执行的操作算子,所以可以将其看作是两种不同的操作算子。
步骤203:从需要的操作算子中确定需要硬件处理器件执行的操作算子。
由于硬件处理器件的硬件运算速度快于通过调度软件对数据进行处理的速度,所以当采用硬件处理器件协同处理或者替代处理的方式,对于同等数据量来说,通过硬件处理器件处理的话,可以在一定程度上缩短查询的时间,进而提高查询效率,所以在确定执行查询任务所需要的操作算子之后,即在确定M种操作算子之后,进一步可以从中确定需要由硬件处理器件执行的操作算子,以便通过硬件处理器件执行。
在具体实施过程中,例如可以根据M的具体取值、数据查询系统的查询机制、硬件处理器件的实际运算能力和用户的实际查询需求等因素综合考虑是将M种操作算子中的部分操作算子或全部操作算子以及具体将M种操作算子中的哪些操作算子下发给硬件处理器件执行。
可选的,例如可以按照以下几种确定方式从M种操作算子中确定出需要硬件处理器件执行的操作算子。
第一种确定方式:
可选的,从需要的操作算子中确定需要硬件处理器件执行的操作算子,包括:确定查询任务包括的至少一个子任务中执行时间大于第一阈值的子任务;确定执行时间大于第一阈值的子任务所需要的操作算子为需要硬件处理器件执行的操作算子。
对于某些数据查询系统而言,在执行查询任务时,一般可以先将查询任务分解为至少一个子任务,例如分解为至少一个逻辑任务,并通过至少一个逻辑节点分别对应执行至少一个逻辑任务,以实现对查询任务的并行执行。
以Hive系统为例,可以将查询任务分解为由多个Map节点执行的多个Map任务和由多个Reduce节点执行的多个Reduce任务,此时可以将多个Map任务和多个Reduce任务的总和理解为是本发明实施例中的至少一个子任务,继续参见图3,以Map1节点和Reduce1节点为例,假设由Map1节点执行的子任务是Map任务1,由Reduce1节点执行的子任务是Reduce任务1,且第一阈值是300μs(微秒),也就是说,可以只从特定逻辑节点执行的操作算子中确定需要发送给硬件处理器件执行的操作算子。
若确定Map1节点执行Map任务1所花费的时间大于300μs,则可以将通过Map1节点执行的TableScan(表扫描)、Filter(过滤)、Select(投影)、Groupby(Map中分组)和ReduceSink(归并准备)这5种操作算子中的部分操作算子或全部操作算子确定为需要由硬件处理器件执行的操作算子。
若确定Reduce1节点执行Reduce任务1所花费的时间大于300μs,则可以将通过Reduce1节点执行的Reduce(归约)、Groupby(Reduce中分组)和FileSink(文件整理)这3种操作算子中的部分操作算子或全部操作算子确定为需要由硬件处理器件执行的操作算子。
若确定Map1节点执行Map任务1所花费的时间和Reduce1节点执行Reduce任务1所花费均大于300μs,则可以同时将与Map1节点对应的5种操作算子和与Reduce1节点对应的3种操作算子中的部分操作算子或全部操作算子发送给硬件处理器件执行。
在具体实施过程中,其它Map节点和Reduce节点可以采用与Map1节点和Reduce1节点相同的处理方式。另外,根据Hive系统的特性可知,在Map节点所花费的时间一般要远大于在Reduce节点处所花费的时间,所以在具体实施时,可选的,可以只考虑将Map节点中的部分操作算子或全部操作算子作为需要由硬件处理器件执行的操作算子,这样也可以在较大程度上提高查询效率。
由于第一阈值可以随意设置,通过将多个子任务的执行时间与第一阈值进行比较的方式,可以确定出操作相对比较耗时的一些子任务,而操作比较耗时的子任务说明占用CPU的资源越多,所以可以将执行这些子任务所需要的操作算子中的部分操作算子或全部操作确定为需要由硬件处理器件执行的操作算子,进而可以下发给硬件处理器件执行,这样可以在较大程度上缩短查询任务的执行总时间,达到提高查询效率的目的。
第二种确定方式:
可选的,在执行时间大于第一阈值的子任务所需要的操作算子为至少两种操作算子时,确定执行时间大于第一阈值的子任务所需要的操作算子为需要硬件处理器件执行的操作算子,包括:确定至少两种操作算子中操作耗时比值大于或等于第一比值的操作算子为需要硬件处理器件执行的操作算子,至少两种操作算子中任一操作算子的操作耗时比值为执行任一操作算子所花费的时长与执行至少两种操作算子所花费的总时长的比值。
第二种确定方式是在第一种确定方式的基础上进一步细化的确定方式。
例如,根据第一种确定方式确定出Map1节点执行Map任务1的时间大于第一阈值,进一步地,再从与Map1节点对应的5种操作算子中确定操作耗时比值大于等于第一比值的操作算子作为需要硬件处理器件执行的操作算子,进而可以下发给硬件处理器件执行。
本申请人通过大量实验数据,分析出Select和Filter是Map1节点中最耗时的两种操作算子,通过对第一比值的合理设置,可以从5种操作算子中确定出Select和Filter的操作耗时比值大于等于第一比值,即,可以只将Select和Filter作为需要硬件处理器件执行的操作算子,这样可以尽量提高查询效率。也就是说,针对Hvie系统中的Map节点来说,可以只将Select和Filter发送给硬件处理器件执行。
例如请参见图4,图4是将Map1节点中的Filter和Select这两种操作算子均发送给硬件处理器件的示意图。需要说明的是,当硬件处理器件在执行Filter和Select这两种操作算子时,可以认为Map1节点当前是处于空闲等待状态,即在等待硬件处理器件的硬件执行结果,在等到硬件处理器件执行完Filter和Select这两种操作算子之后,可以获得硬件处理器件执行Filter和Select对应的数据查询结果,并再从Map1节点中的Groupby处继续执行。
第三种确定方式:
可选的,在需要的操作算子为至少两种操作算子时,从需要的操作算子中确定需要硬件处理器件执行的操作算子,包括:确定至少两种操作算子中操作耗时比值大于等于第一比值的操作算子为需要硬件处理器件执行的操作算子,至少两种操作算子中任一操作算子的操作耗时比值为执行任一操作算子所花费的时长与执行至少两种操作算子所花费的总时长的比值。
采用与第二种确定方式类似的原理,略有不同的是,在第二种确定方式中,选择的对象是执行时间大于第一阈值的子任务所需要的操作算子,而在第三种确定方式中,选择的对象是执行查询任务所需要的操作算子,至于具体的确定过程可以参照第二种确定方式的说明,此处就不再赘述。
第四种确定方式:
可选的,从需要的操作算子中确定需要硬件处理器件执行的操作算子,包括:从需要的操作算子中确定属于预定的操作算子集合的操作算子为需要硬件处理器件执行的操作算子。
可以预先设置一个预定的操作算子集合,在数据查询系统运行的过程中,可以直接将属于该预定的操作算子集合中的操作算子确定为需要硬件处理器件执行的操作算子。
例如,预定的操作算子集合为{操作算子a,操作算子b,操作算c,操作算子d,操作算子e},假设确定M种操作算子具体包括操作算子a、操作算子b、操作算子s和操作算子k后,可以确定M种操作算子中的操作算子a和操作算子b属于预定的操作算计集合,那么就可以直接将操作算子a和操作算子b确定为需要硬件处理器件执行的操作算子,进而下发给硬件处理器件执行,也就是说,可以通过直接比对的方式从M种操作算子中确定出需要硬件处理器件执行的操作算子,这样可以在提高查询效率的前提下,尽量简化在查询过程中的计算,用户可以根据自己的实际需求对预定的操作算子集合进行设置,可以尽量满足用户的差异化要求。
另外,在设置预定的操作算子集合时,可以根据数据查询装置的CPU性能、数据查询系统的查询机制、硬件处理器件的硬件性能和其它因素综合考虑,本发明不做限定。
步骤204:向硬件处理器件发送硬件执行命令,硬件执行命令用于指示硬件处理器件执行需要由硬件处理器件执行的操作算子所指示的操作。
即,可以通过向硬件处理器件发送命令的方式指示硬件处理器件执行需要硬件处理器件执行的操作算子所指示的操作,以实现查询任务可以通过硬件处理器件进行协同处理,利用硬件处理器件自身运算能力较强的硬件特性以尽量提高数据查询的效率。
步骤205:接收来自硬件处理器件执行需要由硬件处理器件执行的操作算子所指示的操作所得到的数据查询结果。
硬件处理器件在接收到数据查询装置发送的硬件执行命令之后,可以执行数据查询装置确定的需要硬件处理装置执行的操作算子,进而获得与需要硬件处理装置执行的操作算子对应的数据查询结果,例如为了便于描述,可以将硬件处理器件执行需要硬件处理装置执行的操作算子对应的数据查询结果称作是硬件的数据查询结果。
数据查询装置可以直接从硬件处理器件处获取硬件的数据查询结果,或者,也可以通过发送指令的方式,指示硬件处理器件向数据查询装置发送硬件的数据查询结果。
步骤206:根据数据查询结果,获得与查询任务对应的数据查询结果。
进一步地,在获得了硬件处理器件获得的硬件的数据查询结果之后,为了获得针对查询任务的最终数据查询结果,数据查询装置还可能需要进行其它操作,具体来说,例如:
当硬件处理器件执行的是M种操作算子中的全部操作算子时,那么表示硬件处理器件将执行查询任务所需要进行的全部操作均已经执行,那么通过硬件处理器件获得的硬件的数据查询结果即为与查询任务对应的最终数据查询结果,那么数据查询装置在获得硬件的数据处理结果之后,相当于便是执行完了查询任务,而获得了最终数据查询结果。
可选的,在需要硬件处理器件执行的操作算子是需要的操作算子中的一部分时,在根据数据查询结果,获得与查询任务对应的数据查询结果之前,方法还包括:
执行需要的操作算子中除需要硬件处理器件执行的操作算子之外的其余操作算子,从而获得其余操作算子对应的数据查询结果;
根据数据查询结果,获得与查询任务对应的数据查询结果,包括:
根据其余操作算子对应的数据查询结果和硬件处理器件执行需要由硬件处理器件执行的操作算子所指示的操作所得到的数据查询结果,获得与查询任务对应的数据查询结果。
当硬件处理器件执行的是M种操作算子中的部分操作算子时,那么表示硬件处理器件执行的只是执行查询任务所需进行的部分操作,所以获得与查询任务对应的数据查询结果之前,还可以通过调度软件的方式执行其余的操作。
例如,继续参见图4,数据查询装置在获得硬件处理器件执行Filter和Select的硬件的数据查询结果之后,还可以从执行Map1节点中的Groupby处继续执行剩余的操作算子,直至M种操作算子中除Filter和Select的其余操作算子被执行完毕,进而可以获得与查询任务对应的最终数据查询结果。
也就是说,在确定将Filter和Select发送给硬件处理器件执行之后,数据查询装置就不会再执行Filter和Select了,而只执行Filter和Select之外的其余操作算子,这样可以减少对Filter和Select的重复执行,进而可以避免查询出错,提高准确性,同时还可以避免由于重复操作而导致的更低的查询效率。
可选的,向硬件处理器件发送硬件执行命令,包括:若确定查询条件的数量小于等于预定数量,则向硬件处理器件发送硬件执行命令,其中,查询条件是根据查询命令确定得到的。
本发明实施例中,预定数量的取值可以用于衡量硬件处理器件的硬件执行能力,例如,硬件处理器件能够处理的查询条件的最大数量为16,那么本发明实施例中可以将预定数量设置为16,或者14,或者8,等等。较优地,为了能够充分利用硬件处理器件的硬件性能,可以将预定数量设置为等于或尽量趋近于硬件处理器件能够处理的查询条件的最大数量(即16),例如将预定数量设置为16,或者15。
也就是说,在向硬件处理器件发送硬件执行命令之前,可以先判断硬件处理器件是否具有执行需要硬件处理器件执行的操作算子的能力,这是由于硬件处理器件本身硬件性能的限制,如果硬件处理器件执行不了下发给它的操作算子,即执行不了数据查询装置下发的任务,相当于就是无效下发,这样不利于查询效率的提升,为了便于阅读者理解,以下以表1举例说明。
表1
姓名 | 语文 | 数学 | 英语 | 物理 |
A | 90 | 85 | 73 | 83 |
B | 85 | 96 | 88 | 78 |
C | 87 | 88 | 89 | 96 |
D | 93 | 94 | 95 | 75 |
E | 78 | 79 | 88 | 86 |
F | 96 | 77 | 89 | 82 |
表1是是包括A-F六位同学的语文、数学、英语和物理四科目的成绩表,假设用户输入的查询语句是“SELECT姓名FROM表1WHERE语文≥80&数学≥80&英语≥80”,表示用户希望从表1中查找出语文、数学和英语的得分均大于等于80的同学,那么,可以将“语文≥80”、“数学≥80”、“英语≥80”看作是查询条件,数据查询装置可以对该查询语句进行解析以获得对应的查询命令,进而根据查询命令可以确定查询条件的数量是3个,若根据硬件处理器件的自身运算能力,最多只能处理5个查询条件的查询运算且预定数量也被设置为5,由于3小于5,所以此时可以将需要硬件处理器件执行的操作算子发送给硬件处理器件执行,如果查询条件的数量大于5(例如为7)的话,即使将需要硬件处理器件执行的操作算子发送给了硬件处理器件,硬件处理器件也无法执行查询运算,所以为了避免无效操作,在具体实施过程中,在将需要硬件处理器件执行的操作算子发送给硬件处理器件之前,可以先执行本发明实施例中的判断步骤。
可选的,本发明实施例中的数据查询方法还包括:指示硬件处理器件获得待查询的数据块。
其中,待查询的数据块是执行需要硬件处理器件执行的操作算子时所需查询的数据,也就是说,需要确定硬件处理器件究竟是对哪些数据块执行操作,以使硬件处理器件能够真正完成对数据的查询处理,以满足用户的查询需求。
可选的,硬件执行命令还可以用于指示硬件处理器件针对待查询的数据块进行与需要硬件处理器件执行的操作算子对应的操作。
在实际中,硬件处理器件只是一个执行设备,硬件处理器件具体是根据数据查询装置发送的指令进行工作的,例如可以这样理解,硬件处理器件执行的具体操作都是根据数据查询装置发送的命令进行的,硬件处理器件在进行查询处理时是受控于数据查询装置的指示的。
在具体实施过程中,硬件处理器件获得待查询的数据块的方式一般可以具有以下两种:
第一种方式:数据查询装置直接向硬件处理器件发送待查询的数据块。
第二种方式:通过发送命令进行控制的方式直接控制硬件处理器件在数据处理装置的存储中读取以获得待查询的数据块,即控制硬件处理器件直接获取。例如,以硬件处理器件是FPGA为例,FPGA可以通过DMA(DirectionalMemoryAccess,直接内存访问)的方式从数据查询装置的存储中直接读取待查询的数据块。在实际中,由硬件处理器件通过直接读取的方式获取待查询的数据块的数据传输效率较快,并不需要CPU的干预,所以如果待查询的数据块包括的数据量较大的话,若采用第二种方式可以获得较快的数据传输速率。
可选的,向硬件处理器件发送硬件执行命令,包括:
根据查询命令,获得针对需要硬件处理器件执行的操作算子的硬件执行计划信息;
根据硬件执行计划信息,生成硬件执行命令,并向硬件处理器件发送硬件执行命令。
其中,硬件执行计划信息是指用于表示硬件处理器件需要执行哪些操作算子的配置文件,例如是文件名为plan.xml的配置文件。通过硬件执行计划信息,可以将M种操作算子中需要硬件处理器件执行的操作算子和需要继续由数据查询装置执行的操作算子进行区别划分。
也就是说,例如可以根据硬件执行计划信息生成对应的硬件执行命令,而在具体实施过程中,本发明实施例提供两种方式用于生成针对需要硬件处理器件执行的操作算子的硬件执行计划信息。
可选的,第一种方式:根据查询命令,生成针对M种操作算子的原始执行计划信息,再从原始执行计划信息中,确定针对需要硬件处理器件执行的操作算子的硬件执行计划信息。
可选的,第二种方式:根据查询命令,直接生成针对需要硬件处理器件执行的操作算子的硬件执行计划信息。
与上述两种方式对应,还可以分别具有两种分别针对M种操作算子中除需要硬件处理器件执行的操作算子的外的其余操作算子的执行计划信息,为了便于描述,且由于其余操作算子均是通过调度软件由数据查询装置执行,例如可以将其称作为软件执行计划信息。
为了便于本领域技术人员理解,以Hive系统为例进行举例说明,继续参见图4。假设M种操作算子具体是TableScan、Filter、Select、Groupby和ReduceSink这五种操作算子,且需要硬件处理器件的操作算子执行的是Filter和Select这两种操作算子。以下分别对上述两种获得硬件执行计划信息和获得软件执行计划信息的方式进行说明。
假设,按照现有技术中的方式生成的针对M种操作算子的原始执行计划信息如下:
1)对于第一种方式来说,可以从上述原始执行计划信息中确定出针对Filter和Select这两种操作算子的硬件执行计划信息,如下:
进一步地,可以将以上部分信息从原始执行计划信息中删除,剩余的信息即为针对软件执行计划信息。
2)针对于第二种方式来说,只要从M种操作算子中确定需要硬件处理器件执行之后,则可以同时或先后分别生成针对需要硬件处理器件执行的操作算子的硬件执行计划信息和针对其余操作算子的软件执行计划信息。
相对于现有技术来说,相当于是修改了执行计划信息的生成机制,具体来说,可以通过修改Hive系统的compiler模块来达到分别获得硬件执行计划信息和软件执行计划信息的目的。
可选的,指示硬件处理器件获得待查询的数据块,或者,可选的,本发明实施例中的数据查询方法还包括:
根据查询命令,确定待查询的数据块;待查询的数据块是执行需要硬件处理器件执行的操作算子时所需查询的数据;
从待查询的数据块中确定有效的数据块;有效的数据块的地址范围与由查询命令对应的需要查询的地址范围存在交集;
向硬件处理器件发送有效的数据块,或者,向硬件处理器件发送数据块获取指令;其中,数据块获取指令用于指示硬件处理器件获取有效的数据块。
在具体实施过程中,可以先通过本发明实施例中的方式对待查询的数据块进行初过滤以获得有效的数据区,再指示硬件处理器件获得筛选过的有效的数据块进行处理,这样可以尽量避免将无效的数据块发送给硬件处理器件,减少无效数据的传输。
在具体实施过程中,不同的数据查询系统可以具有不同的数据存储系统,不同的数据存储系统中数据的存储格式和方式可能也不同,所以针对待查询的数据块进行有效的数据块的筛选方式也可能不同,为了便于阅读者理解,以下以数据存储格式是ORC(OptimizedRowColumnar,优化行列)格式的有效的数据块的筛选方式进行举例说明,例如对于Hive系统中的HDFS来说,其数据存储格式即为ORC格式。
可选的,从待查询的数据块中确定有效的数据块,包括:
确定Stripe数据块对应在索引数据中的最小索引值和最大索引值;
若最小索引值和最大索引值所代表的地址范围与需要查询的地址范围存在交集时,将与该Stripe数据块确定为有效的数据块。
对于ORC文件格式的数据,每个ORC文件由1个或多个Stripe(或称Stripe数据块)组成,每个Stripe约为256MB大小,每个Stripe由三部分组成,分别是IndexData(索引数据)、RowData(行数据)和StripeFooter(Stripe头)。
其中,IndexData中包括每个Column(列)的Max(最大)值和Min(最小)值,Max值即为本发明实施例中的最大索引值,Min值即为本发明实施例中的最小索引值。
ORC文件的解析由数据查询装置与硬件处理器件共同完成,数据查询装置初步对ORC文件的FileFooter(文件头)的头格式进行解析,在初步解析之后,再根据用户输入的查询语句判断多个Stripe数据块中的哪一些是有效的Stripe数据块,再将有效的Stripe数据块确定为有效的数据块,最后只将有效的Stripe数据块发送给硬件处理器件进行处理,如果确认Stripe数据块不是有效的Stripe数据块,则直接将其忽略,即无需控制硬件处理器件获得该Stripe数据块,以尽量减少数据的无效传输。
继续以前文中的表1为例进行说明,在具体实施过程中,例如可以按照以下方式判断Stripe数据块是否是有效的Stripe数据块。需要说明的是,在对Stripe数据块进行是否有效的判断过程中,由于数据查询装置未对Stripe数据块本身包括的信息进行解析,所以表1实际上是以例如压缩的格式存储在Stripe数据块中的,用户的查询需求虽然是针对表1的,但是数据查询装置在执行的过程中,实际上是针对Stripe数据块进行查询的。
假设用户的查询需求是从Stripe数据块中查找出英语成绩低于70分或语文大于92分的同学,即用户的查询条件是英语<70分或语文>92。
由于Stripe数据块的IndexData中存储有英语科目的最大值(95)和最小值(73),以及存储有语文科目的最大值(93)和最小值(78),进而可以获得两个地址范围,即由英语的最小值和最大值所构成的英语的[73,95],以及由语文的最小值和最大值所构成的语文的[78,93]。
进一步地,根据查询条件可以确定需要查询的地址范围是英语<70和语文>92。
可以看出英语科目的最低分(73分)都大于70分,即“英语<70”与“[73,95]”不存在交集,所以可以认为Stripe数据块中没有英语成绩低于70分的同学,同时,对于语文科目来说,由于92属于[78,93],即“语文>92”与“[78,93]”之间存在交集,则可以确定Stripe数据块中包括语文成绩高于92分的同学。
最后,由于根据“语文>92”这一查询条件,可以确定该Stripe数据块为有效数据块,即使根据“英语<70”确定该Stripe数据块不是有效的Stripe数据块,由于“语文>92”与“英语<70”之间是或的关系,所以应该将该Stripe数据块看作是有效的Stripe数据块。
以上只是以一个Stripe数据块进行示意性说明,在具体实施过程中,还可以采用上述方式对其它Stripe数据块是否是有效的Stripe数据块进行判断。另外,只要数据存储格式为ORC格式的数据查询系统,均可以本发明实施例中的方式对Stripe数据块是否是有效的Stripe数据块进行快速筛选。
本发明实施例中,通过最小索引值和最大索引值可以对Stripe数据块是否是有效的数据块进行快速判断,以对待查询的数据区进行快速筛选,在避免无效数据传输的前提下,还可以提高筛选的速度,进一步地提高查询效率。
在实际中,FPGA作为ASIC(ApplicationSpecificIntegratedCircuit,专用集成电路)领域中的一种半定制电路,既可以解决定制电路的不足,又可以克服原有可编程器件门电路数有限的缺点,FPGA具有体系结构和逻辑单元灵活、集成度高以及适用范围宽等特点,可实现较大规模的电路,编程也很灵活,并且,还具有设计开发周期短、设计制造成本低、开发工具先进、标准产品无需测试、质量稳定以及可实时在线检验等优点,因此,FPGA已经作为一种通用的逻辑器件被业界广泛应用。
基于此,本发明实施例将以硬件处理器件具体是FPGA为例,对硬件处理器件对于M中操作算子中的操作算子的执行进行举例说明。
可选的,对于硬件处理器件是FPGA来说,本发明实施例中的数据查询方法还包括:向FPGA发送真值表执行指令,真值表执行指令用于指示FPGA根据真值表执行需要硬件处理器件执行的操作算子所指示的操作,真值表是根据查询条件生成的。
根据FPGA的运算性能可知,FPGA在进行单个的比较操作时运算速度较快,比较适用于处理一些单个比较条件的比较操作。而对于由多个比较条件所组成的逻辑表达式来说,由于逻辑运算一般具有优先级顺序,如果由FPGA来处理,需要FPGA支持一套语法解析器,FPGA设计就会比较复杂,处理性能上也会受到影响,所以,为了保证FPGA能够对于逻辑表达式也能够快速地进行处理,在本发明实施例中,可以先根据查询命令确定用户输入的查询语句中的逻辑表达式,再根据逻辑表达式所包括的所有查询条件生成真值表,即先将原本复杂的逻辑表达式转换成FPGA能够快速执行的真值表,进而可以让FPGA通过查找真值表的方式执行需要硬件处理器件执行的操作算子所指示的操作,进而在待查询的数据块中进行查询,以尽量保证较高的查询效率。
为了便于理解,在本发明实施例中,假设逻辑表达式包括的所有查询条件的数量为Q,Q为正整数。
继续以表1为例,假设SQL查询语句是“SELECT姓名FROM表1WHERE(语文≥80||数学≥80)&(英语≥80||物理≥85)”,其中,||表示或运算,&表示与运算。
根据SQL的语句规则可知,WHERE子句是用于设置查询条件的,那么WHERE后面跟的自然也就是查询条件,根据上述SQL查询语句,可以将“语文≥80”、“数学≥80”、“英语≥80”、“物理≥85”看作是四个比较条件,同时也可以认为是本发明实施例中的Q个查询条件,即此时Q的取值为4。以“语文≥80”这个比较条件来说,FPGA进行比较操作可以理解为是针对表1中的语文这列分数中的每行分别判断是否大于等于80,如果确定大于等于80,则表明满足比较条件,此时可以认为比较结果为真,并将比较结果确定为1,如果确定小于80,则表明不满足比较条件,此时可以认为比较结果为假,并将比较结果确定为0。
可以将“(语文≥80||数学≥80)&(英语≥80||物理≥85)”看作是查询语句中的逻辑表达式,由于该逻辑表达式中同时包括括号、或运算和与运算,并且括号的运算优先级要高于或运算和与运算,所以FPGA如果在处理这类复杂的逻辑表达式的过程会比较复杂,查询效率也比较低。
在具体实施过程中,可以在对查询语句进行编译的过程中,通过编译器根据逻辑表达式中的全部查询条件生成真值表,并且,在生成真值表后,可以将其存储于数据查询装置的内存中,以便后续FPGA直接调用。
为了便于本领域技术人员对于本发明实施例中的数据查询方法进行整体上的理解,以下以数据查询系统是Hive系统、硬件处理器件是FPGA为例进行整体介绍,请参见图5,图5为将第一Map节点中的操作算子发送给FPGA执行的整体架构示意图。
具体来说,图5中虚线框所表示的操作均为本发明相对于现有技术所进行改进的地方,从整体框架上来说,相对于现有技术来说,FPGADrive(FPGA驱动)和FPGA是新增加的模块。以下将图5划分为Hive、Hadoop(MR)、FPGADrive和FPGA四部分进行说明,其中Hadoop(MR)中的MR即为Map/Reduce的简写。
1、在Hive中,在SQL编译的过程中,可以修改执行计划,同时还可以生成真值表,修改执行计划和生成真值表的时间先后可以不限定。生成的真值表可以存储在CPU中的内存中,待FPGA需要调用真值表时,FPGADrive可以根据FPGA发送的请求指令将真值表发送给FPGA,所以在图7中可以看到,在Hive、FPGADrive和FPGA中均图示有真值表。
具体来说,修改执行计划是为了获得用于指示FPGA执行需要硬件处理器件执行的操作算子的硬件执行计划信息和用于指示数据查询装置执行M种操作算子中除需要硬件处理器件执行的操作算子之外的其余操作算子的软件执行计划信息,生成真值表是为了便于FPGA能够对复杂的逻辑表达式通过查找真值表的方式进行处理,以提高处理效率。
2、在Hadoop(MR)中,为了减少无效数据的传输,第一Map节点可以将从HDFS中读取的表数据进行初步解析和初过滤,以筛选出有效的Stripe数据块,再将有效的Stripe数据块发送给FPGA进行查询处理。
3、FPGADrive,可以用于直接向FPGA发送控制指令,也可以用于接收FPGA向CPU发送的请求指令,也就是说,可以将FPGADrive理解为是CPU为FPGA提供的专属于FPGA的驱动内存。
另外,图5中图示有“源数据队列”和“完成数据队列”。
具体来说,“源数据队列”中以队列形式存储多条“获取数据命令”,而“获取数据命令”是用于指示FPGA从CPU的预定存储路径处获取待查询的数据区,可以这样理解,通过执行“源数据队列”中的“获取数据命令”,FPGA可以确定从CPU内存中的何处获取待查询的数据区。FPGADrive可以在FPGA空闲时,将“源数据队列”中的“获取数据命令”发送给FPGA执行。
与“源数据队列”的理解方式类似,“完成数据队列”可以用于存放指示FPGA将进行处理后的数据具体存放于CPU中的何处的命令。
同时,FPGADrive可以根据在Hive中生成的硬件执行计划信息,并按照与FPGA之间的驱动接口格式生成处理参数,将FPGA所需执行的参数通过调用驱动程序传递给FPGA,进而控制FPGA完成第一Map节点发送的操作算子。
4、FPGA在获得待查询的数据块之后,可以首先对Stripe数据块进行文件解析、解压,以获得解析后的待查询的数据块,进而再通过查找真值表的方式完成需要FPGA执行的操作算子,例如如图5中所示,需要FPGA执行的操作算子是由第一Map(映射)节点发送的Select和Filter这两种操作算子。
以上是对图5中的四部分各部分的功能进行大致介绍,以下根据图6以及四部分的之间的相互关联,将本发明实施例中的数据查询方法进行详细说明,例如可以按照以下流程进行理解。
第一:通过Hive中的UI(例如前文的Hive系统中的用户接口组件)获得用户输入的查询语句,再对查询语句进行解析以获得查询命令,进而可以根据查询命令确定出查询任务、查询条件、与查询任务所对应的M种操作算子,以及需要发送给FPGA执行的M种操作算子中的操作算子,在图6中,是以将第一Map中的Select和Filter发送给FPGA为例进行举例说明。
第二:通过Hive中的DRIVE对查询命令进行处理。
具体来说,可以通过编译器修改执行计划生成机制,以分别生成针对Select和Filter的硬件执行计划信息,以及针对M种操作算子中除Select和Filter之外的其余操作算子的软件执行计划信息。
同时,还可以通过编译器根据查询条件生成真值表。
另外,通过执行器将查询任务下发到Hadoop(MR)中执行,具体来说,是将查询任务分解为多个子任务,分别下发给Hadoop(MR)中的各个Map节点和Redue节点执行,而在图6中,是以第一Map(映射)节点和第一Reduce节点这两个节点进行举例,而对于其它Map和其它Reduce就没有一一进行图示了。
第三:第一Map节点在接收到其需要执行查询任务之后,首先从Hadoop底层的HDFS中读取表数据,具体来说,读取的可以是多个相互独立的Stripe数据块,再对读取的Stripe数据块进行初步解析,进而再从解析后的Stripe数据块中过滤出有效的Stripe数据块,并以命令的形式传递给FPGADrive中的“源数据队列”。
第四:FPGADrive可以根据“源数据队列”中的命令指示FPGA从特定内存处读取待查询的数据区,此时即为有效的Stripe数据块,同时,为了便于FPGA能够快速执行由多个查询条件构成的复杂的逻辑表达式,FPGADrive还会指示FPGA获得真值表,也就是说,FPGADrive可以按照与FPGA之间的驱动接口格式生成操作需要的参数,并将待查询数据和操作需要的参数同时配置给FPGA,以便FPGA能够对有效的Stripe数据块进行Select和Filter。
第五:FPGA在获得有效的Stripe数据块之后,首先对有效的Stripe数据块进行文件解析、解压,以获得解析后的有效的Stripe数据块,进而再通过查找真值表的方式完成第一Map节点下发的Select和Filter这两种操作算子,以完成对于有效的Stripe数据块的查询处理。
进一步地,FPGA会将通过查询处理的数据转换成对应的输出格式,并可以通过DMA的方式直接发送到CPU的内存中。具体来说,可以是根据FPGADrive中的“完成数据队列”中的命令对经格式转换后的数据进行存储。
第六:最后,第一Map节点对在FPGA中经格式转换之后的数据继续进行其它操作处理,并且,在第一Map节点完成全部操作处理之后,再由第一Reduce节点对数据进行汇总。
当然,要完成数据查询任务,是根据多个Map节点和多个Reduce节点共同处理的结果获得,至于后续的处理步骤,可以采用目前通用的处理方式,在本发明实施例中就不再详细进行说明了。
另外,为了便于本领域技术人员对真值表的获取方式和使用过程进行理解,以下也举例说明。
请参见图6,图6为本发明实施例中根据Q个查询条件生成真值表的流程图,步骤601-步骤605可以用于说明真值表的生成过程。此处假设SQL查询语句是:SELECT姓名FROM表1WHERE语文≥80&数学≥80&英语≥80,并且可以将“语文≥80”、“数学≥80”、“英语≥80”分别看作是条件1、条件2和条件3,以下对步骤601-605进行说明。
步骤601:根据SQL查询语句中的WHERE子句确定Q个查询条件。
Q个查询条件即为:语文≥80、数学≥80和英语≥80。
步骤602:判断Q个查询条件是否超过FPGA能够执行的查询条件的最大数量。
例如,FPGA一般最多只能处理64K(即64000)位的数据,由于216=65536,所以要求查询条件的数量不能超过16个,如果Q值大于16的话,即使需要FPGA执行的操作算子发送给FPGA,FPGA也无法处理,进而造成数据的无效传输,所以此时无需生成真值表,也无需将需要FPGA执行的操作算子发送给FPGA,所有的操作算子还是全部由数据查询装置通过调度软件执行。当然,在具体实施过程中,根据具体的FPGA的性能不同,可以对应具有不同的处理能力,那么查询条件的数量也可以不等。
步骤603:若未超过,生成能够对2Q个二进制数分行进行存储的空真值表。
也就是说,在确定查询条件数量小于16个的话,则可以通过真值表的方式提高FPGA的查询效率,此时可以执行生成真值表的步骤。
另外,还可以通过判断查询条件的数量是否小于一特定值,例如小于2,如果查询条件的数量小于2的话,表明只有1个查询条件,那么自然也就不会存在比较复杂的逻辑运算,此时即使不采用真值表的方式,FPGA也可以获得较快的查询效率,所以,此时也可以无需再生成FPGA。
那么,在具体实施过程中,至于查询条件的数量具体在什么范围内才通过真值表的方式进行查询处理,可以根据数据查询系统的查询机制、FPGA的性能或者用户的需求等因素确定,本发明不做具体限制。
步骤604:确定Q个查询条件的所有真假值组合,获得2Q个真假值组合。
在逻辑运算中,真以1表示,假以0表示,所以实际上可以将一个真假值组合看成是一个二进制数,也就是说,可以将2Q个真假值组合看作是2Q个二进制数。
步骤605:根据空真值表和2Q个真假值组合确定真值表。
具体来说,可以根据2Q个真假值组合,在空真值表的基础上确定本发明实施例中的真值表,后续再进行详细的说明。
在具体实施过程中,根据本发明实施例提供的方法至少可以获得以下两种形式的真值表,即,可选的,真值表包括:2Q行二进制数,Q为查询条件的数量,Q为正整数。
可选的,第一种真值表:真值表中的第N行中存储的二进制数的数值为N-1的二进制形式,真值表中的二进制数按数值预定顺序存储在真值表中,N为小于或等于2Q的正整数,其中,预定顺序例如是按照从大到小的顺序,或者可以是按照从小到大的顺序。例如,第一种真值表如表2,可见表2中的二进制数是按照数值由小到大的预定顺序存储表中的。
表2
0 | 0 | 0 |
0 | 0 | 1 |
0 | 1 | 0 |
0 | 1 | 1 |
1 | 0 | 0 |
1 | 0 | 1 |
1 | 1 | 0 |
1 | 1 | 1 |
可选的,第二种真值表:真值表中的第N行中存储的二进制数的数值为通过将N-1的二进制形式按照从高位到低位的顺序代入查询命令对应的逻辑表达式中进行逻辑运算获得的逻辑计算结果。例如,第二种真值表如表3。
表3
0 |
0 |
0 |
0 |
0 |
0 |
0 |
1 |
为了便于阅读者对真值表的生成过程能够直观地进行理解,以下对真值表的生成过程以表格的方式进行举例说明,但是应该理解的是,在真值表的实际生成过程中,以下所列举的表格均可以认为不是必须存在的,数据查询装置在生成真值表的过程中,例如可以通过预定的算法直接获得如上述表2或表3所示的真值表。
以查询语句具体是“SELECT姓名FROM表1WHERE语文≥80&数学≥80&英语≥80”为例进行说明,可见,查询条件分别是:“语文≥80”、“数学≥80”和“英语≥80”,例如将“语文≥80”、“数学≥80”和“英语≥80”分别看作是条件1、条件2和条件3、可见此时Q的取值为3,逻辑表达式为:语文≥80&数学≥80&英语≥80。
由于包括3个查询条件,那么每个二进制数可以包括三位,例如可以按照逻辑表达式中从左往右的顺序,将对应的查询条件的比较结果分别作为二进制数的最高位至最低位,并且,由于包括3个查询条件,所以可以确定8(即23)个真假值组合,所以假设,空真值表至少可以包括8行,且每行至少可以容纳三位,例如分配的空真值表如表4。
表4
也就是说,空真值表至少可以包括8行3列。另外,需要说明的是,表4是最简化的一种方式,在具体实施过程中,还可以根据实际需要生成行数大于等于8且列数大于等于3的空真值表,例如,为了将每个查询条件的比较结果与查询条件本身进行对应,以及为了便于根据所有查询条件直接获得逻辑表达式的逻辑计算结果,可以生成9行4列的空真值表,同时,还可以将表头自动写入,例如表5。
表5
进一步地,将与十进制数(或者其它进制)0到8分别对应的二进制数按照从小到大的顺序写入表5中,即为表6。
表6
再进一步地,将表6中每行的二进制数按照从高位到低位的顺序依次代入逻辑表达式“语文≥80&数学≥80&英语≥80”中进行逻辑运算,以获得8个逻辑计算结果。
在具体实施过程中,例如可以将上述逻辑表达式简化为x&y&z,x、y、z分别表示二进制数的最高位、中间位和最低位。
当将000代入x&y&z中时,即为0&0&0,通过逻辑运算,可以确定逻辑计算结果为0。
当将010代入x&y&z中时,即为0&1&0,通过逻辑运算,可以确定逻辑计算结果为0。
当将100代入x&y&z中时,即为1&0&0,通过逻辑运算,可以确定逻辑计算结果为0。
当将111代入x&y&z中时,即为1&1&1,通过逻辑运算,可以确定逻辑计算结果为1。
以上以000、010、100和111这四个二进制数进行举例,其它的二进制数可以采用相同的计算方式,最终一共获得8个逻辑计算结果,再将8个逻辑计算结果分别写入与其对应的二进制数后面,如表7。
表7
另外,还可以将对应的十进制值一并写入表中,相当于起下标的作用,例如表8。
其中,对于十进制数的位数不做限制,可以根据2Q的值确定,例如当2Q的值是8,则可以将十进制数的位数设置为1,2Q的值是32,则可以将十进制数的位数设置为2,例如当2Q的值是256,则可以将十进制数的位数设置为3,等等,在表8中,是以将十进制数的位数设置为2为进行举例表示。
并且,在具体实施过程中,并不限定于是将与二进制数对应的十进制值写入表中,例如也可以是将与二进制数对应的十六进制值写入表中,等等。
表8
根据表8可以看出,第一种真值表(即表2)是表8除去表头的最左边三列,而第二种真值表(即表3)是表8种除去表头的从左往右的第四列。
在具体实施过程中,可以根据实际需要确定最终的真值表的形式,例如还可以将表8中最左边的四列以作为第三种真值表,即表9,或者直接将表8作为第四真值表,等等。
表9
进一步地,为了便于阅读者能够更加直观地对FPGA利用真值表的方式在待查询的数据区中进行查询的过程进行理解,以下以上述表2-表9进行说明。
假设,表1即为FPGA解析后的待查询的数据块。
由于3个查询条件分别是“语文≥80”、“数学≥80”和“英语≥80”,那么可以从表1中确定第二列(即语文)、第三列(即数学)和第四列(即英语)这3列数据符合查询条件。
进一步地,针对于语文、数学和英语这三列的每一行得分,分别对应与“语文≥80”、“数学≥80”和“英语≥80”进行比较,再分别获得比较结果。
以表1中姓名为“A”的同学的成绩为例,其语文得分为90分,满足“语文≥80”的条件,那么可以将比较结果确定为1,其数学得分为85分,满足“数学≥80”的条件,那么可以将比较结果确定为1,其英语得分为73分,不满足“英语≥80”的条件,那么可以将比较结果确定为0,进而可以将针对A同学的三个比较结果作为一个二进制数,即110。
针对其他同学的比较结果可以采用与同学A相同的方式,这样可以获得所有同学与查询条件之间的比较结果,即一共可以获得6个二进制数,如表10。
表10
姓名 | 语文 | 数学 | 英语 |
A | 1 | 1 | 0 |
B | 1 | 1 | 1 |
C | 1 | 1 | 1 |
D | 1 | 1 | 1 |
E | 0 | 0 | 1 |
F | 1 | 0 | 1 |
进一步地,可以根据获得的与6位同学对应的6个二进制数对真值表进行查询,以从表1中确定出满足所有查询条件的同学。在具体实施过程中,可以根据不同的真值表确定采用对应的查询方式。
可选的,对于第三种真值表(即表9)来说,可以首先对表2进行遍历,以查找到与110、111、111、111、001和101相同的二进制数,再分别获得与其对应的逻辑计算结果,请参见表9,可以看出110、111、111、111、001和101分别对应的逻辑计算结果是0、1、1、1、0、0。由于只有逻辑计算结果为1时,才表明符合所有的查询条件,所以可以得出表10中只有B、C和D三位同学满足“语文≥80&数学≥80&英语≥80”这一查询条件,进而可以将B、C、D三位同学的姓名作为FPGA所获得的数据查询结果。
在该种查询方式中,FPGA通过对真值表遍历查询的方式进行查询处理,对于查询条件数量较少的查询任务来说,可以快速获得查询结果。
首先,针对于表10中的6个二进制数,先分别确定与其对应的6个十进制数,即为6、7、7、7、1和5。
再在表3、表7-表9中的任意一个真值表中分别确定第6行、第7行、第1行和第5行的二进制数,进而再分别获得与第6行、第7行、第1行和第5行的二进制数对应的逻辑计算结果分别是0、1、0、0,由于只有逻辑计算结果为1时,才表明符合所有的查询条件,所以可以得出只有第7行的数据才满足“语文≥80&数学≥80&英语≥80”这一查询条件,再结合表10,与B、C、D三位同学对应的二进制数均对应到表3、表7-表9中的任意一个真值表的第7行,所以可以将B、C、D三位同学的姓名作为FPGA所获得的硬件执行结果。
在该种查询方式,可以直接通过与二进制数对应的十进制数进行精确定位查找,目标性强,尤其是当查询条件数量较多的时候,可以不进行遍历查找,这样可以在一定程度上省去遍历查找的时间,从而可以快速获得查询结果,查询效率较高。
在具体实施过程中,可以综合考虑待查询数据的数据量大小、查询条件的数量和其它因素以确定具体的查询方式,本发明不做具体限定。另外,需要说明的是,本发明包括但不仅限于以上述两种查询方式,本申请在此就不一一进行说明了,凡是可以用于根据真值表对待查询数据进行查询处理的查询方式,均应在本发明的保护范围之内。
另外,通过图5中的FPGA部分可以看出,真值表具体是在FPGA执行Filter操作算子时利用到的,所以,可选的,在向FPGA发送真值表执行指令之前,还包括:确定M个操作算子中的操作算子中至少包括Filter,这样可以尽量避免真值表的无效生成,避免浪费时间,还可以节约内存。
另外,在通过FPGA利用完真值表进行数据查询之后,为了尽量节约内存,可以将使用过的真值表进行删除。
本申请中,在获取到用于指示查询任务的查询命令之后,可以根据查询命令确定执行查询任务所需要的M种操作算子,进而再将M种操作算子中的部分操作算子或全部操作算子发送给硬件处理器件,也就是说,可以将原本全部由CPU调度软件执行的查询操作中的部分操作或全部操作发送给硬件处理器件执行,再根据硬件处理器件执行M种操作算子中的部分操作算子或全部操作算子获得的数据查询结果以获得最终的数据查询结果,即获得与数据查询任务对应的数据查询结果。通过本申请的技术方案,可以利用特定硬件处理器件相对于调度软件执行操作算子的运算速度更快的硬件特性,通过将M种操作算子中的部分操作算子或全部操作算子发送给特定硬件处理器件执行,以提高数据查询的效率。
同时,由于将部分操作操作算子或全部查询操作算子发送给了硬件处理器件执行,自然可以减少CPU对于软件的调度次数,从而可以降低CPU的工作负荷,这样可以在一定程度上降低对于CPU的消耗,延长CPU的使用时间。
请参见图7,基于同一发明构思,本发明实施例提供一种数据查询装置,该数据查询装置包括第一获取模块701、第一确定模块702、第二确定模块703、第一发送模块704、接收模块705和第二获取模块706。
第一获取模块701,用于获取用于指示查询任务的查询命令;
第一确定模块702,用于根据第一获取模块701获取的查询命令确定执行查询任务所需要的操作算子,操作算子用于指示执行查询任务所需进行的操作;
第二确定模块703,用于从第一确定模块702确定的需要的操作算子中确定需要硬件处理器件执行的操作算子;
第一发送模块704,用于向硬件处理器件发送硬件执行命令,硬件执行命令用于指示硬件处理器件执行需要由硬件处理器件执行的操作算子所指示的操作;
接收模块705,用于接收来自硬件处理器件执行需要由硬件处理器件执行的操作算子中所指示的操作所得到的数据查询结果;
第二获取模块706,用于根据接收模块705接收的数据查询结果,获得与查询任务对应的数据查询结果。
可选的,查询任务包括至少一个子任务,第二确定模块703用于:
确定至少一个子任务中执行时间大于第一阈值的子任务;
确定执行时间大于第一阈值的子任务所需要的操作算子为需要硬件处理器件执行的操作算子。
可选的,在执行时间大于第一阈值的子任务所需要的操作算子为至少两种操作算子时,第二确定模块703用于:
确定至少两种操作算子中操作耗时比值大于或等于第一比值的操作算子为需要硬件处理器件执行的操作算子,至少两种操作算子中任一操作算子的操作耗时比值为执行任一操作算子所花费的时长与执行至少两种操作算子所花费的总时长的比值。
可选的,在需要的操作算子为至少两种操作算子时,第二确定模块803用于:
确定至少两种操作算子中操作耗时比值大于等于第一比值的操作算子为需要硬件处理器件执行的操作算子,至少两种操作算子中任一操作算子的操作耗时比值为执行任一操作算子所花费的时长与执行至少两种操作算子所花费的总时长的比值。
可选的,第二确定模块703用于:
从通过第一确定模块701确定的需要的操作算子中确定属于预定的操作算子集合的操作算子为需要硬件处理器件执行的操作算子。
可选的,数据查询装置还包括执行模块,用于:
在需要硬件处理器件执行的操作算子是需要的操作算子中的一部分时,在根据数据查询结果,获得与查询任务对应的数据查询结果之前,执行需要的操作算子中除需要硬件处理器件执行的操作算子之外的其余操作算子,从而获得其余操作算子对应的数据查询结果。
第二获取模块706用于:
根据通过执行结果执行其余操作算子对应的数据查询结果和通过接收模块705接收的硬件处理器件执行需要由硬件处理器件执行的操作算子所指示的操作所得到的数据查询结果,获得与查询任务对应的数据查询结果。
可选的,数据查询装置还包括:
第三确定模块,根据第一获取模块获取的查询命令,确定待查询的数据块;待查询的数据块是执行需要硬件处理器件执行的操作算子时所需查询的数据;
第四确定模块,用于从第三确定模块确定的待查询的数据块中确定有效的数据块;有效的数据块的地址范围与由查询命令对应的需要查询的地址范围存在交集;
第二发送模块,用于向硬件处理器件发送有效的数据块;或者,向硬件处理器件发送数据块获取指令,用于指示硬件处理器件获取有效的数据块。
可选的,第四确定模块用于:
确定Stripe数据块对应在索引数据中的最小索引值和最大索引值;
若最小索引值和最大索引值所代表的地址范围与需要查询的地址范围存在交集时,将Stripe数据块确定为有效的数据块。
可选的,硬件处理器件包括FPGA,数据查询装置还包括:
第三发送模块,用于向FPGA发送真值表执行指令,真值表执行指令用于指示FPGA根据真值表执行需要硬件处理器件执行的操作算子所指示的操作,真值表是根据查询命令生成的。
可选的,真值表包括:2Q行二进制数,Q为根据查询命令所确定的查询条件的数量,Q为正整数;
其中,真值表中的第N行中存储的二进制数的数值为N-1的二进制形式,真值表中的二进制数按数值预定顺序存储真值表中,N为小于或等于2Q的正整数;和/或,
真值表中的第N行中存储的二进制数的数值为通过将N-1的二进制形式按照从高位到低位的顺序代入所述查询命令对应的逻辑表达式中进行逻辑运算获得的逻辑计算结果。
由于本发明实施例中的数据查询装置可以用于执行前述数据查询方法,该数据查询装置与上述数据查询方法解决问题的原理相似,对于该数据查询装置中的各模块所实现的功能等,可参考前述数据查询方法的实施,在此不再赘述。
请参见图8,基于同一发明构思,本发明实施例提供一种数据查询装置,该数据查询装置包括连接到同一总线10的处理器11、发送器12和接收器13。
处理器11,用于获取用于指示查询任务的查询命令;根据查询命令确定执行查询任务所需要的操作算子,操作算子用于指示执行查询任务所需进行的操作;以及从需要的操作算子中确定需要硬件处理器件执行的操作算子;
发送器12,用于向硬件处理器件发送硬件执行命令,硬件执行命令用于指示硬件处理器件执行需要由硬件处理器件执行的操作算子所指示的操作;
接收器13,用于接收来自硬件处理器件执行需要由硬件处理器件执行的操作算子所指示的操作所得到的数据查询结果;
处理器11,还用于根据接收器13接收数据查询结果,获得与查询任务对应的数据查询结果。
其中,处理器11可以是CPU(中央处理器)或ASIC(ApplicationSpecificIntegratedCircuit,特定应用集成电路),可以是一个或多个用于控制程序执行的集成电路,可以是基带芯片,等等。
发送器12和接收器13可以通过总线10与处理器11相连接(例如图9所示),或者也可以通过专门的连接线分别与处理器11连接。
发送器12与接收器13之间也可以通过总线10相连接(例如图9所示),或者也可以通过专门的连接线进行连接。
进一步地,请参见图9,该数据查询装置还可以包括存储14,存储器14可以通过总线10与处理器11连接。存储器的数量可以是一个或多个,存储器可以是ROM(ReadOnlyMemory,只读存储器)、RAM(RandomAccessMemory,随机存取存储器)或磁盘存储器,等等。
另外,在本发明实施例中,硬件处理器件可以是指具有逻辑运算能力的器件,例如可以是FPGA、GPU、DSP,等等。
通过对处理器11进行设计编程,将前述的数据查询方法所对应的代码固化到芯片内,从而使芯片在运行时能够执行前述的数据查询方法,如何对处理器11进行设计编程为本领域技术人员所公知的技术,这里不再赘述。
以上实施例仅用以对本申请的技术方案进行了详细介绍,但以上实施例的说明只是用于帮助理解本发明的方法及其核心思想,不应理解为对本发明的限制。本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到的变化或替换,都应涵盖在本发明的保护范围之内。
Claims (20)
1.一种数据查询方法,其特征在于,包括:
获取用于指示查询任务的查询命令;
根据所述查询命令确定执行所述查询任务所需要的操作算子,所述操作算子用于指示执行所述查询任务所需进行的操作;
从所述需要的操作算子中确定需要硬件处理器件执行的操作算子;
向所述硬件处理器件发送硬件执行命令,所述硬件执行命令用于指示所述硬件处理器件执行所述需要由硬件处理器件执行的操作算子所指示的操作;
接收来自所述硬件处理器件执行所述需要由硬件处理器件执行的操作算子所指示的操作所得到的数据查询结果;
根据所述数据查询结果,获得与所述查询任务对应的数据查询结果。
2.如权利要求1所述的方法,其特征在于,所述查询任务包括至少一个子任务;所述从所述需要的操作算子中确定需要硬件处理器件执行的操作算子,包括:
确定所述至少一个子任务中执行时间大于第一阈值的子任务;
确定所述执行时间大于第一阈值的子任务所需要的操作算子为所述需要硬件处理器件执行的操作算子。
3.如权利要求2所述的方法,其特征在于,在所述执行时间大于第一阈值的子任务所需要的操作算子为至少两种操作算子时,所述确定所述执行时间大于第一阈值的子任务所需要的操作算子为所述需要硬件处理器件执行的操作算子,包括:
确定所述至少两种操作算子中操作耗时比值大于或等于第一比值的操作算子为所述需要硬件处理器件执行的操作算子,所述至少两种操作算子中任一操作算子的操作耗时比值为执行所述任一操作算子所花费的时长与执行所述至少两种操作算子所花费的总时长的比值。
4.如权利要求1所述的方法,其特征在于,在所述需要的操作算子为至少两种操作算子时,所述从所述需要的操作算子中确定需要硬件处理器件执行的操作算子,包括:
确定所述至少两种操作算子中操作耗时比值大于等于第一比值的操作算子为所述需要硬件处理器件执行的操作算子,所述至少两种操作算子中任一操作算子的操作耗时比值为执行所述任一操作算子所花费的时长与执行所述至少两种操作算子所花费的总时长的比值。
5.如权利要求1所述的方法,其特征在于,所述从所述需要的操作算子中确定需要硬件处理器件执行的操作算子,包括:
从所述需要的操作算子中确定属于预定的操作算子集合的操作算子为所述需要硬件处理器件执行的操作算子。
6.如权利要求1-5中任一项所述的方法,其特征在于,在所述需要硬件处理器件执行的操作算子是所述需要的操作算子中的一部分时,在所述根据所述数据查询结果,获得与所述查询任务对应的数据查询结果之前,所述方法还包括:
执行所述需要的操作算子中除所述需要硬件处理器件执行的操作算子之外的其余操作算子,从而获得所述其余操作算子对应的数据查询结果;
所述根据所述数据查询结果,获得与所述查询任务对应的数据查询结果,包括:
根据所述其余操作算子对应的数据查询结果和所述硬件处理器件执行所述需要由硬件处理器件执行的操作算子所指示的操作所得到的数据查询结果,获得与所述查询任务对应的数据查询结果。
7.如权利要求1-6中任一项所述的方法,其特征在于,所述方法还包括:
根据所述查询命令,确定待查询的数据块;所述待查询的数据块是执行所述需要硬件处理器件执行的操作算子时所需查询的数据区域;
从所述待查询的数据块中确定有效的数据块;所述有效的数据块的地址范围与由查询命令对应的需要查询的地址范围存在交集;
向所述硬件处理器件发送所述有效的数据块;或者,
向所述硬件处理器件发送数据块获取指令,用于指示所述硬件处理器件获取所述有效的数据块。
8.如权利要求7所述的方法,其特征在于,所述从所述待查询的数据块中确定有效的数据块,包括:
确定Stripe数据块对应在索引数据中的最小索引值和最大索引值;
若所述最小索引值和最大索引值所代表的地址范围与所述需要查询的地址范围存在交集时,将所述Stripe数据块确定为所述有效的数据块。
9.如权利要求1-8中任一项所述的方法,其特征在于,所述硬件处理器件包括现场可编程门阵列FPGA,所述方法还包括:
向所述FPGA发送真值表执行指令,所述真值表执行指令用于指示所述FPGA根据真值表执行所述需要硬件处理器件执行的操作算子所指示的操作,所述真值表是根据所述查询命令生成的。
10.如权利要求9所述的方法,其特征在于,所述真值表包括:2Q行二进制数,Q为根据所述查询命令所确定的查询条件的数量,Q为正整数;
其中,所述真值表中的第N行中存储的二进制数的数值为N-1的二进制形式,所述真值表中的二进制数按数值预定顺序存储在所述真值表中,N为小于或等于2Q的正整数;和/或,
所述真值表中的第N行中存储的二进制数的数值为通过将N-1的二进制形式按照从高位到低位的顺序代入所述查询命令对应的逻辑表达式中进行逻辑运算获得的逻辑计算结果。
11.一种数据查询装置,其特征在于,包括:
第一获取模块,用于获取用于指示查询任务的查询命令;
第一确定模块,用于根据所述第一获取模块获取的所述查询命令确定执行所述查询任务所需要的操作算子,所述操作算子用于指示执行所述查询任务所需进行的操作;
第二确定模块,用于从所述第一确定模块确定的所述需要的操作算子中确定需要硬件处理器件执行的操作算子;
第一发送模块,用于向所述硬件处理器件发送硬件执行命令,所述硬件执行命令用于指示所述硬件处理器件执行所述需要由硬件处理器件执行的操作算子所指示的操作;
接收模块,用于接收来自所述硬件处理器件执行所述需要由硬件处理器件执行的操作算子中所指示的操作所得到的数据查询结果;
第二获取模块,用于根据所述接收模块接收的所述数据查询结果,获得与所述查询任务对应的数据查询结果。
12.如权利要求11所述的数据查询装置,其特征在于,所述查询任务包括至少一个子任务,所述第二确定模块用于:
确定所述至少一个子任务中执行时间大于第一阈值的子任务;
确定所述执行时间大于第一阈值的子任务所需要的操作算子为所述需要硬件处理器件执行的操作算子。
13.如权利要求12所述的数据查询装置,其特征在于,在所述执行时间大于第一阈值的子任务所需要的操作算子为至少两种操作算子时,所述第二确定模块用于:
确定所述至少两种操作算子中操作耗时比值大于或等于第一比值的操作算子为所述需要硬件处理器件执行的操作算子,所述至少两种操作算子中任一操作算子的操作耗时比值为执行所述任一操作算子所花费的时长与执行所述至少两种操作算子所花费的总时长的比值。
14.如权利要求11所述的数据查询装置,其特征在于,在所述需要的操作算子为至少两种操作算子时,所述第二确定模块用于:
确定所述至少两种操作算子中操作耗时比值大于等于第一比值的操作算子为所述需要硬件处理器件执行的操作算子,所述至少两种操作算子中任一操作算子的操作耗时比值为执行所述任一操作算子所花费的时长与执行所述至少两种操作算子所花费的总时长的比值。
15.如权利要求11所述的数据查询装置,其特征在于,所述第二确定模块用于:
从通过所述第一确定模块确定的所述需要的操作算子中确定属于预定的操作算子集合的操作算子为所述需要硬件处理器件执行的操作算子。
16.如权利要求11-15中任一项所述的数据查询装置,其特征在于,所述数据查询装置还包括执行模块,用于:
在所述需要硬件处理器件执行的操作算子是所述需要的操作算子中的一部分时,在所述根据所述数据查询结果,获得与所述查询任务对应的数据查询结果之前,执行所述需要的操作算子中除所述需要硬件处理器件执行的操作算子之外的其余操作算子,从而获得所述其余操作算子对应的数据查询结果;
所述第二获取模块用于:
根据通过所述执行结果执行所述其余操作算子对应的数据查询结果和通过所述接收模块接收的所述硬件处理器件执行所述需要由硬件处理器件执行的操作算子所指示的操作所得到的数据查询结果,获得与所述查询任务对应的数据查询结果。
17.如权利要求11-16中任一项所述数据查询装置,其特征在于,所述数据查询装置还包括:
第三确定模块,根据所述第一获取模块获取的所述查询命令,确定待查询的数据块;所述待查询的数据块是执行所述需要硬件处理器件执行的操作算子时所需查询的数据区域;
第四确定模块,用于从所述第三确定模块确定的所述待查询的数据块中确定有效的数据块;所述有效的数据块的地址范围与由查询命令对应的需要查询的地址范围存在交集;
第二发送模块,用于向所述硬件处理器件发送所述有效的数据块;或者,向所述硬件处理器件发送数据块获取指令,用于指示所述硬件处理器件获取所述有效的数据块。
18.如权利要求17所述的数据查询装置,其特征在于,所述第四确定模块用于:
确定Stripe数据块对应在索引数据中的最小索引值和最大索引值;
若所述最小索引值和最大索引值所代表的地址范围与所述需要查询的地址范围存在交集时,将所述Stripe数据块确定为所述有效的数据块。
19.如权利要求11-16中任一项所述的数据查询装置,其特征在于,所述硬件处理器件包括现场可编程门阵列FPGA,所述数据查询装置还包括:
第三发送模块,用于向所述FPGA发送真值表执行指令,所述真值表执行指令用于指示所述FPGA根据真值表执行所述需要硬件处理器件执行的操作算子所指示的操作,所述真值表是根据所述查询命令生成的。
20.如权利要求19所述的数据查询装置,其特征在于,所述真值表包括:2Q行二进制数,Q为根据所述查询命令所确定的所述查询条件的数量,Q为正整数;
其中,所述真值表中的第N行中存储的二进制数的数值为N-1的二进制形式,所述真值表中的二进制数按数值预定顺序存储在所述真值表中,N为小于或等于2Q的正整数;和/或,
所述真值表中的第N行中存储的二进制数的数值为通过将N-1的二进制形式按照从高位到低位的顺序代入所述查询命令对应的逻辑表达式中进行逻辑运算获得的逻辑计算结果。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201511033476.6A CN105677812A (zh) | 2015-12-31 | 2015-12-31 | 一种数据查询方法及数据查询装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201511033476.6A CN105677812A (zh) | 2015-12-31 | 2015-12-31 | 一种数据查询方法及数据查询装置 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN105677812A true CN105677812A (zh) | 2016-06-15 |
Family
ID=56190012
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201511033476.6A Pending CN105677812A (zh) | 2015-12-31 | 2015-12-31 | 一种数据查询方法及数据查询装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN105677812A (zh) |
Cited By (22)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106991191A (zh) * | 2017-04-11 | 2017-07-28 | 泰康保险集团股份有限公司 | 商品筛选方法及装置、存储介质、电子设备 |
CN107545015A (zh) * | 2016-06-29 | 2018-01-05 | 华为技术有限公司 | 一种查询故障的处理方法及处理装置 |
CN108108452A (zh) * | 2017-12-28 | 2018-06-01 | 珠海德塔芬特金融科技有限公司 | 金融数据存储及查询系统、金融数据存储及查询方法 |
CN108108472A (zh) * | 2018-01-02 | 2018-06-01 | 联想(北京)有限公司 | 数据处理方法以及服务器 |
CN108108473A (zh) * | 2018-01-02 | 2018-06-01 | 联想(北京)有限公司 | 数据查询方法以及服务器 |
CN108491274A (zh) * | 2018-04-02 | 2018-09-04 | 深圳市华傲数据技术有限公司 | 分布式数据管理的优化方法、装置、存储介质及设备 |
CN109241093A (zh) * | 2017-06-30 | 2019-01-18 | 华为技术有限公司 | 一种数据查询的方法、相关装置及数据库系统 |
CN110291503A (zh) * | 2017-02-03 | 2019-09-27 | 株式会社日立制作所 | 信息处理系统和信息处理方法 |
CN110780982A (zh) * | 2018-07-27 | 2020-02-11 | 深圳百迈技术有限公司 | 一种图像处理方法、装置及设备 |
CN110909023A (zh) * | 2018-09-17 | 2020-03-24 | 华为技术有限公司 | 一种查询计划的获取方法、数据查询方法及装置 |
CN111198766A (zh) * | 2020-01-06 | 2020-05-26 | 中科驭数(北京)科技有限公司 | 数据库访问操作部署方法、数据库访问方法及装置 |
CN111382174A (zh) * | 2018-12-28 | 2020-07-07 | 百度在线网络技术(北京)有限公司 | 多方数据联合查询方法、装置、服务器和存储介质 |
CN112328620A (zh) * | 2020-11-05 | 2021-02-05 | 浪潮云信息技术股份公司 | 一种分布式数据库查询加速方法 |
CN112445812A (zh) * | 2020-11-27 | 2021-03-05 | 中原银行股份有限公司 | 一种结构化查询语句处理方法及装置 |
CN112650943A (zh) * | 2020-12-24 | 2021-04-13 | 山东鑫泰洋智能科技有限公司 | 多云服务器的协同数据检索系统及方法 |
CN112699140A (zh) * | 2019-10-23 | 2021-04-23 | 阿里巴巴集团控股有限公司 | 数据处理方法、装置、设备和存储介质 |
CN112783914A (zh) * | 2019-11-01 | 2021-05-11 | 北京京东振世信息技术有限公司 | 优化语句的方法和装置 |
CN112801439A (zh) * | 2019-11-14 | 2021-05-14 | 深圳百迈技术有限公司 | 任务管理方法及装置 |
CN113468220A (zh) * | 2021-09-03 | 2021-10-01 | 苏州浪潮智能科技有限公司 | 一种数据查询方法、装置、设备及介质 |
CN113742370A (zh) * | 2021-11-02 | 2021-12-03 | 阿里云计算有限公司 | 全加密数据库的数据查询方法、统计信息密文生成方法 |
CN114090695A (zh) * | 2022-01-24 | 2022-02-25 | 北京奥星贝斯科技有限公司 | 分布式数据库的查询优化的方法和装置 |
CN116302564A (zh) * | 2023-04-27 | 2023-06-23 | 之江实验室 | 一种基于无状态运行时的程序分布式执行方法 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102567247A (zh) * | 2012-01-04 | 2012-07-11 | 记忆科技(深圳)有限公司 | 硬件搜索引擎 |
CN102810133A (zh) * | 2012-05-15 | 2012-12-05 | 北京像素软件科技股份有限公司 | 网络游戏中的射线查询方法和场景服务器 |
CN104317768A (zh) * | 2014-10-15 | 2015-01-28 | 中国人民解放军国防科学技术大学 | 面向cpu+dsp异构系统的矩阵乘加速方法 |
CN104662534A (zh) * | 2012-10-02 | 2015-05-27 | 甲骨文国际公司 | 用于表扫描加速的硬件 |
-
2015
- 2015-12-31 CN CN201511033476.6A patent/CN105677812A/zh active Pending
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102567247A (zh) * | 2012-01-04 | 2012-07-11 | 记忆科技(深圳)有限公司 | 硬件搜索引擎 |
CN102810133A (zh) * | 2012-05-15 | 2012-12-05 | 北京像素软件科技股份有限公司 | 网络游戏中的射线查询方法和场景服务器 |
CN104662534A (zh) * | 2012-10-02 | 2015-05-27 | 甲骨文国际公司 | 用于表扫描加速的硬件 |
CN104317768A (zh) * | 2014-10-15 | 2015-01-28 | 中国人民解放军国防科学技术大学 | 面向cpu+dsp异构系统的矩阵乘加速方法 |
Cited By (40)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107545015B (zh) * | 2016-06-29 | 2020-12-04 | 华为技术有限公司 | 一种查询故障的处理方法及处理装置 |
CN107545015A (zh) * | 2016-06-29 | 2018-01-05 | 华为技术有限公司 | 一种查询故障的处理方法及处理装置 |
US11461195B2 (en) | 2016-06-29 | 2022-10-04 | Huawei Technologies Co., Ltd. | Query fault processing method and processing apparatus |
US10866866B2 (en) | 2016-06-29 | 2020-12-15 | Huawei Technologies Co., Ltd. | Query fault processing method and processing apparatus |
CN110291503B (zh) * | 2017-02-03 | 2023-04-25 | 株式会社日立制作所 | 信息处理系统和信息处理方法 |
CN110291503A (zh) * | 2017-02-03 | 2019-09-27 | 株式会社日立制作所 | 信息处理系统和信息处理方法 |
CN106991191A (zh) * | 2017-04-11 | 2017-07-28 | 泰康保险集团股份有限公司 | 商品筛选方法及装置、存储介质、电子设备 |
CN106991191B (zh) * | 2017-04-11 | 2020-09-04 | 泰康保险集团股份有限公司 | 商品筛选方法及装置、存储介质、电子设备 |
CN109241093B (zh) * | 2017-06-30 | 2021-06-08 | 华为技术有限公司 | 一种数据查询的方法、相关装置及数据库系统 |
CN109241093A (zh) * | 2017-06-30 | 2019-01-18 | 华为技术有限公司 | 一种数据查询的方法、相关装置及数据库系统 |
CN108108452B (zh) * | 2017-12-28 | 2019-03-01 | 珠海得分金融科技有限公司 | 金融数据存储及查询系统、金融数据存储及查询方法 |
CN108108452A (zh) * | 2017-12-28 | 2018-06-01 | 珠海德塔芬特金融科技有限公司 | 金融数据存储及查询系统、金融数据存储及查询方法 |
CN108108473B (zh) * | 2018-01-02 | 2023-06-27 | 联想(北京)有限公司 | 数据查询方法以及服务器 |
CN108108473A (zh) * | 2018-01-02 | 2018-06-01 | 联想(北京)有限公司 | 数据查询方法以及服务器 |
CN108108472A (zh) * | 2018-01-02 | 2018-06-01 | 联想(北京)有限公司 | 数据处理方法以及服务器 |
CN108108472B (zh) * | 2018-01-02 | 2022-05-31 | 联想(北京)有限公司 | 数据处理方法以及服务器 |
CN108491274A (zh) * | 2018-04-02 | 2018-09-04 | 深圳市华傲数据技术有限公司 | 分布式数据管理的优化方法、装置、存储介质及设备 |
CN110780982A (zh) * | 2018-07-27 | 2020-02-11 | 深圳百迈技术有限公司 | 一种图像处理方法、装置及设备 |
CN110909023A (zh) * | 2018-09-17 | 2020-03-24 | 华为技术有限公司 | 一种查询计划的获取方法、数据查询方法及装置 |
CN110909023B (zh) * | 2018-09-17 | 2021-11-19 | 华为技术有限公司 | 一种查询计划的获取方法、数据查询方法及装置 |
CN111382174A (zh) * | 2018-12-28 | 2020-07-07 | 百度在线网络技术(北京)有限公司 | 多方数据联合查询方法、装置、服务器和存储介质 |
CN111382174B (zh) * | 2018-12-28 | 2023-10-17 | 百度在线网络技术(北京)有限公司 | 多方数据联合查询方法、装置、服务器和存储介质 |
CN112699140A (zh) * | 2019-10-23 | 2021-04-23 | 阿里巴巴集团控股有限公司 | 数据处理方法、装置、设备和存储介质 |
CN112699140B (zh) * | 2019-10-23 | 2023-12-26 | 阿里巴巴集团控股有限公司 | 数据处理方法、装置、设备和存储介质 |
CN112783914A (zh) * | 2019-11-01 | 2021-05-11 | 北京京东振世信息技术有限公司 | 优化语句的方法和装置 |
CN112783914B (zh) * | 2019-11-01 | 2023-09-01 | 北京京东振世信息技术有限公司 | 优化语句的方法和装置 |
CN112801439A (zh) * | 2019-11-14 | 2021-05-14 | 深圳百迈技术有限公司 | 任务管理方法及装置 |
CN111198766A (zh) * | 2020-01-06 | 2020-05-26 | 中科驭数(北京)科技有限公司 | 数据库访问操作部署方法、数据库访问方法及装置 |
CN111198766B (zh) * | 2020-01-06 | 2021-02-05 | 中科驭数(北京)科技有限公司 | 数据库访问操作部署方法、数据库访问方法及装置 |
CN112328620A (zh) * | 2020-11-05 | 2021-02-05 | 浪潮云信息技术股份公司 | 一种分布式数据库查询加速方法 |
CN112445812A (zh) * | 2020-11-27 | 2021-03-05 | 中原银行股份有限公司 | 一种结构化查询语句处理方法及装置 |
CN112650943B (zh) * | 2020-12-24 | 2022-07-26 | 厦门地铁创新科技有限公司 | 多云服务器的协同数据检索系统及方法 |
CN112650943A (zh) * | 2020-12-24 | 2021-04-13 | 山东鑫泰洋智能科技有限公司 | 多云服务器的协同数据检索系统及方法 |
WO2023029254A1 (zh) * | 2021-09-03 | 2023-03-09 | 苏州浪潮智能科技有限公司 | 一种数据查询方法、装置、设备及介质 |
CN113468220A (zh) * | 2021-09-03 | 2021-10-01 | 苏州浪潮智能科技有限公司 | 一种数据查询方法、装置、设备及介质 |
CN113742370A (zh) * | 2021-11-02 | 2021-12-03 | 阿里云计算有限公司 | 全加密数据库的数据查询方法、统计信息密文生成方法 |
WO2023138665A1 (zh) * | 2022-01-24 | 2023-07-27 | 北京奥星贝斯科技有限公司 | 分布式数据库的查询优化方法和装置 |
CN114090695A (zh) * | 2022-01-24 | 2022-02-25 | 北京奥星贝斯科技有限公司 | 分布式数据库的查询优化的方法和装置 |
CN116302564A (zh) * | 2023-04-27 | 2023-06-23 | 之江实验室 | 一种基于无状态运行时的程序分布式执行方法 |
CN116302564B (zh) * | 2023-04-27 | 2023-08-11 | 之江实验室 | 一种基于无状态运行时的程序分布式执行方法 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN105677812A (zh) | 一种数据查询方法及数据查询装置 | |
Hagedorn et al. | The STARK framework for spatio-temporal data analytics on spark | |
CN101021874B (zh) | 一种对查询sql请求进行优化的方法及装置 | |
JP6376865B2 (ja) | 並列ツリー・ベースの予測のための、コンピュータにより実行される方法、ストレージ媒体、およびコンピュータ・システム | |
WO2017019879A1 (en) | Multi-query optimization | |
US11314808B2 (en) | Hybrid flows containing a continous flow | |
CN103942234A (zh) | 对多个异构数据库操作的方法、中间件装置及系统 | |
CN104252472B (zh) | 用于并行化数据处理的方法和装置 | |
CN102567312A (zh) | 一种基于分布式并行计算框架的机器翻译方法 | |
CN112148788A (zh) | 异构数据源的数据同步方法及系统 | |
KR101877828B1 (ko) | 인공지능 기반의 사용자 인터페이스 통합 플랫폼 시스템 | |
CN109241100B (zh) | 一种查询方法、装置、设备及存储介质 | |
CN110705716A (zh) | 一种多模型并行训练方法 | |
CN115495221A (zh) | 一种数据处理系统及方法 | |
JP2007133624A (ja) | 連結関係情報を用いた情報管理方法及び装置 | |
US11599540B2 (en) | Query execution apparatus, method, and system for processing data, query containing a composite primitive | |
US20230401209A1 (en) | Columnar Cache Query Using Hybrid Query Execution Plan | |
CN105930354A (zh) | 存储模型转换方法和装置 | |
KR101955376B1 (ko) | 비공유 아키텍처 기반의 분산 스트림 처리 엔진에서 관계형 질의를 처리하는 방법, 이를 수행하기 위한 기록 매체 및 장치 | |
US8832157B1 (en) | System, method, and computer-readable medium that facilitates efficient processing of distinct counts on several columns in a parallel processing system | |
KR102473776B1 (ko) | 빅데이터 크로스 모델 데이터 통합 처리 방법 및 장치 | |
CN115857918A (zh) | 数据处理方法、装置、电子设备及存储介质 | |
CN114691766A (zh) | 数据采集方法、装置及电子设备 | |
CN109308563A (zh) | 一种模块化工业服务平台、工作方法及配置方法 | |
CN111290855A (zh) | 分布式环境中多gpu服务器的gpu卡管理方法、系统及存储介质 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20160615 |
|
RJ01 | Rejection of invention patent application after publication |