CN105786808A - 一种用于分布式执行关系型计算指令的方法与设备 - Google Patents
一种用于分布式执行关系型计算指令的方法与设备 Download PDFInfo
- Publication number
- CN105786808A CN105786808A CN201410778654.7A CN201410778654A CN105786808A CN 105786808 A CN105786808 A CN 105786808A CN 201410778654 A CN201410778654 A CN 201410778654A CN 105786808 A CN105786808 A CN 105786808A
- Authority
- CN
- China
- Prior art keywords
- operator
- relationship type
- distributed
- tree
- computations
- 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
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Data Mining & Analysis (AREA)
- Databases & Information Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本申请的目的是提供一种用于分布式执行关系型计算指令的方法与设备。所述设备先获取由若干个分布式关系型计算算子构成的关系型计算指令;再根据所述关系型计算指令生成对应的逻辑查询树,其中,所述逻辑查询树包括与所述分布式关系型计算算子相对应的节点;然后,分布式执行所述逻辑查询树以获得所述关系型计算指令所对应的查询结果。与现有技术相比,本申请通过将还没有在分布式上定义标准运算符的语句转换成可分布式处理的算子及关系型计算指令,来实现分布式系统执行如SQL语句的执行方法,实现了传统数据库和分布式处理之间无法消弭的缺口。
Description
技术领域
本申请涉及计算机领域,尤其涉及一种用于分布式执行关系型计算指令的技术。
背景技术
随着大数据时代的到来,为了解决大规模数据并行化计算的需求,Google最早提出了MapReduce的编程模型,并实现了相应的分布式运行系统。由于MapReduce编程模型简单,基本不涉及并行化细节,同时可以完成大部分并行计算需求,所以被广泛接受
大规模数据计算的一大类场景来自于数据仓库,这类需求原本由传统关系型数据库(如Oracle)提供支持,随着数据量的增大,数据仓库需要由传统关系型数据库迁移到分布式集群系统上。分布式集群系统中执行关系型计算在受到很多限制的同时,也提供了更多的选择和功能,这使得传统关系型数据库上描述关系型计算的运算符不能照搬上来。
同时,对于掌握业务逻辑的数据分析人员而言,SQL是一个不可或缺的功能,因此也有很多的分布式系统提供了类SQL功能。例如,Hive(基于Hadoop框架的一个数据仓库工具),Impala(Cloudera公司主导开发的新型查询系统),Presto(Facebook开发的数据查询引擎),tajo(基于Hadoop实现分布式数据仓库系统),Stinger(一个用于提升Hive效率的工具),Drill(专为互动分析大型数据集的分布式系统)等,但是这些实现并没有基于一个标准的关系运算符定义,无法应对日益复杂的数据分析需求所要求的、SQL之外的、更灵活的关系型计算描述。
发明内容
本申请的目的是提供一种的用于分布式执行关系型计算指令的方法与设备。
根据本申请的一个方面,提供了一种用于分布式执行关系型计算指令的方法,其中,该方法包括:
获取由若干个分布式关系型计算算子构成的关系型计算指令;
根据所述关系型计算指令生成对应的逻辑查询树,其中,所述逻辑查询树包括与所述分布式关系型计算算子相对应的节点;
分布式执行所述逻辑查询树以获得所述关系型计算指令所对应的查询结果。
根据本申请的另一方面,还提供了一种用于分布式执行关系型计算指令的设备,其中,该设备包括:
第一装置,用于获取由若干个分布式关系型计算算子构成的关系型计算指令;
第二装置,用于根据所述关系型计算指令生成对应的逻辑查询树,其中,所述逻辑查询树包括与所述分布式关系型计算算子相对应的节点;
第三装置,用于分布式执行所述逻辑查询树以获得所述关系型计算指令所对应的查询结果。
与现有技术相比,本申请针对还没有在分布式上定义标准运算符的语句,如SQL语句等,转换成可分布式处理的算子及关系型计算指令,以便由分布式系统来执行,实现了传统数据库和分布式处理之间无法消弭的缺口。
附图说明
通过阅读参照以下附图所作的对非限制性实施例所作的详细描述,本申请的其它特征、目的和优点将会变得更明显:
图1示出根据本申请一个方面的一种用于分布式执行关系型计算指令的设备示意图;
图2示出根据本申请一个优选实施例的一种用于分布式执行关系型计算指令的设备中第一装置的示意图;
图3示出根据本申请另一个优选实施例的一种用于分布式执行关系型计算指令的设备中第三装置的示意图;
图4示出根据本申请另一个方面的一种用于分布式执行关系型计算指令的方法流程图;
图5示出根据本申请一个优选实施例的一种用于分布式执行关系型计算指令的方法中步骤S1的详细流程图;
图6示出根据本申请另一个优选实施例的一种用于分布式执行关系型计算指令的方法中步骤S3的详细流程图。
附图中相同或相似的附图标记代表相同或相似的部件。
具体实施方式
下面结合附图对本申请作进一步详细描述。
在本申请一个典型的配置中,终端、服务网络的设备和可信方均包括一个或多个处理器(CPU)、输入/输出接口、网络接口和内存。内存可能包括计算机可读介质中的非永久性存储器,随机存取存储器(RAM)和/或非易失性内存等形式,如只读存储器(ROM)或闪存(flashRAM)。内存是计算机可读介质的示例。计算机可读介质包括永久性和非永久性、可移动和非可移动媒体可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。计算机的存储介质的例子包括,但不限于相变内存(PRAM)、静态随机存取存储器(SRAM)、动态随机存取存储器(DRAM)、其他类型的随机存取存储器(RAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)、快闪记忆体或其他内存技术、只读光盘只读存储器(CD-ROM)、数字多功能光盘(DVD)或其他光学存储、磁盒式磁带,磁带磁磁盘存储或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。按照本文中的界定,计算机可读介质不包括非暂存电脑可读媒体(transitorymedia),如调制的数据信号和载波。
图1示出根据本申请一个方面的一种用于分布式执行关系型计算指令的设备。所述执行设备1包括:第一装置11、第二装置12和第三装置13。具体地,所述第一装置11用于获取由若干个分布式关系型计算算子构成的关系型计算指令。所述第二装置12用于根据所述关系型计算指令生成对应的逻辑查询树,其中,所述逻辑查询树包括与所述分布式关系型计算算子相对应的节点。所述第三装置13用于分布式执行所述逻辑查询树以获得所述关系型计算指令所对应的查询结果。
在此,所述执行设备1可由网络主机、单个网络服务器、多个网络服务器集或多个服务器构成的云等实现。本领域技术人员应能理解上述网络设备仅为举例,其他现有的或今后可能出现的网络设备如可适用于本申请,也应包含在本申请保护范围以内,并在此以引用方式包含于此。在此,所述执行设备1包括一种能够按照事先设定或存储的指令,自动进行数值计算和信息处理的电子设备,其硬件包括但不限于微处理器、专用集成电路(ASIC)、可编程门阵列(FPGA)、数字处理器(DSP)、嵌入式设备等。
具体地,所述第一装置11通过程序接口或http协议等约定通信方式,从不同应用平台、或用户终端获取由若干个分布式关系型计算算子构成的关系型计算指令。
在此,所述分布式关系型计算算子包括用于进行数据库操作或功能处理的程序语言。其可以是基于ProtoBuf、XML(可扩展标记语言)或JSON(JavaScriptObjectNotation,Java脚本对象表示)来描述的。所述分布式关系型计算算子包括以下至少任一项:数据分片算子、过滤算子、聚合算子、联接算子、投影算子、排序算子、输出算子、限制输出行数算子、合并结果算子、窗口函数算子、计算表值函数算子或读取数据源算子。例如,相关算子的特性描述如下:
读取数据源算子:指示所要读取的数据库和表名;
过滤算子:根据条件对输入数据进行过滤;
聚合算子:实现关系运算中的聚合操作,类似sql中的groupby操作;
联接算子:实现关系运算中的联接操作,类似sql中的join操作;
投影算子:实现关系运算中的投影操作,类似sql中的select操作;
排序算子:对输入数据进行排序;
输出算子:将计算结果输出;
限制行数算子:限制输出数据的行数;
合并结果算子:将多个算子的输出进行合并;
窗口函数算子:实现类似数据库系统中分析函数的功能。
在此,ProtoBuf(ProtocolBuffers,协议缓存)是Google公司开发的一种数据描述语言,类似于XML能够将结构化数据序列化,可用于数据存储、通信协议等方面。
在此,所述关系型计算指令是指描述关系型计算的指令,例如SQL语句;由若干个分布式关系型计算算子构成的关系型计算指令可将一所述分布式关系型计算算子所得到的结果传递至下一分布式关系型计算算子。所述关系型计算指令可以是基于HIVE、SQL或PIG(适合于使用Hadoop和MapReduce平台来查询大型半结构化数据集的高级过程语言)的。例如,所述关系型计算指令由PIG编程语言通过在每个分布式关系型计算算子中设定前一分布式关系型计算算子的名称和ID(标识信息)来指定。
优选地,为了确保已安装在应用平台或用户终端中的软件的正常使用,所述第一装置11包括:第一一单元111和第一二单元112。如图2所示。具体地,所述第一一单元111用于获取待执行的、基于关系型逻辑的关系型计算语句。所述第一二单元112用于将所述关系型计算语句映射为由若干个分布式关系型计算算子构成的关系型计算指令。其中,所述基于关系型逻辑的关系型计算语句包括但不限于:数据库操作语句、逻辑运算语句等。
例如,所述第一一单元111所获取的SQL语句为:selectidastest_idfromtestProject.testwhereid>10。它的语义为:从testProject.test表中读取数据,同时选择其中id>10的数据,接着,从数据中选择id列并命名为test_id,接着,从屏幕输出。则所述第一二单元112根据预设的SQL语句和分布式关系型计算算子的映射关系,确定由DataSource、Filter、Select和DataSink四个算子所构成的关系型计算指令。
其中,所述DataSource、Filter、Select和DataSink四个算子的代码举例如下:
由上可见,所述DataSource算子中定义数据库和表名,并设定ID=Datasource_0;所述Filter算子中包含id>10的过滤条件、ID=Filter_1、父算子为DataSource,parentID=Datasource_0;所述Select算子中包含所选择的表中的列名、ID=Select_2、父算子为Filter,parentID=2;所述DataSink算子指出要输出计算结果至屏幕、ID=DataSink_3,父算子为Select算子和parentID=Select_2。上述四个算子即为所述关系型计算指令。
接着,所述第二装置12根据所述关系型计算指令生成对应的逻辑查询树,其中,所述逻辑查询树包括与所述分布式关系型计算算子相对应的节点。
具体地,所述第二装置12将所述关系型计算指令中的分布式关系型计算算子作为节点,把所述关系型计算指令中数据的传递方向作为父子关系,构造成一棵逻辑查询树,并填入推导出的各种信息,如节点的输入输出信息等。优选地,所述第二装置12将所述分布式关系型计算算子间的数据传递关系映射为对应所述节点间的父子关系。
继续上述SQL查询的实例,所述第二装置12将DataSource、Filter、Select和DataSink四个分布式关系型计算算子设为四个节点,并根据DataSource算子中没有parentID,确定该算子为根节点;根据Filter算子中的关联算子名和parentID=1找到DataSource算子中ID为1,则将Filter算子设定为DataSource算子的子节点,继续;以此类推,构造出的逻辑查询树从根节点开始的各节点依次为:根节点DataSource,第一子节点Filter,第二子节点Select,以及第三子节点DataSink。
需要说明的是,本领域技术人员应该理解,上述逻辑查询树的构建仅为举例。事实上,所述逻辑查询树中的子节点可以有一个或多个父节点,父节点也可以有一个或多个子节点。其他现有的或今后可能出现的逻辑查询树的构建方法如可适用于本申请,也应包含在本申请保护范围以内,并在此以引用方式包含于此。
所述第三装置13分布式执行所述逻辑查询树以获得所述关系型计算指令所对应的查询结果。
具体地,所述第三装置13按照所述关系型计算指令所指示的数据传递方向,管理分布式系统中的各设备执行所述逻辑查询树中的每个节点的顺序,例如生成执行引擎接受的物理查询计划,并提交给支持不同数据场景下的相同功能的执行引擎执行;并当最后一节点运行结束时,得到相应的查询结果。其中,所述分布式执行的方式包括但不限于:DAG(DirectedAcyclicGraph有向无环图)方式。其中,以DAG分布式执行该逻辑查询树的方式具体如下:
1.首先由该逻辑查询树转换得到以DAG格式描述的物理逻辑树,然后把该DAG拆分成若干子图,每一个子图中所有的算子都可以在一个进程中完成计算,计算方式:数据先在父算子中执行完生成新的结果,然后把结果交给子算子执行。子图之间的数据流转需要跨进程传输。这些子图也会组成一个“粗粒度”的DAG。
2.执行引擎会处理启动新进程、处理跨进程传输的数据、处理failover(失效备援)甚至灾难恢复等等。
对于本领域技术人员而言,该DAG方式相比MapReduce方式的优势包括但不限于:1)MapReduce框架要求比较严格,必须将问题描述成map-reduce的方式,且按照先map后reduce的顺序进行执行;2)而DAG方式更加灵活,只需要根据执行的依赖关系将问题描述为一张图,没有依赖关系的节点可以并行执行。
继续上述SQL查询的实例,按照所述第二装置12所生成的逻辑查询树所指示的逻辑顺序,所述第三装置13管理分布式系统依次执行DataSource、Filter、Select和DataSink算子,并在执行过程中将上一节点的结果带给下一节点,直至DataSink算子将最后的查询结果输出至屏幕。
优选地,所述第三装置13包括:第三一单元131和第三二单元132。如图3所示。
所述第三一单元131用于生成所述逻辑查询树所对应的物理查询树。所述第三二单元132用于分布式执行所述物理查询树。
继续上述SQL查询的实例,所述第三一单元131先在内存或指定存储设备中开辟一物理空间,再按照所述逻辑查询树执行根节点DataSource算子,得到相应数据库名和表名,并在所述物理空间中存储所述数据库名和表名,以作为物理查询树的根节点。接着,所述第三一单元131再将Filter算子中的过滤条件作为所述物理查询树的根节点下的第一子节点。接着,所述三一单元再将Select算子中所要查询的列名作为所述物理查询树的第一子节点下的第二子节点。所述三一单元再将DataSink算子中输出屏幕的指令作为所述物理查询树的第二子节点下的第三子节点。在此,所述物理查询树是描述执行信息的树状数据结构,其节点是由逻辑查询树上的节点转化而来,并添加与具体执行相关的信息,如聚合算法、联接算法的选择,是否需要跨进程以及如何跨进程传输数据等等。例如,转成物理查询树时,逻辑查询树中大部分的逻辑算子都会被转成一个或多个物理算子,物理算子会包含物理执行的相关信息,比如:聚合算法、联接算法的选择,是否需要跨进程以及如何跨进程传输数据等等。
接着将所构成的物理查询树提供给所述第三二单元132,由所述第三二单元132分布式的从所述物理查询树中由根节点开始,将各节点的内容转换成数据库和显示屏所能识别的语句,并按照DAG的方式在分布式系统上执行。最终将从数据库中筛选出的id列中id>10的数据,以test_id之名显示在显示屏上。
需要说明的是,本领域技术人员应该理解,上述生成所述逻辑查询树所对应的物理查询树以及执行所述物理查询树的方式仅为举例。事实上,本申请不仅可用于数据库的操作,还可以用于各种逻辑和功能实现的分布式处理。在此就不一一详述。其他现有的或今后可能出现的生成所述逻辑查询树所对应的物理查询树以及执行所述物理查询树的方式如可适用于本申请,也应包含在本申请保护范围以内,并在此以引用方式包含于此。
作为又一种优选方案,所述第三一单元131通过对所述逻辑查询树中的相关节点执行优化操作,生成所述逻辑查询树所对应的物理查询树。其中,所述优化操作即代数优化,包括只与关系代数相关的优化和在分布式上有关的代数优化,例如列剪裁、谓词下推等。其中,列裁剪是指在扫描数据时,只扫描实际执行中需要的列,而不是源表中的所有列,它用于减少数据源读取的数据量和跨进程(在同一台或者不同的物理服务器上,下同)传输的数据量;谓词下推是指将逻辑查询树中较低的过滤节点、连接节点中的谓词移入较高的节点中,从而能够提早进行数据过滤。
例如,所述逻辑查询树中包含join算子,则所述第三一单元131根据join算子中的执行方式,将其转化为使用排序方式的MergeJoin或使用哈希方式的HashJoin,再相应的生成物理查询树的某一节点。
同样的,所述第三一单元131还可以在所述物理查询树上进行物理执行相关的优化,如分区裁剪,或者,根据整个系统的物理信息进行的优化,如选择开销更小的聚合或联接算法。所有的优化都被执行过后,所述第三二单元132将所述物理查询树最终转化为执行计划,以DAG的方式在分布式系统上执行。
图4示出根据本申请一个方面的一种用于分布式执行关系型计算指令的方法。所述执行方法主要由执行设备来执行。具体地,在步骤S1中,所述执行设备获取由若干个分布式关系型计算算子构成的关系型计算指令。在步骤S2中,所述执行设备根据所述关系型计算指令生成对应的逻辑查询树,其中,所述逻辑查询树包括与所述分布式关系型计算算子相对应的节点。在步骤S3中,所述执行设备分布式执行所述逻辑查询树以获得所述关系型计算指令所对应的查询结果。
在此,所述执行设备可由网络主机、单个网络服务器、多个网络服务器集或多个服务器构成的云等实现。本领域技术人员应能理解上述网络设备仅为举例,其他现有的或今后可能出现的网络设备如可适用于本申请,也应包含在本申请保护范围以内,并在此以引用方式包含于此。在此,所述执行设备包括一种能够按照事先设定或存储的指令,自动进行数值计算和信息处理的电子设备,其硬件包括但不限于微处理器、专用集成电路(ASIC)、可编程门阵列(FPGA)、数字处理器(DSP)、嵌入式设备等。
具体地,所述第一装置通过程序接口或http协议等约定通信方式,从不同应用平台、或用户终端获取由若干个分布式关系型计算算子构成的关系型计算指令。
在此,所述分布式关系型计算算子指用于进行数据库操作或功能处理的程序语言。其可以是基于ProtoBuf、XML(可扩展标记语言)或JSON(JavaScriptObjectNotation,Java脚本对象表示)来描述的。所述分布式关系型计算算子包括以下至少任一项:数据分片算子、过滤算子、聚合算子、联接算子、投影算子、排序算子、输出算子、限制输出行数算子、合并结果算子、窗口函数算子、计算表值函数算子或读取数据源算子。例如,相关算子的特性描述如下:
读取数据源算子指示所要读取的数据库和表名;过滤算子:根据条件对输入数据进行过滤;
聚合算子:实现关系运算中的聚合操作,类似sql中的groupby操作;
联接算子:实现关系运算中的联接操作,类似sql中的join操作;
投影算子:实现关系运算中的投影操作,类似sql中的select操作;
排序算子:对输入数据进行排序;
输出算子:将计算结果输出;
限制行数算子:限制输出数据的行数;
合并结果算子:将多个算子的输出进行合并;
窗口函数算子:实现类似数据库系统中分析函数的功能。
在此,ProtoBuf(ProtocolBuffers,协议缓存)是Google公司开发的一种数据描述语言,类似于XML能够将结构化数据序列化,可用于数据存储、通信协议等方面。
在此,所述关系型计算指令是指描述关系型计算的指令,例如SQL语句;由若干个分布式关系型计算算子构成的关系型计算指令可将一所述分布式关系型计算算子所得到的结果传递至下一分布式关系型计算算子。所述关系型计算指令可以是基于HIVE、SQL或PIG(适合于使用Hadoop和MapReduce平台来查询大型半结构化数据集的高级过程语言)的。例如,所述关系型计算指令由PIG编程语言通过在每个分布式关系型计算算子中设定前一分布式关系型计算算子的名称和ID来指定。
优选地,为了确保已安装在应用平台或用户终端中的软件的正常使用,所述步骤S1包括:步骤S11和S12。如图5所示。具体地,在步骤S11中,所述执行设备获取待执行的、基于关系型逻辑的关系型计算语句。在步骤S12中,所述执行设备将所述关系型计算语句映射为由若干个分布式关系型计算算子构成的关系型计算指令。其中,所述基于关系型逻辑的关系型计算语句包括但不限于:数据库操作语句、逻辑运算语句等。
例如,所述执行设备所获取的SQL语句为:selectidastest_idfromtestProject.testwhereid>10。它的语义为:从testProject.test表中读取数据,同时选择其中id>10的数据,接着,从数据中选择id列并命名为test_id,接着,从屏幕输出。则所述执行设备根据预设的SQL语句和分布式关系型计算算子的映射关系,确定由DataSource、Filter、Select和DataSink四个算子所构成的关系型计算指令。
其中,所述DataSource、Filter、Select和DataSink四个算子的代码举例如下:
由上可见,所述DataSource算子中定义数据库和表名,并设定ID=Datasource_0;所述Filter算子中包含id>10的过滤条件、ID=Filter_1、父算子为DataSource,parentID=Datasource_0;所述Select算子中包含所选择的表中的列名、ID=Select_2、父算子名为Filter,parentID=2;所述DataSink算子指出要输出计算结果至屏幕、ID=DataSink_3,父算子名为Select算子和parentID=Select_2。上述四个算子即为所述关系型计算指令。
接着,步骤S2中,所述执行设备根据所述关系型计算指令生成对应的逻辑查询树,其中,所述逻辑查询树包括与所述分布式关系型计算算子相对应的节点。
具体地,所述执行设备将所述关系型计算指令中的分布式关系型计算算子作为节点,把所述关系型计算指令中数据的传递方向作为父子关系,构造成一棵逻辑查询树,并填入推导出的各种信息,如节点的输入输出信息等。优选地,所述执行设备将所述分布式关系型计算算子间的数据传递关系映射为对应所述节点间的父子关系。
继续上述SQL查询的实例,所述执行设备将DataSource、Filter、Select和DataSink四个分布式关系型计算算子设为四个节点,并根据DataSource算子中没有parentID,确定该算子为根节点;根据Filter算子中的关联算子名和parentID=1找到DataSource算子中ID为1,则将Filter算子设定为DataSource算子的子节点,继续;以此类推,构造出的逻辑查询树从根节点开始的各节点依次为:根节点DataSource,第一子节点Filter,第二子节点Select,以及第三子节点DataSink。
需要说明的是,本领域技术人员应该理解,上述逻辑查询树的构建仅为举例。事实上,所述逻辑查询树中的子节点可以有一个或多个父节点,父节点也可以有一个或多个子节点。其他现有的或今后可能出现的逻辑查询树的构建方法如可适用于本申请,也应包含在本申请保护范围以内,并在此以引用方式包含于此。
接着,步骤S3中,所述执行设备分布式执行所述逻辑查询树以获得所述关系型计算指令所对应的查询结果。
具体地,所述执行设备按照所述关系型计算指令所指示的数据传递方向,管理分布式系统中的各设备执行所述逻辑查询树中的每个节点的顺序,例如生成执行引擎接受的物理查询计划,并提交给支持不同数据场景下的相同功能的执行引擎执行;并当最后一节点运行结束时,得到相应的查询结果。其中,所述分布式执行的方式包括但不限于:DAG(DirectedAcyclicGraph有向无环图)方式。其中,以DAG分布式执行该逻辑查询树的方式具体如下:
1.首先由该逻辑查询树转换得到以DAG格式描述的物理逻辑树,然后把该DAG拆分成若干子图,每一个子图中所有的算子都可以在一个进程中完成计算,计算方式:数据先在父算子中执行完生成新的结果,然后把结果交给子算子执行。子图之间的数据流转需要跨进程传输。这些子图也会组成一个“粗粒度”的DAG。
2.执行引擎会处理启动新进程、处理跨进程传输的数据、处理failover(失效备援)甚至灾难恢复等等。
对于本领域技术人员而言,该DAG方式相比MapReduce方式的优势包括但不限于:1)MapReduce框架要求比较严格,必须将问题描述成map-reduce的方式,且按照先map后reduce的顺序进行执行;2)而DAG方式更加灵活,只需要根据执行的依赖关系将问题描述为一张图,没有依赖关系的节点可以并行执行。
继续上述SQL查询的实例,按照所述执行设备所生成的逻辑查询树所指示的逻辑顺序,所述执行设备管理分布式系统依次执行DataSource、Filter、Select和DataSink算子,并在执行过程中将上一节点的结果带给下一节点,直至DataSink算子将最后的查询结果输出至屏幕。
优选地,所述步骤S3包括:步骤S31和S32。如图6所示。
在步骤S31中,所述执行设备生成所述逻辑查询树所对应的物理查询树。在步骤S32中,所述执行设备分布式执行所述物理查询树。
继续上述SQL查询的实例,在步骤S31中,所述执行设备先在内存或指定存储设备中开辟一物理空间,再按照所述逻辑查询树执行根节点DataSource算子,得到相应数据库名和表名,并在所述物理空间中存储所述数据库名和表名,以作为物理查询树的根节点。再将Filter算子中的过滤条件作为所述物理查询树的根节点下的第一子节点。再将Select算子中所要查询的列名作为所述物理查询树的第一子节点下的第二子节点。再再将DataSink算子中输出屏幕的指令作为所述物理查询树的第二子节点下的第三子节点。在此,所述物理查询树是描述执行信息的树状数据结构,其节点是由逻辑查询树上的节点转化而来,并添加与具体执行相关的信息,如聚合算法、联接算法的选择,是否需要跨进程以及如何跨进程传输数据等等。例如,转成物理查询树时,逻辑查询树中大部分的逻辑算子都会被转成一个或多个物理算子,物理算子会包含物理执行的相关信息,比如:聚合算法、联接算法的选择,是否需要跨进程以及如何跨进程传输数据等等。
接着,执行步骤S32,所述执行设备分布式的从所述物理查询树中由根节点开始,将各节点的内容转换成数据库和显示屏所能识别的语句,并按照DAG的方式在分布式系统上执行。最终将从数据库中筛选出的id列中id>10的数据,以test_id之名显示在显示屏上。
需要说明的是,本领域技术人员应该理解,上述生成所述逻辑查询树所对应的物理查询树以及执行所述物理查询树的方式仅为举例。事实上,本申请不仅可用于数据库的操作,还可以用于各种逻辑和功能实现的分布式处理。在此就不一一详述。其他现有的或今后可能出现的生成所述逻辑查询树所对应的物理查询树以及执行所述物理查询树的方式如可适用于本申请,也应包含在本申请保护范围以内,并在此以引用方式包含于此。
作为又一种优选方案,所述执行设备通过对所述逻辑查询树中的相关节点执行优化操作,生成所述逻辑查询树所对应的物理查询树。其中,所述优化操作即代数优化,包括只与关系代数相关的优化和在分布式上有关的代数优化,例如列剪裁、谓词下推等。其中,列裁剪是指在扫描数据时,只扫描实际执行中需要的列,而不是源表中的所有列,它用于减少数据源读取的数据量和跨进程(在同一台或者不同的物理服务器上,下同)传输的数据量;谓词下推是指将逻辑查询树中较低的过滤节点、连接节点中的谓词移入较高的节点中,从而能够提早进行数据过滤。
例如,所述逻辑查询树中包含join算子,则所述第执行设备根据join算子中的执行方式,将其转化为使用排序方式的MergeJoin或使用哈希方式的HashJoin,再相应的生成物理查询树的某一节点。
同样的,所述第执行设备还可以在所述物理查询树上进行物理执行相关的优化,如分区裁剪,或者,根据整个系统的物理信息进行的优化,如选择开销更小的聚合或联接算法。所有的优化都被执行过后,所述执行设备将所述物理查询树最终转化为执行计划,以DAG的方式在分布式系统上执行。
综上所述,本申请的用于分布式执行关系型计算指令的方法与设备,针对还没有在分布式上定义标准运算符的语句,如SQL语句等,将其转换成可分布式处理的算子及关系型计算指令,以便由分布式系统来执行,实现了传统数据库和分布式处理之间无法消弭的缺口;另外,将各算子和关系型计算指令映射成逻辑查询树,能够便于协调;还有,对逻辑查询树进行优化处理,能够加快执行效率。
需要注意的是,本申请可在软件和/或软件与硬件的组合体中被实施,例如,可采用专用集成电路(ASIC)、通用目的计算机或任何其他类似硬件设备来实现。在一个实施例中,本申请的软件程序可以通过处理器执行以实现上文所述步骤或功能。同样地,本申请的软件程序(包括相关的数据结构)可以被存储到计算机可读记录介质中,例如,RAM存储器,磁或光驱动器或软磁盘及类似设备。另外,本申请的一些步骤或功能可采用硬件来实现,例如,作为与处理器配合从而执行各个步骤或功能的电路。
另外,本申请的一部分可被应用为计算机程序产品,例如计算机程序指令,当其被计算机执行时,通过该计算机的操作,可以调用或提供根据本申请的方法和/或技术方案。而调用本申请的方法的程序指令,可能被存储在固定的或可移动的记录介质中,和/或通过广播或其他信号承载媒体中的数据流而被传输,和/或被存储在根据所述程序指令运行的计算机设备的工作存储器中。在此,根据本申请的一个实施例包括一个装置,该装置包括用于存储计算机程序指令的存储器和用于执行程序指令的处理器,其中,当该计算机程序指令被该处理器执行时,触发该装置运行基于前述根据本申请的多个实施例的方法和/或技术方案。
对于本领域技术人员而言,显然本申请不限于上述示范性实施例的细节,而且在不背离本申请的精神或基本特征的情况下,能够以其他的具体形式实现本申请。因此,无论从哪一点来看,均应将实施例看作是示范性的,而且是非限制性的,本申请的范围由所附权利要求而不是上述说明限定,因此旨在将落在权利要求的等同要件的含义和范围内的所有变化涵括在本申请内。不应将权利要求中的任何附图标记视为限制所涉及的权利要求。此外,显然“包括”一词不排除其他单元或步骤,单数不排除复数。装置权利要求中陈述的多个单元或装置也可以由一个单元或装置通过软件或者硬件来实现。第一,第二等词语用来表示名称,而并不表示任何特定的顺序。
Claims (18)
1.一种用于分布式执行关系型计算指令的方法,其中,该方法包括:
获取由若干分布式关系型计算算子构成的关系型计算指令;
根据所述关系型计算指令生成对应的逻辑查询树,其中,所述逻辑查询树包括与所述分布式关系型计算算子相对应的节点;
分布式执行所述逻辑查询树以获得所述关系型计算指令所对应的查询结果。
2.根据权利要求1所述的方法,其中,所述分布式执行所述逻辑查询树以获得所述关系型计算指令所对应的查询结果包括:
生成所述逻辑查询树所对应的物理查询树;
分布式执行所述物理查询树。
3.根据权利要求2所述的方法,其中,所述生成所述逻辑查询树所对应的物理查询树包括:
通过对所述逻辑查询树中的相关节点执行优化操作,生成所述逻辑查询树所对应的物理查询树。
4.根据权利要求1至3中任一项所述的方法,其中,所述分布式执行所述逻辑查询树以获得所述关系型计算指令所对应的查询结果包括:
按有向无环图的方式分布式执行所述逻辑查询树以获得所述关系型计算指令所对应的查询结果。
5.根据权利要求1至4中任一项所述的方法,其中,所述关系型计算指令是基于HIVE、SQL或PIG的。
6.根据权利要求1至5中任一项所述的方法,其中,所述获取由若干分布式关系型计算算子构成的关系型计算指令包括:
获取待执行的、基于关系型逻辑的关系型计算语句;
将所述关系型计算语句映射为由若干个分布式关系型计算算子构成的关系型计算指令。
7.根据权利要求1至6中任一项所述的方法,其中,所述分布式关系型计算算子是基于ProtoBuf、XML或JSON来描述的。
8.根据权利要求1至7中任一项所述的方法,其中,所述分布式关系型计算算子包括以下至少任一项:
数据分片算子、过滤算子、聚合算子、联接算子、投影算子、排序算子、输出算子、限制输出行数算子、合并结果算子、窗口函数算子、计算表值函数算子或读取数据源算子。
9.根据权利要求1至8中任一项所述的方法,其中,所述根据所述关系型计算指令生成对应的逻辑查询树包括:
根据所述关系型计算指令生成对应的逻辑查询树,其中,所述逻辑查询树包括与所述分布式关系型计算算子相对应的节点,所述分布式关系型计算算子间的数据传递关系映射为对应所述节点间的父子关系。
10.一种用于分布式执行关系型计算指令的设备,其中,该设备包括:
第一装置,用于获取由若干个分布式关系型计算算子构成的关系型计算指令;
第二装置,用于根据所述关系型计算指令生成对应的逻辑查询树,其中,所述逻辑查询树包括与所述分布式关系型计算算子相对应的节点;
第三装置,用于分布式执行所述逻辑查询树以获得所述关系型计算指令所对应的查询结果。
11.根据权利要求10所述的设备,其中,所述第三装置包括:
第三一单元,用于生成所述逻辑查询树所对应的物理查询树;
第三二单元,用于分布式执行所述物理查询树。
12.根据权利要求11所述的设备,其中,所述第三一单元用于:
通过对所述逻辑查询树中的相关节点执行优化操作,生成所述逻辑查询树所对应的物理查询树。
13.根据权利要求10至12中任一项所述的设备,其中,所述第三装置用于:
按有向无环图的方式分布式执行所述逻辑查询树以获得所述关系型计算指令所对应的查询结果。
14.根据权利要求10至13中任一项所述的设备,其中,所述关系型计算指令是基于HIVE、SQL或PIG的。
15.根据权利要求10至14中任一项所述的设备,其中,所述第一装置包括:
第一一单元,用于获取待执行的、基于关系型逻辑的关系型计算语句;
第一二单元,用于将所述关系型计算语句映射为由若干个分布式关系型计算算子构成的关系型计算指令。
16.根据权利要求10至15中任一项所述的设备,其中,所述分布式关系型计算算子是基于ProtoBuf、XML或JSON来描述的。
17.根据权利要求10至16中任一项所述的设备,其中,所述分布式关系型计算算子包括以下至少任一项:
数据分片算子、过滤算子、聚合算子、联接算子、投影算子、排序算子、输出算子、限制输出行数算子、合并结果算子、窗口函数算子、计算表值函数算子或读取数据源算子。
18.根据权利要求10至17中任一项所述的设备,其中,所述第二装置用于:
根据所述关系型计算指令生成对应的逻辑查询树,其中,所述逻辑查询树包括与所述分布式关系型计算算子相对应的节点,所述分布式关系型计算算子间的数据传递关系映射为对应所述节点间的父子关系。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410778654.7A CN105786808B (zh) | 2014-12-15 | 2014-12-15 | 一种用于分布式执行关系型计算指令的方法与设备 |
PCT/CN2015/096727 WO2016095726A1 (zh) | 2014-12-15 | 2015-12-08 | 一种用于分布式执行关系型计算指令的方法与设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410778654.7A CN105786808B (zh) | 2014-12-15 | 2014-12-15 | 一种用于分布式执行关系型计算指令的方法与设备 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN105786808A true CN105786808A (zh) | 2016-07-20 |
CN105786808B CN105786808B (zh) | 2019-06-18 |
Family
ID=56125896
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201410778654.7A Active CN105786808B (zh) | 2014-12-15 | 2014-12-15 | 一种用于分布式执行关系型计算指令的方法与设备 |
Country Status (2)
Country | Link |
---|---|
CN (1) | CN105786808B (zh) |
WO (1) | WO2016095726A1 (zh) |
Cited By (15)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106445645A (zh) * | 2016-09-06 | 2017-02-22 | 北京百度网讯科技有限公司 | 用于执行分布式计算任务的方法和装置 |
WO2018019232A1 (zh) * | 2016-07-29 | 2018-02-01 | 华为技术有限公司 | 流计算方法、装置及系统 |
WO2018053889A1 (zh) * | 2016-09-21 | 2018-03-29 | 北京百度网讯科技有限公司 | 分布式计算框架和分布式计算方法 |
CN107870946A (zh) * | 2016-09-28 | 2018-04-03 | 北京京东尚科信息技术有限公司 | 实时数据动态连接方法和装置 |
CN107992516A (zh) * | 2017-10-27 | 2018-05-04 | 平安科技(深圳)有限公司 | 电子装置、数据查询的方法及存储介质 |
CN108037909A (zh) * | 2017-09-25 | 2018-05-15 | 广联达科技股份有限公司 | 关联数据集计算方法及系统和计算机设备 |
CN108287729A (zh) * | 2017-12-22 | 2018-07-17 | 北京中科睿芯智能计算产业研究院有限公司 | 一种数据流指令映射方法 |
CN108874954A (zh) * | 2018-06-04 | 2018-11-23 | 深圳市华傲数据技术有限公司 | 一种数据库查询的优化方法、介质及设备 |
CN109800069A (zh) * | 2018-12-25 | 2019-05-24 | 北京明略软件系统有限公司 | 一种实现数据治理的方法及装置 |
CN111382174A (zh) * | 2018-12-28 | 2020-07-07 | 百度在线网络技术(北京)有限公司 | 多方数据联合查询方法、装置、服务器和存储介质 |
CN111488326A (zh) * | 2019-01-25 | 2020-08-04 | 阿里巴巴集团控股有限公司 | MapReduce作业执行方法、节点设备及存储介质 |
CN111694653A (zh) * | 2019-03-13 | 2020-09-22 | 阿里巴巴集团控股有限公司 | 计算系统中调整计算算子类型分布的方法、装置及系统 |
CN112561084A (zh) * | 2021-02-18 | 2021-03-26 | 腾讯科技(深圳)有限公司 | 特征提取方法、装置、计算机设备及存储介质 |
CN112825068A (zh) * | 2019-11-21 | 2021-05-21 | 北京达佳互联信息技术有限公司 | 数据血缘生成方法及装置 |
CN114328595A (zh) * | 2021-11-30 | 2022-04-12 | 苏州浪潮智能科技有限公司 | 一种数据查询方法、装置、电子设备及存储介质 |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110909023B (zh) * | 2018-09-17 | 2021-11-19 | 华为技术有限公司 | 一种查询计划的获取方法、数据查询方法及装置 |
CN115563150B (zh) * | 2022-12-02 | 2023-04-18 | 浙江大华技术股份有限公司 | Hive SQL与执行引擎DAG的映射方法、设备及存储介质 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103310011A (zh) * | 2013-07-02 | 2013-09-18 | 曙光信息产业(北京)有限公司 | 集群数据库系统环境下的数据查询解析方法 |
CN103593401A (zh) * | 2013-10-15 | 2014-02-19 | 北京航空航天大学 | 代码转换方法及装置 |
CN103761080A (zh) * | 2013-12-25 | 2014-04-30 | 中国农业大学 | 一种基于SQL的MapReduce作业生成方法及系统 |
CN104063486A (zh) * | 2014-07-03 | 2014-09-24 | 四川中亚联邦科技有限公司 | 一种大数据分布式存储方法和系统 |
Family Cites Families (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8745082B2 (en) * | 2007-06-29 | 2014-06-03 | Alcatel Lucent | Methods and apparatus for evaluating XPath filters on fragmented and distributed XML documents |
CN104160394B (zh) * | 2011-12-23 | 2017-08-15 | 亚马逊科技公司 | 用于半结构化数据的可缩放分析平台 |
CN104090962B (zh) * | 2014-07-14 | 2017-03-29 | 西北工业大学 | 面向海量分布式数据库的嵌套查询方法 |
-
2014
- 2014-12-15 CN CN201410778654.7A patent/CN105786808B/zh active Active
-
2015
- 2015-12-08 WO PCT/CN2015/096727 patent/WO2016095726A1/zh active Application Filing
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103310011A (zh) * | 2013-07-02 | 2013-09-18 | 曙光信息产业(北京)有限公司 | 集群数据库系统环境下的数据查询解析方法 |
CN103593401A (zh) * | 2013-10-15 | 2014-02-19 | 北京航空航天大学 | 代码转换方法及装置 |
CN103761080A (zh) * | 2013-12-25 | 2014-04-30 | 中国农业大学 | 一种基于SQL的MapReduce作业生成方法及系统 |
CN104063486A (zh) * | 2014-07-03 | 2014-09-24 | 四川中亚联邦科技有限公司 | 一种大数据分布式存储方法和系统 |
Cited By (25)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107678790B (zh) * | 2016-07-29 | 2020-05-08 | 华为技术有限公司 | 流计算方法、装置及系统 |
WO2018019232A1 (zh) * | 2016-07-29 | 2018-02-01 | 华为技术有限公司 | 流计算方法、装置及系统 |
CN107678790A (zh) * | 2016-07-29 | 2018-02-09 | 华为技术有限公司 | 流计算方法、装置及系统 |
US11132402B2 (en) | 2016-07-29 | 2021-09-28 | Huawei Technologies Co., Ltd. | Stream computing method, apparatus, and system |
CN106445645A (zh) * | 2016-09-06 | 2017-02-22 | 北京百度网讯科技有限公司 | 用于执行分布式计算任务的方法和装置 |
WO2018053889A1 (zh) * | 2016-09-21 | 2018-03-29 | 北京百度网讯科技有限公司 | 分布式计算框架和分布式计算方法 |
US11132363B2 (en) | 2016-09-21 | 2021-09-28 | Beijing Baidu Netcom Science And Technology Co., Ltd. | Distributed computing framework and distributed computing method |
CN107870946A (zh) * | 2016-09-28 | 2018-04-03 | 北京京东尚科信息技术有限公司 | 实时数据动态连接方法和装置 |
CN108037909A (zh) * | 2017-09-25 | 2018-05-15 | 广联达科技股份有限公司 | 关联数据集计算方法及系统和计算机设备 |
CN107992516A (zh) * | 2017-10-27 | 2018-05-04 | 平安科技(深圳)有限公司 | 电子装置、数据查询的方法及存储介质 |
CN108287729B (zh) * | 2017-12-22 | 2021-04-13 | 北京中科睿芯智能计算产业研究院有限公司 | 一种数据流指令映射方法 |
CN108287729A (zh) * | 2017-12-22 | 2018-07-17 | 北京中科睿芯智能计算产业研究院有限公司 | 一种数据流指令映射方法 |
CN108874954A (zh) * | 2018-06-04 | 2018-11-23 | 深圳市华傲数据技术有限公司 | 一种数据库查询的优化方法、介质及设备 |
CN109800069A (zh) * | 2018-12-25 | 2019-05-24 | 北京明略软件系统有限公司 | 一种实现数据治理的方法及装置 |
CN109800069B (zh) * | 2018-12-25 | 2021-04-30 | 北京明略软件系统有限公司 | 一种实现数据治理的方法及装置 |
CN111382174A (zh) * | 2018-12-28 | 2020-07-07 | 百度在线网络技术(北京)有限公司 | 多方数据联合查询方法、装置、服务器和存储介质 |
CN111382174B (zh) * | 2018-12-28 | 2023-10-17 | 百度在线网络技术(北京)有限公司 | 多方数据联合查询方法、装置、服务器和存储介质 |
CN111488326A (zh) * | 2019-01-25 | 2020-08-04 | 阿里巴巴集团控股有限公司 | MapReduce作业执行方法、节点设备及存储介质 |
CN111488326B (zh) * | 2019-01-25 | 2023-04-07 | 阿里巴巴集团控股有限公司 | MapReduce作业执行方法、节点设备及存储介质 |
CN111694653A (zh) * | 2019-03-13 | 2020-09-22 | 阿里巴巴集团控股有限公司 | 计算系统中调整计算算子类型分布的方法、装置及系统 |
CN112825068A (zh) * | 2019-11-21 | 2021-05-21 | 北京达佳互联信息技术有限公司 | 数据血缘生成方法及装置 |
CN112825068B (zh) * | 2019-11-21 | 2023-11-28 | 北京达佳互联信息技术有限公司 | 数据血缘生成方法及装置 |
CN112561084A (zh) * | 2021-02-18 | 2021-03-26 | 腾讯科技(深圳)有限公司 | 特征提取方法、装置、计算机设备及存储介质 |
CN114328595A (zh) * | 2021-11-30 | 2022-04-12 | 苏州浪潮智能科技有限公司 | 一种数据查询方法、装置、电子设备及存储介质 |
CN114328595B (zh) * | 2021-11-30 | 2024-01-09 | 苏州浪潮智能科技有限公司 | 一种数据查询方法、装置、电子设备及存储介质 |
Also Published As
Publication number | Publication date |
---|---|
WO2016095726A1 (zh) | 2016-06-23 |
CN105786808B (zh) | 2019-06-18 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN105786808A (zh) | 一种用于分布式执行关系型计算指令的方法与设备 | |
KR102627690B1 (ko) | Sql 질의 플랜들을 최적화하기 위한 차원 콘텍스트 전파 기술들 | |
US10983994B2 (en) | Partition access method for query optimization | |
US11294914B1 (en) | Fast ad-hoc filtering of time series analytics | |
Eldawy | SpatialHadoop: towards flexible and scalable spatial processing using mapreduce | |
CN105183735B (zh) | 数据的查询方法及查询装置 | |
US9886477B2 (en) | Generating imperative-language query code from declarative-language query code | |
US8468146B2 (en) | System and method for creating search index on cloud database | |
US20140101133A1 (en) | Estimating rows returned by recursive queries using fanout | |
US9229979B2 (en) | Optimizing parallel queries using interesting distributions | |
CN106611037A (zh) | 用于分布式图计算的方法与设备 | |
US9229961B2 (en) | Database management delete efficiency | |
US9218394B2 (en) | Reading rows from memory prior to reading rows from secondary storage | |
US10726006B2 (en) | Query optimization using propagated data distinctness | |
CN114461603A (zh) | 多源异构数据融合方法及装置 | |
CN105447030A (zh) | 一种索引处理方法与设备 | |
CN112579578A (zh) | 基于元数据的数据质量管理方法、装置、系统及服务器 | |
CN104462349A (zh) | 一种文件处理方法及装置 | |
US20140280110A1 (en) | Requests for source code text | |
WO2016206395A1 (zh) | 周报信息处理方法及装置 | |
US9280582B2 (en) | Optimization of join queries for related data | |
CN110019448B (zh) | 一种数据交互方法及装置 | |
US9959295B1 (en) | S-expression based computation of lineage and change impact analysis | |
CN104361090A (zh) | 数据查询方法及装置 | |
US11481392B2 (en) | Transformation reconstruction for optimized database query |
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 | ||
TR01 | Transfer of patent right |
Effective date of registration: 20211103 Address after: Room 507, floor 5, building 3, No. 969, Wenyi West Road, Wuchang Street, Yuhang District, Hangzhou City, Zhejiang Province Patentee after: ZHEJIANG TMALL TECHNOLOGY Co.,Ltd. Address before: A four-storey 847 mailbox in Grand Cayman Capital Building, British Cayman Islands Patentee before: ALIBABA GROUP HOLDING Ltd. |
|
TR01 | Transfer of patent right |