CN110612513B - 用于使用可变级并行执行数据处理操作的系统和方法 - Google Patents

用于使用可变级并行执行数据处理操作的系统和方法 Download PDF

Info

Publication number
CN110612513B
CN110612513B CN201880021637.5A CN201880021637A CN110612513B CN 110612513 B CN110612513 B CN 110612513B CN 201880021637 A CN201880021637 A CN 201880021637A CN 110612513 B CN110612513 B CN 110612513B
Authority
CN
China
Prior art keywords
processing
node
nodes
layout
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.)
Active
Application number
CN201880021637.5A
Other languages
English (en)
Other versions
CN110612513A (zh
Inventor
G·A·迪基
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Ab Initio Technology LLC
Original Assignee
Ab Initio Technology LLC
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Ab Initio Technology LLC filed Critical Ab Initio Technology LLC
Publication of CN110612513A publication Critical patent/CN110612513A/zh
Application granted granted Critical
Publication of CN110612513B publication Critical patent/CN110612513B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/22Indexing; Data structures therefor; Storage structures
    • G06F16/2282Tablespace storage structures; Management thereof
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5061Partitioning or combining of resources
    • G06F9/5066Algorithms for mapping a plurality of inter-dependent sub-tasks onto a plurality of physical CPUs
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/23Updating
    • G06F16/2379Updates performed during online database operations; commit processing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/24Querying
    • G06F16/245Query processing
    • G06F16/2455Query execution

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Physics & Mathematics (AREA)
  • Databases & Information Systems (AREA)
  • Software Systems (AREA)
  • Data Mining & Analysis (AREA)
  • Computational Linguistics (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Design And Manufacture Of Integrated Circuits (AREA)
  • Image Generation (AREA)
  • Processing Or Creating Images (AREA)
  • Management, Administration, Business Operations System, And Electronic Commerce (AREA)

Abstract

用于针对数据流图的节点确定处理布局的技术。这些技术包括:获得指定数据流图的信息,该数据流图包括多个节点和连接该多个节点的多个边缘,该多个边缘表示该多个节点中的节点之间的数据流,该多个节点包括:第一组一个或多个节点;以及第二组一个或多个节点,该第二组一个或多个节点与该第一组节点不相交;获得用于该第一组节点的第一组一个或多个处理布局;以及基于该第一组处理布局和一个或多个布局确定规则来确定用于该第二组节点中的每个节点的处理布局,该一个或多个布局确定规则包括用于在具有不同并行度的处理布局中进行选择的至少一个规则。

Description

用于使用可变级并行执行数据处理操作的系统和方法
相关申请的交叉引用
本申请根据35 U.S.C.§119(e)要求于2017年3月29日提交的名称为“SYSTEMS ANDMETHODS FOR PERFORMING DATA PROCESSING OPERATIONS USING VARIABLE LEVELPARALLELISM(用于使用可变级并行执行数据处理操作的系统和方法)”的美国临时申请序列号62/478,390的权益,该美国临时申请通过援引以其全文并入本文。
背景技术
数据处理系统可以使用一个或多个计算机程序来处理数据。由数据处理系统利用的计算机程序中的一个或多个可以被开发为数据流图。数据流图可以包括表示要对输入数据执行数据处理操作的组成部分(称为“节点”或“顶点”)、以及组成部分之间的表示数据流的链路。数据流图的节点可以包括表示对应的输入数据集的一个或多个输入节点、表示对应的输出数据集的一个或多个输出节点和表示要对数据执行的数据处理操作的一个或多个节点。在名称为“Executing Computations Expressed as Graphs(执行表达为图形的计算)”的美国专利号5,966,072和名称为“Managing Parameters for Graph-BasedComputations(管理基于图形的计算的参数)”的美国专利7,716,630中描述了用于执行由数据流图编码的计算的技术,这些专利中的每一个通过援引以其全文并入本文。
发明内容
一些实施例涉及一种数据处理系统。该数据处理系统包括至少一个计算机硬件处理器;以及存储处理器可执行指令的至少一种非暂态计算机可读存储介质,这些处理器可执行指令在由该至少一个计算机硬件处理器执行时使该至少一个计算机硬件处理器执行以下操作:(A)获得指定数据流图的信息,该数据流图包括多个节点和连接该多个节点的多个边缘,该多个边缘表示该多个节点中的节点之间的数据流,该多个节点包括:第一组一个或多个节点,该第一组节点中的每个节点表示一组一个或多个输入数据集中的对应的输入数据集;第二组一个或多个节点,该第二组节点中的每个节点表示一组一个或多个输出数据集中的对应的输出数据集;以及第三组一个或多个节点,该第三组节点中的每个节点表示至少一个对应的数据处理操作;(B)获得用于该一组输入数据集的第一组一个或多个处理布局;(C)获得用于该一组输出数据集的第二组一个或多个处理布局;以及(D)基于该第一组处理布局、该第二组处理布局和一个或多个布局确定规则来确定用于该第三组节点中的每个节点的处理布局,该一个或多个布局确定规则包括用于在具有不同并行度的处理布局中进行选择的至少一个规则。
一些实施例涉及存储处理器可执行指令的至少一种非暂态计算机可读存储介质,这些处理器可执行指令在由该至少一个计算机硬件处理器执行时使该至少一个计算机硬件处理器执行以下操作:(A)获得指定数据流图的信息,该数据流图包括多个节点和连接该多个节点的多个边缘,该多个边缘表示该多个节点中的节点之间的数据流,该多个节点包括:第一组一个或多个节点,该第一组节点中的每个节点表示一组一个或多个输入数据集中的对应的输入数据集;第二组一个或多个节点,该第二组节点中的每个节点表示一组一个或多个输出数据集中的对应的输出数据集;以及第三组一个或多个节点,该第三组节点中的每个节点表示至少一个对应的数据处理操作;(B)获得用于该一组输入数据集的第一组一个或多个处理布局;(C)获得用于该一组输出数据集的第二组一个或多个处理布局;以及(D)基于该第一组处理布局、该第二组处理布局和一个或多个布局确定规则来确定用于该第三组节点中的每个节点的处理布局,该一个或多个布局确定规则包括用于在具有不同并行度的处理布局中进行选择的至少一个规则。
一些实施例涉及存储处理器可执行指令的至少一种非暂态计算机可读存储介质,这些处理器可执行指令在由该至少一个计算机硬件处理器执行时,该处理器可执行指令包括:(A)用于获得指定数据流图的信息的装置,该数据流图包括多个节点和连接该多个节点的多个边缘,该多个边缘表示该多个节点中的节点之间的数据流,该多个节点包括:第一组一个或多个节点,该第一组节点中的每个节点表示一组一个或多个输入数据集中的对应的输入数据集;第二组一个或多个节点,该第二组节点中的每个节点表示一组一个或多个输出数据集中的对应的输出数据集;以及第三组一个或多个节点,该第三组节点中的每个节点表示至少一个对应的数据处理操作;(B)用于获得用于该一组输入数据集的第一组一个或多个处理布局的装置;(C)用于获得用于该一组输出数据集的第二组一个或多个处理布局的装置;以及(D)用于基于该第一组处理布局、该第二组处理布局和一个或多个布局确定规则来确定用于该第三组节点中的每个节点的处理布局的装置,该一个或多个布局确定规则包括用于在具有不同并行度的处理布局中进行选择的至少一个规则。
一些实施例涉及一种方法,其包括使用至少一个计算机硬件处理器来执行以下操作:(A)获得指定数据流图的信息,该数据流图包括多个节点和连接该多个节点的多个边缘,该多个边缘表示该多个节点中的节点之间的数据流,该多个节点包括:第一组一个或多个节点,该第一组节点中的每个节点表示一组一个或多个输入数据集中的对应的输入数据集;第二组一个或多个节点,该第二组节点中的每个节点表示一组一个或多个输出数据集中的对应的输出数据集;以及第三组一个或多个节点,该第三组节点中的每个节点表示至少一个对应的数据处理操作;(B)获得用于该一组输入数据集的第一组一个或多个处理布局;(C)获得用于该一组输出数据集的第二组一个或多个处理布局;以及(D)基于该第一组处理布局、该第二组处理布局和一个或多个布局确定规则来确定用于该第三组节点中的每个节点的处理布局,该一个或多个布局确定规则包括用于在具有不同并行度的处理布局中进行选择的至少一个规则。
一些实施例涉及一种数据处理系统。该数据处理系统包括至少一个计算机硬件处理器;以及存储处理器可执行指令的至少一种非暂态计算机可读存储介质,这些处理器可执行指令在由该至少一个计算机硬件处理器执行时使该至少一个计算机硬件处理器执行以下操作:(A)获得指定数据流图的信息,该数据流图包括多个节点和连接该多个节点的多个边缘,该多个边缘表示该多个节点中的节点之间的数据流,该多个节点包括:第一组一个或多个节点;以及第二组一个或多个节点,该第二组一个或多个节点与该第一组节点不相交;(B)获得用于该第一组节点的第一组一个或多个处理布局;以及(C)基于该第一组处理布局和一个或多个布局确定规则来确定用于该第二组节点中的每个节点的处理布局,该一个或多个布局确定规则包括用于在具有不同并行度的处理布局中进行选择的至少一个规则。
一些实施例涉及数据处理系统。该数据处理系统包括:至少一个计算机硬件处理器;以及存储处理器可执行指令的至少一种非暂态计算机可读存储介质,这些处理器可执行指令在由该至少一个计算机硬件处理器执行时使该至少一个计算机硬件处理器执行以下操作:(A)获得计算机代码,该计算机代码在由该至少一个计算机硬件处理器执行时使该至少一个计算机硬件处理器执行数据库查询,其中,该计算机代码包括:第一组一个或多个计算机代码部分,该第一组一个或多个计算机代码部分各自表示用于在对应的输入数据集中进行读取的数据处理操作;第二组一个或多个计算机代码部分,该第二组一个或多个计算机代码部分各自表示用于写出对应的输出数据集的数据处理操作;第三组一个或多个计算机代码部分,该第三组一个或多个计算机代码部分各自表示对应的数据处理操作;(B)获得用于该第一组代码部分中的一个或多个代码部分的第一组一个或多个处理布局;(C)获得用于该第二组代码部分中的一个或多个代码部分的第二组一个或多个处理布局;以及(D)基于该第一组处理布局、该第二组处理布局和一个或多个布局确定规则来确定用于该第三组代码部分中的每个代码部分的处理布局,该一个或多个布局确定规则包括用于在具有不同并行度的处理布局中进行选择的至少一个规则。
前述内容为本发明的非限制性发明内容,其由所附权利要求限定。
附图说明
将参考以下附图描述各个方面和实施例。应当理解,附图不一定按比例绘制。出现在多个附图中的项在其出现的所有附图中由相同或相似的附图标记指示。
图1A是示意性数据流图的图示,其中每个节点都与同一处理布局相关联。
图1B是根据本文描述的技术的一些实施例的具有用于第一组节点中的节点的不同处理布局和没有被确定用于第二组节点中的节点的任何处理布局的示意性数据流图的图示。
图1C是根据本文描述的技术的一些实施例的图1B的示意性数据流图的图示,示出了被确定用于该第二组节点中的节点和与对应的重新分区操作相关联的插入节点的处理布局。
图2是根据本文描述的技术的一些实施例的用于至少部分地通过确定用于数据流图中的节点的处理布局来确定数据流图的处理配置的示意性过程的流程图。
图3A至3D展示了根据本文描述的技术的一些实施例的使用一个或多个处理布局确定规则来确定用于示意性数据流图的节点的处理布局。
图4A至4C展示了根据本文描述的技术的一些实施例的使用一个或多个布局确定规则来确定用于另一个示意性数据流图的节点的处理布局。
图5A至5D展示了根据本文描述的技术的一些实施例的使用一个或多个布局确定规则来确定用于又另一个示意性数据流图的节点的处理布局。
图6是本文描述的技术的一些实施例可以在其中操作的示意性计算环境的框图。
图7是可以用于实施本文描述的技术的一些实施例的示意性计算系统环境的框图。
具体实施方式
本文描述的技术的各方面涉及通过改进用于使用数据流图执行数据处理操作的常规技术来提高数据处理系统的速度和吞吐量。
如上文讨论的,数据流图的节点可以表示对应的数据处理操作,这些数据处理操作可以应用于从一个或多个输入数据集访问的数据。在将数据处理操作应用于数据之前,需要确定用于执行数据处理操作的处理布局。该处理布局可以指定要使用多少计算设备来执行数据处理操作,并且可以标识要使用的特定计算设备。因此,在数据处理系统可以使用数据流图处理系统之前,需要确定用于数据流图中的节点的处理布局。
用于自动确定用于数据流图中的节点的处理布局的一些常规技术涉及向该图中的每个节点分配处理布局,使得全部处理布局具有相同的并行度。例如,图中的每个节点可以分配有N路处理布局,该N路处理布局指定由数据流图的节点表示的数据处理操作中的每一个将使用N个计算设备来执行,其中,N是大于或等于1的整数。尽管不同的数据处理操作可以由不同组的计算设备来执行,但是每个这种组必须具有相同数量的计算设备(即,N个设备)。因此,常规技术不允许数据流图中的一个节点具有N路(N>1)处理布局且另一个节点具有M路(N≠M>1)处理布局。
发明人还认识到,如果可以将具有不同并行度的处理布局分配给数据流图中的不同节点,则数据处理系统可以更快且更高效地处理数据。允许由数据流图表示的不同数据处理操作具有不同的并行度可以显著地提高任何数据处理系统使用数据流图的速度和吞吐量。作为一个示例,考虑使用不同的并行度来存储由数据流图访问的不同数据集的情况。例如,一个输入数据集(“A”)可以是存储于单个位置中的文件,另一个输入数据集(“B”)可以使用分布式文件系统(例如,Hadoop分布式文件系统)跨4个不同位置存储,并且输出数据集(“C”)可以使用分布式数据库系统存储于3个不同位置中。使用串行处理布局从输入数据集A读取数据、使用4路并行处理布局从输入数据集B读取数据并且使用3路并行处理布局向输出数据集C写入数据相比于使用具有相同并行度的处理布局执行所有这些数据处理操作而言可能更高效,因为使用具有与输入和输出数据集的并行度相匹配的并行度的处理布局提高了访问以及随后处理在其中包含的数据的速度。另外,一些数据集可以仅仅使用指定的并行度来访问(例如,从其读取和/或写入其中)。不同数据集可能需要不同的并行度。在不使用本文描述的技术的情况下,不能使用同一数据流图来访问这种数据集。
考虑例如图1A示出的示意性数据流图100,该数据流图包括输入节点102a、102b、102c,表示对应过滤操作的节点104、110和111,表示分类操作的节点106,表示对应联结操作的节点108和112,以及输出节点114a和114b。如图1A所示,在向由输出节点114a表示的输出数据集写入之前,将来自由节点102a表示的输入数据集的数据过滤、分类并与来自由节点102b表示的输入数据集的数据的经过滤版本联结。在向由节点114b表示的输出数据集写入之前,也将来自由节点102b表示的输入数据集的数据过滤并与来自由节点102c表示的输入数据集联结。如图1A所示,应用用于自动确定处理布局的常规技术导致将同一并行处理布局PL1分配给数据流图100的节点中的每一个。另一方面,如图1B中所展示的,如果输入数据集和输出数据集使用不同的并行度来存储,则可能需要将不同的处理布局分配给图100中的不同节点。
本文描述的一些实施例解决了发明人已经通过用于使用数据流图执行数据处理操作的常规技术所认识到的所有上述问题。然而,并非下面描述的每个实施例都解决了这些问题中的每一个问题,并且一些实施例可能没有解决他们中的任何问题。因此,应当理解,本文描述的技术的实施例不限于解决用于使用数据流图执行数据处理操作的常规技术的以上讨论问题中的所有或任何问题。
本文描述的技术的一些实施例涉及用于自动确定用于执行由数据流图中的一个或多个节点表示的数据处理操作的处理布局的技术。与用于使用数据流图执行计算的常规技术不同,被确定用于不同节点的处理布局不需要相同——由图中的不同节点表示的数据处理操作可以使用不同的处理布局来执行,并且尤其使用具有不同并行度的处理布局来执行。
如本文所使用的,数据流图中的节点的处理布局是指用于执行由节点表示的数据处理操作的处理布局。例如,数据流图中的输入节点的处理布局是指用于从由输入节点表示的输入数据集读取数据的处理布局。作为另一个示例,数据流图中的输出节点的处理布局是指用于将数据写入由输出节点表示的输出数据集的处理布局。作为又另一个示例,表示数据处理操作(例如,过滤操作、联结操作、汇总操作等)的节点的处理布局是指用于执行数据处理操作的处理布局。
在一些实施例中,表示数据处理操作的节点的处理布局可以指示要用于执行操作的并行度,并且可以指定要用于根据该并行度执行操作的(多个)计算设备。例如,节点的处理布局可以是具有单一并行度的串行处理布局(即,串行处理而非并行处理),并且可以指定用于执行由节点表示的数据处理操作的计算设备(例如,处理器、服务器、膝上型计算机等)。作为另一个示例,节点的处理布局可以是具有N个并行度的N路(其中,N≥1(大于1))并行处理布局并且可以指定用于执行由节点表示的数据处理操作的N个计算设备。在一些实施例中,节点的处理布局可以指定一个或多个计算设备和/或在用于执行由节点表示的数据处理操作的(多个)计算设备上执行的一个或多个进程。
在一些实施例中,确定用于数据流图中的节点的处理布局可以包括:(A)获得指定数据流图的信息;(B)获得用于数据流图中的输入节点的处理布局;(C)获得用于数据流图中的输出节点的处理布局;以及(D)基于输入节点的处理布局、输出节点的处理布局和一个或多个布局确定规则确定用于一个或多个其他节点(即,并非输入节点或输出节点的节点)的处理布局。除了输入节点和输出节点之外的数据流图节点在本文可以称为“中间”节点。本文包括参考图2描述了布局确定规则的示例。
在一些实施例中,获得的数据流图的输入节点和输出节点的处理布局中的至少两个可以具有不同的并行度。例如,获得的两个不同输入节点的处理布局可以具有不同的并行度。作为另一个示例,获得的两个不同输出节点的处理布局可以具有不同的并行度。作为又另一个示例,针对输入节点获得的处理布局可以具有与针对输出节点获得的处理布局不同的并行度。尽管如此,本文描述的技术还可以用于自动确定用于图中的节点的处理布局,其中,获得的输入节点和输出节点的处理布局中的至少两个具有不同的并行度。作为一个说明性示例,本文描述的技术可以应用于确定图1B中示出的数据流图100的处理布局。数据流图100的输入节点和输出节点与三个不同处理布局(即,串行布局SL1、并行布局PL1和并行布局PL2)相关联,并且这些处理布局连同本文描述的布局确定规则可以用于自动确定如图1C中示出的节点104、106、108、110、111和112的处理布局。
在一些实施例中,数据流图中的一个或多个中间节点的处理布局可以由以下操作确定:(1)执行前向传递(从(多个)输入节点朝向(多个)输出节点),以确定中间节点中的至少一些(例如,全部)的初始处理布局;并且随后(2)执行后向传递(从(多个)输出节点朝向(多个)输入节点),以确定用于中间节点的最终处理布局。在前向传递期间,可以基于分配给输入节点的处理布局和本文描述的一个或多个布局确定规则来确定初始处理布局。例如,可以基于分配给节点102a、102b和102c的处理布局确定用于节点104、106、108、110、111和112的初始处理布局。在后向传递期间,可以基于分配给(多个)输出节点的处理布局、分配给中间节点中的至少一些的初始处理布局、和一个或多个布局确定规则来确定用于中间节点的最终处理布局。例如,可以基于在前向传递期间被确定用于这些节点的初始处理布局、分配给输出节点114a和114b的处理布局和一个或多个布局确定规则来确定用于节点104、106、108、110、111和112的最终处理布局。
在一些实施例中,在已经确定了用于数据流图中的节点的处理布局之后(例如,在执行前向传递和后向传递之后),数据流图可以被配置成在使用具有不同并行度的处理布局进行处理之后,对要使用具有特定并行度的处理布局进行处理的任何数据执行重新分区操作。在一些实施例中,数据流图可以被配置成对具有并行度不同的处理布局的图中的相邻节点之间流动的数据执行重新分区操作。以此方式,已经使用一个处理布局(使用N个计算设备,其中,N≥1)处理的数据可以适用于使用另一个处理布局(使用M≠N个计算设备,其中,M≥1)进行随后处理。
例如,如图1C中展示的,相邻节点102a和104具有并行度不同的处理布局,因为布局中的一个是串行的(处理是使用一个计算设备执行的)并且另一个是并行的(处理是使用多个计算设备执行的)。在此示例中,数据流图可以被配置成将从节点102a流向节点104的数据进行分区,使得在使用单一计算设备根据被确定用于节点102a的处理布局(SL1)进行处理之后,可以使用多个计算设备根据被确定用于节点104的处理布局(PL1)对该数据进行处理。为此,数据流图可以被配置成执行增加并行度的重新分区操作(例如,通过键分区操作)。而且,在同一示例中,相邻节点102b和111具有不同处理布局并且相邻节点112和114具有不同处理布局,并且数据流图100可以被配置成对从节点102流向节点111的数据执行重新分区操作并对从节点112流向节点114的数据执行重新分区操作(例如,收集操作)。
在一些实施例中,数据流图可以被配置成通过增强具有表示重新分区操作的节点的图来执行重新分区操作(当图被执行时)。当图被执行时,可以执行被配置成执行重新分区操作的软件。例如,如图1C中示出的,可以用节点130、132和134扩增数据流图,节点中的每一个与对应的重新分区操作相关联。在其他实施例中,数据流图中的一个或多个现有节点可以被配置成执行重新分区操作并且不增加新的节点。
在一些实施例中,当数据流图中的节点(节点“A”)与具有比图中的下一个相邻节点(节点“B”)的并行度更高的并行度的处理布局相关联时,数据流图可以被配置成在根据由节点“A”表示的数据处理操作对数据进行处理之后并且在根据由节点“B”表示的数据处理操作对数据进行处理之前对数据执行重新分区操作。在这种情况下,重新分区操作可以减少并行度并且例如可以是收集操作1或合并操作。2例如,如图1C中示出的,节点112的并行处理布局(PL2)具有比下一个相邻节点114b的串行处理布局(SL1)的并行度更高的并行度。在此示例中,已经将与收集操作相关联的节点134添加在节点112与114b之间。
在一些实施例中,当数据流图中的节点(节点“A”)与具有比图中的下一个相邻节点(节点“B”)的并行度更低的并行度的处理布局相关联时,数据流图可以被配置成在根据由节点“A”表示的数据处理操作对其进行处理之后并且在根据由节点“B”表示的数据处理操作对其进行处理之前对数据执行重新分区操作。在这种情况下,重新分区操作可以增加并行度并且例如可以是通过键分区操作3、循环分区操作、通过范围分区操作4、或任何其他适合类型的分区操作。例如,如图1C中示出的,节点102a的串行处理布局(SL1)的并行度比下一个相邻节点114b的并行处理布局(PL1)的并行度更低。类似地,在此示例中,节点102b的并行处理布局(PL1)的并行度比节点111的并行处理布局(PL2)的并行度更低。在此示例中,已经将表示通过键分区操作的节点130添加在节点102a与104之间,并且表示循环分区操作的节点132之后是实现并行度的期望减少的收集操作。
在一些实施例中,当数据流图中的节点(节点“A”)与具有与图中下一个相邻节点(节点“B”)的并行度相同的并行度的处理布局相关联时,不需要重新分区操作。
尽管在一些实施例中,可以基于分配给图的输入节点和输出节点的处理布局确定用于数据流图的中间节点的处理布局,但是本文描述的技术不限于根据输入
节点和输出节点的布局确定中间节点的布局。在一些实施例中,例如,可以获得数据流图的一个或多个节点的任何子集的处理布局并且可以基于这些获得的处理布局、数据流图的结构和一个或多个布局确定规则来确定用于数据流图中的(多个)任何其他节点的处理布局。
本文描述的技术的一些实施例可以应用于由数据处理系统管理数据库查询,如结构化查询语言(SQL)查询。在一些实施例中,数据处理系统可以:(1)接收数据库查询(例如,SQL查询);(2)生成用于执行SQL查询的查询计划(例如,指示在数据库查询被执行时可以执行的数据库操作的计划);(3)根据查询计划生成数据流图;并且(4)至少部分地通过执行数据流图来执行接收到的数据库查询。在以下专利中更详细地描述了这种实施例:于2015年8月25日发布的名称为“MANAGING DATA QUERIES(管理数据查询)”的美国专利号9,116,955,该美国专利通过援引以其全文并入本文。根据名称为“MANAGING DATA QUERIES(管理数据查询)”并于2011年5月2日提交的美国专利申请序列号13/098,823发展的美国专利号9,116,955,该美国专利通过援引以其全文并入本文。
在一些实施例中,本文描述的技术可以用于自动确定用于从数据库查询(例如,SQL查询)中自动生成的数据流图中的一个或多个节点的处理布局。
在一些实施例中,数据处理系统可以:(1)接收数据库查询(例如,SQL查询);(2)将接收到的数据库查询转换为计算机代码,该计算机代码包括在执行时执行数据库查询的计算机代码部分;并且(3)自动确定用于执行计算机代码部分中的每一部分的处理布局。在一些实施例中,可以使用指示执行计算机代码部分的顺序的信息来确定用于执行计算机代码部分的处理布局。例如,在一些实施例中,计算机代码部分中的每一部分可以与数据流图中的对应的节点相关联,并且图的结构(例如,如体现在节点之间的连接中)可以用于将处理布局分配给节点,并且通过关联分配给与节点相关联的计算机代码部分。然而,应当理解,在一些实施例中,可以不使用数据流图来确定用于执行计算机代码部分的处理布局,因为指示执行计算机代码部分的顺序的信息不限于编码在数据流图中。
应当理解,本文描述的实施例可能以多种方式中的任何方式来实施。以下仅出于说明性目的提供了具体实施方式的示例。应当理解,这些实施例和所提供的特征/能力可以单独使用、一起使用、或者以两个或更多个的任何组合使用,因为本文描述的技术的方面在这方面不受限制。
图2是根据本文描述的技术的一些实施例的用于至少部分地通过将处理布局分配给数据流图中的节点来确定数据流图的处理配置的示意性过程200的流程图。过程200可以由任何合适的系统和/或计算设备执行,并且例如,可以由本文描述的包括参考图6的数据处理系统602执行。在描述了过程200之后,参考图3A至3D、图4A至4C和图5A至5D中示出的示例展示了过程200的一些方面。尽管在描述了过程200之后详细地描述了图3A至3D的示例,但是为了清晰地说明,还在对过程200的整个描述中参考了此示例。
过程200开始于动作202,其中,可以访问指定数据流图的信息。如本文所描述的,数据流图可以包括多个节点,这些节点包括:(a)表示一个或多个对应的输入数据集的一个或多个输入节点;(b)表示一个或多个对应的输出数据集的一个或多个输出节点;和/或(c)表示可以对数据执行的数据处理操作的一个或多个节点。数据流图中的节点之间的定向链路或边缘表示节点之间的数据流。因此,在动作202处,可以访问指定数据流图的节点(包括上文描述的节点类型的任何类型)和链路的信息。此信息可以从任何合适的来源、(多个)任何合适的数据结构中访问,并且可以是任何合适的格式,因为本文描述的技术的方面在这方面不受限制。例如,参考图3A至3D中展示的示例,在动作202处,可以访问指定数据流图300的信息。在以下更详细描述的一些实施例中,可能已经自动生成并且例如可能已经根据结构化查询语言(SQL)查询自动生成在动作202处访问关于其的信息的数据流图。
接下来,在动作204处,可以获得在动作202处访问的数据流图的每个输入节点(即,表示输入数据集的每个节点)的处理布局。例如,参考图3A至3D的示例,在动作204处,可以获得用于输入节点302和304的处理布局。在一些实施例中,输入节点的处理布局指定用于从由输入节点表示的输入数据集中读取数据的并行度(例如,串行、2路并行、3路并行、…、对于任何合适的整数N的N路并行)。在一些实施例中,输入节点的处理布局标识用于从输入数据集中读取数据的一组一个或多个计算设备(例如,一组一个或多个处理器、服务器、和/或任何其他合适的设备)。
输入节点的处理布局可以以任何合适的方式获得。在一些实施例中,可以在开始执行过程200之前确定用于输入节点的处理布局,并且在动作204期间,可以访问先前确定的处理布局。在其他实施例中,可以在执行过程200期间动态地确定用于输入节点的处理布局。在一些实施例中,可以在开始执行过程200之前部分地确定用于输入的处理布局,其中,未知信息在执行过程200期间动态地确定。例如,在执行过程200之前,可能已知的是,输入节点的处理布局是串行的或并行的,但用于执行输入操作(例如,从一个或多个来源中读取数据)的(多个)特定计算设备可以在执行过程200期间确定。作为另一个示例,可能已知的是,在执行过程200前,要将并行处理布局分配给输入节点,但并行度可以在运行期间确定。
不论输入节点的处理布局是在执行过程200之前还是期间确定,该确定都可以以任何合适的方式进行。例如,在一些实施例中,输入节点的处理布局可以由用户通过用户接口(例如,图形用户接口、配置文件等)手动地指定。作为另一个示例,在一些实施例中,输入节点的处理布局可以由数据处理系统自动确定。例如,数据处理系统可以基于由输入节点表示的输入数据集是如何存储的来自动确定用于输入节点的处理布局。例如,当输入数据集跨多个设备(例如,使用Hadoop集群的4个服务器等)存储时,执行过程200的数据处理系统可以确定并行处理布局(例如,四路并行处理布局、Hadoop集群中节点的数量)将用于从输入数据集中读取数据记录。
接下来,在动作206处,可以获得在动作202处访问的数据流图的每个输出节点(即,表示输出数据集的每个节点)的处理布局。例如,参考图3A至3D的示例,在动作206处,可以获得用于输出节点314的处理布局。在一些实施例中,输出节点的处理布局指定用于将数据写入由输出节点表示的输出数据集的并行度(例如,串行、2路并行、3路并行、…、对于任何合适的整数N的N路并行)。在一些实施例中,输出节点的处理布局标识用于将数据写入输出数据集的一组一个或多个计算设备(例如,一组一个或多个处理器、服务器、和/或任何其他合适的设备)。
输出节点的处理布局可以以任何合适的方式获得。在一些实施例中,可以在开始执行过程200之前确定用于输出节点的处理布局,并且在动作206期间,可以访问先前确定的处理布局。在其他实施例中,可以在执行过程200期间动态地确定用于输出节点的处理布局。在一些实施例中,可以在开始执行过程200之前部分地确定用于输出节点的处理布局,其中,未知信息在执行过程200期间动态地确定。例如,在执行过程200之前,可能已知的是,输出节点的处理布局是串行的或并行的,但用于执行输出操作(例如,将数据写入一个或多个输出数据集)的(多个)特定计算设备可以在执行过程200期间确定。作为另一个示例,可能已知的是,在执行过程200前,要将并行处理布局分配给输出节点,但并行度可以在运行期间确定。
不论输出节点的处理布局是在执行过程200之前还是期间确定,该确定可以以任何合适的方式进行,包括以上文描述的用于确定用于输入节点的处理布局的方式中的任何方式。例如,输出节点的处理布局可以由用户通过用户接口手动地指定,或可以由数据处理系统(例如,基于由输出节点表示的输出数据集是如何存储的)自动确定。
接下来,过程200前进到动作208,其中,确定数据流图中除了输入节点和输出节点之外的节点的处理布局,已经在动作204和动作206处获得了这些输入节点和输出节点的处理布局。在一些实施例中,中间节点的处理布局指定用于执行由中间节点表示的数据处理操作的并行度(例如,串行、2路并行、3路并行、…、对于任何合适的整数N的N路并行)。在一些实施例中,中间节点的处理布局标识用于执行数据处理操作的一组一个或多个计算设备(例如,一组一个或多个处理器、服务器、和/或任何其他合适的设备)。
在一些实施例中,可以至少部分地通过使用用于输入节点和输出节点的处理布局(在动作204和动作206处获得)来确定用于中间节点的处理布局。例如,参考图3A至3D的示例,在动作208处,可以使用输入节点302和304以及输出节点314的处理布局来确定用于中间节点306、308、310、和312的处理布局。在一些实施例中,可以进一步基于数据流图的结构和一个或多个布局确定规则来确定用于中间节点的处理布局。
在一些实施例中,布局确定规则可以指定如何基于数据流图中的一个或多个其他节点的处理布局来确定数据流图中的节点的处理布局。例如,在一些实施例中,布局确定规则可以指定如何基于与图中的特定节点相邻的一个或多个其他节点的(多个)处理布局来确定该特定节点的处理布局,该特定节点不与任何处理布局相关联。作为一个说明性示例,参考图3A的示例,布局处理规则可以指定如何基于输入节点302的处理布局确定中间节点306的处理布局。作为另一个说明性示例,如果确定了用于节点308和310的处理布局,则布局处理规则可以指定如何基于被确定用于节点308和310的处理布局来确定用于节点312的处理布局。
作为另一个示例,在一些实施例中,布局确定规则可以指定如何基于特定处理布局和与图中的特定节点相邻的一个或多个其他节点的处理布局来确定该特定节点的处理布局,该特定节点已经与特定处理布局相关联。作为一个说明性示例,参考图3C的示例,可以基于被确定用于节点312的初始处理布局(布局PL1)以及基于被确定用于输出节点314的处理布局(布局SL2)确定用于节点312的处理布局。
下文描述了特定布局确定规则的非限制说明性示例。应当理解,在一些实施例中,除了或代替本文描述的示例布局确定规则,可以使用一个或多个其他布局确定规则。还应理解,本文描述的示例布局规则中的一个或多个的任何合适的组合可以用于一些实施例中。本文描述的布局确定规则可以以任何合适的方式实施(例如,使用软件代码、一个或多个配置参数等),因为本文描述的技术的方面在这方面不受限制。
在一些实施例中,根据一个示例布局确定规则,当确定尚未与处理布局相关联的特定节点的处理布局时,如果特定节点具有拥有相关联的处理布局的邻居(例如,数据流图中紧接在特定节点之前的节点,或数据流图中紧接在特定节点之后的节点),则可以将相邻节点的布局确定为特定节点的处理布局。以此方式,可以将相邻节点的处理布局“复制”到特定节点。作为一个说明性示例,在图3A的示例中,可以将节点306的处理布局确定为其前一个相邻节点302的处理布局。进而,可以将节点308的处理布局确定为其前一个节点306的处理布局。通过此示例可以理解的是,此布局确定规则可以重复地应用,以将输入节点(例如,节点302)的布局传播到一个或多个其他节点(例如,节点306、308、和312)。
在一些实施例中,根据另一个示例布局确定规则,当确定尚未与特定处理布局相关联的特定节点的处理布局时,如果特定节点具有多个拥有相关联的处理布局的邻居(例如,多个前面的邻居或多个后面的邻居),则可以从其邻居的布局中选择特定节点的处理布局。例如,对于图3A的数据流图,假设确定了节点308和310的布局,但节点312的布局尚未确定,则可以选择节点312的布局作为被确定用于节点308和310的布局之一。
在一些实施例中,根据另一个示例布局确定规则,当确定已经与特定处理布局相关联的特定节点的处理布局时,如果特定节点具有与对应的处理布局相关联的一个或多个邻居,则可以通过从已经与节点相关联的特定处理布局和其邻居的处理布局当中选择来确定特定节点的布局。例如,如图3C中示出的,节点312与初始处理布局(PL1)相关联并且具有与另一个处理布局(SL2)相关联的相邻节点314。在此示例中,可以选择这两个布局(即,PL1和SL2)之一作为节点312的已更新(例如,最终的)处理布局。
如从以上内容可以理解的,在一些实施例中,应用某些布局确定规则涉及从两个或更多个处理布局中选择处理布局。这可以以各种方式中的任何方式来完成。例如,在一些实施例中,当从一组两个或更多个处理布局中选择节点的处理布局时,可以选择具有最大并行度的处理布局。例如,当选择节点的处理布局作为N路并行处理布局(例如,10路并行布局)或M路(M<N)并行处理布局(例如,5路并行布局)时,可以选择N路并行处理布局。作为另一个示例,当从并行处理布局和串行处理布局中选择节点的处理布局时,可以选择并行处理布局。作为一个说明性示例,参考图3B,可以向节点312分配初始串行处理布局(SL1)(例如,作为从输入节点302传播该布局的结果),并且可以向节点310分配并行布局PL1(例如,作为从输入节点304传播该布局的结果)。然后,可以将节点312的处理布局更新为并行布局PL1,因为,当在PL1与SL1之间时,布局PL1显然具有更大的并行度。
作为另一个示例,在一些实施例中,当从具有相同并行度的处理布局中选择节点的处理布局时,可以选择用于处理更大数量的记录的处理布局。例如,当从分配给节点的第一先前邻居并且用于处理1千万个数据记录的4路布局PL1和分配给节点的第二先前邻居并且用于处理1万个数据记录的4路布局PL2中选择数据流图中的节点的处理布局时,可以选择节点的布局PL1。以此方式,可以使用与用于处理1千万个数据记录的布局相同的处理布局(例如,相同的计算设备)执行与节点相关联的数据处理操作(例如,联结操作)。因此,当使用非重叠组计算设备实施布局PL1和PL2时,需要将最多1万个数据记录移至用于处理1千万个数据记录的计算设备。另一方面,如果选择了布局PL2,则可能需要将全部1千万个数据记录移至用于仅仅处理1万个数据记录的计算设备,这显然效率低。因此,选择用于处理更大数量的记录的布局可以用于提高数据处理系统的性能。下文参考图4A至4C进一步描述此示例。
在一些实施例中,根据另一个示例布局确定规则,在确定了数据流图的输入节点和输出节点的处理布局之后,这些处理布局随后不会改变。在利用此规则的实施例中,在动作204和动作206处获得用于输入节点和输出节点的处理布局之后,这些处理布局随后不会改变。
在一些实施例中,根据另一个示例布局确定规则,可以将串行处理布局分配给表示限制操作的节点,该限制操作是当应用于一组数据记录时输出固定数量的数据记录的操作(例如,在已经基于其对应的得分对数据记录进行分类之后输出得分为前十的数据记录)。
在一些实施例中,数据流图中的一个或多个内部节点可以与预定的处理布局相关联。在一些实施例中,特定类型的节点可以与预定的处理布局相关联。
在一些实施例中,根据另一个示例布局确定规则,在将处理布局分配给数据流图中的特定节点时,可以提供指示(例如,由用户通过如图形用户接口或配置文件等用户接口)以不将分配给特定节点的处理布局传播到任何其他节点。例如,在一些实施例中,可以提供用于不传播分配给一个或多个输入节点和/或一个或多个输出节点的处理布局的指示作为在动作204和/或动作206处获得输入和/或输出处理布局的一部分。
下文参考图5A至5D进一步描述此示例。
上文描述的布局确定规则中的任何布局确定规则可以用于在过程200的动作208处确定用于中间节点的处理布局。尽管上文描述的布局确定规则中的一些是“局部”的,因为其指定如何基于已经分配给其邻居的布局来确定特定节点的处理布局,但是在一些实施例中,这些布局确定规则中的一个或多个可以被重复应用,以便将获得的用于输入处理节点和输出处理节点的处理布局传播到中间节点。此传播可以以任何合适的方式完成。
在一些实施例中,中间节点的处理布局可以在动作208处通过以下操作确定:(1)在动作208a处执行前向传递,以确定中间节点中的至少一些(例如,全部)的初始处理布局;以及(2)在动作208b处执行后向传递,以确定中间节点中的至少一些(例如,全部)的最终处理布局。
在前向传递期间,可以使用本文描述的布局确定规则中的一个或多个将获得的用于(多个)输入节点的处理布局传播到数据流图中的中间节点。数据流图的结构可以引导在前向传递期间确定用于节点的处理布局的顺序。例如,可以首先确定用于输入节点的邻居的处理布局,然后可以确定用于输入节点的邻居的邻居的处理布局等等…直到来自输入节点的所有流在输出节点处遍历到其末端。作为一个说明性示例,参考图3B,可以在前向传递期间使用一个或多个布局确定规则来传播用于输入节点302和304的处理布局,以获得用于节点306、308、310和312的初始处理布局。
在后向传递期间,可以使用本文描述的布局确定规则中的一个或多个将获得的用于(多个)输出节点的处理布局传播到数据流图中的中间节点。如前向传递的情况一样,数据流图的结构可以引导在后向传递期间确定用于节点的处理布局的顺序。例如,可以首先确定用于输出节点的邻居的处理布局,然后可以确定用于输出节点的邻居的邻居的处理布局等等…直到来自输出节点的所有边缘在输出节点处遍历到其末端。后向传递期间遵循的路径可以与前向传递中遵循的路径相反。作为一个说明性示例,参考图3C,可以在后向传递期间使用用于输出节点314的处理布局和用于节点306、308、310和312的初始处理布局连同一个或多个布局确定规则来获得用于节点306、308、310和312的最终处理布局。下文参考图3A至3D对此进行了更加详细地讨论。
在动作208处已经确定了用于中间节点的处理布局之后,过程200前进到决策框210,在该决策框中,判定数据流图中的任何相邻节点是否具有不匹配的布局。当被确定用于节点A的处理布局与被确定用于节点B的处理布局具有不同的并行度时,相邻节点“A”和“B”具有不匹配的布局。例如,当确定了节点A的N路(N>1)并行处理布局并且确定了随后的节点B的串行处理布局时,节点具有不匹配的布局(存在N到1转变)。作为另一个示例,当确定了节点A的串行处理布局并且确定了随后的节点B的M路(M>1)并行处理布局时,节点具有不匹配的布局(存在1到M转变)。作为另一个示例,当确定了节点A的N路并行处理布局并且确定了相邻节点B的M路并行处理布局时(M≠N),节点具有不匹配的布局(存在N到M转变)。
当在决策框210处确定存在一对具有不同并行度的处理布局的相邻节点时,过程200前进到动作212,在动作212处,数据流图可以被配置成执行一个或多个重新分区操作。(多个)重新分区操作允许使用一个处理布局使用一个数量的处理器处理的数据记录转变为使用另一个处理布局使用不同数量的处理器进行处理。重新分区操作的示例在本文进行了描述并且包括例如用于增加数据处理中的并行度的重新分区操作(例如,通过键分区操作、循环分区操作、通过范围分区操作、和/或任何其他适合类型的分区操作)和用于减少数据处理中的并行度的重新分区操作(例如,合并操作和收集操作)。例如,当在相邻节点A与B之间存在N到1转变时,数据流图可以被配置成执行用于减少根据由节点A表示的操作并且在根据由节点B表示的操作处理数据之前处理的该数据的并行度(从N到1)的重新分区操作。作为另一个示例,当在相邻节点A与B之间存在1到M转变时,数据流图可以被配置成执行用于增加根据由节点A表示的操作并且在根据由节点B表示的操作处理数据之前处理的该数据的并行度(从1到M)的重新分区操作。作为又另一个示例,当在相邻节点A与B之间存在N到M转变时,数据流图可以被配置成执行多个重新分区操作,以便改变根据由节点A表示的操作并且在通过由节点B表示的操作处理数据之前处理的该数据上的并行度(从N到M)。多个重新分区操作可以包括用于减少并行度(例如,从N到K)的第一重新分区操作和用于增加并行度(例如,从K到M,其中,K是N和M的公约数)的第二重新分区操作。
在一些实施例中,数据流图可以被配置成通过增加表示重新分区操作的新节点来执行重新分区操作。图3D、图4C和图5D中示出了此示例,下文对这些示例进行了描述。在这种实施例中,可以确定用于表示重新分区操作的节点的处理布局。当重新分区操作增加了并行度(例如,通过键分区操作)时,分配给表示重新分区操作的节点的处理布局可以是分配给前一节点的处理布局。当重新分区操作减少了并行度(例如,合并操作或收集操作)时,分配给表示重新分区操作的节点的处理布局可以是分配给图中的后一节点的处理布局。在其他实施例中,数据流图中的现有节点可以被配置成执行重新分区操作。
在一些实施例中,执行过程200的数据处理系统可以被编程为将数据流图配置成在某些情况下执行某些类型的重新分区操作。例如,在一些实施例中,当数据流图被配置成执行用于减少并行度的重新分区操作并且对数据进行分类时,如果要通过重新分区保持对数据的分类,则数据流图可以被配置成执行用于减少并行度的合并操作。否则,可以使用收集操作来减少并行度。作为另一个示例,在一些实施例中,当数据流图被配置成执行用于增加并行度的重新分区操作时,当期望数据的某些分区时,数据流图可以被配置成执行针对一个或多个特定键的通过键分区操作。否则,可以使用循环分区操作或另一种类型的分区操作。作为另一个示例,在一些实施例中,如果尚未在汇总键的子集上对数据进行分区,则将汇总操作应用于并行数据可能需要重新分区。在这种情况下,当估计汇总显著减少了数据量(例如,至少10倍)时,则可以执行双泡汇总(double-bubble rollup)(即,首先在源布局和分区方案中的汇总、然后分区、之后在目的地布局和分区方案中的第二汇总)。
另一方面,当在决策框210处确定不存在具有并行度不同的处理布局的相邻节点或对于具有并行度不同的布局的任何相邻节点已经向数据流图添加了适当的重新分区逻辑时,过程200完成。
在一些实施例中,在已经使用过程200分配处理布局之后,可以根据分配的布局执行数据流图。以此方式,根据分配给该数据处理操作的处理布局执行数据流图中的一个或多个数据处理操作中的每一个。
在一些实施例中,可以将过程200应用于自动生成的数据流图。例如,在一些实施例中,可以将过程200应用于根据SQL查询、根据指定由另一个数据库系统提供的查询的信息、和/或根据另一个数据流图自动生成的数据流图。
在一些实施例中,可以通过以下操作根据SQL查询生成数据流图:(1)接收SQL查询;(2)根据接收到的SQL查询生成查询计划;以及(3)根据查询计划生成数据流图。进而,可以将过程200应用于如此生成的数据流图。下文更详细地描述了(自动生成可以应用过程200的数据流图的)这三个动作中的每一个。
在一些实施例中,可以由数据处理系统(例如,执行过程200的数据处理系统,如例如,数据处理系统602)接收SQL查询作为用户提供SQL查询作为到数据处理系统的输入的结果。用户可以通过图形用户接口或任何其他合适类型的接口输入SQL查询。在其他实施例中,可以由另一个计算机程序向数据处理系统提供SQL查询。例如,可以由被配置成使数据处理系统执行一个或多个SQL查询的计算机程序提供SQL查询,该一个或多个SQL查询中的每一个可能已经由用户指定或自动生成。SQL查询可以具有任何合适的类型并且可以以任何合适的格式提供,因为本文描述的技术的方面在这方面不受限制。
在一些实施例中,接收到的SQL查询可以用于生成查询计划。如果执行了SQL查询,则已生成查询计划可以标识要执行的一个或多个数据处理操作。已生成查询计划可以进一步指定要执行已标识数据处理操作的顺序。如此,已生成查询计划可以表示用于执行以便执行接收到的SQL查询的数据处理操作的序列。可以使用任何合适类型的查询计划生成器来生成已生成查询计划。在名称为“Managing Data Queries(管理数据查询)”的美国专利号9,116,955中描述了用于生成查询计划的一些说明性技术,该美国专利通过援引以其全文并入本文。
进而,在一些实施例中,可以根据查询计划生成数据流图,该查询计划自身使用接收到的SQL查询生成。在一些实施例中,可以至少部分地通过生成用于包括在查询计划中标识的数据处理操作的至少一个子集(例如,一些或全部)中的每一个的节点的数据流图根据查询计划生成数据流图。在一些实施例中,查询计划中的单一节点可以导致将多个节点包含在数据流图中。随后,在查询计划中指定的数据处理操作的顺序可以用于生成连接数据流图中的节点的链路。例如,当已生成查询计划指示在第二数据处理操作之前执行了第一数据处理操作时,已生成数据流图可以具有第一节点(表示第一数据处理操作)和第二节点(表示第二数据处理操作)以及指定从第一节点至第二节点的路径的一个或多个链路。
在一些实施例中,根据查询计划生成数据流图包括向表示输入和/或输出数据源的图添加一个或多个节点。例如,生成数据流图可以包括对要在执行SQL查询期间从中读取数据记录的数据源中的每一个添加输入节点。输入节点中的每一个可以配置有与对应的数据源相关联的参数值。这些值可以指示如何访问数据源中的数据记录。作为另一个示例,生成数据流图可以包括对在执行SQL查询期间要写入数据记录的数据宿中的每一个添加输出节点。输出节点中的每一个可以配置有与对应的数据宿相关联的参数值。这些值可以指示如何将数据记录写入数据源。
应当理解,根据查询计划生成的数据流图与查询计划本身不同。可以通过使用图执行环境(例如,协同操作系统610或用于执行数据流图的其他合适的执行环境)来执行数据流图,然而,无法由图执行引擎执行查询计划——该图执行引擎是用于生成数据流图的中间表示,由图执行引擎执行该数据流图以执行SQL查询。查询计划是不可执行的并且,即使在关系数据库管理系统的上下文中,需要进一步处理查询计划,以生成执行策略。相比而言,数据流图可由图执行引擎执行,以执行SQL查询。另外,即使在由关系数据库系统进一步处理之后,所产生的执行策略不允许从其他类型的数据源中读取数据和/或向其他类型的数据宿写入数据,然而数据流图在这方面不受限制。
在一些实施例中,根据查询计划生成的数据流图可以包含表示数据处理操作的节点,该数据处理操作不在查询计划内。相反地,在一些实施例中,根据查询计划生成的数据流图可能不包含表示数据处理操作的节点,该数据处理操作在查询计划内。由于在根据查询计划生成数据流图的过程期间可以执行的各种优化,可能出现这种情况。在一些实施例中,数据流图可以包含表示除了在数据库计算机系统(例如,关系数据库管理系统)上执行的数据库操作之外的数据处理操作的节点。
在一些实施例中,查询计划和数据流图可以体现在不同类型的数据结构中。例如,在一些实施例中,查询计划可以体现在其中每个节点具有单一父节点的有向图中(例如,树,如例如二叉树),然而,数据流图可以体现在有向无环图中,该有向无环图可以具有至少一个拥有多个父节点的节点。
应当理解,过程200是说明性的,并且存在变化。例如,尽管在图2展示的实施例中,使用前向传递之后使用后向传递确定用于中间节点的处理布局,但在其他实施例中,可以替代地通过使用后向传递之后使用前向传递来确定处理布局。作为另一个示例,尽管在所展示的实施例中,用于中间节点的处理布局是基于分配给输入节点和输出节点的布局确定的,但可以更普遍地应用本文描述的处理布局确定技术。例如,可以基于以下各项获得数据流图中的一组一个或多个节点的处理布局并且可以获得数据流图中的其他节点的处理布局:(1)获得的用于该组节点的处理布局;(2)数据流图的链路结构;以及(3)一个或多个布局确定规则。尽管,该组节点可以包括输入节点和输出节点,但不需要。因此,该组节点可以包括任何合适数量(例如,零个、至少一个、全部)的输入节点、任何合适数量(例如,零个、至少一个、全部)的输出节点、和任何合适数量(例如,零个、至少一个、全部)的其他节点。唯一的要求是该组节点不为空。
在一些实施例中,数据处理系统可以:(1)接收数据库查询(例如,SQL查询);(2)将接收到的数据库查询转换为计算机代码,该计算机代码包括在由数据处理系统执行时执行接收到的数据库查询的计算机代码部分;并且(3)自动确定用于执行计算机代码部分中的每一部分的处理布局。在一些实施例中,可以使用指示执行计算机代码部分的顺序的信息来确定用于执行计算机代码部分的处理布局。例如,在一些实施例中,计算机代码部分中的每一部分可以与数据流图中的对应的节点相关联,并且图的结构(例如,如体现在节点之间的连接中)连同本文描述的布局确定规则可以用于将处理布局分配给节点,并且通过关联分配给与节点相关联的计算机代码部分。然而,应当理解,在一些实施例中,可以不使用数据流图来确定用于执行计算机代码部分的处理布局,因为指示执行计算机代码部分的顺序的信息不限于编码在数据流图中并且可以以任何其他合适的方式(例如,另一种类型的一个或多个数据结构)编码,因为本文描述的技术的方面在这方面不受限制。
因此,在一些实施例中,数据处理系统可以获得(例如,从远程源中和/或通过网络连接接收、从本地存储访问等)计算机代码,该计算机代码在由数据处理系统执行时使数据处理执行数据库查询,其中,计算机代码包括:(A)第一组一个或多个计算机代码部分,该第一组一个或多个计算机代码部分各自表示用于在对应的输入数据集中进行读取的数据处理操作;(B)第二组一个或多个计算机代码部分,该第二组一个或多个计算机代码部分各自表示用于写出对应的输出数据集的数据处理操作;以及(C)第三组一个或多个计算机代码部分,该第三组一个或多个计算机代码部分各自表示对应的数据处理操作。接下来,数据处理系统可以确定用于执行计算机代码的计算机代码部分中的每一部分的处理布局。例如,在一些实施例中,该数据处理系统可以:(A)获得(例如,接收、访问等)用于该第一组代码部分中的一个或多个代码部分的第一组一个或多个处理布局;(B)获得用于该第二组代码部分中的一个或多个代码部分的第二组一个或多个处理布局;并且(C)基于该第一组处理布局、该第二组处理布局和本文描述的一个或多个布局确定规则来确定该第三组代码部分中的每个代码部分的处理布局,该一个或多个布局确定规则包括用于在具有不同并行度的处理布局中进行选择的至少一个规则。
在一些实施例中,可以根据数据库查询生成计算机代码。例如,在一些实施例中,可以将接收到的数据库查询(例如,SQL查询)转换成查询计划,并且可以对查询计划进行处理,以生成计算机代码。例如,可以将查询计划转换成包括多个节点和边缘(如上文描述的)的数据流图,并且计算机代码可以包括计算机代码部分,其中每个代码部分包括用于执行由数据流图中的节点表示的数据处理操作的节点。以此方式,在一些实施例中,计算机代码部分可以与数据流图中的对应的节点相关联。
在计算机代码与数据流图相关联的一些实施例中,数据流图的节点可以包括:(A)第一组一个或多个节点,该第一组节点中的每个节点表示对应的输入数据集,其中,该第一组计算机代码部分(上文描述的)中的每个计算机代码部分与该第一组节点中的对应的节点相关联;(B)第二组一个或多个节点,该第二组节点中的每个节点表示对应的输出数据集,其中,该第二组计算机代码部分(上文描述的)中的每个计算机代码部分与该第二组节点中的对应的节点相关联;以及第三组一个或多个节点,该第三组节点中的每个节点表示对应的数据处理操作。该数据处理系统可以使用:(1)具有第一组和第二组中的节点的处理布局;(2)本文描述的布局确定规则中的一个或多个;(3)以及用于将一个或多个处理布局分配给第三组节点中的(多个)节点的图的结构(指示数据处理操作中的排序)。这些处理布局进而可以由数据处理系统使用,以便执行与第三组节点中的节点相关联的计算机代码部分。
图3A至3D展示了根据本文描述的技术的一些实施例的使用一个或多个布局确定规则来确定用于示意性数据流图300中的节点的处理布局,这些实施例包括参考图2描述的实施例。除了其他方面,图3A至3D的示例展示了在一些实施例中,当通过从具有不同并行度的两个不同处理布局中选择布局来确定节点的处理布局时,可以选择具有更大并行度的处理布局作为节点的处理布局。
图3A展示了具有以下节点的数据流图300:表示对应的输入数据集的节点302和304;表示对应的数据处理操作的节点306、308、310、和312;以及表示输出数据集的节点314。如可以从数据流图300的结构中理解的,在写入由节点314表示的输出数据集之前,将由节点302表示的输入数据集过滤、分类并且之后与由节点304表示的输入数据集的经过滤版本联结。在此示例中,在获得用于输入数据集和输出数据集的处理布局之后,可以确定:如图3A中示出的,串行处理布局SL1将用于从由节点302表示的数据集中读取数据,并行布局PL1将用于从由节点304表示的数据集中读取数据,并且串行处理布局SL2将用于写入由节点314表示的数据集。注意,尽管串行处理布局SL1和SL2中的每一个指示将串行地(即,具有一个并行度)处理数据,但是这些串行布局不需要相同,因为可以由不同的处理器(例如,由存储由节点302表示的输入数据集的数据库的处理器以及由存储由节点314表示的输出数据集的另一个数据库的处理器)执行串行处理。在此阶段,由节点306、308、310、和312表示的数据处理操作的处理布局尚未确定。
图3B和图3C展示了基于获得的用于节点302、304、和314的处理布局确定用于由节点306、308、310、和312表示的数据处理操作的处理布局。首先,如图3B中示出的,根据数据流图300的结构和本文描述的布局确定规则,在开始于节点302和304的前向传递中确定用于节点306、308、310、和312的初始处理布局。例如,基于数据流图中的前一节点——节点302的布局确定节点306的处理布局。之后,基于数据流图中的前一节点——节点306的布局,确定节点308的处理布局。在基于其前一节点(即,节点304)的布局确定节点310的处理布局并且已经确定了节点308的处理布局之后,基于各自在数据流图300中的节点312之前并与其连接的节点308和310的布局确定节点312的处理布局。
在此示例中,在前向传递期间,确定的是节点302的串行布局SL1将用于执行由节点306表示的数据处理操作,因为除了节点302之外不存在任何节点处于紧接在节点306之前的节点,并且不存在已经与节点306相关联的布局。然后,确定的是,节点306的布局SL1将用于执行由节点308表示的数据处理操作,因为除了节点306之外不存在任何节点处于节点308之前,并且不存在已经与节点308相关联的布局。类似地,确定的是节点304的并行布局PL1将用于执行由节点310表示的数据处理操作,因为除了节点304之外不存在任何节点处于节点310之前,并且不存在已经与节点310相关联的布局。以此方式,使布局SL1和PL1通过图300从输入节点302和304传播到尚未确定布局且连接至单一的前一节点的任何节点(即,在此说明性示例中,节点306、308、和310)。
在前向传递期间,表示联结操作的节点312的处理布局选自前一节点308的串行布局SL1以及前一节点310的并行布局PL1。如图3B中示出的,使用布局确定规则在前向传递期间选择节点312的并行布局PL1,该布局确定规则指示当在具有不同并行度的两个潜在不同的处理布局之间进行选择时,将选择具有更大并行度的处理布局。因为并行处理布局PL1的并行度比处理布局SL1的并行度大,所以在前向传递期间选择节点312的并行处理布局PL1。
接下来,如图3C中示出的,根据数据流图300的结构、图3B中示出的初始处理布局、和本文描述的布局确定规则,在开始于节点314的后向传递中确定用于节点306、308、310、和312的最终处理布局。例如,基于被确定用于节点312的初始处理布局和节点314的布局来确定用于节点312的最终处理布局。基于被确定用于节点308的初始处理布局和被确定用于节点312的最终处理布局来确定用于节点308的最终处理布局。基于被确定用于节点306的初始处理布局和被确定用于节点308的最终处理布局来确定用于节点306的最终处理布局。基于被确定用于节点310的初始处理布局和被确定用于节点312的最终处理布局来确定用于节点310的最终处理布局。
在此示例中,在后向传递期间,节点312的最终处理布局选自在前向传递期间被确定用于节点312的初始处理布局PL1以及与节点314相关联的串行处理布局SL2。如图3C中示出的,将布局PL1确定为节点312的最终处理布局,因为布局PL1的并行度大于布局SL2的并行度。节点308的最终处理布局选自在前向传递期间被确定用于节点308的初始布局SL1以及在后向传递期间被确定用于节点312的最终处理布局PL1。如图3C中示出的,将布局PL1确定为节点308的最终处理布局,因为布局PL1的并行度大于布局SL1的并行度。节点306的最终处理布局选自在前向传递期间被确定用于节点306的初始布局SL1以及在后向传递期间被确定用于节点308的最终处理布局PL1。如图3C中示出的,将布局PL1确定为节点304的最终处理布局,因为布局PL1的并行度大于布局SL1的并行度。将节点310的最终处理布局确定为PL1,因为在前向传递期间被确定用于节点310的初始布局是PL1并且在后向传递期间被确定用于节点312的最终布局也是PL1。
在已经确定了数据流图300的节点中的每一个的处理布局之后,如图3C中示出的,数据流图300可以被配置成执行一个或多个重新分区操作。如本文所描述的,当数据流图中的相邻节点被配置成使用具有不同并行度的处理布局对数据记录执行数据处理操作时,数据流图可以被配置成对数据记录执行重新分区操作。例如,如图3C中示出的,相邻节点302(SL1)和306(PL1)的处理布局具有不同的并行度。相邻节点312(PL1)和314(SL2)的处理布局也具有不同的并行度。
在一些实施例中,数据流图可以被配置成通过向图添加表示重新分区操作的新节点来执行重新分区操作。例如,如图3D中展示的,可以将表示分区操作(例如,通过键分区操作)的新节点342添加到数据流图中介于节点302与306之间。当根据具有节点342的数据流图对数据记录进行处理时,在使用节点302的处理布局SL1进行读取之后但在使用节点306的处理布局PL1进行过滤之前,根据由节点342表示的分区操作对数据记录进行分区。可以根据节点308的布局SL1执行分区操作。另外,如图3D中展示的,可以将表示合并操作的新节点344添加到数据流图中介于节点312和314之间。当根据具有节点344的数据流图对数据记录进行处理时,在使用节点312的处理布局PL1进行处理之后但在使用节点314的处理布局SL2进行输出之前,对数据记录进行合并。可以根据节点314的布局SL2执行合并操作。
在图3D的说明性示例中,向数据流图300添加了两个新节点,以获得数据流图340。然而,应当理解,在一些实施例中,数据流图可以被配置成执行一个或多个重新分区操作而不需要向图添加新节点。在一些实施例中,一个或多个现有节点中的每一个可以被配置成执行对应的重新分区操作。例如,节点302或节点306可以被配置成执行分区操作,而非如图3D的说明性实施例中示出的添加新节点342。作为另一个示例,节点312或节点314可以被配置成执行合并操作,而非如图3D的说明性实施例中示出的添加新节点344。
图4A至4C展示了根据本文描述的技术的一些实施例的使用一个或多个布局确定规则来确定用于示意性数据流图400中的节点的处理布局,这些实施例包括参考图2描述的实施例。除了其他方面,图4A至4C的示例展示了在一些实施例中,当通过从具有相同并行度的两个处理布局中选择布局来确定节点的处理布局时,可以选择应用于较大数量的记录的处理布局作为节点的处理布局。
图4A展示了具有以下节点的数据流图400:表示对应的输入数据集的节点402和404;表示数据处理操作的节点406,和表示输出数据集的节点408。如可以从数据流图400的结构中理解的,将具有N个数据记录且由节点402表示的输入数据集与具有M个记录(M小于N)且由节点404表示的输入数据集联结。在联结数据集之后,将其写入由节点408表示的输出数据集。在此示例中,在获得用于输入数据集和输出数据集的处理布局之后,可以确定:并行处理布局PL1将用于从由节点402表示的数据集中读取数据,并行处理布局PL2将用于从由节点404表示的数据集中读取数据,并且串行布局SL1将用于将数据记录写入由节点408表示的输出数据集。处理布局PL1和PL2各自具有同一并行度。在此阶段,由节点406表示的联结操作的处理布局尚未确定。
在前向传递期间,基于在数据流图400中处于节点406之前的节点402和404的处理布局确定节点406的初始处理布局。在展示的示例中,节点406的初始处理布局选自与节点402相关联的处理布局PL1以及与节点404相关联的处理布局PL2当中。即使布局PL1和PL2中的每一个具有同一并行度,但是选择布局PL1作为节点406的初始处理布局,因为PL1应用于处理比布局PL2更大数量的记录N(例如,从由节点402表示的输入数据集中读取N个数据记录),该布局PL2应用于处理M<N个数据记录(例如,从由节点404表示的输入数据集中读取M个数据记录)。出于效率的目的可以进行此选择,因为相比于在根据布局PL2处理联结操作时要移动的记录的数量(例如,N个记录),当根据布局PL1处理由节点406表示的联接操作时,可能需要移动更少的数据记录(例如,M<N个记录)。
接下来,在后向传递期间,基于被确定用于节点406的初始处理布局(PL1)以及与节点408相关联的处理布局(SL1)来确定用于节点406的最终处理布局。因为布局PL1的并行度比布局SL1的并行度大,所以将PL1确定为节点406的最终处理布局。因此,在完成前向传递和后向传递之后,将PL1确定为节点406的最终处理布局,如图4B中示出的。
在已经确定了数据流图400的节点中的每一个的处理布局之后,如图4B中示出的,数据流图400可以被配置成执行一个或多个重新分区操作。如本文所描述的,当数据流图中的相邻节点被配置成使用具有不同并行度的处理布局对数据记录执行数据处理操作时,数据流图可以被配置成对数据记录执行重新分区操作。例如,如图4B中示出的,相邻节点406(PL1)和408(SL1)的处理布局具有不同的并行度。
如本文讨论的,在一些实施例中,数据流图可以被配置成通过向图添加表示重新分区操作的新节点来执行重新分区操作。例如,如图4C中展示的,可以将表示合并操作的新节点407添加到数据流图400以获得数据流图430。当根据具有节点407的数据流图对数据记录进行处理时,在使用节点406的处理布局PL1进行处理之后但在使用节点408的处理布局SL1进行输出之前,对数据记录进行合并。可以根据节点408的布局SL1执行合并操作。在其他实施例中,现有节点(例如,406或408)之一可以被配置成执行合并操作而非向数据流图400添加新节点。
图5A至5D展示了根据本文描述的技术的一些实施例的使用一个或多个布局确定规则来确定用于示意性数据流图500中的节点的处理布局,这些实施例包括参考图2描述的实施例。除了其他方面,图5A至5D的示例展示了在一些实施例中,当确定用于其他节点的处理布局时,可以将处理布局指定为一个或多个特定节点的不在(多个)特定节点之外传播的布局。
图5A展示了具有以下节点的数据流图500:表示对应的输入数据集的节点502和504;表示对应的数据处理操作的节点506、508、510、和512;以及表示输出数据集的节点514。如可以从数据流图500的结构中理解的,在写入由节点514表示的输出数据集之前,首先将由节点502表示的输入数据集过滤,然后对经过滤数据执行汇总操作,并且将作为汇总操作的结果获得的数据记录与由节点504表示的输入数据集的经过滤版本联结。在此示例中,在获得用于输入数据集和输出数据集的处理布局之后,可以确定:如图5A中示出的,并行处理布局PL1将用于从由节点502表示的输入数据集中读取数据,串行布局SL1将用于从由节点504表示的输入数据集中读取数据,并且串行处理布局SL2将用于写入由节点514表示的输出数据集。另外,在此示例中,可以获得不将处理布局PL1传播到其他节点的指示。此指示可以以任何合适的方式获得,并且例如可以经由图形用户接口从用户处获得。在此阶段,由节点506、508、510、和512表示的数据处理操作的处理布局尚未确定。
图5B和图5C展示了基于获得的用于节点502、504、和514的处理布局确定用于由节点506、508、510、和512表示的数据处理操作的处理布局。首先,如图5B中示出的,根据数据流图500的结构和本文描述的布局确定规则,在开始于节点502和504的前向传递中确定用于节点506、508、510、和512的初始处理布局。在此示例中,由于已经获得了不传播节点502的处理布局PL1的指示,因此将布局PL1仅仅复制到表示过滤操作(因为过滤操作是可以使用同一处理布局(事实上相同的计算设备)作为用于从由节点502表示的输入数据集中读取数据记录的布局来执行的一种操作)的节点506,而非复制到任何其他节点,如例如表示汇总操作的节点508。
因此,在前向传递期间,将节点506的初始处理布局确定为PL1,并且不确定节点508的初始处理布局,因为PL1没有传播到节点506之外。如下文讨论的,将在后向传递中确定节点508的处理布局。
另外,在前向传递期间,将节点510的初始处理布局确定为节点504的串行布局SL1,因为除了节点504之外不存在任何节点处于紧接在节点510之前的节点,并且不存在已经与节点510相关联的布局。进而,还将节点510的初始处理布局SL1确定为节点512的初始处理布局,因为节点510是节点512之前唯一与特定布局相关联的节点(如上文描述的,尽管节点508在节点512之前,但其不与任何初始处理布局相关联)。图5B中展示了确定作为前向传递的结果的初始处理布局。已经向除了节点508之外的全部节点分配了初始处理布局。
接下来,如图5C所示,根据数据流图500的结构、图5B中示出的初始处理布局、和本文描述的布局确定规则,在开始于节点514的后向传递中确定用于节点506、508、510、和512的最终处理布局。例如,基于确定用于节点512的初始处理布局和与节点514相关联的处理布局来确定用于节点512的最终处理布局。基于被确定用于节点512的最终处理布局来确定用于节点508的最终处理布局(在此示例中,尚未确定节点508的初始布局)。基于被确定用于节点506的初始处理布局和被确定用于节点508的最终处理布局来确定用于节点506的最终处理布局。基于被确定用于节点510的初始处理布局和被确定用于节点512的最终处理布局来确定用于节点510的最终处理布局。
在此示例中,在后向传递期间,节点512的最终处理布局选自在前向传递期间被确定用于节点512的初始处理布局SL1以及与节点514相关联的串行处理布局SL2。如图5C中示出的,将布局SL1确定为节点512的最终处理布局。将节点508的最终处理布局确定为布局SL1,因为布局SL1是节点512的最终确定的布局并且在前向传递之后节点508不与任何初始处理布局相关联。将节点506的最终处理布局确定为PL1(被确定用于节点506的初始布局),因为PL1的并行度比被确定为节点508的最终处理布局的布局SL1的并行度大。将节点510的最终处理布局确定为SL1,因为在前向传递期间被确定用于节点510的初始布局是SL1并且在后向传递期间被确定用于节点512的最终布局也是SL1。
在已经确定了数据流图500的节点中的每一个的处理布局之后,如图5C中示出的,数据流图500可以被配置成执行一个或多个重新分区操作。如本文所描述的,当数据流图中的相邻节点被配置成使用具有不同并行度的处理布局对数据记录执行数据处理操作时,数据流图可以被配置成对数据记录执行重新分区操作。例如,如图5C中示出的,相邻节点506(PL1)和508(SL1)的处理布局具有不同的并行度。
如本文讨论的,在一些实施例中,数据流图可以被配置成通过向图添加表示重新分区操作的新节点来执行重新分区操作。例如,如图5D中展示的,可以将表示合并操作的新节点532添加到数据流图500以获得数据流图530。当根据具有节点532的数据流图对数据记录进行处理时,在使用节点506的处理布局PL1进行处理之后但在使用节点508的处理布局SL1进行输出之前,对数据记录进行收集。可以根据节点508的布局SL1执行收集操作。在其他实施例中,现有节点(例如,506或508)之一可以被配置成执行收集操作而非向数据流图500添加新节点。
图6是本文描述的技术的一些实施例可以在其中操作的示意性计算环境600的框图。环境600包括数据处理系统602,该数据处理系统被配置成访问(例如,从其中读取数据和/或将数据写入)数据存储装置610、612、614、和616。数据存储装置610、612、614、和616中的每个可以存储一个或多个数据集。数据存储装置可以以任何合适的方式存储任何合适类型的数据。数据存储装置可以使用数据库系统(例如,关系数据库系统)或以任何其他合适的方式将数据存储为平面文本文件、电子表格。在一些情况下,数据存储装置可以存储交易数据。例如,数据存储装置可以存储信用卡交易、电话记录数据或银行交易数据。应当理解,数据处理系统602可以被配置成访问任何合适数量的任何合适类型的数据存储装置,因为本文描述的技术的方面在这方面不受限制。
数据处理系统包括向一个或多个用户提供接口以创建数据流图的图形开发环境(GDE)606。可以使用协同操作系统610或用于执行数据流图的任何其他合适的执行环境执行使用GDE 606创建的数据流图。在名称为“Executing Computations Expressed asGraphs(执行表达为图形的计算)”的美国专利号5,966,072和名称为“ManagingParameters for Graph-Based Computations(管理基于图形的计算的参数)”的美国专利7,716,630中描述了图形开发环境和用于执行数据流图的环境的方面,这些美国专利中的每一个通过援引以其全文并入本文。使用GDE 606创建的或以任何其他合适的方式获得的数据流图可以存储于数据流图存储装置608中,该数据流图存储装置是数据处理系统602的一部分。
数据处理系统602还包括并行处理模块604,该并行处理模块被配置成在由协同操作系统610执行该数据流图之前,确定用于数据流图中的节点的处理布局。并行处理模块604可以使用本文描述的技术中的任何技术确定用于数据流图中的节点的处理布局,这些技术包括例如参考图2的过程200描述的技术。
图7展示了可以在其上实施本文描述的技术的合适计算系统环境700的示例。计算系统环境700仅是合适的计算环境的一个示例,并且不旨在对本文描述的技术的使用或功能的范围提出任何限制。也不应当将计算环境700解释为具有与示例性操作环境700中展示的部件中的任何一个或组合相关的任何依赖性或要求。
本文描述的技术与许多其他通用或专用计算系统环境或配置一起操作。可以适合与本文描述的技术一起使用的众所周知的计算系统、环境和/或配置的示例包括但不限于:个人计算机、服务器计算机、手持或膝上型设备、多处理器系统、基于微处理器的系统、机顶盒、可编程消费电子产品、网络PC、小型计算机、大型计算机、包括上述系统或设备中任一个的分布式计算环境等。
计算环境可以执行计算机可执行指令,如程序模块。通常,程序模块包括执行特定任务或实施特定抽象数据类型的例程、程序、对象、部件、数据结构等。本文描述的技术还可以在分布式计算环境中实践,其中任务由通过通信网络链接的远程处理设备执行。在分布式计算环境中,程序模块可以位于包括存储器存储设备的本地和远程计算机存储介质中。
参考图7,用于实施本文描述的技术的示例性系统包括呈计算机710形式的通用计算设备。计算机710的部件可以包括但不限于处理单元720、系统存储器730、以及将包括系统存储器的各种系统部件耦合到处理单元720的系统总线721。系统总线721可以是包括存储器总线或存储器控制器、外围总线和使用各种总线架构中的任何架构的本地总线的若干类型的总线结构中的任何总线结构。通过举例而不是进行限制,这种架构包括工业标准架构(ISA)总线、微通道架构(MCA)总线、增强ISA(EISA)总线、视频电子标准协会(VESA)本地总线、以及外围部件互连(PCI)总线(也称为夹层(Mezzanine)总线)。
计算机710通常包括各种计算机可读介质。计算机可读介质可以是可由计算机710访问的任何可用介质,并且包括易失和非易失介质、可移除和不可移除介质。通过举例而非限制,计算机可读取介质可以包括计算机存储介质和通信介质。计算机存储介质包括以任何方法或技术实施的用于存储如计算机可读指令、数据结构、程序模块、或其他数据等信息的易失性和非易失性介质、可移除和不可移除介质。计算机存储介质包括但不限于RAM、ROM、EEPROM、闪存存储器或其他存储器技术、CD-ROM、数字通用盘(DVD)或其他光盘存储设备、磁带盒、磁带、磁盘存储设备或其他磁存储设备、或者可用于存储期望信息并可由计算机710访问的任何其他介质。通信介质通常以如载波或其他传输机制等已调制数据信号来体现计算机可读指令、数据结构、程序模块或其他数据,并且包括任何信息递送介质。术语“已调制数据信号”是指以编码信号中的信息的这种方式使其特征中的一个或多个被设置或改变的信号。通过举例而非限制,通信介质包括有线介质(如有线网络或直接有线连接)以及无线介质(如声学、RF、红外线及其他无线介质)。上述中的任一个的组合也应包括在计算机可读介质的范围内。
系统存储器730包括呈易失性和/或非易失性存储器形式的计算机存储介质,比如只读存储器(ROM)731和随机存取存储器(RAM)732。包含如在启动期间帮助在计算机710内的元件之间传输信息的基本例程的基本输入/输出系统733(BIOS)通常存储在ROM 731中。RAM 732通常包含可由处理单元720立即访问和/或当前操作的数据和/或程序模块。通过举例而非限制,图7展示了操作系统734、应用程序735、其他程序模块736和程序数据737。
计算机710还可以包括其他可移除/不可移除、易失性/非易失性计算机存储介质。仅通过举例,图7展示了从不可移除的非易失性磁介质读取或向其写入的硬盘驱动器741、从可移除非易失性存储器752(比如闪存存储器)读取或向其写入的闪存驱动器751、以及从可移除的非易失性光盘756(比如CD ROM或其他光学介质)读取或向其写入的光盘驱动器755。可以用于示例性操作环境中的其他可移除/不可移除、易失性/非易失性计算机存储介质包括但不限于磁带盒、闪存卡、数字通用盘、数字录像带、固态RAM、固态ROM等。硬盘驱动器741通常通过如接口740等不可移动存储器接口连接至系统总线721,并且磁盘驱动器751和光盘驱动器755通常由如接口750等可移动存储器接口连接至系统总线721。
上文讨论和在图7中展示的驱动器及其相关联的计算机存储介质为计算机710提供了对计算机可读指令、数据结构、程序模块和其他数据的存储。在图7中,例如,硬盘驱动器741被展示为存储操作系统744、应用程序745、其他程序模块746以及程序数据747。注意,这些部件与操作系统734、应用程序735、其他程序模块736以及程序数据737可以是相同或不同的。这里给予了操作系统744、应用程序745、其他程序模块746和程序数据747不同的编号,以展示至少他们是不同的副本。用户可以通过如键盘762和定点设备761(通常称为鼠标、轨迹球或触摸板)的输入装置将命令和信息输入到计算机710中。其他输入设备(未示出)可以包括麦克风、操纵杆、游戏手柄、圆盘式卫星天线、扫描仪等。这些和其他输入设备通常通过耦合到系统总线的用户输入接口760连接到处理单元720,但可以由如并行端口、游戏端口或通用串行总线(USB)等其他接口和总线结构来连接。监视器791或其他类型的显示设备也经由如视频接口790等接口连接至系统总线721。除了监视器之外,计算机还可以包括可通过输出外围接口795连接的其他外围输出设备,如扬声器797和打印机796。
计算机710可以使用与一个或多个远程计算机(如远程计算机780)的逻辑连接在联网环境中操作。远程计算机780可以是个人计算机、服务器、路由器、网络PC、对等设备、或其他常见网络节点,并且通常包括以上描述的相对于计算设备710的元件中的许多或全部,尽管在图7中仅展示了存储器存储设备781。图7中描绘的逻辑连接包括局域网(LAN)771和广域网(WAN)773,但是还可包括其他网络。这种联网环境在办公室、企业范围计算机网络、内联网和互联网中是普遍的。
当在LAN联网环境中使用时,计算机710通过网络接口或适配器770连接到LAN771。当在WAN联网环境中使用时,计算机710通常包括调制解调器772或用于通过如互联网等WAN 773建立通信的其他装置。调制解调器772可以是内置的或外置的,其可以经由用户输入接口760或其他适当的机制连接到系统总线721。在联网环境中,相对于计算机710描绘的程序模块或是其部分可以存储在远程存储器存储设备中。通过举例而非限制,图7展示了驻留在存储器设备781上的远程应用程序785。应当理解,所示出的网络连接是示例性的,并且可以使用在计算机之间建立通信链路的其他手段。
如此描述了本发明的至少一个实施例的若干方面之后,应当理解,本领域技术人员会容易想到各种变更、修改以及改进。
这种变更、修改以及改进旨在是本披露内容的一部分、并且旨在落入本发明的精神和范围之内。此外,尽管指示了本发明的优点,但应当理解,并非本文描述的技术的每个实施例都将包括每个描述的优点。一些实施例可以不实施在本文中描述为有利的任何特征,并且在一些情况下,可以实施描述的特征中的一个或多个以实现进一步的实施例。因而,先前的描述和附图仅是通过举例的方式。
本文描述的技术的上述实施例可以以多种方式中的任一种来实施。例如,可以使用硬件、软件或其组合来实施这些实施例。当在软件中实施时,可以在任何适合的处理器或处理器集合上执行软件代码,无论该处理器或处理器集合是设置在单个计算机中还是分布在多个计算机中。这类处理器可以被实施为集成电路(其中集成电路部件中具有一个或多个处理器),包括名称为比如CPU芯片、GPU芯片、微处理器、微控制器或协处理器的本领域已知的商用集成电路部件。可替代地,处理器可以以定制电路系统(比如ASIC)或者通过配置可编程逻辑设备产生的半定制电路系统来实施。作为又一替代方案,处理器可以是较大电路或半导体设备的一部分,无论是商用的、半定制的还是定制的。作为具体示例,一些商用微处理器具有多个核,使得这些核中的一个或子集可以构成处理器。然而,处理器可以使用任何适合形式的电路系统来实施。
进一步地,应当了解,计算机可以体现为多种形式中的任何形式,比如机架式计算机、台式计算机、膝上型计算机或平板计算机。另外,计算机可以嵌入在通常不被认为是计算机但具有适合的处理能力的设备中,该设备包括个人数字助理(PDA)、智能手机或任何其他适合的便携式或固定式电子设备。
而且,计算机可以具有一个或多个输入设备和输出设备。这些设备可以尤其用于呈现用户接口。可以用于提供用户接口的输出设备的示例包括用于对输出进行视觉呈现的打印机或显示屏,以及扬声器或用于对输出进行听觉呈现的其他声音生成设备。可以用于用户接口的输入设备的示例包括键盘和指向设备,如鼠标、触摸板以及数字化平板。作为另一个示例,计算机可以通过语音识别或以其他可听格式接收输入信息。
这种计算机可以由采用任何合适的形式的一个或多个网络来互连,该一个或多个网络包括局域网或广域网,比如企业网或互联网。这种网络可以基于任何合适的技术并且可以根据任何合适的协议来运行,并且可以包括无线网络、有线网络或光纤网络。
而且,本文中概括的各种方法或过程可以被编码为在采用各种操作系统或平台中的任一种的一个或多个处理器上可执行的软件。另外,这种软件可以使用多种合适的编程语言和/或编程或脚本工具中的任一种来编写,并且还可以被编译为可执行的机器语言代码或在框架或虚拟机上执行的中间代码。
在这方面,本发明可以被体现为用一个或多个程序进行编码的计算机可读存储介质(或多个计算机可读介质)(例如,计算机存储器、一个或多个软盘、压缩光盘(CD)、光盘、数字视频盘(DVD)、磁带、闪存存储器、现场可编程门阵列或其他半导体设备中的电路配置、或其他有形计算机存储介质),该一个或多个程序在一个或多个计算机或其他处理器上执行时执行实施以上讨论的本发明的各种实施例的方法。如从前文示例将清楚明白,计算机可读存储介质可以将信息保留足够的时间,以便提供采用非暂时形式的计算机可执行指令。这种计算机可读存储介质可以是可运送的,使得其上存储的一个或多个程序可以载入到一个或多个不同的计算机或其他处理器上,以实施如上讨论的本发明的各个方面。如本文使用的,术语“计算机可读存储介质”仅涵盖可被看作是制品(即,制造物品)或机器的非暂态计算机可读介质。可替代地或另外,本发明可以体现为除了计算机可读存储介质之外的计算机可读介质,如传播信号。
术语“程序”或“软件”在本文中在一般意义上使用,以指代任何类型的计算机代码或计算机可执行指令集,这些计算机可执行指令集可以被用来对计算机或其他处理器进行编程以实施如上讨论的本发明的各个方面。另外,应该理解,根据此实施例的一个方面,当被执行时执行本发明的方法的一个或多个计算机程序不必驻留在单个计算机或处理器上,但可以按照模块的方式分布在多个不同的计算机或处理器中以实施本发明的各个方面。
计算机可执行指令可以呈由一个或多个计算机或其他设备执行的许多形式,比如程序模块。通常,程序模块包括执行特定任务或实施特定抽象数据类型的例程、程序、对象、部件、数据结构等。通常,程序模块的功能可以如各个实施例所期望的而组合或分布。
而且,数据结构可以以任何合适的形式存储在计算机可读介质中。为了简化说明,可以将数据结构示出为具有通过数据结构中的位置而相关的字段。这种关系同样可以通过为用于字段的存储分配传达字段之间关系的计算机可读介质中的位置来实现。然而,可以使用任何合适的机制来建立数据结构的字段中的信息之间的关系,包括通过使用指针、标签、或建立数据元素之间的关系的其他机制。
本发明的各个方面可以单独使用、组合使用、或以前文所述的实施例中未确切讨论的各种布置使用,并且因此在其应用中不局限于其在前文描述中所阐述或附图中所展示的部件的细节和布置。例如,一个实施例中描述的方面可以以任何方式与其他实施例中描述的方面组合。
而且,本发明可以体现为其示示例已被提供的一种方法。作为该方法的一部分而执行的动作可以以任何适合的方式排序。因此,可以构造这样的实施例,在这些实施例中,动作以与所示出的顺序不同的顺序执行,这些动作可以包括同时执行一些动作,即使这些动作在说明性实施例中被示出为连续动作。
进一步地,一些动作被描述为由“用户”做出。应当理解,“用户”不必是单个个人,并且在一些实施例中,可归因于“用户”的动作可以由个人团队和/或个人与计算机辅助工具或其他机构的组合来执行。
在权利要求中使用比如“第一”、“第二”、“第三”等的序数术语来修饰权利要求要素本身并不意味着一个权利要求要素优先于另一个权利要求要素的任何优先级、优先权或顺序,或者执行方法的动作的时间顺序,但仅用作标签以将具有特定名称的一个权利要求要素与具有同一名称的另一个要素进行区分(但为了使用序数术语)以区分权利要求要素。
同样,在本文中使用的措辞和术语是用于描述的目的,而不应当被视为是限制性的。本文使用的“包括(including)”、“包括(comprising)”或“具有(having)”、“包含(containing)”、“涉及(involving)”及其变化形式旨在涵盖其后所列的项和其等效形式,以及其他项。

Claims (41)

1.一种数据处理系统,包括:
至少一个计算机硬件处理器;以及
存储处理器可执行指令的至少一个非暂态计算机可读存储介质,这些处理器可执行指令在由该至少一个计算机硬件处理器执行时使该至少一个计算机硬件处理器执行以下操作:
获得指定数据流图的信息,该数据流图包括多个节点和连接该多个节点的多个边缘,该多个边缘表示该多个节点中的节点之间的数据流,该多个节点包括:
第一组一个或多个节点,该第一组一个或多个节点中的每个节点表示一组一个或多个输入数据集中的对应的输入数据集;
第二组一个或多个节点,该第二组一个或多个节点中的每个节点表示一组一个或多个输出数据集中的对应的输出数据集;以及
第三组一个或多个节点,该第三组一个或多个节点中的每个节点表示至少一个对应的数据处理操作;
获得用于该一组一个或多个输入数据集的第一组一个或多个处理布局;
获得用于该一组一个或多个输出数据集的第二组一个或多个处理布局;以及
基于该第一组一个或多个处理布局、该第二组一个或多个处理布局和一个或多个布局确定规则来确定用于该第三组一个或多个节点中的每个节点的处理布局,该一个或多个布局确定规则包括用于在具有不同并行度的处理布局中进行选择的至少一个规则,
其中,确定用于该第三组一个或多个节点中的每个节点的所述处理布局包括:
根据该数据流图的结构并使用该第一组一个或多个处理布局和该一个或多个布局确定规则,在开始于该第一组一个或多个节点中的节点而执行的前向传递中确定用于该第三组一个或多个节点中的一个或多个节点的初始处理布局;以及
根据该数据流图的结构并使用该第二组一个或多个处理布局和该一个或多个布局确定规则,在开始于该第二组一个或多个节点中的节点而执行的后向传递中确定用于该第三组一个或多个节点中的每个节点的最终处理布局。
2.如权利要求1所述的数据处理系统,其中,该一组一个或多个输入数据集包括第一输入数据集和第二输入数据集,其中,该第一组一个或多个节点包括与该第一输入数据集相关联的第一节点和与该第二输入数据集相关联的第二节点,并且其中,获得该第一组一个或多个处理布局包括:
获得用于从该第一输入数据集中读取数据的第一处理布局,该第一处理布局至少部分地指定第一并行度;以及
获得用于从该第二输入数据集中读取数据的第二处理布局,该第二处理布局至少部分地指定与至少部分地指定的该第一并行度不同的第二并行度。
3.如权利要求1所述的数据处理系统,
其中,该第一组一个或多个节点包括与该一组一个或多个输入数据集中的第一输入数据集相关联的第一节点,
其中,该第二组一个或多个节点包括与该一组一个或多个输出数据集中的第一输出数据集相关联的第二节点,
其中,获得该第一组一个或多个处理布局包括获得用于从该第一输入数据集中读取数据的第一处理布局,该第一处理布局至少部分地指定第一并行度,并且
其中,获得该第二组一个或多个处理布局包括获得用于将数据写入该第一输出数据集的第二处理布局,该第二处理布局至少部分地指定与至少部分地指定的该第一并行度不同的第二并行度。
4.如权利要求1所述的数据处理系统,其中,该一组一个或多个输出数据集包括第一输出数据集和第二输出数据集,其中,该第二组一个或多个节点包括与该第一输出数据集相关联的第一节点和与该第二输出数据集相关联的第二节点,并且其中,获得该第一组一个或多个处理布局包括:
获得用于将数据写入该第一输出数据集的第一处理布局,该第一处理布局至少部分地指定第一并行度;以及
获得用于将数据写入该第二输出数据集的第二处理布局,该第二处理布局至少部分地指定与至少部分地指定的该第一并行度不同的第二并行度。
5.如权利要求1所述的数据处理系统,其中,该第三组一个或多个节点包括第一节点,其中,该多个边缘包括在该数据流图中介于该第一节点与该第一节点前面的第二节点之间的第一边缘,并且其中,确定用于该第三组一个或多个节点中的每个节点的该初始处理布局包括:
基于被确定用于该第二节点的第二初始处理布局来确定用于该第一节点的第一初始处理布局。
6.如权利要求5所述的数据处理系统,其中,该多个边缘包括在该数据流图中介于该第一节点与该第一节点前面的第三节点之间的第二边缘,其中,第三初始处理布局与该第三节点相关联,并且其中,确定用于该第一节点的该第一初始处理布局包括:
选择该第二初始处理布局和该第三初始处理布局之一作为该第一初始处理布局。
7.如权利要求6所述的处理系统,其中,该第二初始处理布局指定第一并行度,其中,该第三初始处理布局指定与该第一并行度不同的第二并行度,并且其中,该选择包括:
当该第一并行度大于该第二并行度时,选择该第二初始处理布局;以及
当该第一并行度小于该第二并行度时,选择该第三初始处理布局。
8.如权利要求6所述的数据处理系统,其中,该第二初始处理布局和该第三初始处理布局各自指定相同并行度,其中,该第一边缘表示第一数量个数据记录的数据流,其中,该第二边缘表示第二数量个数据记录的数据流,并且其中,该选择包括:
当该数据记录的第一数量大于该数据记录的第二数量时,选择该第二初始处理布局;以及
当该数据记录第一数量小于该数据记录的第二数量时,选择该第三初始处理布局。
9.如权利要求1所述的数据处理系统,
其中,在确定用于该第三组一个或多个节点中的每个节点的所述处理布局期间,确定用于第三组一个或多个节点中的第一节点的第一处理布局,该第一处理布局指定第一并行度,
其中,该数据流图中的紧接在该第一节点的之前的第二节点的第二处理布局指定与该第一并行度不同的第二并行度,并且
其中,该处理器可执行指令进一步使该至少一个计算机硬件处理器配置该数据流图的至少一个节点以执行至少一个重新分区操作。
10.如权利要求1所述的数据处理系统,
其中,在确定用于该第三组一个或多个节点中的每个节点的所述处理布局期间,确定用于第三组一个或多个节点中的第一节点的第一处理布局,该第一处理布局指定第一并行度,
其中,该数据流图中的紧接在该第一节点的之前的第二节点的第二处理布局指定与该第一并行度不同的第二并行度,并且
其中,该处理器可执行指令进一步使该至少一个计算机硬件处理器向该数据流图添加介于该第一节点与该第二节点之间的新节点,该新节点表示至少一个重新分区操作。
11.如权利要求10所述的数据处理系统,其中,添加与该至少一个重新分区操作相关联的该新节点包括添加与收集操作、合并操作或分区操作相关联的节点。
12.如权利要求1所述的数据处理系统,其中,确定用于该第三组一个或多个节点中的每个节点的所述处理布局包括确定用于该第三组一个或多个节点中的第一节点的第一处理布局,该第一节点表示第一数据处理操作,并且其中,确定该第一处理布局包括:
确定用于执行该第一数据处理操作的并行度;以及
根据已确定并行度标识用于执行该第一数据处理操作的一组一个或多个计算设备。
13.如权利要求12所述的数据处理系统,其中,确定该第一处理布局包括:
确定单一处理器将用于执行该第一数据处理操作;以及
标识用于执行该第一数据处理操作的计算设备。
14.如权利要求1或2所述的数据处理系统,其中,使用用于在具有不同并行度的处理布局中进行选择的该至少一个规则来执行确定该处理布局。
15.如权利要求1或2所述的数据处理系统,其中,该处理器可执行指令使该至少一个计算机硬件处理器执行以下操作:
在确定用于该数据流图中的每个节点的处理布局之后,根据被确定用于该数据流图中的每个节点的处理布局来执行该数据流图。
16.如权利要求1或2所述的数据处理系统,其中,该处理器可执行指令使该至少一个计算机硬件处理器执行以下操作:
接收结构化查询语言即SQL查询;
根据该SQL查询生成查询计划;以及
根据已生成查询计划生成该数据流图。
17.存储处理器可执行指令的至少一个非暂态计算机可读存储介质,这些处理器可执行指令在由至少一个计算机硬件处理器执行时使该至少一个计算机硬件处理器执行以下操作:
获得指定数据流图的信息,该数据流图包括多个节点和连接该多个节点的多个边缘,该多个边缘表示该多个节点中的节点之间的数据流,该多个节点包括:
第一组一个或多个节点,该第一组一个或多个节点中的每个节点表示一组一个或多个输入数据集中的对应的输入数据集;
第二组一个或多个节点,该第二组一个或多个节点中的每个节点表示一组一个或多个输出数据集中的对应的输出数据集;以及
第三组一个或多个节点,该第三组一个或多个节点中的每个节点表示至少一个对应的数据处理操作;
获得用于该一组一个或多个输入数据集的第一组一个或多个处理布局;
获得用于该一组一个或多个输出数据集的第二组一个或多个处理布局;以及
基于该第一组一个或多个处理布局、该第二组一个或多个处理布局和一个或多个布局确定规则来确定用于该第三组一个或多个节点中的每个节点的处理布局,该一个或多个布局确定规则包括用于在具有不同并行度的处理布局中进行选择的至少一个规则,
其中,确定用于该第三组一个或多个节点中的每个节点的所述处理布局包括:
根据该数据流图的结构并使用该第一组一个或多个处理布局和该一个或多个布局确定规则,在开始于该第一组一个或多个节点中的节点而执行的前向传递中确定用于该第三组一个或多个节点中的一个或多个节点的初始处理布局;以及
根据该数据流图的结构并使用该第二组一个或多个处理布局和该一个或多个布局确定规则,在开始于该第二组一个或多个节点中的节点而执行的后向传递中确定用于该第三组一个或多个节点中的每个节点的最终处理布局。
18.存储处理器可执行指令的至少一个非暂态计算机可读存储介质,这些处理器可执行指令在由至少一个计算机硬件处理器执行时,该处理器可执行指令包括:
用于获得指定数据流图的信息的装置,该数据流图包括多个节点和连接该多个节点的多个边缘,该多个边缘表示该多个节点中的节点之间的数据流,该多个节点包括:
第一组一个或多个节点,该第一组一个或多个节点中的每个节点表示一组一个或多个输入数据集中的对应的输入数据集;
第二组一个或多个节点,该第二组一个或多个节点中的每个节点表示一组一个或多个输出数据集中的对应的输出数据集;以及
第三组一个或多个节点,该第三组一个或多个节点中的每个节点表示至少一个对应的数据处理操作;
用于获得用于该一组一个或多个输入数据集的第一组一个或多个处理布局的装置;
用于获得用于该一组一个或多个输出数据集的第二组一个或多个处理布局的装置;以及
用于基于该第一组一个或多个处理布局、该第二组一个或多个处理布局和一个或多个布局确定规则来确定用于该第三组一个或多个节点中的每个节点的处理布局的装置,该一个或多个布局确定规则包括用于在具有不同并行度的处理布局中进行选择的至少一个规则,
其中,确定用于该第三组一个或多个节点中的每个节点的所述处理布局包括:
根据该数据流图的结构并使用该第一组一个或多个处理布局和该一个或多个布局确定规则,在开始于该第一组一个或多个节点中的节点而执行的前向传递中确定用于该第三组一个或多个节点中的一个或多个节点的初始处理布局;以及
根据该数据流图的结构并使用该第二组一个或多个处理布局和该一个或多个布局确定规则,在开始于该第二组一个或多个节点中的节点而执行的后向传递中确定用于该第三组一个或多个节点中的每个节点的最终处理布局。
19.一种数据处理方法,包括:
使用至少一个计算机硬件处理器执行以下操作:
获得指定数据流图的信息,该数据流图包括多个节点和连接该多个节点的多个边缘,该多个边缘表示该多个节点中的节点之间的数据流,该多个节点包括:
第一组一个或多个节点,该第一组一个或多个节点中的每个节点表示一组一个或多个输入数据集中的对应的输入数据集;
第二组一个或多个节点,该第二组一个或多个节点中的每个节点表示一组一个或多个输出数据集中的对应的输出数据集;以及
第三组一个或多个节点,该第三组一个或多个节点中的每个节点表示至少一个对应的数据处理操作;
获得用于该一组一个或多个输入数据集的第一组一个或多个处理布局;
获得用于该一组一个或多个输出数据集的第二组一个或多个处理布局;以及
基于该第一组一个或多个处理布局、该第二组一个或多个处理布局和一个或多个布局确定规则来确定用于该第三组一个或多个节点中的每个节点的处理布局,该一个或多个布局确定规则包括用于在具有不同并行度的处理布局中进行选择的至少一个规则,
其中,确定用于该第三组一个或多个节点中的每个节点的所述处理布局包括:
根据该数据流图的结构并使用该第一组一个或多个处理布局和该一个或多个布局确定规则,在开始于该第一组一个或多个节点中的节点而执行的前向传递中确定用于该第三组一个或多个节点中的一个或多个节点的初始处理布局;以及
根据该数据流图的结构并使用该第二组一个或多个处理布局和该一个或多个布局确定规则,在开始于该第二组一个或多个节点中的节点而执行的后向传递中确定用于该第三组一个或多个节点中的每个节点的最终处理布局。
20.如权利要求19所述的方法,其中,该一组一个或多个输入数据集包括第一输入数据集和第二输入数据集,其中,该第一组一个或多个节点包括与该第一输入数据集相关联的第一节点和与该第二输入数据集相关联的第二节点,并且其中,获得该第一组一个或多个处理布局包括:
获得用于从该第一输入数据集中读取数据的第一处理布局,该第一处理布局至少部分地指定第一并行度;以及
获得用于从该第二输入数据集中读取数据的第二处理布局,该第二处理布局至少部分地指定与至少部分地指定的该第一并行度不同的第二并行度。
21.如权利要求19所述的方法,
其中,该第一组一个或多个节点包括与该一组一个或多个输入数据集中的第一输入数据集相关联的第一节点,
其中,该第二组一个或多个节点包括与该一组一个或多个输出数据集中的第一输出数据集相关联的第二节点,
其中,获得该第一组一个或多个处理布局包括获得用于从该第一输入数据集中读取数据的第一处理布局,该第一处理布局至少部分地指定第一并行度,并且
其中,获得该第二组一个或多个处理布局包括获得用于将数据写入该第一输出数据集的第二处理布局,该第二处理布局至少部分地指定与至少部分地指定的该第一并行度不同的第二并行度。
22.如权利要求19所述的方法,其中,该一组一个或多个输出数据集包括第一输出数据集和第二输出数据集,其中,该第二组一个或多个节点包括与该第一输出数据集相关联的第一节点和与该第二输出数据集相关联的第二节点,并且其中,获得该第一组一个或多个处理布局包括:
获得用于将数据写入该第一输出数据集的第一处理布局,该第一处理布局至少部分地指定第一并行度;以及
获得用于将数据写入该第二输出数据集的第二处理布局,该第二处理布局至少部分地指定与至少部分地指定的该第一并行度不同的第二并行度。
23.如权利要求19所述的方法,其中,该第三组一个或多个节点包括第一节点,其中,该多个边缘包括在该数据流图中介于该第一节点与该第一节点前面的第二节点之间的第一边缘,并且其中,确定用于该第三组一个或多个节点中的每个节点的该初始处理布局包括:
基于被确定用于该第二节点的第二初始处理布局来确定用于该第一节点的第一初始处理布局。
24.如权利要求23所述的方法,其中,该多个边缘包括在该数据流图中介于该第一节点与该第一节点前面的第三节点之间的第二边缘,其中,第三初始处理布局与该第三节点相关联,并且其中,确定用于该第一节点的该第一初始处理布局包括:
选择该第二初始处理布局和该第三初始处理布局之一作为该第一初始处理布局。
25.如权利要求24所述的方法,其中,该第二初始处理布局指定第一并行度,其中,该第三初始处理布局指定与该第一并行度不同的第二并行度,并且其中,该选择包括:
当该第一并行度大于该第二并行度时,选择该第二初始处理布局;以及
当该第一并行度小于该第二并行度时,选择该第三初始处理布局。
26.如权利要求24所述的方法,其中,该第二初始处理布局和该第三初始处理布局各自指定相同并行度,其中,该第一边缘表示第一数量个数据记录的数据流,其中,该第二边缘表示第二数量个数据记录的数据流,并且其中,该选择包括:
当该数据记录的第一数量大于该数据记录的第二数量时,选择该第二初始处理布局;以及
当该数据记录第一数量小于该数据记录的第二数量时,选择该第三初始处理布局。
27.如权利要求19所述的方法,
其中,在确定用于该第三组一个或多个节点中的每个节点的所述处理布局期间,确定用于第三组一个或多个节点中的第一节点的第一处理布局,该第一处理布局指定第一并行度,
其中,该数据流图中的紧接在该第一节点的之前的第二节点的第二处理布局指定与该第一并行度不同的第二并行度,并且
其中,该至少一个计算机硬件处理器进一步将该数据流图中的至少一个节点配置成执行至少一个重新分区操作。
28.如权利要求19所述的方法,
其中,在确定用于该第三组一个或多个节点中的每个节点的所述处理布局期间,确定用于第三组一个或多个节点中的第一节点的第一处理布局,该第一处理布局指定第一并行度,
其中,该数据流图中的紧接在该第一节点的之前的第二节点的第二处理布局指定与该第一并行度不同的第二并行度,并且
其中,该至少一个计算机硬件处理器被配置成向该数据流图添加介于该第一节点与该第二节点之间的新节点,该新节点表示至少一个重新分区操作。
29.如权利要求28所述的方法,其中,添加与该至少一个重新分区操作相关联的该新节点包括添加与收集操作、合并操作或分区操作相关联的节点。
30.如权利要求19所述的方法,其中,确定用于该第三组一个或多个节点中的每个节点的所述处理布局包括确定用于该第三组一个或多个节点中的第一节点的第一处理布局,该第一节点表示第一数据处理操作,并且其中,确定该第一处理布局包括:
确定用于执行该第一数据处理操作的并行度;以及
根据已确定并行度标识用于执行该第一数据处理操作的一组一个或多个计算设备。
31.如权利要求30所述的方法,其中,确定该第一处理布局包括:
确定单一处理器将用于执行该第一数据处理操作;以及
标识用于执行该第一数据处理操作的计算设备。
32.如权利要求19或20所述的方法,其中,使用用于在具有不同并行度的处理布局中进行选择的该至少一个规则来执行确定该处理布局。
33.如权利要求19或20所述的方法,进一步包括:
在确定用于该数据流图中的每个节点的处理布局之后,根据被确定用于该数据流图中的每个节点的处理布局来执行该数据流图。
34.如权利要求19或20所述的方法,进一步包括:
接收结构化查询语言即SQL查询;
根据该SQL查询生成查询计划;以及
根据已生成查询计划生成该数据流图。
35.一种数据处理系统,包括:
至少一个计算机硬件处理器;以及
存储处理器可执行指令的至少一个非暂态计算机可读存储介质,这些处理器可执行指令在由该至少一个计算机硬件处理器执行时使该至少一个计算机硬件处理器执行以下操作:
获得指定数据流图的信息,该数据流图包括多个节点和连接该多个节点的多个边缘,该多个边缘表示该多个节点中的节点之间的数据流,该多个节点包括:
第一组一个或多个节点;以及
第二组一个或多个节点,该第二组一个或多个节点与该第一组一个或多个节点不相交;
获得用于该第一组一个或多个节点的第一组一个或多个处理布局;以及
基于该第一组一个或多个处理布局和一个或多个布局确定规则来确定用于该第二组一个或多个节点中的每个节点的处理布局,该一个或多个布局确定规则包括用于在具有不同并行度的处理布局中进行选择的至少一个规则,
其中,该第一组一个或多个节点包括:
一组一个或多个输入节点,该一组一个或多个输入节点中的每个节点表示一组一个或多个输入数据集中的对应的输入数据集;以及
一组一个或多个输出节点,该一组一个或多个输出节点中的每个节点表示一组一个或多个输出数据集中的对应的输出数据集,并且
其中,获得该第一组一个或多个处理布局包括:
获得用于该一组一个或多个输入数据集的一组一个或多个处理布局;以及
获得用于该一组一个或多个输出数据集的一组一个或多个处理布局;
其中,确定用于该第二组一个或多个节点中的每个节点的所述处理布局包括:
根据该数据流图的结构并使用用于该一组一个或多个输入数据集的一组一个或多个处理布局和该一个或多个布局确定规则,在开始于该一组一个或多个输入节点中的节点而执行的前向传递中确定用于该第二组一个或多个节点中的一个或多个节点的初始处理布局;以及
根据该数据流图的结构并使用用于该一组一个或多个输出数据集的一组一个或多个处理布局和该一个或多个布局确定规则,在开始于该一组一个或多个输出节点中的节点而执行的后向传递中确定用于该第二组一个或多个节点中的每个节点的最终处理布局。
36.一种数据处理系统,包括:
至少一个计算机硬件处理器;以及
存储处理器可执行指令的至少一个非暂态计算机可读存储介质,这些处理器可执行指令在由该至少一个计算机硬件处理器执行时使该至少一个计算机硬件处理器执行以下操作:
获得计算机代码,该计算机代码在由该至少一个计算机硬件处理器执行时使该至少一个计算机硬件处理器执行数据库查询,其中,该计算机代码包括:
第一组一个或多个计算机代码部分,该第一组一个或多个计算机代码部分各自表示用于在对应的输入数据集中进行读取的数据处理操作;
第二组一个或多个计算机代码部分,该第二组一个或多个计算机代码部分各自表示用于写出对应的输出数据集的数据处理操作;
第三组一个或多个计算机代码部分,该第三组一个或多个计算机代码部分各自表示对应的数据处理操作;
获得用于该第一组一个或多个计算机代码部分中的一个或多个计算机代码部分的第一组一个或多个处理布局;
获得用于该第二组一个或多个计算机代码部分中的一个或多个计算机代码部分的第二组一个或多个处理布局;以及
基于该第一组一个或多个处理布局、该第二组一个或多个处理布局和一个或多个布局确定规则来确定用于该第三组一个或多个计算机代码部分中的每个计算机代码部分的处理布局,该一个或多个布局确定规则包括用于在具有不同并行度的处理布局中进行选择的至少一个规则,
其中,确定用于该第三组一个或多个计算机代码部分中的每个计算机代码部分的所述处理布局包括:
根据该计算机代码的执行顺序并使用该第一组一个或多个处理布局和该一个或多个布局确定规则,在开始于该第一组一个或多个计算机代码部分中的计算机代码部分而执行的数据的前向传递中确定用于该第三组一个或多个计算机代码部分中的一个或多个计算机代码部分的初始处理布局;以及
根据该计算机代码的执行顺序并使用该第二组一个或多个处理布局和该一个或多个布局确定规则,在开始于该第二组一个或多个计算机代码部分中的计算机代码部分而执行的数据的后向传递中确定用于该第三组一个或多个计算机代码部分中的每个计算机代码部分的最终处理布局。
37.如权利要求36所述的数据处理系统,
其中,该计算机代码与数据流图相关联,
其中,该数据流图包括多个节点和连接该多个节点的多个边缘,该多个边缘表示该多个节点中的节点之间的数据流,并且
其中,该计算机代码中的计算机代码部分与该数据流图中的对应的节点相关联。
38.如权利要求37所述的数据处理系统,其中,该多个节点包括:
第一组一个或多个节点,该第一组一个或多个节点中的每个节点表示对应的输入数据集,其中,该第一组一个或多个计算机代码部分中的每个计算机代码部分与该第一组一个或多个节点中的对应的节点相关联;
第二组一个或多个节点,该第二组一个或多个节点中的每个节点表示对应的输出数据集,其中,该第二组一个或多个计算机代码部分中的每个计算机代码部分与该第二组一个或多个节点中的对应的节点相关联;以及
第三组一个或多个节点,该第三组一个或多个节点中的每个节点表示对应的数据处理操作。
39.如权利要求37所述的数据处理系统,其中,使用用于在具有不同并行度的处理布局中进行选择的该至少一个规则来执行确定该处理布局。
40.如权利要求37所述的数据处理系统,其中,该处理器可执行指令使该至少一个计算机硬件处理器执行以下操作:
在确定用于该数据流图中的每个节点的处理布局之后,根据被确定用于该数据流图中的每个节点的处理布局来执行该数据流图。
41.如权利要求37所述的数据处理系统,其中,该处理器可执行指令使该至少一个计算机硬件处理器执行以下操作:
接收结构化查询语言即SQL查询;
根据该SQL查询生成查询计划;以及
根据该查询计划生成该计算机代码。
CN201880021637.5A 2017-03-29 2018-03-29 用于使用可变级并行执行数据处理操作的系统和方法 Active CN110612513B (zh)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US201762478390P 2017-03-29 2017-03-29
US62/478,390 2017-03-29
PCT/US2018/025144 WO2018183676A1 (en) 2017-03-29 2018-03-29 Systems and methods for performing data processing operations using variable level parallelism

Publications (2)

Publication Number Publication Date
CN110612513A CN110612513A (zh) 2019-12-24
CN110612513B true CN110612513B (zh) 2024-01-30

Family

ID=62063179

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201880021637.5A Active CN110612513B (zh) 2017-03-29 2018-03-29 用于使用可变级并行执行数据处理操作的系统和方法

Country Status (11)

Country Link
US (2) US10817495B2 (zh)
EP (2) EP3602297B1 (zh)
JP (1) JP7216654B2 (zh)
KR (1) KR102549994B1 (zh)
CN (1) CN110612513B (zh)
AU (1) AU2018243278B2 (zh)
CA (1) CA3058223A1 (zh)
DE (1) DE112018001789T5 (zh)
SG (1) SG11201908969WA (zh)
WO (1) WO2018183676A1 (zh)
ZA (1) ZA201906585B (zh)

Families Citing this family (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110612513B (zh) * 2017-03-29 2024-01-30 起元技术有限责任公司 用于使用可变级并行执行数据处理操作的系统和方法
US11188434B2 (en) 2017-12-08 2021-11-30 Ab Initio Technology Llc Systems and methods for monitoring execution of structured query language (SQL) queries
US10990595B2 (en) * 2018-05-18 2021-04-27 Oracle International Corporation Fast distributed graph query engine
CN111209309B (zh) * 2020-01-13 2023-03-10 腾讯科技(深圳)有限公司 数据流图处理结果确定方法、装置、设备及存储介质
US11675785B2 (en) 2020-01-31 2023-06-13 Oracle International Corporation Dynamic asynchronous traversals for distributed graph queries
CN111737371B (zh) * 2020-08-24 2020-11-13 上海飞旗网络技术股份有限公司 可动态预测的数据流量检测分类方法及装置
DE112022000886T5 (de) 2021-01-31 2023-12-21 Ab Initio Technology Llc Datenverarbeitungssystem mit manipulation logischer datensatzgruppen
US11461297B1 (en) 2021-06-09 2022-10-04 T-Mobile Usa, Inc. Ensuring database integrity using a data flow in a graph, such as for use by a wireless telecommunications service provider
US20230093911A1 (en) * 2021-09-30 2023-03-30 Ab Initio Technology Llc Systems and methods for performing data processing operations using variable level parallelism

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2003529808A (ja) * 1999-01-13 2003-10-07 エービー イニティオ ソフトウェア コーポレーション スクリプト駆動ツールの並列処理アプリケーション
CN101443733A (zh) * 2006-05-16 2009-05-27 起元软件有限公司 在基于图的计算中的计算资源管理
CN103699515A (zh) * 2013-12-27 2014-04-02 中国科学院计算技术研究所 一种fft并行处理装置和方法
WO2016116132A1 (en) * 2015-01-19 2016-07-28 Huawei Technologies Co., Ltd. Systems and methods for execution of algorithms on parallel heterogeneous systems

Family Cites Families (22)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5966072A (en) * 1996-07-02 1999-10-12 Ab Initio Software Corporation Executing computations expressed as graphs
JP2003256221A (ja) * 2002-02-28 2003-09-10 Fujitsu Ltd 並列プロセス実行方法、及びマルチプロセッサ型コンピュータ
US7249141B2 (en) * 2003-04-30 2007-07-24 Microsoft Corporation Automated layout of relational databases
US7155612B2 (en) 2003-04-30 2006-12-26 International Business Machines Corporation Desktop database data administration tool with row level security
JP5271494B2 (ja) * 2003-06-25 2013-08-21 アビニシオ テクノロジー エルエルシー コンピュータ支援による計算グラフの並列化
US7716630B2 (en) 2005-06-27 2010-05-11 Ab Initio Technology Llc Managing parameters for graph-based computations
US20080140622A1 (en) 2006-12-12 2008-06-12 Bestgen Robert J Displaying Explain Data for a SQL Query of a Database
US7979578B2 (en) * 2009-09-02 2011-07-12 International Business Machines Corporation Dynamic and evolutionary placement in an event-driven component-oriented network data processing system
US9665620B2 (en) * 2010-01-15 2017-05-30 Ab Initio Technology Llc Managing data queries
US9208141B2 (en) 2010-02-05 2015-12-08 Oracle International Corporation Generating and displaying active reports
US8356027B2 (en) * 2010-10-07 2013-01-15 Sap Ag Hybrid query execution plan generation and cost model evaluation
WO2012061109A1 (en) * 2010-10-25 2012-05-10 Ab Initio Technology Llc Managing data set objects in a dataflow graph that represents a computer program
US8195643B2 (en) 2010-10-28 2012-06-05 Sap Ag Database calculation engine
US9116955B2 (en) 2011-05-02 2015-08-25 Ab Initio Technology Llc Managing data queries
US8838579B2 (en) 2012-04-26 2014-09-16 Sap Ag Data flow graph optimization using adaptive rule chaining
US8856766B2 (en) * 2012-05-11 2014-10-07 International Business Machines Corporation Generating layouts for graphs of data flow applications
US10515118B2 (en) 2013-06-24 2019-12-24 Micro Focus Llc Processing a data flow graph of a hybrid flow
EP3106982B1 (en) * 2015-06-18 2021-03-10 ARM Limited Determination of branch convergence in a sequence of program instructions
US10657134B2 (en) 2015-08-05 2020-05-19 Ab Initio Technology Llc Selecting queries for execution on a stream of real-time data
US9798527B1 (en) 2017-01-06 2017-10-24 Google Inc. Loop and library fusion
CN110612513B (zh) * 2017-03-29 2024-01-30 起元技术有限责任公司 用于使用可变级并行执行数据处理操作的系统和方法
US11188434B2 (en) 2017-12-08 2021-11-30 Ab Initio Technology Llc Systems and methods for monitoring execution of structured query language (SQL) queries

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2003529808A (ja) * 1999-01-13 2003-10-07 エービー イニティオ ソフトウェア コーポレーション スクリプト駆動ツールの並列処理アプリケーション
CN101443733A (zh) * 2006-05-16 2009-05-27 起元软件有限公司 在基于图的计算中的计算资源管理
CN103699515A (zh) * 2013-12-27 2014-04-02 中国科学院计算技术研究所 一种fft并行处理装置和方法
WO2016116132A1 (en) * 2015-01-19 2016-07-28 Huawei Technologies Co., Ltd. Systems and methods for execution of algorithms on parallel heterogeneous systems

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
A Cost Evaluator for Parallel Database Systems;A. Hameurlain等;《Proceedings of the 6th International Conference on Database and ExpertSystems Applications》;第1-11 *
Parallel processing of large graphs;Tomasz Kajdanowicz等;《Future Generation Computer Systems》;第324-337页 *

Also Published As

Publication number Publication date
AU2023201414A1 (en) 2023-04-06
AU2018243278B2 (en) 2022-12-15
CA3058223A1 (en) 2018-10-04
WO2018183676A1 (en) 2018-10-04
EP3602297B1 (en) 2023-03-22
KR20190131557A (ko) 2019-11-26
SG11201908969WA (en) 2019-10-30
DE112018001789T5 (de) 2019-12-19
CN110612513A (zh) 2019-12-24
JP2020512643A (ja) 2020-04-23
JP7216654B2 (ja) 2023-02-01
KR102549994B1 (ko) 2023-06-29
AU2018243278A1 (en) 2019-10-17
ZA201906585B (en) 2024-02-28
EP3602297A1 (en) 2020-02-05
US20180285401A1 (en) 2018-10-04
US20210182263A1 (en) 2021-06-17
EP4198731A1 (en) 2023-06-21
US10817495B2 (en) 2020-10-27

Similar Documents

Publication Publication Date Title
CN110612513B (zh) 用于使用可变级并行执行数据处理操作的系统和方法
US20210374610A1 (en) Efficient duplicate detection for machine learning data sets
Wylot et al. RDF data storage and query processing schemes: A survey
CA2953826C (en) Machine learning service
AU2023270295A1 (en) Systems and methods for dataflow graph optimization
US20230093911A1 (en) Systems and methods for performing data processing operations using variable level parallelism
US12032631B2 (en) Systems and methods for dataflow graph optimization
US20230359668A1 (en) Dataflow graph datasets
Salah et al. Optimizing the data-process relationship for fast mining of frequent itemsets in mapreduce
Dendek et al. Taming the zoo-about algorithms implementation in the ecosystem of Apache Hadoop

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
REG Reference to a national code

Ref country code: HK

Ref legal event code: DE

Ref document number: 40017953

Country of ref document: HK

GR01 Patent grant
GR01 Patent grant