CN105404690A - 查询数据库的方法和装置 - Google Patents
查询数据库的方法和装置 Download PDFInfo
- Publication number
- CN105404690A CN105404690A CN201510937228.8A CN201510937228A CN105404690A CN 105404690 A CN105404690 A CN 105404690A CN 201510937228 A CN201510937228 A CN 201510937228A CN 105404690 A CN105404690 A CN 105404690A
- Authority
- CN
- China
- Prior art keywords
- node
- dag
- query
- database
- query manipulation
- 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.)
- Granted
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/90—Details of database functions independent of the retrieved data types
- G06F16/903—Querying
- G06F16/90335—Query processing
Landscapes
- Engineering & Computer Science (AREA)
- Databases & Information Systems (AREA)
- Theoretical Computer Science (AREA)
- Computational Linguistics (AREA)
- Data Mining & Analysis (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明提供了一种查询数据库的方法和装置,方法包括:获取数据库的查询语句,数据库为终端内的数据库,查询语句包括多个查询操作,终端包括中央处理器CPU,以及除CPU之外的其它类型的处理芯片;生成查询语句对应的DAG,DAG中的多个节点中的每个节点对应查询语句中的一个查询操作,DAG中的各节点之间的连接关系用于指示各节点对应的查询操作之间的依赖关系;从数据库中获取执行DAG中的节点对应的查询操作所需的原始数据;基于DAG和原始数据,执行DAG中的节点对应的查询操作,得到查询结果,其中DAG中的至少部分节点对应的查询操作由处理芯片执行;将查询结果返回数据库。以提高查询数据库的效率。
Description
技术领域
本发明涉及终端领域,尤其涉及终端领域中查询数据库的方法和装置。
背景技术
随着互联网技术和终端技术的快速发展,终端中的数据库在进行大数据处理时遇到了技术瓶颈。随着终端设备的普及,用户访问和接收的数据量不断增大,用户访问数据库(例如,用户访问终端中的基础联系人或图库)的时间开销也随之增加。查询数据库所花费的时间开销已成为导致终端系统反应缓慢以及卡顿的瓶颈问题,
现有技术中,存在利用图形处理器(GraphicsProcessingUnit,GPU)加速的查询嵌入式数据库(例如,SQLite)的方法,该查询方法可以减少查询数据库的时间开销,但是需要对底层存储结构进行替换,对现有数据库改动较大,且实现粒度较粗,不支持较为复杂的数据库查询命令,所以现有技术中的查询数据库的方法的效率较低,不适合真实使用场景。
发明内容
本发明实施例提供了一种查询数据库的方法和装置,以提高查询数据库的效率。
第一方面,本发明实施例提供了一种查询数据库的方法,该方法包括:获取数据库的查询语句,该数据库为终端内的数据库,该查询语句包括多个查询操作,该终端包括中央处理器CPU,以及除该CPU之外的其它类型的处理芯片;生成该查询语句对应的有向无环图DAG,该DAG包括多个节点,该多个节点中的每个节点对应该查询语句中的一个查询操作,该DAG中的各节点之间的连接关系用于指示该各节点对应的查询操作之间的依赖关系;从该数据库中获取执行该DAG中的节点对应的查询操作所需的原始数据;基于该DAG和该原始数据,执行该DAG中的节点对应的查询操作,得到查询结果,其中该DAG中的至少部分节点对应的查询操作由该处理芯片执行;将该查询结果返回该数据库。
在本发明实施例中,在获取数据库的查询语句之后,生成该查询语句对应的DAG,该DAG中的节点对应查询语句中的查询操作。基于该DAG,利用CPU和处理芯片中的至少一个处理器执行DAG中节点对应的查询操作,从而利用DAG架构执行查询语句中包含的查询操作,能够细粒度的向处理器分配操作任务,提高了查询数据库的效率。
结合第一方面,在第一方面的第一种可能的实现方式中,该处理芯片适于并行处理,该基于该DAG和该原始数据,执行该DAG中的节点对应的查询操作,包括:从该DAG中确定至少一个目标节点,该至少一个目标节点中的每个目标节点对应的查询操作适于进行并行处理;基于该DAG和该原始数据,利用该处理芯片对该每个目标节点对应的查询操作进行并行处理;利用该CPU执行该DAG中的除该目标节点之外的节点对应的查询操作。
在本发明实施例中,在执行查询数据库的任务时,细粒度的分配DAG中的节点对应的操作任务,以提高处理芯片的利用率,同时提高了查询数据库的效率,减少了查询数据库的时间开销。
结合第一方面的第一种实现方式,在第一方面的第二种可能的实现方式中,该从该DAG中确定至少一个目标节点,该至少一个目标节点中的每个目标节点对应的查询操作适于进行并行处理,包括:确定该DAG中的多个节点中的每个节点对应的查询操作的依赖关系;将不具有依赖关系的查询操作对应的节点确定为该目标节点。
结合第一方面、第一方面的第一种或第二种可能的实现方式,在第一方面的第三种可能的实现方式中,基于该DAG和该原始数据,执行该DAG中的节点对应的查询操作,包括:确定该DAG中的节点之间是否存在依赖关系;并行执行该DAG中互相不存在依赖关系的节点对应的查询操作。
在本发明实施例中,通过并行处理多个不存在依赖关系的节点对应的查询操作,减少了查询数据库的时间开销,提高了查询数据库的效率。
结合第一方面、第一方面的第一种至第三种可能的实现方式中的任一种可能的实现方式,在第一方面的第四种可能的实现方式中,该处理芯片包括以下处理芯片中的至少一种:GPU、现场可编程门阵列FPGA和数字信号处理器DSP。
结合第一方面、第一方面的第一种至第四种可能的实现方式中的任一种可能的实现方式,在第一方面的第五种可能的实现方式中,该终端为移动终端。
第二方面,本发明实施例提供了一种查询数据库的装置,该装置包括:获取模块,用于获取数据库的查询语句,该数据库为终端内的数据库,该查询语句包括多个查询操作,该终端包括中央处理器CPU,以及除该CPU之外的其它类型的处理芯片;生成模块,用于生成该查询语句对应的有向无环图DAG,该DAG包括多个节点,该多个节点中的每个节点对应该查询语句中的一个查询操作,该DAG中的各节点之间的连接关系用于指示该各节点对应的查询操作之间的依赖关系;数据模块,用于从该数据库中获取执行该DAG中的节点对应的查询操作所需的原始数据;执行模块,用于基于该DAG和该原始数据,执行该DAG中的节点对应的查询操作,得到查询结果,其中该DAG中的至少部分节点对应的查询操作由该处理芯片执行;返回模块,用于将该查询结果返回该数据库。
结合第二方面,在第二方面的第一种可能的实现方式中,该处理芯片适于并行处理,该执行模块具体用于从该DAG中确定至少一个目标节点,该至少一个目标节点中的每个目标节点对应的查询操作适于进行并行处理;基于该DAG和该原始数据,利用该处理芯片对该每个目标节点对应的查询操作进行并行处理;利用该CPU执行该DAG中的除该目标节点之外的节点对应的查询操作。
结合第二方面的第一种可能的实现方式,在第二方面的第二种可能的实现方式中,该执行模块具体用于:确定该DAG中的多个节点中的每个节点对应的查询操作的依赖关系;将不具有依赖关系的查询操作对应的节点确定为该目标节点。
结合第二方面、第二方面的第一种或第二种可能的实现方式,在第二方面的第三种可能的实现方式中,该执行模块具体用于:确定该DAG中的节点之间是否存在依赖关系;利用该CPU和该处理芯片中的至少一个处理器并行执行该DAG中互相不存在依赖关系的节点对应的查询操作。
结合第二方面、第二方面的第一种至第三种可能的实现方式中的任一种可能的实现方式,在第二方面的第四种可能的实现方式中,该处理芯片包括以下处理芯片中的至少一种:GPU、现场可编程门阵列FPGA和数字信号处理器DSP。
结合第二方面、第二方面的第一种至第四种可能的实现方式中的任一种可能的实现方式,在第二方面的第五种可能的实现方式中,该终端为移动终端。
附图说明
为了更清楚地说明本发明实施例的技术方案,下面将对本发明实施例中所需要使用的附图作简单地介绍,显而易见地,下面所描述的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是根据本发明实施例的查询数据库的方法的示意性流程图。
图2是根据本发明实施例的查询数据库的装置的架构示意图。
图3是根据本发明实施例的查询数据库的方法的数据流向示意图。
图4是根据本发明实施例的查询数据库的方法的具体实施例的示意图。
图5是根据本发明实施例的查询数据库的方法的另一具体实施例的示意图。
图6是根据本发明实施例的查询数据库的装置的示意图。
图7是根据本发明另一实施例的查询数据库的装置的示意图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明的一部分实施例,而不是全部实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动的前提下所获得的所有其他实施例,都应属于本发明保护的范围。
应理解,本发明实施例的查询数据库的方法可以应用于终端(MobileTerminal),所述终端可以为移动终端(Terminal)、移动台(MobileStation,简称为“MS”)或用户设备(UserEquipment,简称为“UE”)等。所述终端可以经无线接入网(RadioAccessNetwork,简称为“RAN”)与一个或多个核心网进行通信,例如,终端可以是移动电话(或称为“蜂窝”电话)。例如,所述终端还可以是便携式、袖珍式、手持式、计算机内置的或者车载的移动装置。
图1示出了本发明实施例的一种查询数据库的方法100的示意性流程图,如图1所示,该方法100包括:
S110,获取数据库的查询语句,该数据库为终端内的数据库,该查询语句包括多个查询操作,该终端包括中央处理器CPU,以及除该CPU之外的其它类型的处理芯片;
S120,生成该查询语句对应的有向无环图DAG,该DAG包括多个节点,该多个节点中的每个节点对应该查询语句中的一个查询操作,该DAG中的各节点之间的连接关系用于指示该各节点对应的查询操作之间的依赖关系;
S130,从该数据库中获取执行该DAG中的节点对应的查询操作所需的原始数据;
S140,基于该DAG和该原始数据,执行该DAG中的节点对应的查询操作,得到查询结果,其中该DAG中的至少部分节点对应的查询操作由该处理芯片执行;
S150,将该查询结果返回该数据库。
在本发明实施例中,在获取数据库的查询语句之后,生成该查询语句对应的DAG,该DAG中的节点对应查询语句中的查询操作。基于该DAG,利用CPU和处理芯片执行DAG中节点对应的查询操作,从而利用DAG架构执行查询语句中包含的查询操作,能够细粒度的向处理器分配操作任务,提高了查询数据库的效率。
应理解,本发明实施例中,对上述处理芯片的类型不作限定,该处理芯片可以为图形处理器(GraphicsProcessingUnit,GPU)、现场可编程门阵列(FieldProgrammableGateArray,FPGA)、数字信号处理器(DigitalSignalProcessor,DSP)或者其他可以应用于终端的处理器。应理解,本发明实施例中,终端可以包括一个处理芯片,也可以包括多个处理芯片。该多个处理芯片可以是同一类型,也可以是不同类型,本发明不限于此。例如,该处理芯片可以包括GPU以及DSP。
应理解,上述数据库的查询语句可以为用于向数据库查询数据库的语句,执行主体在获取该查询语句之后,经过相应的查询操作,可以向数据库返回相应的查询结果。可选地,本发明实施例对上述查询语句的格式不作限定,例如,查询语句可以是结构化查询语言((StructuredQueryLanguage,SQL),也可以是其他格式的用于查询数据库的语言。
应理解,本发明实施例中的有向无环图(DirectedAcyclicGraph,DAG)可以指现有技术中的有向无环图,其可以表示一个无法从某个顶点出发经过若干条边回到该点的有向图。本发明实施例对于生成该查询语句对应的DAG的方式不作限定。例如,可以根据将查询语句中的查询操作转换为操作节点,分析各个操作节点之间的输入输出关系,从而构建节点之间的数据依赖关系,最终形成DAG。
可选地,执行该DAG中的节点对应的查询操作,可以是利用CPU以及处理芯片一起执行该查询操作,也可以是只利用处理芯片执行DAG中的节点对应的操作。例如,该处理芯片可以包括GPU,在根据该查询语句生成DAG之后,可以分析DAG中的节点对应的查询操作的类型,将适合GPU处理的节点分配给GPU执行,将适合CPU处理的节点分配给CPU执行。又例如,DAG中的节点对应的查询操作类型可以包括过滤、排序、转换等查询操作,其中过滤和转换的操作适合GPU执行,可以将该操作分配给GPU执行,而排序的操作适合CPU执行,可以将该操作分配给CPU执行。从而通过分析DAG图,细粒度的向CPU以及GPU分配节点对应的查询操作,提高了GPU的利用率以及查询数据库的效率。
例如,为了便于理解,图2示出了根据本发明实施例的查询数据库的装置的具体实施例的架构示意图,如图2所示,该执行该查询数据库的架构可以包括数据库、DAG解释器、调度器、执行器以及数据通信器。其中,数据库可以用于接收用户输入的查询命令以及输出对应的查询结果,数据库还可以用于将用户输入的查询命令转换成查询语句(例如,SQL语句)并输出到DAG解释器中。DAG解释器用于将查询语句生成DAG,调度器用于分析DAG中的节点,将不同的节点分配给CPU或者处理芯片处理,执行器可以用于根据调度器的分配,利用CPU和处理芯片执行处理DAG中的节点的具体过程,数据通信器可以用于和数据库之间的数据交换,例如,数据通信器可以根据执行器的调度,从数据库中获取执行过程中需要的原始数据以及向数据库返回执行器的查询结果。
又例如,为了便于理解,图3示出了根据本发明实施例的查询数据库的方法的数据流向示意图。如图3所示,在执行DAG中的节点对应的查询操作的过程中,执行器可以通过图2所示的数据通信器将原始数据从数据库中读出。该数据库可以位于终端的内部数据存储模块之中,基于原始数据,执行器执行DAG中的节点对应的查询操作之后(例如,可以对原始数据进行排序、过滤等操作),将执行节点对应的查询操作后的结果分批或一次性返回至数据通信器,在DAG中的所有节点对应的查询操作都执行完之后,可以将最终的查询结果返回到数据库。
可选地,作为一个实施例,本发明实施例的查询数据库的方法100中,该处理芯片适于并行处理,该基于该DAG和该原始数据,执行该DAG中的节点对应的查询操作,包括:从该DAG中确定至少一个目标节点,该至少一个目标节点中的每个目标节点对应的查询操作适于进行并行处理;基于该DAG和该原始数据,利用该处理芯片对该每个目标节点对应的查询操作进行并行处理;利用该CPU执行该DAG中的除该目标节点之外的节点对应的查询操作。
可选地,本发明实施例中,处理芯片可以是适于并行处理的芯片,例如,该适于并行处理的处理芯片可以是GPU、FPGA、DSP。其中适于并行处理可以指该处理芯片能够采用并行加速的方法处理节点对应的查询操作。其中采用并行加速的方法处理节点对应的查询操作,可以指对单个节点对应的查询操作进行并行处理,也可以指对多个节点对应的查询操作进行并行处理。根据不同节点对应的查询操作的类型不同,处理芯片适合对某些类型的查询操作进行加速,例如,所述处理芯片可以为GPU,当节点对应的查询操作的类型不具有依赖关系(例如,过滤数据)时,GPU适合对该节点进行并行加速处理;当节点对应的查询操作的类型具有依赖关系(例如,排序)时,GPU不适合该节点进行并行加速处理,此时,可以由CPU执行该节点对应的操作。从而通过分析DAG中的节点的类型,从DAG中的节点中确定目标节点,由处理芯片执行目标节点对应的查询操作,由CPU执行除该目标节点之外其它节点对应的查询操作,在执行查询数据库的任务时,细粒度的分配DAG中的节点对应的操作任务,以提高处理芯片的利用率,同时提高了查询数据库的效率,减少了查询数据库的时间开销。
可选地,作为一个实施例,本发明实施例的查询数据库的方法100中,从该DAG中确定至少一个目标节点,该至少一个目标节点中的每个目标节点对应的查询操作适于进行并行处理,包括:确定该DAG中的多个节点中的每个节点对应的查询操作的依赖关系;将不具有依赖关系的查询操作对应的节点确定为该目标节点。
例如,当DAG中的节点对应的查询操作为过滤、读取数据等类型时,适于并行执行该查询操作,可以将该查询操作对应的节点确定为目标节点。当DAG中的节点对应的查询操作为排序、合并等类型时,该查询操作具有依赖关系,不适于并行执行该查询操作。可以将该查询操作对应的节点交由CPU处理。
又例如,图4示出了根据本发明实施例的查询数据库的方法的具体实施例的示意图,该具体实施例可以应用于移动设备中的查询嵌入式数据库(例如,SQLite)中。该移动设备中可以包括CPU以及GPU,如图4所示,查询语句可以为selectnamefromcontactswhere_id>9orderbysort_key,其表示从通讯录中选取出标识>9的联系人的名称,并按关键字的顺序排列。可以将该查询语句转换成DAG,该DAG可以包括五个节点,该五个节点依次是源(Source)节点、投影(Projection)节点、表达式(Expression)节点、排序(Sort)节点、结果(Result)节点。该五个节点之间的依赖关系为从下到上依次进行处理的关系,也即该五个节点互相之间存在依赖关系。其中Source节点和Projection节点对应的查询操作用于从数据库中获取数据(在通讯录中与名称、标识、关键字等对应的数据),Expression节点对应的查询操作用于where表达式(where_id>9)对应的数据的过滤,Sort节点对应的查询操作用于按照关键字对数据进行排序(orderbysortkey),Result节点对应的查询操作用于收集排序好的数据并返回到数据库。在对DAG中的节点对应的查询操作类型进行分析的过程中,由于Source节点、Projection节点和Expression节点对应的查询操作不具有依赖关系,所以可以利用GPU分别对以上三个节点对应的查询操作进行并行处理。应理解,本发明实施例中,Source节点、Projection节点以及Expression三个节点互相之间存在依赖关系,所以该三个节点不能同时处理,但是该三个节点中的每个节点对应的查询操作不存在依赖关系,所以可以对该三个节点对应的查询操作分别进行并行处理。Sort节点对应的查询操作具有依赖关系,所以利用CPU对Sort节点对应的查询操作进行处理,进一步地,可以利用CPU多线程执行Sort节点对应的查询操作。
可选地,作为一个实施例,本发明实施例中的查询数据库的方法100中,基于该DAG和该原始数据,执行该DAG中的节点对应的查询操作,包括:确定该DAG中的节点之间是否存在依赖关系;并行执行该DAG中互相不存在依赖关系的节点对应的查询操作。
例如,在DAG中,如果多个节点之间没有边相连,则表示该多个节点之间不存在互相依赖关系,可以并行处理该多个节点对应的查询操作。从而通过并行处理多个不存在依赖关系的节点对应的查询操作,减少查询数据库的时间开销,提高查询数据库的效率。
又例如,作为一个具体实施例,终端可以包括CPU和GPU,当终端获取数据库的查询语句之后,可以分析该查询语句,判断本次查询的涉及的数据量是否大于第一阈值,当本次查询的数量小于第一阈值时,则表示本次涉及的数据量较小,而进行并行加速会占用一定的资源消耗,当处理的数据量较小时,该资源消耗在整体资源中占用的比例较大,硬件利用率较低,此时没有必要进行并行加速,故可以采用CPU单线程执行查询操作。当本次查询涉及的数据量大于第一阈值时,则表示本次涉及的数据量较大,有必要进行并行加速。然后可以判断由查询语句生成的DAG中的节点之间的依赖关系,采用并行处理的策略处理互相之间没有依赖关系的节点。还可以进一步判断DAG中的每个节点对应的查询操作是否具有依赖关系,将其中具有依赖关系的查询操作对应的节点分配给CPU进行多线程处理,将其中不具有依赖关系的查询操作对应的节点分配给GPU进行并行加速处理。以提高查询数据库的效率。
又例如,图5是根据本发明实施例的查询数据库的方法的另一具体实施例的示意图。该具体实施例可以应用于移动设备中的查询嵌入式数据库(例如,SQLite)中。该移动设备中可以包括CPU以及GPU,如图5所示,查询语句可以为将联系人视图表与聚合表按照相应标识相等的条件进行左连接,并输出查询结果。可以将该查询语句转换成DAG,该DAG可以包括第一源节点、第二源节点、第一投影节点、第二投影节点、左连接节点以及结果节点。其中第一源节点和第一投影节点对应的查询操作用于从数据库中获取联系人视图对应的数据,第二源节点和第二投影节点对应的查询操作用于从数据库中获取聚合表对应的数据。左连接节点对应的查询操作用于根据指定的连接条件将两个表进行合并操作,合并生成的表单包括原先两个表的所有满足连接条件的数据;其中,如图5所示,第一源节点和第二源节点之间没有依赖关系,所以可以采用并行处理的方法同时处理第一源节点和第二源节点对应的查询操作;同理,第一投影节点和第二投影节点之间也没有依赖关系,也可以采用并行处理的方法同时处理第一投影节点和第二投影节点对应的查询操作。另外,第一源节点、第二源节点、第一投影节点以及第二投影节点对应的查询操作不具有依赖关系,可以采用GPU并行处理以上每个节点对应的查询操作。而左连接节点对应的查询操作需要将第一张表的当前数据与另一张表的所有数据进行比对,因此存在依赖关系,无法用GPU进行并行加速,因而可以采用CPU处理左连接节点对应的查询操作。以提高处理器的利用率以及查询数据库的效率。
上文结合图1至图5详细阐述了本发明实施例的查询数据库的方法的具体实施例,下文将结合图6和图7,详细描述本发明实施例的查询数据库的装置。
图6示出了本发明实施例的查询数据库的装置600的示意图,应理解,本发明实施例中的装置600可以对应于执行根据本发明实施例的方法中的相应主体,并且装置600中的各个模块的下述和其它操作和/或功能分别为了实现图1至图5中各个方法的相应流程,为了简洁,在此不在赘述。该装置600包括:
获取模块610,用于获取数据库的查询语句,该数据库为终端内的数据库,该查询语句包括多个查询操作,该终端包括中央处理器CPU,以及除该CPU之外的其它类型的处理芯片;
生成模块620,用于生成该查询语句对应的有向无环图DAG,该DAG包括多个节点,该多个节点中的每个节点对应该查询语句中的一个查询操作,该DAG中的各节点之间的连接关系用于指示该各节点对应的查询操作之间的依赖关系;
数据模块630,用于从该数据库中获取执行该DAG中的节点对应的查询操作所需的原始数据;
执行模块640,用于基于该DAG和该原始数据,执行该DAG中的节点对应的查询操作,得到查询结果,其中该DAG中的至少部分节点对应的查询操作由该处理芯片执行;
返回模块650,用于将该查询结果返回该数据库。
在本发明实施例中,在获取数据库的查询语句之后,生成该查询语句对应的DAG,该DAG中的节点对应查询语句中的查询操作。基于该DAG,利用CPU和处理芯片中的至少一个处理器执行DAG中节点对应的查询操作,从而利用DAG架构执行查询语句中包含的查询操作,能够细粒度的向处理器分配操作任务,提高了查询数据库的效率。
可选地,作为一个实施例,该处理芯片适于并行处理,该执行模块640具体用于从该DAG中确定至少一个目标节点,该至少一个目标节点中的每个目标节点对应的查询操作适于进行并行处理;基于该DAG和该原始数据,利用该处理芯片对该每个目标节点对应的查询操作进行并行处理;利用该CPU执行该DAG中的除该目标节点之外的节点对应的查询操作。
可选地,作为一个实施例,该执行模块640具体用于:确定该DAG中的多个节点中的每个节点对应的查询操作的依赖关系;将不具有依赖关系的查询操作对应的节点确定为该目标节点。
可选地,作为一个实施例,该执行模块640具体用于:确定该DAG中的节点之间是否存在依赖关系;并行执行该DAG中互相不存在依赖关系的节点对应的查询操作。
可选地,作为一个实施例,该处理芯片包括以下处理芯片中的至少一种:GPU、现场可编程门阵列FPGA和数字信号处理器DSP。
可选地,作为一个实施例,该终端为移动终端。
图7示出了根据本发明实施例的查询数据库的装置700的示意图。如图7所示,该装置700包括:处理器710,存储器720,总线系统730,该处理器710和该存储器720通过该总线系统730相连,该存储器720用于存储指令,该处理器710用于执行该存储器720存储的指令,以执行查询数据库的任务。
该处理器710用于获取数据库的查询语句,该数据库为终端内的数据库,该查询语句包括多个查询操作,该终端包括中央处理器CPU,以及除该CPU之外的其它类型的处理芯片;生成该查询语句对应的有向无环图DAG,该DAG包括多个节点,该多个节点中的每个节点对应该查询语句中的一个查询操作,该DAG中的各节点之间的连接关系用于指示该各节点对应的查询操作之间的依赖关系;从该数据库中获取执行该DAG中的节点对应的查询操作所需的原始数据;基于该DAG和该原始数据,执行该DAG中的节点对应的查询操作,得到查询结果,其中该DAG中的至少部分节点对应的查询操作由该处理芯片执行;将该查询结果返回该数据库。
在本发明实施例中,在获取数据库的查询语句之后,生成该查询语句对应的DAG,该DAG中的节点对应查询语句中的查询操作。基于该DAG,利用CPU和处理芯片中的至少一个处理器执行DAG中节点对应的查询操作,从而利用DAG架构执行查询语句中包含的查询操作,能够细粒度的向处理器分配操作任务,提高了查询数据库的效率。
可选地,作为一个实施例,该处理芯片适于并行处理,该处理器710具体用于从该DAG中确定至少一个目标节点,该至少一个目标节点中的每个目标节点对应的查询操作适于进行并行处理;基于该DAG和该原始数据,利用该处理芯片对该每个目标节点对应的查询操作进行并行处理;利用该CPU执行该DAG中的除该目标节点之外的节点对应的查询操作。
可选地,作为一个实施例,该处理器710具体用于确定该DAG中的多个节点中的每个节点对应的查询操作的依赖关系;将不具有依赖关系的查询操作对应的节点确定为该目标节点。
可选地,作为一个实施例,该处理器710具体用于确定该DAG中的节点之间是否存在依赖关系;并行执行该DAG中互相不存在依赖关系的节点对应的查询操作。
可选地,作为一个实施例,该处理芯片包括以下处理芯片中的至少一种:GPU、现场可编程门阵列FPGA和数字信号处理器DSP。
可选地,作为一个实施例,该终端为移动终端。
另外,本文中术语“系统”和“网络”在本文中常被可互换使用。本文中术语“和/或”,仅仅是一种描述关联对象的关联关系,表示可以存在三种关系,例如,A和/或B,可以表示:单独存在A,同时存在A和B,单独存在B这三种情况。另外,本文中字符“/”,一般表示前后关联对象是一种“或”的关系。
应理解,在本发明实施例中,“与A相应的B”表示B与A相关联,根据A可以确定B。但还应理解,根据A确定B并不意味着仅仅根据A确定B,还可以根据A和/或其它信息确定B。
本领域普通技术人员可以意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、计算机软件或者二者的结合来实现,为了清楚地说明硬件和软件的可互换性,在上述说明中已经按照功能一般性地描述了各示例的组成及步骤。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本发明的范围。
所属领域的技术人员可以清楚地了解到,为了描述的方便和简洁,上述描述的系统、装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
在本申请所提供的几个实施例中,应该理解到,所揭露的系统、装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,该单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另外,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口、装置或单元的间接耦合或通信连接,也可以是电的,机械的或其它的形式连接。
该作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本发明实施例方案的目的。
另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以是两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
该集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分,或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例该方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read-OnlyMemory)、随机存取存储器(RAM,RandomAccessMemory)、磁碟或者光盘等各种可以存储程序代码的介质。
以上某一实施例中的技术特征和描述,为了使申请文件简洁清楚,可以理解适用于其他实施例,在其他实施例不再一一赘述。
以上所述,仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到各种等效的修改或替换,这些修改或替换都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应以权利要求的保护范围为准。
Claims (12)
1.一种查询数据库的方法,其特征在于,包括:
获取数据库的查询语句,所述数据库为终端内的数据库,所述查询语句包括多个查询操作,所述终端包括中央处理器CPU,以及除所述CPU之外的其它类型的处理芯片;
生成所述查询语句对应的有向无环图DAG,所述DAG包括多个节点,所述多个节点中的每个节点对应所述查询语句中的一个查询操作,所述DAG中的各节点之间的连接关系用于指示所述各节点对应的查询操作之间的依赖关系;
从所述数据库中获取执行所述DAG中的节点对应的查询操作所需的原始数据;
基于所述DAG和所述原始数据,执行所述DAG中的节点对应的查询操作,得到查询结果,其中所述DAG中的至少部分节点对应的查询操作由所述处理芯片执行;
将所述查询结果返回所述数据库。
2.如权利要求1所述的方法,其特征在于,所述处理芯片适于并行处理,
所述基于所述DAG和所述原始数据,执行所述DAG中的节点对应的查询操作,包括:
从所述DAG中确定至少一个目标节点,所述至少一个目标节点中的每个目标节点对应的查询操作适于进行并行处理;
基于所述DAG和所述原始数据,利用所述处理芯片对所述每个目标节点对应的查询操作进行并行处理;
利用所述CPU执行所述DAG中的除所述目标节点之外的节点对应的查询操作。
3.如权利要求2所述的方法,其特征在于,所述从所述DAG中确定至少一个目标节点,所述至少一个目标节点中的每个目标节点对应的查询操作适于进行并行处理,包括:
确定所述DAG中的多个节点中的每个节点对应的查询操作的依赖关系;
将不具有依赖关系的查询操作对应的节点确定为所述目标节点。
4.如权利要求1至3中任一项所述的方法,其特征在于,所述基于所述DAG和所述原始数据,执行所述DAG中的节点对应的查询操作,包括:
确定所述DAG中的节点之间是否存在依赖关系;
并行执行所述DAG中互相不存在依赖关系的节点对应的查询操作。
5.如权利要求1至4中任一项所述的方法,其特征在于,所述处理芯片包括以下处理芯片中的至少一种:GPU、现场可编程门阵列FPGA和数字信号处理器DSP。
6.如权利要求1至5中任一项所述的方法,其特征在于,所述终端为移动终端。
7.一种查询数据库的装置,其特征在于,包括:
获取模块,用于获取数据库的查询语句,所述数据库为终端内的数据库,所述查询语句包括多个查询操作,所述终端包括中央处理器CPU,以及除所述CPU之外的其它类型的处理芯片;
生成模块,用于生成所述查询语句对应的有向无环图DAG,所述DAG包括多个节点,所述多个节点中的每个节点对应所述查询语句中的一个查询操作,所述DAG中的各节点之间的连接关系用于指示所述各节点对应的查询操作之间的依赖关系;
数据模块,用于从所述数据库中获取执行所述DAG中的节点对应的查询操作所需的原始数据;
执行模块,用于基于所述DAG和所述原始数据,执行所述DAG中的节点对应的查询操作,得到查询结果,其中所述DAG中的至少部分节点对应的查询操作由所述处理芯片执行;
返回模块,用于将所述查询结果返回所述数据库。
8.如权利要求7所述的装置,其特征在于,所述处理芯片适于并行处理,所述执行模块具体用于从所述DAG中确定至少一个目标节点,所述至少一个目标节点中的每个目标节点对应的查询操作适于进行并行处理;基于所述DAG和所述原始数据,利用所述处理芯片对所述每个目标节点对应的查询操作进行并行处理;利用所述CPU执行所述DAG中的除所述目标节点之外的节点对应的查询操作。
9.如权利要求8所述的装置,其特征在于,所述执行模块具体用于:确定所述DAG中的多个节点中的每个节点对应的查询操作的依赖关系;
将不具有依赖关系的查询操作对应的节点确定为所述目标节点。
10.如权利要求7至9中任一项所述的装置,其特征在于,所述执行模块具体用于:确定所述DAG中的节点之间是否存在依赖关系;并行执行所述DAG中互相不存在依赖关系的节点对应的查询操作。
11.如权利要求7至10中任一项所述的装置,其特征在于,所述处理芯片包括以下处理芯片中的至少一种:GPU、现场可编程门阵列FPGA和数字信号处理器DSP。
12.如权利要求7至11中任一项所述的装置,其特征在于,所述终端为移动终端。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510937228.8A CN105404690B (zh) | 2015-12-16 | 2015-12-16 | 查询数据库的方法和装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510937228.8A CN105404690B (zh) | 2015-12-16 | 2015-12-16 | 查询数据库的方法和装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN105404690A true CN105404690A (zh) | 2016-03-16 |
CN105404690B CN105404690B (zh) | 2019-06-21 |
Family
ID=55470179
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201510937228.8A Active CN105404690B (zh) | 2015-12-16 | 2015-12-16 | 查询数据库的方法和装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN105404690B (zh) |
Cited By (14)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105975498A (zh) * | 2016-04-27 | 2016-09-28 | 华为技术有限公司 | 数据查询的方法、装置和系统 |
CN107678790A (zh) * | 2016-07-29 | 2018-02-09 | 华为技术有限公司 | 流计算方法、装置及系统 |
CN109075994A (zh) * | 2016-04-28 | 2018-12-21 | 斯诺弗雷克计算公司 | 多集群仓库 |
CN109063056A (zh) * | 2018-07-20 | 2018-12-21 | 阿里巴巴集团控股有限公司 | 一种数据查询方法、系统及终端设备 |
CN110287212A (zh) * | 2019-06-27 | 2019-09-27 | 浪潮商用机器有限公司 | 一种数据业务处理方法、系统及相关组件 |
CN110955701A (zh) * | 2019-11-26 | 2020-04-03 | 中思博安科技(北京)有限公司 | 一种分布式数据的查询方法、装置及分布式系统 |
CN111177182A (zh) * | 2019-12-19 | 2020-05-19 | 达闼科技成都有限公司 | 数据查询方法和装置、存储介质和电子设备 |
CN111209302A (zh) * | 2020-01-02 | 2020-05-29 | 中科驭数(北京)科技有限公司 | 数据库访问的并行执行方法及装置 |
CN111538714A (zh) * | 2020-04-24 | 2020-08-14 | 咪咕文化科技有限公司 | 一种指令执行方法、装置、电子设备和存储介质 |
CN111752709A (zh) * | 2020-06-22 | 2020-10-09 | 深圳鲲云信息科技有限公司 | Ai计算配置方法、装置、设备及存储介质 |
CN111797637A (zh) * | 2020-07-21 | 2020-10-20 | 苏州思必驰信息科技有限公司 | 交互式标注方法及装置 |
CN112434061A (zh) * | 2020-08-25 | 2021-03-02 | 上海幻电信息科技有限公司 | 支持循环依赖的任务调度方法和系统 |
WO2021129873A1 (zh) * | 2019-12-27 | 2021-07-01 | 中兴通讯股份有限公司 | 数据库查询方法、装置、设备和存储介质 |
US20210334264A1 (en) * | 2018-12-09 | 2021-10-28 | Kohei KAIGAI | System, method, and program for increasing efficiency of database queries |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101421729A (zh) * | 2006-03-03 | 2009-04-29 | 奥多比公司 | 有效表示和搜索数据库中的有向无环图结构的系统和方法 |
CN102541875A (zh) * | 2010-12-16 | 2012-07-04 | 北京大学 | 有向无环图的关系型节点数据的存取方法、装置及系统 |
CN104239137A (zh) * | 2014-08-21 | 2014-12-24 | 东软集团股份有限公司 | 基于dag节点最优路径的多模型并行调度方法及装置 |
US20150356147A1 (en) * | 2013-01-24 | 2015-12-10 | New York University | Systems, methods and computer-accessible mediums for utilizing pattern matching in stringomes |
-
2015
- 2015-12-16 CN CN201510937228.8A patent/CN105404690B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101421729A (zh) * | 2006-03-03 | 2009-04-29 | 奥多比公司 | 有效表示和搜索数据库中的有向无环图结构的系统和方法 |
CN102541875A (zh) * | 2010-12-16 | 2012-07-04 | 北京大学 | 有向无环图的关系型节点数据的存取方法、装置及系统 |
US20150356147A1 (en) * | 2013-01-24 | 2015-12-10 | New York University | Systems, methods and computer-accessible mediums for utilizing pattern matching in stringomes |
CN104239137A (zh) * | 2014-08-21 | 2014-12-24 | 东软集团股份有限公司 | 基于dag节点最优路径的多模型并行调度方法及装置 |
Non-Patent Citations (1)
Title |
---|
胡乃静 等: "基于Petri网的网格数据库查询计划模型的映射转换", 《计算机应用》 * |
Cited By (21)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105975498A (zh) * | 2016-04-27 | 2016-09-28 | 华为技术有限公司 | 数据查询的方法、装置和系统 |
CN109075994A (zh) * | 2016-04-28 | 2018-12-21 | 斯诺弗雷克计算公司 | 多集群仓库 |
US11132402B2 (en) | 2016-07-29 | 2021-09-28 | Huawei Technologies Co., Ltd. | Stream computing method, apparatus, and system |
CN107678790A (zh) * | 2016-07-29 | 2018-02-09 | 华为技术有限公司 | 流计算方法、装置及系统 |
CN107678790B (zh) * | 2016-07-29 | 2020-05-08 | 华为技术有限公司 | 流计算方法、装置及系统 |
CN109063056A (zh) * | 2018-07-20 | 2018-12-21 | 阿里巴巴集团控股有限公司 | 一种数据查询方法、系统及终端设备 |
US20210334264A1 (en) * | 2018-12-09 | 2021-10-28 | Kohei KAIGAI | System, method, and program for increasing efficiency of database queries |
CN110287212A (zh) * | 2019-06-27 | 2019-09-27 | 浪潮商用机器有限公司 | 一种数据业务处理方法、系统及相关组件 |
CN110955701A (zh) * | 2019-11-26 | 2020-04-03 | 中思博安科技(北京)有限公司 | 一种分布式数据的查询方法、装置及分布式系统 |
CN110955701B (zh) * | 2019-11-26 | 2023-04-25 | 中思博安科技(北京)有限公司 | 一种分布式数据的查询方法、装置及分布式系统 |
CN111177182A (zh) * | 2019-12-19 | 2020-05-19 | 达闼科技成都有限公司 | 数据查询方法和装置、存储介质和电子设备 |
WO2021129873A1 (zh) * | 2019-12-27 | 2021-07-01 | 中兴通讯股份有限公司 | 数据库查询方法、装置、设备和存储介质 |
CN111209302A (zh) * | 2020-01-02 | 2020-05-29 | 中科驭数(北京)科技有限公司 | 数据库访问的并行执行方法及装置 |
CN111538714A (zh) * | 2020-04-24 | 2020-08-14 | 咪咕文化科技有限公司 | 一种指令执行方法、装置、电子设备和存储介质 |
CN111538714B (zh) * | 2020-04-24 | 2023-10-17 | 咪咕文化科技有限公司 | 一种指令执行方法、装置、电子设备和存储介质 |
CN111752709A (zh) * | 2020-06-22 | 2020-10-09 | 深圳鲲云信息科技有限公司 | Ai计算配置方法、装置、设备及存储介质 |
CN111752709B (zh) * | 2020-06-22 | 2024-04-30 | 深圳鲲云信息科技有限公司 | Ai计算配置方法、装置、设备及存储介质 |
CN111797637A (zh) * | 2020-07-21 | 2020-10-20 | 苏州思必驰信息科技有限公司 | 交互式标注方法及装置 |
CN111797637B (zh) * | 2020-07-21 | 2024-06-25 | 思必驰科技股份有限公司 | 交互式标注方法及装置 |
CN112434061A (zh) * | 2020-08-25 | 2021-03-02 | 上海幻电信息科技有限公司 | 支持循环依赖的任务调度方法和系统 |
CN112434061B (zh) * | 2020-08-25 | 2024-04-16 | 上海幻电信息科技有限公司 | 支持循环依赖的任务调度方法和系统 |
Also Published As
Publication number | Publication date |
---|---|
CN105404690B (zh) | 2019-06-21 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN105404690A (zh) | 查询数据库的方法和装置 | |
TWI718643B (zh) | 異常群體識別方法及裝置 | |
US11074246B2 (en) | Cluster-based random walk processing | |
CN111355816B (zh) | 服务器选取方法、装置、设备及分布式服务系统 | |
CN108415912B (zh) | 基于MapReduce模型的数据处理方法和设备 | |
CN103077254A (zh) | 网页获取方法和装置 | |
US20170220669A1 (en) | Method and device for determining a category directory, and an automatic classification method and device | |
CN110069523A (zh) | 一种数据查询方法、装置和查询系统 | |
CN112199577B (zh) | 一种数据查询方法、装置及电子设备 | |
CN109522311B (zh) | 数据存储方法、装置、服务器和存储介质 | |
CN109635022B (zh) | 一种可视化的ElasticSearch数据采集方法及装置 | |
CN104699788A (zh) | 数据库查询方法和装置 | |
CN112068812B (zh) | 一种微服务生成方法、装置、计算机设备和存储介质 | |
CN109658094B (zh) | 随机游走、基于集群的随机游走方法、装置以及设备 | |
US9298505B2 (en) | Time and space-deterministic task scheduling apparatus and method using multi-dimensional scheme | |
CN109697234B (zh) | 实体的多属性信息查询方法、装置、服务器和介质 | |
CN109902178A (zh) | 一种多级文本分类方法及系统 | |
CN110008382A (zh) | 一种确定TopN数据的方法、系统及设备 | |
CN105515818B (zh) | 一种网络拓扑布局中拆分环状结构的方法及系统 | |
TW201915798A (zh) | 隨機遊走、基於集群的隨機遊走方法、裝置以及設備 | |
CN104932982A (zh) | 一种消息访存的编译方法及相关装置 | |
CN109460394B (zh) | 一种多级文档条目追踪矩阵的简化方法 | |
CN105447183A (zh) | Mpp架构数据库集群序列系统及序列管理方法 | |
CN110019296B (zh) | 数据库查询脚本的生成方法、装置、存储介质及处理器 | |
CN105653205A (zh) | 一种用户请求处理方法与系统 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |