CN103069385A - 动态加载基于图的计算 - Google Patents

动态加载基于图的计算 Download PDF

Info

Publication number
CN103069385A
CN103069385A CN2011800392267A CN201180039226A CN103069385A CN 103069385 A CN103069385 A CN 103069385A CN 2011800392267 A CN2011800392267 A CN 2011800392267A CN 201180039226 A CN201180039226 A CN 201180039226A CN 103069385 A CN103069385 A CN 103069385A
Authority
CN
China
Prior art keywords
flow diagram
data flow
data
operation unit
assembly
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
Application number
CN2011800392267A
Other languages
English (en)
Other versions
CN103069385B (zh
Inventor
M.D.奥特博里
H.M.布罗姆利
W.梅萨德
A.波波夫
S.施米特
C.W.斯坦菲尔
J.S.沃雷三世
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
Priority to CN201611082453.9A priority Critical patent/CN107066241B/zh
Publication of CN103069385A publication Critical patent/CN103069385A/zh
Application granted granted Critical
Publication of CN103069385B publication Critical patent/CN103069385B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • 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/44Arrangements for executing specific programs
    • G06F9/445Program loading or initiating
    • G06F9/44536Selecting among different versions
    • 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/44Arrangements for executing specific programs
    • G06F9/445Program loading or initiating
    • G06F9/44521Dynamic linking or loading; Link editing at or after load time, e.g. Java class loading
    • 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/44Arrangements for executing specific programs
    • G06F9/448Execution paradigms, e.g. implementations of programming paradigms
    • G06F9/4494Execution paradigms, e.g. implementations of programming paradigms data driven

Abstract

处理数据包括:接收作业单元,每个作业单元包括一个或多个作业元素,以及响应于接收第一作业单元使用加载到数据处理系统(100)中的第一编译后的数据流图(160)处理第一作业单元。处理包括:分析以便确定第一作业单元的特征;从存储在包括至少一些被编译的编译后的数据流图的数据存储系统(107)中识别一个或多个编译后的数据流图用于处理具有确定的特征的作业单元;将识别的编译后的数据流图中的一个作为第一编译后的数据流图(160)加载到数据处理系统(100);以及从第一作业单元中的至少一个作业元素生成一个或多个输出作业元素。

Description

动态加载基于图的计算
相关申请的交叉引用
本申请要求来自通过引用合并于此的、提交于2010年6月15日的美国申请序列第61/355,129号的优先权。
技术领域
本发明涉及动态加载基于图的计算。
背景技术
采用与图的顶点相关联的计算的组件和在对应于图的链接(弧、边)的组件之间的数据流,复杂的计算经常被表示为通过有向图的数据流(被称为“数据流图”)。组件可以包括:数据处理组件,其在一个或多个输入端口接收数据,处理数据和从一个或多个输出端口提供数据;和数据集组件,其用作数据流的源或接收器(sink)。在美国专利5,966,072,EXECUTINGCOMPUTATIONS EXPRESSED AS GRAPHS(执行表示为图的计算)中描述了实施这样基于图的计算的系统。
发明内容
在总的方面,一种用于在使用存储在数据存储系统中的编译后的数据流图的数据处理系统中处理数据的方法,该方法包括:接收多个作业单元,每个作业单元包括一个或多个作业元素;以及响应于接收第一作业单元使用加载到数据处理系统中的第一编译后的数据流图处理第一作业单元。第一编译后的数据流图被编译为代表第一数据流图的数据结构,该第一数据流图包括通过代表在数据处理组件之间的作业元素的流的链接连接的代表数据处理组件的节点。处理包括分析第一作业单元以便确定第一作业单元的特征;在接收第一作业单元之前,从存储在包括至少一些被编译的编译后的数据流图的数据存储系统中的多个编译后的数据流图识别一个或多个编译后的数据流图,用于处理具有第一作业单元的确定的特征的作业单元;将识别的一个或多个编译后的数据流图中的一个加载到数据处理系统作为第一编译后的数据流图;以及使用第一数据流图从第一作业单元中的至少一个作业元素生成一个或多个输出作业元素。
方面可以包括以下特征中的一个或多个。
多个作业单元对应于接收的作业元素的流中的不同连续组的一个或多个作业元素。
多个作业单元对应于不同的各个接收的文件中的不同批的一个或多个作业元素。
加载还包括从第一编译后的数据流图获取代表第一数据流图的数据结构以及将获取的数据结构加载到第二数据流图。
在接收第一作业单元之前运行第二数据流图。
将获取的数据结构加载到第二数据流图包括在第二数据流图的包含组件中嵌入第一数据流图,该包含组件被配置为提供第一进程以便执行第一数据流图中的数据处理组件。
第二数据流图的包含组件还被配置为提供第二进程以便监视第一数据流图中的数据处理组件的执行。
响应于检测第一数据流图中的至少一个数据处理组件的失败以便正确地处理给定的作业元素,第二进程中断第一数据流图的执行而不中断第二数据流图的执行。
响应于检测在处理第一作业单元期间第一数据流图中的至少一个数据处理组件的延迟,第二进程暂停第一数据流图的执行而不中断第二数据流图的执行并且将第三数据流图嵌入在第二数据流图的包含组件中以便处理在第一作业单元之后接收的第二作业单元。
第二数据流图的包含组件还被配置为提供第一进程用来与第二进程通信的第一应用编程接口,该第一应用编程接口访问用于第一远程数据库的库。
第二数据流图的包含组件还被配置为提供第一进程用来与第三进程通信的第二应用编程接口,该第二应用编程接口访问不同于用于第一远程数据库的库的用于第二远程数据库的库。
第二数据流图的包含组件还被配置为提供与第二数据流图的多个组件兼容的第三应用编程接口。
第二数据流图的包含组件还被配置为将使用第三应用编程接口的应用调用转换为基于访问第一或第二远程数据库中的哪一个使用第一或第二应用编程接口中的选择的一个的应用调用。
将获取的数据结构加载到第二数据流图包括将第一数据流图嵌入在第二数据流图的包含组件中,嵌入包括:将从连接到包含组件的输入的链接接收的输入作业元素的流连接到第一数据流图的输入,以及将所生成的一个或多个输出作业元素连接到与包含组件的输出连接的链接。
第一数据流图包括:包括连接到第二组件的输入的至少一个输出链接的第一组件;当第一数据流图被嵌入在包含组件中时,向第二组件提供输入作业元素的指令;以及当第一数据流图没有被嵌入在包含组件中时,向第二组件提供来自存储位置的作业元素的指令。
第一数据流图包括:包括连接到第四组件的输出的至少一个输入链接的第三组件;当第一数据流图被嵌入在包含组件中时,向包含组件的输出提供来自第四组件的输出的生成的一个或多个输出作业元素的指令;以及当第一数据流图没有被嵌入在包含组件中时,向存储位置提供来自第四组件的输出的生成的一个或多个输出作业元素的指令。
第一数据流图包括多个接口组件,每个接口组件包括:当第一数据流图被嵌入在包含组件中时,用于在第一数据流图和包含组件之间发送作业元素的指令;以及当第一数据流图没有被嵌入在包含组件中时,用于在第一数据流图和存储位置之间发送作业元素的指令。
当第一数据流图被嵌入在包含组件中时,每个接口组件识别第一数据流图被连接到的包含组件的不同的对应的输入或输出端口。
在生成一个或多个输出作业元素之后,该方法还包括从第二数据流图卸载代表第一数据流图的获取的数据结构。
该方法还包括缓冲在第一作业单元到达之后以及在代表第一数据流图的获取的数据结构的卸载之前到达的作业单元中的作业元素。
该方法还包括加载加载到数据处理系统中的第二编译后的数据流图,第二编译后的数据流图被编译为代表第二数据流图的数据结构。
将识别的一个或多个编译后的数据流图中的一个作为第一编译后的数据流图加载到数据处理系统中包括,将第一数据流图嵌入在第三数据流图的第一包含组件中,以及将第二编译后的数据流图加载到数据处理系统中包括,将第二数据流图嵌入在第三数据流图的第二包含组件中。
响应于接收第一作业单元,第二编译后的数据流图被加载到数据处理系统中。
响应于在第一作业单元之后接收第二作业单元,第二编译后的数据流图被加载到数据处理系统中。
该方法还包括响应于接收第二作业单元使用加载到数据处理系统中的第二编译后的数据流图,在处理第一作业单元之后处理第二作业单元,第二编译后的数据流图被编译为代表第二数据流图的数据结构,处理包括:分析第二作业单元以便确定第二作业单元的特征;在接收第二作业单元之前,从存储在数据存储系统中的被编译的多个编译后的数据流图识别一个或多个编译后的数据流图,用于处理具有第二作业单元的确定的特征的作业单元;将识别的一个或多个编译后的数据流图中的一个作为第二编译后的数据流图加载到数据处理系统中;以及使用第二数据流图从第二作业单元中的至少一个作业元素生成一个或多个输出作业元素。
将识别的一个或多个编译后的数据流图中的一个作为第一编译后的数据流图加载到数据处理系统中包括,将第一数据流图嵌入在第三数据流图的包含组件中,以及将识别的一个或多个编译后的数据流图中的一个作为第二编译后的数据流图加载到数据处理系统中包括,将第二数据流图嵌入在第三数据流图的包含组件中。
分析第一作业单元包括读取用于包括在第一作业单元的作业元素中的编译后的数据流图的标识符。
识别一个或多个编译后的数据流图包括将标识符匹配到与一个或多个编译后的数据流图相关联的标识符。
分析第一作业单元包括识别作为第一作业单元的作业元素的特征的多个预定的类型中的一个。
识别一个或多个编译后的数据流图包括确定对应于一个或多个编译后的数据流图的数据流图被配置为处理以识别的类型为特征的作业元素。
分析第一作业单元包括识别包括在第一作业单元的作业元素中的内容的属性。
识别一个或多个编译后的数据流图包括确定对应于一个或多个编译后的数据流图的数据流图被配置为处理包括具有识别的属性的内容的作业元素。
分析第一作业单元包括确定与第一作业单元相关联的、被指定为用于第一数据流图的第一组的一个或多个参数的一个或多个值。
识别一个或多个编译后的数据流图包括确定采用绑定到匹配与第一作业单元相关联的确定的一个或多个值的各个值的第一组的一个或多个参数将识别的一个或多个编译后的数据流图编译为代表第一数据流图的数据结构。
将识别的一个或多个编译后的数据流图中的一个作为第一编译后的数据流图加载到数据处理系统中包括将第二组的一个或多个参数绑定到至少部分基于第一作业单元确定的各个值。
第二组的一个或多个参数包括至少一个参数,该参数的值包括用于提供输入作业元素的输入源的名称或用于接收输出作业元素的输出源的名称。
第一组的一个或多个参数包括至少一个参数,当代表第一数据流图的数据结构被编译为第一编译后的数据流图时,该参数的值确定是否要在该数据结构中包括一个或多个组件。
第一组的一个或多个参数包括至少一个参数,当代表第一数据流图的数据结构被编译为第一编译后的数据流图时,该参数的值确定将应用于由被包括在该数据结构中的组件处理的作业元素的变换。
该方法还包括,在接收第一作业单元之前,采用绑定到各个值的第一组的一个或多个参数从代表第一数据流图的数据结构编译第一编译后的数据流图。
该方法还包括将第一编译后的数据流图存储在数据存储系统中以及将存储的第一编译后的数据流图与指示被绑定到第一组的一个或多个参数的各个值的信息相关联。
另一方面,总的来说,一种使用存储在数据存储系统中的编译后的数据流图、用于处理数据的数据处理系统包括:输入设备或端口,其被配置为接收多个作业单元,每个作业单元包括一个或多个作业元素;以及至少一个处理器,其被配置为响应于接收第一作业单元使用加载到数据处理系统中的第一编译后的数据流图处理第一作业单元。第一编译后的数据流图被编译为代表第一数据流图的数据结构,该第一数据流图包括通过代表数据处理组件之间的作业元素的流的链接连接的代表数据处理组件的节点。处理包括:分析第一作业单元以便确定第一作业单元的特征;在接收第一作业单元之前,从存储在包括至少一些被编译的编译后的数据流图的数据存储系统中的多个编译后的数据流图识别一个或多个编译后的数据流图,用于处理具有第一作业单元的确定的特征的作业单元;将识别的一个或多个编译后的数据流图中的一个作为第一编译后的数据流图加载到数据处理系统中;以及使用第一数据流图从第一作业单元中的至少一个作业元素生成一个或多个输出作业元素。
另一方面,总的来说,使用存储在数据存储系统中的编译后的数据流图、用于处理数据的数据处理系统包括:用于接收多个作业单元的部件,每个作业单元包括一个或多个作业元素;以及响应于接收第一作业单元使用加载到数据处理系统中的第一编译后的数据流图用于处理第一作业单元的部件。第一编译后的数据流图被编译为代表第一数据流图的数据结构,该第一数据流图包括通过代表数据处理组件之间的作业元素的流的链接连接的代表数据处理组件的节点。处理包括:分析第一作业单元以便确定第一作业单元的特征;在接收第一作业单元之前,从存储在包括至少一些被编译的编译后的数据流图的数据存储系统中的多个编译后的数据流图识别一个或多个编译后的数据流图,用于处理具有第一作业单元的确定的特征的作业单元;将识别的一个或多个编译后的数据流图中的一个作为第一编译后的数据流图加载到数据处理系统中;以及使用第一数据流图从第一作业单元中的至少一个作业元素生成一个或多个输出作业元素。
另一方面,总的来说,计算机可读介质存储用于处理使用存储在数据存储系统中的编译后的数据流图的数据处理系统中的数据的计算机程序。计算机程序包括指令,其使得计算机:接收多个作业单元,每个作业单元包括一个或多个作业元素;并且响应于接收第一作业单元,使用加载到数据处理系统中的第一编译后的数据流图处理第一作业单元。第一编译后的数据流图被编译为代表第一数据流图的数据结构,该第一数据流图包括通过代表数据处理组件之间的作业元素的流的链接连接的代表数据处理组件的节点。处理包括:分析第一作业单元以便确定第一作业单元的特征;在接收第一作业单元之前,从存储在包括至少一些被编译的编译后的数据流图的数据存储系统中的多个编译后的数据流图识别一个或多个编译后的数据流图,用于处理具有第一作业单元的确定的特征的作业单元;将识别的一个或多个编译后的数据流图中的一个作为第一编译后的数据流图加载到数据处理系统中;以及使用第一数据流图从第一作业单元中的至少一个作业元素生成一个或多个输出作业元素。
本发明的方面可以包括一个或多个以下的优点。
可以以不同的方式配置使用数据流图的数据处理系统以便处理由单个作业元素构成的数据的输入流。每个作业元素可以代表分开的作业单元,或一系列多个作业元素可以代表作业单元。在此描述的技术可以被用于这样的系统的各种配置。一些配置对具有某个特征的数据流中的作业单元可能是更适当的。在一些情况下,作业单元中的一个或多个作业元素被提供到数据流图用于作为批处理(例如,由在相同的输入文件中的记录组成的作业元素的批),其中对一次的单个批数据流图将作业元素的数据流从一个或多个输入端口传递到一个或多个输出端口。从下流组件的输出端口提供的(并且可选地存储在数据集组件中的)一系列“输出作业元素”代表处理提供到输入端口的一系列“输入作业元素”的结果。在批处理的一个形式中,当批的第一输入作业元素准备好时数据流图开始,并且在提供最后的输出作业元素之后数据流图终止。在批处理的另一形式中,数据流图继续从一个批运行到下一批,同时确保在处理来自该下一批的第一输入作业元素之前输出来自前一批的最后的输出作业元素。在此批处理的后一形式中,可以存在被分割成作业单元的作业元素的连续流,每个作业单元由代表批的一个或多个作业元素组成。在此描述的一些技术示出如何响应于检测与接收的作业单元相关联的预定的特征动态加载给定的数据流图。如以下更详细地描述的,在一些情况下特征基于作业单元的内容(例如,文件的格式),并且在一些情况下特征基于与作业单元相关联的参数值(例如,确定是否将包括特定的条件组件的参数)。
在一些配置中,数据处理系统可以执行数据流图以便处理批处理数据使得运行相对短时间(例如,按秒的顺序)的数据流图处理给定的批处理数据。如果由选择的(例如,从数据流图的集合中选择的)数据流图处理许多小批,如果选择的数据流图的执行时间不由“开始时间”(从图的开始加载图和图准备开始处理批处理数据所花费的时间)主导。例如,如果数据流图的开始时间大约是五秒并且花费大约五秒来处理批处理数据,则仅一半的执行时间被用于有用的数据处理。在一些情况下,如果批很少到达(例如,在此示例中的每隔几分钟)处理时间和执行时间的这个低比率可能不影响整体效率。然而,如果批相对频繁的到达(例如,在此示例中的每隔几秒),则开始时间可以严重影响整体效率。如在此描述的,通过将在开始时间期间执行的一些任务移动到更早的编译阶段可以提高性能。
在一些配置中,数据处理系统可以执行数据流图以便处理数据的连续流使得数据流图连续运行处理数据的流中的一系列作业元素。作业元素可以被分为由一个或多个作业元素组成的作业单元,并且可能需要通过诸如批的不同的数据流图处理每个作业单元。如果按需将不同的数据流图动态加载到运行的容器图中(例如,相对于保持所有不同的数据流图独立运行,或将它们结合到单个大数据流图),可以显著地提高性能。例如,作业单元可以由给定类型的单个消息组成。一些类型的消息可以比其他的更频繁。因此,通过加载适当的数据流图以便处理给定类型的消息(而不是对所有不同类型的消息同时运行所有数据流图),可以为其他目的释放用于保持更少使用的数据流图运行的资源。此外,保持数据流图分开而不是将它们合并为大数据流图提供模块化,模块化使能用于不同类型的消息的定制数据流图的简单设计并且基于容器图的检查促进整个系统的开发者的理解。开发者通过改变对应的数据流图可以容易地改变如何处理一些类型的消息,并且在添加或移除消息类型时,可以容易地添加或移除数据流图。
在此描述的技术可以用于编译用于处理接收的批处理数据的可以在运行时采用适当的参数值动态加载的数据流图的不同的定制的版本。在一些实施中,编译后的数据流图可以被用作在包含数据流图运行时可以动态加载到该包含数据流图中的“微图”(micrograph),和可以从该包含数据流图中动态卸载的“微图”。在通过数据流图处理数据的连续流时,微图提供有效的方式以便作为批处理在该数据的连续流中的不同的作业单元。在一些情况下,如以下更详细描述的,使用用于加载微图的专用组件将微图加载为包含数据流图中的子图。用于编译数据流图(包括微图)的技术使得一些开始过程能够被提前执行,同时响应于接收的批处理数据(包括在数据的流中的作业单元)通过在数据流图的不同的编译后的版本中选择在运行时仍然允许灵活性。
从以下描述和从权利要求中本发明的其他特点和优点将变得显而易见。
附图说明
图1是其中执行数据流图的系统的示例布置的框图。
图2是包括微图的示例数据流图的说明图。
图3A是示例专用组件的说明图。
图3B是示例微图的说明图。
图4是在存储器中具有多个微图的示例专用组件的说明图。
图5A是具有处理数据流的多个微图的示例专用组件的说明图。
图5B是具有多个专用组件的示例数据流图的说明图。
图6是包括前置处理组件和后置处理组件的示例专用组件的框图。
图7是多个数据流组件的示例的说明图,每个数据流组件与单个数据库交互。
图8是与多个数据库交互的示例数据流组件的说明图。
图9A是与多个数据库交互的示例数据流组件的说明图。
图9B是使用公共协议层与多个数据库交互的示例数据流组件的说明图。
图10是其中在运行时间之前编译数据流图的系统的示例布置的框图。
具体实施方式
图1示出了示例数据处理系统100,其中可以使用动态加载技术。系统100包括数据源101,该数据源101可以包括数据的一个或多个源,例如存储设备或到在线数据流(online data stream)的连接,其中的每一个可以以各种存储格式中的任意一种存储数据(例如,数据库表、电子表格文件、纯文本文件或由主机使用的本地格式)。执行环境104包括预执行模块105和执行模块106。执行环境104可以被托管在诸如UNIX操作系统的适当的操作系统控制下的一个或多个通用计算机上。例如,执行环境104可以包括多节点并行计算环境,该多节点并行计算环境包括使用多中央处理单元(CPU)的计算机系统的配置,该中央处理单元要么是本地的(例如,诸如SMP计算机的多处理器系统)要么是本地分布的(例如耦接为集群或MPP的多处理器),要么是远程的,要么是远程分布的(例如经由局域网(LAN)和/或广域网(WAN)耦接的多处理器),要么是它们的任意组合。
预执行模块105被配置为执行各种任务以准备执行数据流图和诸如编译的数据流图的其他可执行程序,将编译后的数据流图存储到执行环境104可访问的存储系统107或从该存储系统107加载编译后的数据流图,或求解参数值并且将求解后的值绑定到参数。在一些情况下,预执行模块105响应于来自数据源101的数据执行任务(例如加载编译后的数据流图)。提供数据源101的存储设备可以对执行环境104是本地的,例如被存储在连接到运行执行环境104的计算机的存储介质上(例如硬盘驱动器102),或可以对执行环境104是远程的,例如被托管在经由远程连接与运行执行环境104的计算机通信的远程系统上(例如主机103)。
执行模块106使用由预执行模块105生成的编译后的数据流图以便生成输出数据,可以将该输出数据提供回数据源101和/或存储在数据存储系统107中。数据存储系统107还可被开发环境108访问,在开发环境108中开发者109能够设计数据流图。代表数据流图的数据结构可以被序列化并且存储在数据存储系统107中。
执行模块106可以从包括不同形式的数据库系统的各种类型的数据源101的系统接收数据。数据可以被组织为具有可能包括空值的用于各个字段(也被称为“属性”或“列”)的值的记录。当从数据源读取数据时,执行的数据流图可以包括处理数据源中的关于记录的初始格式信息的组件。在一些情况下,最初可以不知道数据源的记录结构而是在数据源的分析之后确定数据源的记录结构。关于记录的初始信息可以包括代表不同的值的比特数、在记录中的字段的顺序和由比特代表的值的类型(例如字符串、有符号/无符号整数)。
参考图2,由执行模块106执行的数据流图155的示例允许来自输入数据源110的数据被读取和被处理为离散作业元素的流。在被表示为图的顶点(或节点)的组件120、130和由图的链接(或弧、边)(例如连接组件120和130的链接125)表示的组件之间的数据流中,执行涉及处理作业元素的计算的不同部分。在通过引用合并于此的美国专利5,566,072,EXECUTINGCOMPUTATIONS EXPRESSED AS GRAPHS中描述实施这样的基于图的计算的系统。依照此系统做成的数据流图提供用于使信息进入和离开由图组件代表的单个进程的方法,用于在进程之间移动信息的方法和用于定义进程的运行顺序的方法。此系统包括选择进程间通信方法的算法(例如,根据图的链接的通信路径可以使用TCP/IP或UNIX域套接字,或使用共享存储器以便在进程之间传递数据)。
准备用于执行的未编译的数据流图的进程包括各种阶段。随同与提供在编译过程中使用的值的数据流图相关联的任何参数一起获取数据流图的未编译的表示。在静态参数求解阶段期间,求解静态参数(在运行时之前其值被指定用于求解)并且将解析后的值绑定到静态参数。在一些情况下,为了解析静态参数的值,执行计算以便导出某个值(例如,如在通过引用合并于此的命名为“MANAGING METADATA FOR GRAPH-BASED COMPUTATIONS(管理用于基于图的计算的元数据)”的美国公开第2006/0294150号中描述的元数据值)。一些参数可以被指定为没有被解析以便稍后或紧挨着运行之前解析的动态参数。例如基于静态参数值,如果没有满足(或满足)预定的条件,则从图中移除被指定为条件组件的组件(例如通过由数据流链接替代)。在编译阶段期间,生成代表数据流图的数据结构,数据流图包括其组件和链接,在执行期间将使用该数据结构。编译还可以包括将采用脚本语言的嵌入的脚本编译为字节码或机器码。在运行时,将与数据流图相关联的任何动态参数绑定到解析后的值,并且通过开始一个或多个进程、打开任何需要的文件(例如通过动态参数识别的文件)、和/或链接任何动态库启动(launch)编译后的数据流图的数据结构。进程还执行任务以便设置由链接代表的数据流(例如分配共享存储器或打开TCP/IP串流)。在一些情况下,如在通过引用合并于此的命名为“MANAGING COMPUTING RESOURCES INGRAPH-BASED COMPUTATIONS(管理基于图的计算中的计算资源)”的美国公开第2007/0271381号中描述的,数据结构被配置为在单个进程中执行多个组件。
可以以各种抽象层级指定数据流图。“子图”本身是包含组件和链接的数据流图,子图可以在另一包含数据流图中被表示为仅显示将子图连接到包含数据流图的那些链接的单个组件。在一些情况下,显然,子图被用于隐藏在开发环境108中的包含数据流图的组件和链接,但是在包含数据流图中已经整合了代表组件和链接的数据。在一些实施例中,如以下更详细地描述的,子图最初没有被包括在包含数据流图中,而是稍后从开始作为编译后的数据流图的“微图”导出子图,该编译后的数据流图包括代表将被加载到包含数据流图中的组件和链接的数据结构。
再次参考图2,数据流图155能够从数据源接受输入数据的连续流,在此示例中由数据集组件110代表该数据源。数据的流在这个意义上是连续的,即,即使在数据流图155的操作期间数据的流可以变大和变小,然而数据的流也不一定有可分辨的开始或结束,例如信用卡交易的流或在进入系统中接收的顺序。此外,数据流图155能够将输出数据的连续流提供到输出数据储存库,在此示例中该输出数据储存库由数据集组件140表示。一些数据流图被设计用于作为连续数据流图执行,该连续数据流图在不确定的一段时间中处理数据的连续流,并且一些数据流图被设计用于作为批数据流图执行,该批数据流图开始执行以便处理数据的离散批并接着在处理该批之后终止执行。数据流图的数据处理组件120和130可以包含一系列的指令、子图或它们的一些组合。
在一些布置中,专用组件130可以加载微图160,微图160是专用种类的子图,其被配置为被动态获取并且被嵌入在包含数据流图中。可以将微图动态地嵌入在诸如专用组件130的包含数据流图的包含组件中。在一些布置中,从预先编译并且存储在数据存储系统107中的数据流图获得微图160。在一些布置中,当从数据存储系统107加载时,微图160保持处于未编译的形式。例如,专用组件130可以初始化图编译过程以便使得包含专用组件130的数据流图能够正好在使用之前执行被编译的微图,而不是加载编译后的数据流图。可以在专用组件130之外执行图编译过程,或在专用组件130中执行图编译过程。在一些布置中,在被存储在数据存储系统107中之前微图160被序列化。一般地,序列化是这样的进程,通过该过程将采用编译后或未编译表示的数据流图转换为零和一的二进制流使得数据流图为可以容易地被存储在持久性存储器或存储缓冲器中的格式。在微图的快速加载是可取的实施中,典型地将数据流图序列化为具有数据结构的编译后的表示并且将数据流图存储在数据存储系统107中,使得可以容易地获取序列化的编译后的数据流图并且在运行时动态去序列化和加载数据结构。编译是这样的过程,通过该过程准备由计算机执行包括被表示为数据流图的程序的计算机程序。编译可以导致机器码、或在计算机上准备好被执行的指令或诸如Java字节码的由在计算机上执行的虚拟机执行的中间代码的生成。在数据流图的情况下,编译包括以在计算机上准备好被执行的形式代表数据流图的组件和链接的数据结构的生成。
在专用组件130加载微图160并且将微图160整合到数据流图155中的同时,沿专用组件130的进入链接125流过数据流图155的数据被临时存储在缓冲器中。类似地,在从数据流图155分离和卸载微图时,允许数据流在缓冲器中累积。在一些布置中,分离后的微图可以保持加载在存储器中以便稍后访问(例如,使用高速缓存机制)。
缓冲可以被配置为使用流控制机制,使用用于向组件提供作业元素的输入流的链接的输入队列来实施该流控制机制。此流控制机制允许数据在数据流图的组件之间流动而不必被写到诸如磁盘驱动的通常大而慢的非易失性本地存储器中。输入队列可以被保持为足够小以便在通常比非易失性存储器小和快的易失性存储器中保持作业元素。甚至对非常大的数据集存在存储空间和时间的此潜在节约。组件可以使用输出缓冲器而不是输入队列,或除了输入队列之外组件可以使用输出缓冲器。当两个组件通过流连接时,只要下游组件保持消耗作业元素,上游组件就发送作业元素到下游组件。如果下游组件落后,上游组件将填充下游组件的输入队列并且停止工作直到输入队列再次清除。
在一些布置中,作为批数据流图的部分,由调度进程在调度的基础上执行微图160,或根据命令行执行微图160,并且微图160不一定被加载到包含数据流图的专用组件中。可选地,通过发送消息到向包含专用组件的运行的数据流图来提供消息的连续流的队列,调度器可以使用专用组件以便启动用于批处理的微图,该专用组件将响应于来自队列的消息加载适当的微图。
2专用组件
参考图3A,在一个实施例中,专用组件200被配置为接受多个输入205、210、215和传递多个输出220、225、230和235。输入包括数据输入205、210和控制输入215。输出包括数据输出220、225、230和状态输出235。控制输入215接受要运行的微图240的标识符(例如在接收的控制元素中),并且可选地接受用于运行微图240的一组参数。一般地,专用组件200可以通过各个数据输入端口(例如数据输入205、210)接受零个或多个输入作业元素的流。状态输出235根据来自微图240的执行产生包括退出状态的状态记录和追踪信息。此外,专用组件通过各个数据输出端口(例如数据输出220、225和230)产生零个或多个输出作业元素的流。在一个实施例中,在正常执行期间专用组件200产生一个状态记录并且接受一个控制记录。
控制输入215可以接收一系列的多个控制元素,每个控制元素识别将加载的对应的微图。每个控制输入元素与通过数据输入接收的作业元素的流中的作业元素的不同的子集相关联,该作业元素的不同的子集代表通过识别的微图处理的作业单元。在一些情况下,基于分析作业单元中的一个或多个作业元素生成识别微图的控制元素以便选择适当的微图以便处理该作业单元。在一些情况下,独立接收并且使用各种技术中的任何一种相互匹配识别微图的控制元素和代表将通过识别的微图处理的作业单元的作业元素。例如,首先接收识别微图的控制元素,并且通过将出现在作业单元的至少一个作业元素中的键值与对应的控制元素匹配来确定代表将通过识别的微图处理的作业单元的作业元素(例如作业单元中的正好第一作业元素,或作业单元中的每个作业元素)。可选地,被称为“分隔符作业元素”的作业元素可以用作分隔属于相同作业单元的作业元素的不同序列的分隔符。可选地,专用组件200被配置为接收预定数量的作业元素,其中所述预定数量的作业元素属于与各个控制元素相关联的连续作业单元。
可以从已被设计为与专用组件200兼容的微图集中选择微图240。例如,微图240的输入端口和输出端口的数量可以与专用组件200的输入端口和输出端口的数量匹配。在此示例中,微图240有两个输入端口和三个输出端口,该两个输入端口和三个输出端口可以位于被配置为接收输入流的微图240的两个不同的组件上和被配置为提供输出流的微图240的三个不同的组件上。可选地,微图240的多个输入或输出端口可以位于相同的组件上。
在一些实施例中,专用组件200对于预定的条件监视微图240并且可以响应于那些条件。例如,专用组件200可以使用单独的进程来监视执行微图240的组件的进程以便确定在微图240的执行期间的延迟是否超过最大阈值或达到超时条件。例如,作为响应,专用组件200可以通过加载微图240的第二实例响应于该条件。类似地,监视错误条件。响应于检测错误条件,专用组件200可以记录错误,基于错误条件重定向作业单元,并且如果需要,可以重新开始微图240并且经由状态输出235报告错误。微图240的重新开始不需要中断包括其中包含专用组件200的数据流图的任何其他组件。
在一些实施例中,专用组件200分析输入端口上的数据流以便确定执行哪个微图240。在其他实施例中,作为数据流的部分将要运行的微图240的名称或其他识别信息提供到专用组件200。在又一实施例中,通过专用组件200的控制输入215提供识别微图240的信息。
如以下更详细地描述的,专用组件200从数据存储系统107加载微图240,将微图240嵌入到包含专用组件200的数据流图中,并且允许微图240处理数据流。
当操作完成时,专用组件200移除微图240。在一些实施例中,专用组件200可以将微图240存储微图高速缓存中、存储在从其比从数据存储系统107相对更容易访问的位置中,用于稍后访问。在一些实施例中,在加载、整合和移除微图240的同时专用组件200可以缓冲进来的数据。
3微图结构
参考图3B,微图240的示例包括数据处理组件305、310、315和320,该数据处理组件对到达链接到上流组件的一个或多个输入端口的数据流中的输入作业元素执行操作,并且产生离开链接到下游组件的一个或多个输出端口的数据流中的输出作业元素。微图240还包括被配置为便利将微图240嵌入到专用组件200的进程的、被称为“接口组件”的组件300A、300B和302A、302B、302C。接口组件还使得微图能够作为不需要嵌入到专用组件以便运行的独立的数据流图被运行。
接口组件被用于将微图连接到包含专用组件的端口。将微图嵌入到专用组件涉及确定如何将每个接口组件与专用组件的正确端口配对。输入接口组件(300A、300B)有输出端口并且输出接口组件(302A、302B、302C)有输入端口。当输入接口组件与专用组件的输入端口配对时,输入端口和输入接口组件的输出端口链接到的端口之间生成数据流链接。类似地,当输出接口组件与专用组件的输出端口配对时,在输出接口组件的输入端口链接到的端口和输出端口之间生成数据流图。
接口组件和它们的各个专用组件输入和输出端口的正确配对可以确定如下。可以可选地以标识符标识接口组件和专用组件的端口。如果在分配到专用组件的输入/输出端口的标识符和分配到输入/输出接口组件的标识符之间存在匹配,则将配对该端口和该接口组件。标识符之间的匹配可以是精确的或不精确的(例如在标识符的一些前缀或后缀之间寻找匹配)。在一配对过程中,在确定精确匹配之后,具有数字后缀的接口组件与具有匹配的数字后缀的端口相匹配(例如将专用组件的“out1”端口与“微图输出-1”的接口组件配对)。
当在专用组件之外执行微图时(例如响应于来自用于测试的开发环境108的命令),接口组件提供数据集组件的功能,提供连接到接口组件的输出或输入端口的链接上的数据流中的作业元素的源或接收器。基于是否在专用组件中嵌入微图确定适当的功能。每个接口组件包括当在专用组件中嵌入微图时用于在微图和专用组件之间发送作业元素的指令,和当在专用组件中没有嵌入微图时用于在微图和存储位置之间发送作业元素的指令。存储位置可以是被读取以便提供输入作业元素或被写入以便接收输出作业元素的文件。
在一些实施例中,通过将某些限制置于可以被包括在微图中的数据处理组件(在此示例中,组件305、310、315和320)的功能上配置微图240。例如,在一些实施例中,可能需要微图240的数据处理组件305、310、315和320能够在单个进程中运行(例如,如在通过引用合并于此的美国公开第2007/0271381号中更详细地描述的,通过被封入单个进程中)。在一些实施例中,微图不支持从订阅源(例如队列)接收数据的订阅者组件。在一些实施例中,可能需要微图被配置为批数据流图。在一些实施例中,由微图240执行的任何事务性(transactional)操作必须适合单个事务。在其他实施例中,通过控制输入215控制微图240的事务性方面(例如检查点、事务性内容和多阶段提交)。
在数据流图处理中,数据的连续流可以影响传统的事务性语义。检查点操作涉及在数据流中的点上存储足够的状态信息以便使数据流图能够从数据流中的该点重新开始。如果太频繁地采取检查点,则性能降低。如果太不频繁地采取检查点,则在事务性失败的情况下的恢复过程变得更复杂并且资源密集。事务性上下文可以被用于通知微图它的操作是更大的事务的一部分。此事务可以是包含与单个数据源相反的多个组件的更大的事务,或可以包括协调跨越多个数据源的事务(例如,在两阶段提交操作中)所需要的信息。
4微图管理
参开图4,在一个实施例中,专用组件405一次可以有一个以上被加载到专用组件可访问的高速缓存中(例如存储在本地存储器中)的微图。在此示例中,将一个微图430连接到包括专用组件405的数据流图中。通过到微图430的输入445的链接连接专用组件405的输入440并且通过到专用组件405的输出455连接专用微图430的输出450。例如,微图430的输入440和输出450代表输入和输出接口组件或用于嵌入微图到专用组件中的任何其他机制。
存储其他微图410、415、420和425的高速缓存可以位于存储连接的微图430的相同存储器中。在一些实施例中,微图410、415、420、425和430能够在运行专用组件405的相同进程中作为线程或作为该进程的子进程执行。可选地,可以在该进程的相同主线程中执行微图410、415、420、425和430。在一些实施例中,专用组件405运行微图410、415、420、425和430的多个副本。在一些实施例中,除非存储在高速缓存中的选择的微图的副本被标记为“污损”(指示在原始微图中有改变),在访问存储在数据存储系统107的原始微图之前专用组件405使用该副本。当选择的微图的副本不在高速缓存中时,专用组件405从数据存储系统107加载微图。在一些实施例中,选择的微图被指示(例如,通过高速缓存中的条目)为处于“离线”状态中,指示选择的微图目前无法使用(例如,微图可能在由开发者修改的进程中)。作为响应,专用组件可以指示在加载选择的微图中的错误,或可以加载代替微图(例如,有相似能力的不同微图)。
参考图5A,在一个场景中,单个专用组件505有同时整合到数据流中的多个微图510、515和520。使用将来自输入数据流的作业元素拆分到多个数据流的拆分组件557,专用组件505的输入端口525被分别连接到微图520、515和510的输入530、545和555。使用聚集来自多个数据流的作业元素并且将它们合并到单个输出数据流的组件562(被称为“聚集组件”),微图的输出535、550和560被连接到专用组件505的输出540端口。在此配置中,专用组件505能够将进来的数据路由到微图510、515和520。例如,当组件是相同微图的分离的副本时,当执行拆分时专用组件505可以使用加载平衡算法(例如循环、最少使用等)。
参考图5B,在另一场景中,数据流图565包括多个专用组件,使微图的灵活组合能够被布置在高度可定制的容器数据流图中。在此示例中,首先由数据处理组件572处理来自数据集组件570的作业元素(其可以代表输入数据批或输入数据的连续串流),接着经由链接574将该作业元素发送到第一专用组件576。响应于检测作业元素的特定类型,组件576加载被配置用于处理具有所检测的类型的作业元素的微图578。接着将来自第一专用组件576的处理后的输出作业元素发送到加载微图582的第二专用组件580。在此布置中,被选择用于加载到第二专用组件580中的微图582可以取决于第一选择的微图578的结果。将作为结果的输出作业元素发送到数据集组件584。使用数据流图中的关键位置中的专用组件可以动态地加载不同微图的大量组合。在此简单示例中,如果存在可以被加载到第一专用组件576中的10个不同的可能的微图和可以被加载到第二专用组件580中的10个不同的可能的微图,则已相较于将数据流拆分到100个不同的运行数据流图需要的可能少得多的资源,并且以相较于为每个作业单元开始100个不同的数据流图中的一个可能更快的延迟,存在在处理数据流的同时可以按需被动态构造的多达100个不同的数据流图。
5前置处理和后置处理
专用组件可以包括除了在加载的微图中的组件之外的其他组件。参考图6,在一个实施例中,专用组件605包括在执行微图之前的前置处理,和在执行微图之后的后置处理(在图中表示为围绕微图615的前置处理组件610和后置处理组件620)。例如,前置处理和后置处理活动可以涉及到事务管理。在一些实施例中,每个微图615代表单独的事务,在该情况下前置处理可以开始事务并且后置处理可以结束事务。在其他实施例中,微图615可以是使用两阶段提交协议的更长事务的部分。例如,可以使用多个不同的微图或相同微图的多个执行处理这样的事务。
前置处理组件610可以从数据存储(未示出)加载微图615并且可能将加载的微图存储在数据高速缓存中用于稍后访问或访问来自存储器中的高速缓存的微图的加载的版本并且将该微图的加载的版本整合到专用组件605。后置处理组件620可以以专用组件605的数据流从微图615的整合中移除加载的微图615。例如,可以执行多个其他前置处理和后置处理功能包括,通过准备在数据流中的记录的前置处理用于由微图615的处理(例如,重新格式化记录),和通过准备从微图615接收的记录的后置处理用于由连接到专用组件605的输出的组件的处理(例如,通过重新格式化记录)。
6数据库连接管理
参考图7,在一些场景中,需要不同的组件能够访问不同类型的数据库。例如,需要组件702访问由一个供应商提供的数据库706,然而需要另一组件704访问由另一供应商提供的数据库708。一般地,组件702将通过访问整合到组件的库710(例如,由数据库706的供应商提供的库)访问数据库706。类似地,组件704将通过访问整合到组件的另一库712(例如,由数据库708的供应商提供的库)访问数据库708。可以将库编译到特定的组件,或可以将库动态链接到特定的组件。
参考图8,专用组件802可以包括多个不同的微图804、806和808。在此示例中,将微图808嵌入在专用组件802中,并且将微图804和806加载到可访问的高速缓存中以便必要时动态嵌入微图804和806。一些微图可以访问一个数据库706并且其他微图可以访问另一数据库708。传统地,访问两个数据库可以需要库710支持第一数据库706并且另一库712支持将与专用组件802整合的其他数据库708。整合多个不同的数据库库可以导致与专用组件802相关联的二进制文件的增加的大小,以及如果由供应商提供的一个库710与由不同的供应商提供的另一库712不兼容可以导致不可预知的行为。例如,不兼容可以包括冲突的符号名或不同的编译模型。
避免不兼容和/或减少二进制文件的大小的一种方法是从专用组件中移除库,并且相反地,使这些库通过来自执行专用组件的进程的单独的计算机进程被访问。参考图9A,从专用组件902中移除数据库库710和712(例如,不是编译后的或动态链接到组件902)。微图组件904、906和908通过经由客户端/服务器接口访问库710、712来访问数据库706、708。为了访问库710、712,专用组件902使用整合的客户端存根910,该客户端存根910使用进程间通信与在外部进程中运行的配对的服务器存根912通信。例如,外部进程和专用组件902可以通过访问共享存储器段交换数据。类似地,为了访问运行服务器存根920的外部进程,专用组件902使用另一整合的客户端存根918,该客户端存根918使用进程间通信与运行外部进程的服务器存根920通信。
服务器存根912与数据库库710整合以便提供到数据库706的访问。类似地,服务器存根920与数据库库712整合以便提供到数据库708的访问。一般地,客户端存根910、918有比数据库库710、712更小的存储器占用(memory footprint),因此允许专用组件使用更少的存储器资源。此外,因为数据库库已被移出专用组件902,没有数据库库710、712之间的不兼容的风险。
参考图9B,在一些实施例中,客户端存根910、918和服务器存根912、920被配置为密切反应数据库库710、712的各个应用编程接口(API)。为了将微图904、906和908从不同的库API中隔离,将抽象层930整合到专用组件902中。抽象层930在微图中提供多个不同的组件,该微图可能需要以单个API访问不同的数据库,以该单个API执行独立于用于那些数据库的数据库库之间的差异的标准数据库操作。在一些实施例中,抽象层930将请求从微图的组件转变为到客户端存根910、918的库专用的API的具体调用。在一些实施例中,抽象层930作为通用调用从微图组件传递请求,并且每个客户端存根被配置为执行从通用调用到到该各个服务器存根的API的库专用调用的转变。
7编译和参数
参考图10,在一个实施例中,数据流图编译和执行系统1000包括数据流图编译器1015、参数分析器1030、数据流图加载器1035和数据流图执行引擎1040。编译器1015基于来自参数组数据存储1005的参数组中的参数处理来自未编译的数据流图数据存储1010的包括微图的未编译的数据流图。与给定的参数相关联的值可以确定数据流图的各种特征中的任意特征。编译器1015使用来自参数组的值编译数据流图以便生成编译后的数据流图。编译后的数据流图被存储在编译后的数据流图数据存储1020中。例如,数据存储1010和1020可以被托管在数据存储系统107中。例如,可以作为预执行模块105的部分实施编译器1015、参数分析器1030和加载器1035。可以作为执行模块106的部分实施执行引擎1040。
参数组数据存储1005包含多个参数组并且每个参数组可以与数据流图相关联。参数组包括一组参数元素。这些元素包含参数的名称和表达式,当计算该表达式(例如,通过执行计算以及在有些情况下,通过找到其他引用的参数的值)时其被求解为绑定到参数的值。每个未编译的数据流图可以与一个或多个参数组相关联。一些参数可以影响编译进程。例如,一些参数可以影响是否将某个条件组件包括在数据流图的编译后的版本中。一些参数可以影响编译后的数据流图的加载和启动。例如,参数的值可以是到存储在计算机上的文件的路径,或将与包含输入数据或作为输出数据的目标的数据集组件相关联的存储位置(例如代表数据库中的表的存储位置)的名称。参数的值可以确定给定的组件需要运行多少并行的方式。参数的值可以确定组件之间的链接的数据流是否越过不同处理器和/或运行链接的组件的计算机之间的边界,如果是这样则使得分配TCP/IP流而不是共享存储器流。在一些场景中,参数的值可以取决于于其他参数。例如,货币转换查找文件的名称可以取决于于指定日期的参数。
一般地,根据基于上下文的用于参数的范围的规则将参数绑定到值。给定的参数在第一上下文中可以有一个值并且在另一上下文中可以有不同的值。可以在编译期间(例如,如果参数可以影响编译过程,则由编译器1015)、在运行时(例如,当加载器1035将编译后的数据流图数据结构加载到用于执行引擎1040的存储器中时)、在执行数据流图的同时(例如,延迟提供文件名的参数被求解直到正好在文件被读取或写入之前)或在一些不同时间的组合的情况下将参数绑定到值。例如,可以由用户经由用户接口(例如,响应于提示)定义参数的值,根据包括在数据源中的文件定义或以相同上下文或不同上下文中的另一参数的方式定义。例如,可以通过指定参数拥有到另一参数的“相同”关系从不同的上下文中引入参数。
可以在诸如编译期间的接收任何输入数据之前绑定拥有数据流图的参数(例如由编译器1015)。在数据流图的编译之前或期间绑定的这样的参数被称为“静态参数”。还可以响应于诸如正好在运行时之前(例如,由加载器1035响应于接收新的数据批或在数据的流中的开始的作业单元)或运行时期间(例如,由执行引擎1040响应于加载新的微图以便处理数据的流中的新的作业单元)接收新的输入数据,绑定用于数据流图的参数。在数据流图的编译之后并且更接近运行时被绑定的这样的参数被称为“动态参数”。在一些情况下,对每个新的批处理数据或数据流中的作业单元不需要重新计算动态参数。在编译图时通常计算静态参数并且静态参数可以影响编译后的数据流图。然而,例如如果编译到运行时为止没有发生,则还可以在运行时计算静态参数。因为在运行时计算动态参数并且可以促成开始数据流图的整体延迟,在一些实施例中,可以通过限制动态参数的能力优化动态参数计算。例如,动态参数可以被限制为具体的数据类型(例如字符串),在某个表达式中它们可以不被引用,并且可以有更多的受限制的绑定(例如,通过“相同”绑定不直接引用或间接引用)。然而,在其他实施例中,动态参数可以不受限于它们的功能并且就像其他参数一样被利用。
有各种方式使得编译器1015能够在编译过程期间区分静态和动态参数。一个技术使用用于参数组中的动态参数的标记或特殊语法,用信号通知编译器动态参数应该维持未绑定。另一技术分隔参数组的静态和动态参数,并且仅将静态参数的子集提供到编译器1015。动态参数的子集接着在运行时被提供到加载器1035。即使编译器1015没有将动态参数绑定到求解后的值,编译器1015仍然可以被配置为在编译期间检查动态参数(例如,用于非法语法或其他错误)。给定的表达式可以包括静态和动态参数引用两者。例如,可以通过编译器1015求解静态目录名参数,但是可以将动态文件名参数维持为未求解的,并且因为未求解的动态参数被识别为动态参数,编译器1015可以在编译过程期间保存未求解的动态参数引用。
在一些场景中,参数的存在或值可以影响数据流图中的组件的拓扑结构和/或连通性。参数可以指示由一个或多个组件执行的操作在图的特定执行期间是不被执行的。当在两个不同的数据源上使用相同的数据流图时,这可以是特别相关的。例如,一个数据源可以采用第一格式(例如UTF-8)并且另一源可以包含采用对至少一些符号使用不同编码的第二格式的文本。处理两个数据源的数据流图可能需要将采用第二格式的文本变换为UTF-8格式。然而,当访问UTF-8数据源时,不需要变换。可以使用参数来通知数据流图数据已经是UTF-8格式并且可以绕过变换组件。在一些布置中,基于参数值的条件组件的排除可以导致移除条件组件并且将条件组件替换为编译后的数据流图中的数据流。可以在通过引用合并于此的美国专利第7,164,422号中找到条件组件的额外描述。
再次参考图10,编译器1015从未编译的数据流图数据存储1010中获得未编译的数据流图。编译器1015从参数组数据存储1005获得将用于编译数据流图的参数组。在一些情况下,多个不同的参数组可以被用于给定的数据流图,并且对每个参数组,图编译器1015能够编译未编译的数据流图的对应版本。数据流图的每个编译后的版本可以包括或排除基于参数组中的参数的值的一些组件或其它可执行的语句。例如,当序列化编译后的数据流图时,编译后的数据流图与来自用于生成编译后的数据流图的参数组的绑定的参数值相关联。编译后的数据流图使用多个不同的机制中的任意机制(例如,查找表、数据库中的外键到主键的关系等)与来自相关联的参数组的参数值相关联。例如,使用任何文件系统或能够进行读取和写入操作的数据库,可以实施编译后的数据流图数据存储1020。
在数据流图期间(在运行时),数据从输入数据源1025进入系统。输入数据源1025可以包括各种单独的数据源,每个数据源可以有唯一的存储格式和接口(例如,数据库表、电子表格文件、纯文本文件或由主机使用的本地格式)。单独的数据源对系统1000可以是本地的(例如,被托管在相同的计算机系统上(例如文件)),或可以对系统1000是远程的(例如,被托管在经由局域或广域数据网访问的远程计算机上)。
参数分析器1030和加载器1035使数据流图能够从存储的编译后的数据流图快速加载,避免可能地冗长的编译过程,而在运行时响应于接收的输入数据通过在数据流图的不同的编译后的版本中选择仍然允许灵活性。响应于从输入数据源1025接收输入数据,参数分析器1030分析输入数据以及直到运行时为止可以不知道的可能的其他值,以便确定要与目标数据流图一起使用的一个或多个参数的值(可能包括静态参数和动态参数两者)。目标数据流图是使用不同的各个参数组存储在编译后的数据流图数据存储1020中的已编译为不同的版本的未编译的数据流图。加载器1035将由参数分析器1030提供的静态参数的任意值与已被用于生成目标数据流图的任何编译后的版本的那些相同参数的任意值相比较以便找到匹配。如果加载器在静态参数中找到匹配,则加载器1035可以求解并绑定动态参数,并且加载由执行引擎1040开始的作为结果的数据流图。如果加载器1035在静态参数中没有找到匹配,则加载器1035可以将输入数据路由到错误处理器(未示出),或加载器1035可以有可用的目标数据流图版本,其中所述可用的目标数据流图版本能够将不同的可能的参数值处理为非优化默认值。可选地,加载器可以发动编译器1015以便采用适当的静态参数值编译目标数据流图的新版本。在这些情况下,可以根据需要进行运行中编译。第一次运行目标数据流图时,在运行时进行编译并且存储有绑定的静态参数的作为结果的编译后的数据流图。接着下一次运行目标数据流图时,如果没有找到有理想的静态参数值的编译后的版本,那么仅重编译。
例如,对于包括参数A、B、C(A和B是静态的,并且C是动态的)的参数组,考虑使用A=True和B=False的已被编译的目标数据流图的第一编译后的版本,以及使用A=True和B=True的已被编译的目标数据流图的第二编译后的版本。如果参数分析器1030确定将使用采用A=True、B=True和C=True的目标数据流图处理接收的作业单元,则可以加载第二编译后的版本并且由加载器1035绑定动态参数C。如果参数分析器1030确定将使用采用A=False、B=True和C=True的目标数据流图处理接收的作业单元,则由采用A=False、B=True的编译器1015编译目标数据流图的新版本并且由加载器1035绑定动态参数C。还可以将新编译后的版本存储在编译后的数据流图数据存储1020中用于稍后访问。
加载器1035将选择的编译后的数据流图加载到将执行的图执行引擎1040可访问的存储器中以便处理来自输入数据源1025的输入数据的流。在一些实施例中,由运行的数据流图中的专用组件执行加载器1035的功能并且加载的数据流图是嵌入到专用组件中的微图。加载器1035可以访问在存储器中保持高速缓存的选择的编译后的数据流图的预先加载的版本(在确定适当的静态参数值被使用之后)而不一定需要访问编译后的数据流图数据存储1020。接着由执行引擎1040执行加载的数据流图。一旦由目标数据流图处理输入数据,可以要么从系统中卸载数据流图,或可以要么高速缓存数据流图用于稍后访问。
一般地,数据流图的编译是通过其将图转变为可执行格式的过程。可执行的格式可以采用平台特定形式(例如,机器码)或采用中间形式(例如,字节码)。在一些实施例中,编译器1015求解静态参数,遍历数据流图并且将其减少到准备执行的一组数据结构。从被表示为顶点和链接的数据流图到机器码的转变可以包括几个步骤。这些步骤中的一个可以包括动态代码生成,其中将数据流图转变为第三代编程语言(例如,C、C#、C++、Java等)。从第三代语言,可以使用标准编译器生成机器可读代码或字节码。
在一些实施例中,直到编译为止没有确定参数是否被视为静态参数或动态参数。被计算的参数和硬编码到编译后的数据流图的参数的值被视为静态参数。同时,通常没有在编译时计算动态参数,而是在图加载或执行期间计算。如上所述,为了准备用于在运行时快速加载和执行不同的数据流图的编译后的版本的目的使用由参数组确定的值。在来自参数组的参数的值明确定义对编译后的图有效的唯一可能值的情况下,该值被编码到编译后的数据流图,并且参数被视为静态参数。在其他情况下,其中来自参数组的参数的值提供可能值的范围,在编译时参数可以不作为静态参数被计算,而是在加载时和运行时可以作为动态参数被计算。
例如,通过消除不需要的可执行的语句,在编译过程期间编译器还可以优化数据流图。例如,数据流图可以包含条件组件。条件组件可以包括一系列可执行语句,基于一个或对个参数的值该语句要么被包含在编译后的数据流图中要么被排除在编译后的数据流图中。条件组件可以用于各种目的,例如图优化或图专门化。对于图优化,如果将不会使用来自数据集的值,应用可以省略处理或创建数据集。对于图专门化,基于期望的详细的程度应用可以调节几个不同的输出数据集的生产,或允许图的几个可选的部分中的一个的执行。
可以使用软件实施上述方式用于在计算机上执行。例如,软件在执行在一个或多个编程的或可编程的计算机系统(其是各种架构的,例如分布式、客户端\服务器或网格)上的一个或多个计算机程序中的形成过程,每个计算机系统包括至少一个处理器、至少一个数据存储系统(包括易失性和非易失性、非临时性存储器和/或存储元素)、至少一个输入设备或端口和至少一个输出设备或端口。例如,软件可以形成提供与计算图的设计和配置相关的其他服务的更大的程序的一个或多个模块。图的节点和元素可以被实施为存储在计算机可读介质中的数据结构或符合存储在数据储存库中的数据模型的其他有组织的数据。
在诸如CD-ROM的存储介质上提供软件,该存储介质是由通用或专用可编程计算机可读的或经由到执行该软件的计算机的网络的通信介质被递送。在专用计算机上或使用诸如协处理器的专用硬件执行所有的功能。以分布的方式实施软件,其中由软件指定的计算的不同部分由不同的计算机执行。优选地将每个这样的计算机程序存储在或下载到由通用或专用可编程计算机读取的存储介质或设备(例如,固态存储器或介质,或磁或光介质)上,当由计算机系统读取存储介质或设备以便执行在此描述的过程时用于配置和操作计算机。发明系统还可以被认为是被实施为以计算机程序配置的计算机可读存储介质,其中存储介质被这样配置使得计算机系统以具体的和预定的方式操作以便执行在此描述的功能。
已经描述了本发明的一些实施例。然而,将理解进行各种修改而不背离本发明的精神和范围。例如,上述的一些步骤可以是顺序独立的,从而可以以不同于该描述的顺序执行。
将理解,前面的描述意于说明而不是限制本发明的范围,由所附权利要求的范围定义本发明。其他实施例在以下权利要求的范围中。

Claims (43)

1.一种用于在使用存储在数据存储系统中的编译后的数据流图的数据处理系统中处理数据的方法,该方法包括:
接收多个作业单元,每个作业单元包括一个或多个作业元素;以及
响应于接收第一作业单元使用加载到数据处理系统中的第一编译后的数据流图处理第一作业单元,该第一编译后的数据流图已被编译为代表第一数据流图的数据结构,该第一数据流图包括通过代表数据处理组件之间的作业元素的流的链接连接的代表数据处理组件的节点,该处理包括
分析第一作业单元以便确定第一作业单元的特征;
在接收第一作业单元之前,从存储在包括至少一些被编译的编译后的数据流图的数据存储系统中的多个编译后的数据流图识别一个或多个编译后的数据流图,用于处理具有第一作业单元的确定的特征的作业单元;
将识别的一个或多个编译后的数据流图中的一个作为第一编译后的数据流图加载到数据处理系统;以及
使用第一数据流图从第一作业单元中的至少一个作业元素生成一个或多个输出作业元素。
2.如权利要求1所述的方法,其中多个作业单元对应于在接收的作业元素的流中的不同连续组的一个或多个作业元素。
3.如权利要求1所述的方法,其中多个作业单元对应于在不同的各个接收的文件中的不同批的一个或多个作业元素。
4.如权利要求1所述的方法,其中加载还包括从第一编译后的数据流图获取代表第一数据流图的数据结构以及将获取的数据结构加载到第二数据流图中。
5.如权利要求4所述的方法,其中在接收第一作业单元之前运行第二数据流图。
6.如权利要求4所述的方法,其中将获取的数据结构加载到第二数据流图中包括将第一数据流图嵌入在第二数据流图的包含组件中,该第二数据流图的包含组件被配置为提供第一进程以便执行第一数据流图中的数据处理组件。
7.如权利要求6所述的方法,其中第二数据流图的包含组件还被配置为提供第二进程以便监视第一数据流图中的数据处理组件的执行。
8.如权利要求7所述的方法,其中响应于检测第一数据流图中的至少一个数据处理组件的失败以便正确地处理给定的作业元素,第二进程中断第一数据流图的执行而不中断第二数据流图的执行。
9.如权利要求7所述的方法,其中响应于检测处理第一作业单元的第一数据流图中的至少一个数据处理组件的延迟,第二进程暂停第一数据流图的执行而不中断第二数据流图的执行并且将第三数据流图嵌入在第二数据流图的包含组件中以便处理在第一作业单元之后接收的第二作业单元。
10.如权利要求6所述的方法,其中第二数据流图的包含组件还被配置为提供第一进程用来与第二进程通信的、访问用于第一远程数据库的库的第一应用编程接口。
11.如权利要求10所述的方法,其中第二数据流图的包含组件还被配置为提供第一进程用来与第三进程通信的、访问不同于用于第一远程数据库的库的用于第二远程数据库的库的第二应用编程接口。
12.如权利要求11所述的方法,其中第二数据流图的包含组件还被配置为提供与第二数据流图的多个组件兼容的第三应用编程接口。
13.如权利要求12所述的方法,其中第二数据流图的包含组件还被配置为基于访问第一或第二远程数据库中的哪一个将使用第三应用编程接口的应用调用转换为使用第一或第二应用编程接口中的选择的一个的应用调用。
14.如权利要求4所述的方法,其中将获取的数据结构加载到第二数据流图中包括将第一数据流图嵌入在第二数据流图的包含组件中,嵌入包括:
将从连接到包含组件的输入的链接接收的输入作业元素的流连接到第一数据流图的输入,以及
将生成的一个或多个输出作业元素连接到与包含组件的输出连接的链接。
15.如权利要求14所述的方法,其中第一数据流图包括:包括至少一个连接到第二组件的输入的输出链接的第一组件;当第一数据流图被嵌入在包含组件中时,将输入作业元素提供到第二组件的指令;以及当第一数据流图没有被嵌入在包含组件中时,将来自存储位置的作业元素提供到第二组件的指令。
16.如权利要求15所述的方法,其中第一数据流图包括:包括至少一个连接到第四组件的输出的输入链接的第三组件;当第一数据流图被嵌入在包含组件中时,将来自第四组件的输出的生成的一个或多个输出作业元素提供到包含组件的输出的指令;以及当第一数据流图没有被嵌入在包含组件中时,将来自第四组件的输出的生成的一个或多个输出作业元素提供到存储位置的指令。
17.如权利要求14所述的方法,其中第一数据流图包括多个接口组件,每个接口组件包括:当第一数据流图被嵌入在包含组件中时,用于在第一数据流图和包含组件之间发送作业元素的指令;以及当第一数据流图没有被嵌入在包含组件中时,用于在第一数据流图和存储位置之间发送作业元素的指令。
18.如权利要求17所述的方法,其中当第一数据流图被嵌入在包含组件中时,每个接口组件识别包含组件的不同的对应的输入或输出端口,第一数据流图被连接到该端口。
19.如权利要求4所述的方法,还包括,
在生成一个或多个输出作业元素之后,从第二数据流图中卸载代表第一数据流图的获取的数据结构。
20.如权利要求19所述的方法,还包括缓存作业单元中的作业元素,作业单元在第一作业单元到达之后并且在代表第一数据流图的获取的数据结构的卸载之前到达。
21.如权利要求1所述的方法,还包括将第二编译后的数据流图加载到数据处理系统中,第二编译后的数据流图被编译为代表第二数据流图的数据结构。
22.如权利要求21所述的方法,其中将识别的一个或多个编译后的数据流图中的一个作为第一编译后的数据流图加载到数据处理系统包括,将第一数据流图嵌入在第三数据流图的第一包含组件中,以及将第二编译后的数据流图加载到数据处理系统包括,将第二数据流图嵌入在第三数据流图的第二包含组件中。
23.如权利要求22所述的方法,其中响应于接收第一作业单元第二编译后的数据流图被加载到数据处理系统。
24.如权利要求22所述的方法,其中响应于在第一作业单元之后接收第二作业单元第二编译后的数据流图被加载到数据处理系统。
25.如权利要求1所述的方法,还包括响应于接收第二作业单元使用加载到数据处理系统中的第二编译后的数据流图,在处理第一作业单元之后处理第二作业单元,第二编译后的数据流图被编译为代表第二数据流图的数据结构,处理包括:
分析第二作业单元以便确定第二作业单元的特征;
在接收第二作业单元之前,从被编译的存储在数据存储系统中的多个编译后的数据流图中识别一个或多个编译后的数据流图,用于处理具有第二作业单元的确定的特征的作业单元;
将识别的一个或多个编译后的数据流图中的一个作为第二编译后的数据流图加载到数据处理系统中;以及
使用第二数据流图从第二作业单元中的至少一个作业元素生成一个或多个输出作业元素。
26.如权利要求25所述的方法,其中将识别的一个或多个编译后的数据流图中的一个作为第一编译后的数据流图加载到数据处理系统中包括,将第一数据流图嵌入在第三数据流图的包含组件中,以及将识别的一个或多个编译后的数据流图中的一个作为第二编译后的数据流图加载到数据处理系统中包括,将第二数据流图嵌入在第三数据流图的包含组件中。
27.如权利要求1所述的方法,其中分析第一作业单元包括读取用于包括在第一作业单元的作业元素中的编译后的数据流图的标识符。
28.如权利要求26所述的方法,其中识别一个或多个编译后的数据流图包括将标识符匹配到与一个或多个编译后的数据流图相关联的标识符。
29.如权利要求1所述的方法,其中分析第一作业单元包括识别表现第一作业单元的作业元素的特征的多个预定的类型中的一个。
30.如权利要求29所述的方法,其中识别一个或多个编译后的数据流图包括确定对应于一个或多个编译后的数据流图的数据流图被配置为处理特征在于识别的类型的作业元素。
31.如权利要求1所述的方法,其中分析第一作业单元包括识别包括在第一作业单元的作业元素中的内容的属性。
32.如权利要求31所述的方法,其中识别一个或多个编译后的数据流图包括确定对应于一个或多个编译后的数据流图的数据流图被配置为处理包括具有识别的属性的内容的作业元素。
33.如权利要求1所述的方法,其中分析第一作业单元包括确定被指定为用于第一数据流图的第一组的一个或多个参数的值的、与第一作业单元相关联的一个或多个值。
34.如权利要求33所述的方法,其中识别一个或多个编译后的数据流图包括确定识别的一个或多个编译后的数据流图被编译为代表第一数据流图的数据结构,在此情况下第一组的一个或多个参数绑定到匹配与第一作业单元相关联的确定的一个或多个值的各个值。
35.如权利要求34所述的方法,其中将识别的一个或多个编译后的数据流图中的一个作为第一编译后的数据流图加载到数据处理系统包括,将第二组的一个或多个参数绑定到至少部分基于第一作业单元确定的各个值。
36.如权利要求35所述的方法,其中第二组的一个或多个参数包括至少一个参数,该参数的值包括用于提供输入作业元素的输入源的名称或用于接收输出作业元素的输出源的名称。
37.如权利要求34所述的方法,其中第一组的一个或多个参数包括至少一个参数,当代表第一数据流图的数据结构被编译为第一编译后的数据流图时,该参数的值确定一个或多个组件是否将被包括在数据结构中。
38.如权利要求34所述的方法,其中第一组的一个或多个参数包括至少一个参数,当代表第一数据流图的数据结构被编译为第一编译后的数据流图时,该参数的值确定将被应用于被包括在数据结构中的由组件处理的作业元素的变换。
39.如权利要求33所述的方法,还包括,在接收第一作业单元之前,采用绑定到各个值的第一组的一个或多个参数编译来自代表第一数据流图的数据结构的第一编译后的数据流图。
40.如权利要求39所述的方法,还包括将第一编译后的数据流图存储在数据存储系统中以及将存储的第一编译后的数据流图与指示被绑定到第一组的一个或多个参数的各个值的信息相关联。
41.一种使用存储在数据存储系统中的编译后的数据流图、用于处理数据的数据处理系统,该系统包括:
输入设备或端口,其被配置为接收多个作业单元,每个作业单元包括一个或多个作业元素;以及
至少一个处理器,其被配置为响应于接收第一作业单元使用加载到数据处理系统中的第一编译后的数据流图处理第一作业单元,该第一编译后的数据流图被编译为代表第一数据流图的数据结构,该第一数据流图包括通过代表数据处理组件之间的作业元素的流的链接连接的代表数据处理组件的节点,该处理包括
分析第一作业单元以便确定第一作业单元的特征;
在接收第一作业单元之前,从存储在包括至少一些被编译的编译后的数据流图的数据存储系统中的多个编译后的数据流图中识别一个或多个编译后的数据流图,用于处理具有第一作业单元的确定的特征的作业单元;
将识别的一个或多个编译后的数据流图中的一个作为第一编译后的数据流图加载到数据处理系统;以及
使用第一数据流图从第一作业单元中的至少一个作业元素生成一个或多个输出作业元素。
42.一种使用存储在数据存储系统中的编译后的数据流图、用于处理数据的数据处理系统,该系统包括:
用于接收多个作业单元的部件,每个作业单元包括一个或多个作业元素;以及
响应于接收第一作业单元使用加载到数据处理系统中的第一编译后的数据流图用于处理第一作业单元的部件,该第一编译后的数据流图被编译为代表第一数据流图的数据结构,该第一数据流图包括通过代表数据处理组件之间的作业元素的流的链接连接的代表数据处理组件的节点,处理包括
分析第一作业单元以便确定第一作业单元的特征;
在接收第一作业单元之前,从存储在包括至少一些被编译的编译后的数据流图的数据存储系统中的多个编译后的数据流图中识别一个或多个编译后的数据流图,用于处理具有第一作业单元的确定的特征的作业单元;
将识别的一个或多个编译后的数据流图中的一个作为第一编译后的数据流图加载到数据处理系统;以及
使用第一数据流图从第一作业单元中的至少一个作业元素生成一个或多个输出作业元素。
43.一种使用存储在数据存储系统中的编译后的数据流图、用于在数据处理系统中处理数据的存储计算机程序的计算机可读介质,该计算机程序包括指令,该指令使得计算机:
接收多个作业单元,每个作业单元包括一个或多个作业元素;以及
响应于接收第一作业单元使用加载到数据处理系统中的第一编译后的数据流图处理第一作业单元,该第一编译后的数据流图被编译为代表第一数据流图的数据结构,该第一数据流图包括通过代表数据处理组件之间的作业元素的流的链接连接的代表数据处理组件的节点,处理包括
分析第一作业单元以便确定第一作业单元的特征;
在接收第一作业单元之前,从存储在包括至少一些被编译的编译后的数据流图的数据存储系统中的多个编译后的数据流图中识别一个或多个编译后的数据流图,用于处理具有第一作业单元的确定的特征的作业单元;
将识别的一个或多个编译后的数据流图中的一个作为第一编译后的数据流图加载到数据处理系统;以及
使用第一数据流图从第一作业单元中的至少一个作业元素生成一个或多个输出作业元素。
CN201180039226.7A 2010-06-15 2011-06-15 用于动态加载基于图的计算的系统和方法 Active CN103069385B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201611082453.9A CN107066241B (zh) 2010-06-15 2011-06-15 用于动态加载基于图的计算的系统和方法

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US35512910P 2010-06-15 2010-06-15
US61/355,129 2010-06-15
PCT/US2011/040440 WO2011159759A1 (en) 2010-06-15 2011-06-15 Dynamically loading graph-based computations

Related Child Applications (1)

Application Number Title Priority Date Filing Date
CN201611082453.9A Division CN107066241B (zh) 2010-06-15 2011-06-15 用于动态加载基于图的计算的系统和方法

Publications (2)

Publication Number Publication Date
CN103069385A true CN103069385A (zh) 2013-04-24
CN103069385B CN103069385B (zh) 2016-12-28

Family

ID=44627481

Family Applications (2)

Application Number Title Priority Date Filing Date
CN201611082453.9A Active CN107066241B (zh) 2010-06-15 2011-06-15 用于动态加载基于图的计算的系统和方法
CN201180039226.7A Active CN103069385B (zh) 2010-06-15 2011-06-15 用于动态加载基于图的计算的系统和方法

Family Applications Before (1)

Application Number Title Priority Date Filing Date
CN201611082453.9A Active CN107066241B (zh) 2010-06-15 2011-06-15 用于动态加载基于图的计算的系统和方法

Country Status (9)

Country Link
US (2) US8875145B2 (zh)
EP (2) EP2583168B1 (zh)
JP (2) JP5898188B2 (zh)
KR (2) KR20150042297A (zh)
CN (2) CN107066241B (zh)
AU (1) AU2011268459B2 (zh)
CA (1) CA2801573C (zh)
HK (1) HK1249218A1 (zh)
WO (1) WO2011159759A1 (zh)

Cited By (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104216766A (zh) * 2014-08-26 2014-12-17 华为技术有限公司 对流数据进行处理的方法及装置
CN106170762A (zh) * 2013-12-05 2016-11-30 起元技术有限责任公司 管理包括子图的数据流图所用的接口
CN106663010A (zh) * 2014-09-02 2017-05-10 起元科技有限公司 执行基于图的程序规范
CN107250988A (zh) * 2014-11-05 2017-10-13 起元技术有限责任公司 应用程序测试
CN107632890A (zh) * 2017-08-10 2018-01-26 北京中科睿芯科技有限公司 一种数据流体系结构中动态节点分配方法和系统
CN107924406A (zh) * 2015-08-05 2018-04-17 起元技术有限责任公司 选择用于对实时数据流执行的查询
CN109564507A (zh) * 2016-06-03 2019-04-02 起元技术有限责任公司 格式特定的数据处理操作
US10671669B2 (en) 2015-12-21 2020-06-02 Ab Initio Technology Llc Sub-graph interface generation
US11301445B2 (en) 2014-09-02 2022-04-12 Ab Initio Technology Llc Compiling graph-based program specifications
CN114911630A (zh) * 2022-07-14 2022-08-16 小米汽车科技有限公司 数据处理方法、装置、车辆、存储介质及芯片

Families Citing this family (68)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7877350B2 (en) * 2005-06-27 2011-01-25 Ab Initio Technology Llc Managing metadata for graph-based computations
WO2010093879A1 (en) 2009-02-13 2010-08-19 Ab Initio Technology Llc Managing task execution
JP6084037B2 (ja) 2009-12-14 2017-02-22 アビニシオ テクノロジー エルエルシー ユーザ・インターフェース要素の指定
US9665620B2 (en) 2010-01-15 2017-05-30 Ab Initio Technology Llc Managing data queries
EP2583168B1 (en) 2010-06-15 2017-11-08 Ab Initio Technology LLC Dynamically loading graph-based computations
US8782434B1 (en) 2010-07-15 2014-07-15 The Research Foundation For The State University Of New York System and method for validating program execution at run-time
US9424010B2 (en) 2010-08-30 2016-08-23 International Business Machines Corporation Extraction of functional semantics and isolated dataflow from imperative object oriented languages
US8464153B2 (en) * 2011-03-01 2013-06-11 Lucasfilm Entertainment Company Ltd. Copying an object in an animation creation application
US9116955B2 (en) 2011-05-02 2015-08-25 Ab Initio Technology Llc Managing data queries
TW201322022A (zh) * 2011-11-24 2013-06-01 Alibaba Group Holding Ltd 分散式資料流處理方法及其系統
US9489184B2 (en) * 2011-12-30 2016-11-08 Oracle International Corporation Adaptive selection of programming language versions for compilation of software programs
US20150082314A1 (en) * 2012-04-18 2015-03-19 Nec Corporation Task placement device, task placement method and computer program
US9032362B2 (en) * 2012-09-10 2015-05-12 Sap Se System and method for generating high performance calculators for calculation graphs
US9122873B2 (en) 2012-09-14 2015-09-01 The Research Foundation For The State University Of New York Continuous run-time validation of program execution: a practical approach
US9069782B2 (en) 2012-10-01 2015-06-30 The Research Foundation For The State University Of New York System and method for security and privacy aware virtual machine checkpointing
US9507682B2 (en) * 2012-11-16 2016-11-29 Ab Initio Technology Llc Dynamic graph performance monitoring
US10108521B2 (en) * 2012-11-16 2018-10-23 Ab Initio Technology Llc Dynamic component performance monitoring
US9274926B2 (en) 2013-01-03 2016-03-01 Ab Initio Technology Llc Configurable testing of computer programs
US9189622B2 (en) * 2013-04-30 2015-11-17 Vmware, Inc. Static redirection for objective C
US9104432B2 (en) * 2013-06-24 2015-08-11 International Business Machines Corporation Extracting stream graph structure in a computer language by pre-executing a deterministic subset
CN105793818B (zh) 2013-12-06 2019-09-17 起元科技有限公司 源代码翻译
CA2931335C (en) * 2013-12-13 2022-08-23 Ab Initio Technology Llc Dynamically determing a mode of a data processing application
US10262078B2 (en) * 2014-02-10 2019-04-16 Apple Inc. Systems and methods for optimizing performance of graph operations
US9098377B1 (en) 2014-05-30 2015-08-04 Semmle Limited Aggregating source code metric values
US10928970B2 (en) 2014-07-18 2021-02-23 Apple Inc. User-interface for developing applications that apply machine learning
US9330199B2 (en) 2014-07-21 2016-05-03 Facebook, Inc. Striping of directed graphs and nodes with improved functionality
JP6626497B2 (ja) 2014-09-02 2019-12-25 アビニシオ テクノロジー エルエルシー タスクの呼び出しの管理
US9933918B2 (en) 2014-09-02 2018-04-03 Ab Initio Technology Llc Specifying control and data connections in graph-based programs
WO2016036822A1 (en) 2014-09-02 2016-03-10 Ab Initio Technology Llc Managing execution state of components in a graph-based program specification for controlling their associated tasks
CA2959525C (en) * 2014-09-02 2021-08-03 Ab Initio Technology Llc Controlling data processing tasks
US9760406B2 (en) * 2014-09-02 2017-09-12 Ab Initio Technology Llc Controlling data processing tasks
US9916187B2 (en) * 2014-10-27 2018-03-13 Oracle International Corporation Graph database system that dynamically compiles and executes custom graph analytic programs written in high-level, imperative programming language
US10055333B2 (en) * 2014-11-05 2018-08-21 Ab Initio Technology Llc Debugging a graph
US10437819B2 (en) 2014-11-14 2019-10-08 Ab Initio Technology Llc Processing queries containing a union-type operation
US9921859B2 (en) * 2014-12-12 2018-03-20 The Regents Of The University Of Michigan Runtime compiler environment with dynamic co-located code execution
US9817930B1 (en) * 2014-12-31 2017-11-14 Cadence Design Systems Inc. Method, system, and computer program product for verifying an electronic circuit design with a graph-based proof flow
GB2535230B (en) * 2015-02-13 2019-05-08 Raptor Oil Ltd Dynamically adjustable data flow graph for digital signal processing
US10417281B2 (en) 2015-02-18 2019-09-17 Ab Initio Technology Llc Querying a data source on a network
US20160364794A1 (en) * 2015-06-09 2016-12-15 International Business Machines Corporation Scoring transactional fraud using features of transaction payment relationship graphs
US9910685B2 (en) 2015-08-13 2018-03-06 Samsung Electronics Co., Ltd. System and method for identifying, indexing, and navigating to deep states of mobile applications
US9983892B2 (en) * 2015-11-06 2018-05-29 Samsung Electronics Co., Ltd. Deep linking to mobile application states through programmatic replay of user interface events
US9858094B2 (en) 2015-11-10 2018-01-02 Samsung Electronics Co., Ltd. Monitoring and actuation of view controller parameters to reach deep states without manual developer intervention
US10506016B2 (en) 2016-05-19 2019-12-10 Oracle International Corporation Graph analytic engine that implements efficient transparent remote access over representational state transfer
US10318355B2 (en) * 2017-01-24 2019-06-11 Oracle International Corporation Distributed graph processing system featuring interactive remote control mechanism including task cancellation
US11194551B2 (en) 2017-06-07 2021-12-07 Ab Initio Technology Llc Dataflow graph configuration
CN109426574B (zh) * 2017-08-31 2022-04-05 华为技术有限公司 分布式计算系统,分布式计算系统中数据传输方法和装置
US10817310B2 (en) * 2017-09-01 2020-10-27 Ab Initio Technology Llc Executing graph-based program specifications
US10685034B2 (en) * 2017-10-17 2020-06-16 Salesforce.Com, Inc. Systems, methods, and apparatuses for implementing concurrent dataflow execution with write conflict protection within a cloud based computing environment
US11055074B2 (en) * 2017-11-13 2021-07-06 Ab Initio Technology Llc Key-based logging for processing of structured data items with executable logic
US10726072B2 (en) * 2017-11-15 2020-07-28 Sap Se Internet of things search and discovery graph engine construction
US10713310B2 (en) 2017-11-15 2020-07-14 SAP SE Walldorf Internet of things search and discovery using graph engine
US10853131B2 (en) * 2017-11-20 2020-12-01 Salesforce.Com, Inc. Dataflow life cycles
US10790662B2 (en) 2018-04-03 2020-09-29 Katerra, Inc. DC bus-based electrical power router utilizing multiple configurable bidirectional AC/DC converters
US10897138B2 (en) 2018-04-12 2021-01-19 Katerra, Inc. Method and apparatus for dynamic electrical load sensing and line to load switching
US10666744B2 (en) 2018-06-01 2020-05-26 The Mathworks, Inc. Managing discovery and selection of service interface specifications
CN109343833B (zh) * 2018-09-20 2022-12-16 鼎富智能科技有限公司 数据处理平台以及数据处理方法
US10733191B2 (en) * 2018-09-28 2020-08-04 Microsoft Technology Licensing, Llc Static streaming job startup sequence
US11580444B2 (en) 2019-04-16 2023-02-14 Apple Inc. Data visualization machine learning model performance
US11093223B2 (en) 2019-07-18 2021-08-17 Ab Initio Technology Llc Automatically converting a program written in a procedural programming language into a dataflow graph and related systems and methods
US20210149734A1 (en) * 2019-11-15 2021-05-20 Nvidia Corporation Techniques for modifying an executable graph to perform a workload associated with a new task graph
US20210248115A1 (en) * 2020-02-10 2021-08-12 Nvidia Corporation Compute graph optimization
JP7391739B2 (ja) 2020-03-19 2023-12-05 Ckd株式会社 把持装置
US11461130B2 (en) 2020-05-26 2022-10-04 Oracle International Corporation Methodology for fast and seamless task cancelation and error handling in distributed processing of large graph data
US11815943B1 (en) 2020-06-05 2023-11-14 State Farm Mutual Automobile Insurance Company Systems and methods for processing using directed acyclic graphs
US11720424B2 (en) * 2021-03-12 2023-08-08 Salesforce, Inc. Single flow execution
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
WO2023056003A1 (en) 2021-09-30 2023-04-06 Ab Initio Technology Llc Systems and methods for performing data processing operations using variable level parallelism
US11907194B2 (en) 2021-11-03 2024-02-20 Capital One Services, Llc Systems and methods for executing and hashing modeling flows

Citations (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20030004771A1 (en) * 2001-06-28 2003-01-02 International Business Machines Corporation Method, system, and program for executing a workflow
US6832369B1 (en) * 2000-08-01 2004-12-14 International Business Machines Corporation Object oriented method and apparatus for class variable initialization
US20040260590A1 (en) * 2003-06-17 2004-12-23 International Business Machines Corporation, Armonk, New York Automatic generation of process models
US7164422B1 (en) * 2000-07-28 2007-01-16 Ab Initio Software Corporation Parameterized graphs with conditional components
US20070022077A1 (en) * 2002-10-10 2007-01-25 Ab Inition Software Company, A Delaware Corporation Startup and Control of Graph-Based Computation
CN1965296A (zh) * 2004-03-08 2007-05-16 Ab开元软件公司 依赖关系图参数范围的划分
WO2009039352A1 (en) * 2007-09-20 2009-03-26 Ab Initio Technology Llc Managing data flows in graph-based computations
CN101702942A (zh) * 2007-04-10 2010-05-05 起元技术有限责任公司 编辑和汇编商业规则

Family Cites Families (222)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US3662343A (en) 1970-07-29 1972-05-09 Docutel Corp Credit card automatic currency dispenser
US3662401A (en) 1970-09-23 1972-05-09 Collins Radio Co Method of program execution
US4228496A (en) 1976-09-07 1980-10-14 Tandem Computers Incorporated Multiprocessor system
US4814979A (en) 1981-04-01 1989-03-21 Teradata Corporation Network to transmit prioritized subtask pockets to dedicated processors
US4972314A (en) 1985-05-20 1990-11-20 Hughes Aircraft Company Data flow signal processor method and apparatus
US4720780A (en) 1985-09-17 1988-01-19 The Johns Hopkins University Memory-linked wavefront array processor
US4914568A (en) 1986-10-24 1990-04-03 National Instruments, Inc. Graphical system for modelling a process and associated method
US5127104A (en) 1986-12-29 1992-06-30 Dataflow Computer Corporation Method and product involving translation and execution of programs by automatic partitioning and data structure allocation
JPS63231613A (ja) 1987-03-20 1988-09-27 Matsushita Giken Kk コマンド設定方法
JPS6413189A (en) 1987-07-06 1989-01-18 Nec Corp Character signal generation circuit
JPH0526792Y2 (zh) 1987-07-14 1993-07-07
JPH0194431A (ja) 1987-10-06 1989-04-13 Matsushita Electric Ind Co Ltd ソフトウェア部品合成装置
US5050068A (en) * 1988-10-03 1991-09-17 Duke University Method and apparatus for using extracted program flow information to prepare for execution multiple instruction streams
US5357632A (en) 1990-01-09 1994-10-18 Hughes Aircraft Company Dynamic task allocation in a multi-processor system employing distributed control processors and distributed arithmetic processors
US5280619A (en) 1990-05-17 1994-01-18 Texas Instruments Incorporated System for accessing shared data using a serialization graph constructed from a history file showing completed locking dependencies between transactions
US5323452A (en) 1990-12-18 1994-06-21 Bell Communications Research, Inc. Visual programming of telephone network call processing logic
DE4216871C2 (de) 1991-05-21 2001-09-06 Digital Equipment Corp Ausführungsordnen zum Sicherstellen der Serialisierbarkeit verteilter Transaktionen
EP0529303A3 (en) 1991-08-29 1993-09-22 International Business Machines Corporation Checkpoint synchronization with instruction overlap enabled
US6400996B1 (en) 1999-02-01 2002-06-04 Steven M. Hoffberg Adaptive pattern recognition based control system and method
US5333319A (en) 1992-03-02 1994-07-26 International Business Machines Corporation Virtual storage data processor with enhanced dispatching priority allocation of CPU resources
JP3223933B2 (ja) 1993-02-10 2001-10-29 日本電信電話株式会社 知識ベース推論方法およびその装置
JP3079881B2 (ja) 1993-08-10 2000-08-21 三菱自動車工業株式会社 道路交通状況推定方法および車両運転特性制御方法
US5745778A (en) 1994-01-26 1998-04-28 Data General Corporation Apparatus and method for improved CPU affinity in a multiprocessor system
US6044211A (en) 1994-03-14 2000-03-28 C.A.E. Plus, Inc. Method for graphically representing a digital device as a behavioral description with data and control flow elements, and for converting the behavioral description to a structural description
US5694546A (en) 1994-05-31 1997-12-02 Reisman; Richard R. System for automatic unattended electronic information transport between a server and a client by a vendor provided transport software with a manifest list
JPH08106540A (ja) 1994-10-06 1996-04-23 Toshiba Corp 編集装置
US5692168A (en) 1994-10-18 1997-11-25 Cyrix Corporation Prefetch buffer using flow control bit to identify changes of flow within the code stream
JPH08305576A (ja) 1995-01-12 1996-11-22 Internatl Business Mach Corp <Ibm> コンピュータ・ユーザとの対話を行うためのエキスパート・システム及びその方法
US5673369A (en) 1995-03-02 1997-09-30 International Business Machines Corporation Authoring knowledge-based systems using interactive directed graphs
US5701400A (en) 1995-03-08 1997-12-23 Amado; Carlos Armando Method and apparatus for applying if-then-else rules to data sets in a relational data base and generating from the results of application of said rules a database of diagnostics linked to said data sets to aid executive analysis of financial data
US5805462A (en) 1995-08-18 1998-09-08 Vlsi Technology, Inc. Automatic synthesis of integrated circuits employing boolean decomposition
JP3154942B2 (ja) 1995-09-11 2001-04-09 株式会社東芝 分散チェックポイント生成方法および同方法が適用される計算機システム
US5630047A (en) 1995-09-12 1997-05-13 Lucent Technologies Inc. Method for software error recovery using consistent global checkpoints
US5712971A (en) 1995-12-11 1998-01-27 Ab Initio Software Corporation Methods and systems for reconstructing the state of a computation
JP3258228B2 (ja) 1996-03-15 2002-02-18 株式会社東芝 チェックポイント生成方法
US7415466B2 (en) 1996-03-19 2008-08-19 Oracle International Corporation Parallel transaction recovery
US6006242A (en) 1996-04-05 1999-12-21 Bankers Systems, Inc. Apparatus and method for dynamically creating a document
US5966072A (en) 1996-07-02 1999-10-12 Ab Initio Software Corporation Executing computations expressed as graphs
JP3672208B2 (ja) 1996-07-02 2005-07-20 インターナショナル・ビジネス・マシーンズ・コーポレーション 階層化トランザクション処理方法
US5857204A (en) 1996-07-02 1999-01-05 Ab Initio Software Corporation Restoring the state of a set of files
US6016516A (en) 1996-08-07 2000-01-18 Fuji Xerox Co. Ltd. Remote procedure processing device used by at least two linked computer systems
US6760903B1 (en) 1996-08-27 2004-07-06 Compuware Corporation Coordinated application monitoring in a distributed computing environment
US5799266A (en) 1996-09-19 1998-08-25 Sun Microsystems, Inc. Automatic generation of test drivers
US5930794A (en) 1996-10-18 1999-07-27 Sagent Technologies, Inc. Database repository with deferred transactions
US6038558A (en) 1996-10-18 2000-03-14 Sagent Technology, Inc. Extensible database retrieval and viewing architecture
US6151531A (en) 1996-12-12 2000-11-21 Charles Frankel Et Al System and method for managing the alteration of garments
US5924095A (en) 1997-02-05 1999-07-13 Oracle Corporation Processing distributed transactions in heterogeneous computing environments using two-phase commit
US6330008B1 (en) 1997-02-24 2001-12-11 Torrent Systems, Inc. Apparatuses and methods for monitoring performance of parallel computing
US5933640A (en) 1997-02-26 1999-08-03 Digital Equipment Corporation Method for analyzing and presenting test execution flows of programs
US5999729A (en) 1997-03-06 1999-12-07 Continuum Software, Inc. System and method for developing computer programs for execution on parallel processing systems
US5950212A (en) 1997-04-11 1999-09-07 Oracle Corporation Method and system for workload based group committing for improved performance
US6088716A (en) 1997-04-28 2000-07-11 Ab Initio Software Corporation Method for preventing buffer deadlock in dataflow computations
US6032158A (en) 1997-05-02 2000-02-29 Informatica Corporation Apparatus and method for capturing and propagating changes from an operational database to data marts
US6044394A (en) 1997-07-21 2000-03-28 International Business Machines Corporation Managing independently executing computer tasks that are interrelated by dataflow
US6145017A (en) 1997-08-05 2000-11-07 Adaptec, Inc. Data alignment system for a hardware accelerated command interpreter engine
US6173276B1 (en) 1997-08-21 2001-01-09 Scicomp, Inc. System and method for financial instrument modeling and valuation
US6470386B1 (en) 1997-09-26 2002-10-22 Worldcom, Inc. Integrated proxy interface for web based telecommunications management tools
US6332212B1 (en) 1997-10-02 2001-12-18 Ltx Corporation Capturing and displaying computer program execution timing
US5958004A (en) 1997-10-28 1999-09-28 Microsoft Corporation Disabling and enabling transaction committal in transactional application components
US6339775B1 (en) 1997-11-07 2002-01-15 Informatica Corporation Apparatus and method for performing data transformations in data warehousing
US6014670A (en) 1997-11-07 2000-01-11 Informatica Corporation Apparatus and method for performing data transformations in data warehousing
US6044374A (en) 1997-11-14 2000-03-28 Informatica Corporation Method and apparatus for sharing metadata between multiple data marts through object references
JPH11184766A (ja) 1997-12-18 1999-07-09 Nippon Telegr & Teleph Corp <Ntt> ビジネスイベントサーバ
US6272650B1 (en) 1998-02-03 2001-08-07 Amazing Media, Inc. System and method for disambiguating scene graph loads
US6437796B2 (en) 1998-02-17 2002-08-20 Sun Microsystems, Inc. Multiple processor visibility search system and method
US6208345B1 (en) 1998-04-15 2001-03-27 Adc Telecommunications, Inc. Visual data integration system and method
US6256637B1 (en) 1998-05-05 2001-07-03 Gemstone Systems, Inc. Transactional virtual machine architecture
US6480876B2 (en) 1998-05-28 2002-11-12 Compaq Information Technologies Group, L.P. System for integrating task and data parallelism in dynamic applications
US6675189B2 (en) 1998-05-28 2004-01-06 Hewlett-Packard Development Company, L.P. System for learning and applying integrated task and data parallel strategies in dynamic applications
US6314114B1 (en) 1998-06-23 2001-11-06 Oracle Corporation Distributed resource management
JP2000010788A (ja) 1998-06-25 2000-01-14 Sharp Corp 緊急動作処理機能を有するコンピュータ装置
US6259988B1 (en) 1998-07-20 2001-07-10 Lockheed Martin Corporation Real-time mission adaptable route planner
JP2000099317A (ja) 1998-09-18 2000-04-07 Toshiba Corp ユーザインタフェース設計装置及び方法
US6401216B1 (en) 1998-10-29 2002-06-04 International Business Machines Corporation System of performing checkpoint/restart of a parallel program
US6608628B1 (en) 1998-11-06 2003-08-19 The United States Of America As Represented By The Administrator Of The National Aeronautics And Space Administration (Nasa) Method and apparatus for virtual interactive medical imaging by multiple remotely-located users
US6927783B1 (en) 1998-11-09 2005-08-09 Broadcom Corporation Graphics display system with anti-aliased text and graphics feature
US6449711B1 (en) 1999-02-04 2002-09-10 Sun Microsystems, Inc. Method, apparatus, and article of manufacture for developing and executing data flow programs
US6538651B1 (en) 1999-03-19 2003-03-25 John Hayman Parametric geometric element definition and generation system and method
US6728879B1 (en) 1999-06-02 2004-04-27 Microsoft Corporation Transactional log with multi-sector log block validation
US6816825B1 (en) 1999-06-18 2004-11-09 Nec Corporation Simulation vector generation from HDL descriptions for observability-enhanced statement coverage
JP2001022571A (ja) 1999-07-09 2001-01-26 Riso Kagaku Corp 電子機器及び該電子機器の制御プログラム書き換え方法
US6647408B1 (en) 1999-07-16 2003-11-11 Novell, Inc. Task distribution
US6715145B1 (en) 1999-08-31 2004-03-30 Accenture Llp Processing pipeline in a base services pattern environment
US20020129340A1 (en) 1999-10-28 2002-09-12 Tuttle Douglas D. Reconfigurable isomorphic software representations
US7137116B2 (en) 1999-11-09 2006-11-14 Microsoft Corporation Method and system for performing a task on a computer
US6879946B2 (en) 1999-11-30 2005-04-12 Pattern Discovery Software Systems Ltd. Intelligent modeling, transformation and manipulation system
US6584581B1 (en) 1999-12-06 2003-06-24 Ab Initio Software Corporation Continuous flow checkpointing data processing
IES20010131A2 (en) 1999-12-20 2001-05-30 Headway Res Ltd System and method for computer-aided graph-based dependency analysis
US6848100B1 (en) 2000-03-31 2005-01-25 Intel Corporation Hierarchical software path profiling
EP1181294B1 (de) 2000-03-31 2004-03-31 Sanochemia Pharmazeutika Aktiengesellschaft Neue derivate und analoga von galanthamin
US7062483B2 (en) 2000-05-18 2006-06-13 Endeca Technologies, Inc. Hierarchical data-driven search and navigation system and method for information retrieval
US6922685B2 (en) 2000-05-22 2005-07-26 Mci, Inc. Method and system for managing partitioned data resources
US6813761B1 (en) 2000-06-30 2004-11-02 Microsoft Corporation Methods for enhancing flow analysis
US6496961B2 (en) 2000-10-27 2002-12-17 Nec Usa, Inc. Dynamic detection and removal of inactive clauses in SAT with application in image computation
US20020152244A1 (en) 2000-12-22 2002-10-17 International Business Machines Corporation Method and apparatus to dynamically create a customized user interface based on a document type definition
US6975628B2 (en) * 2000-12-22 2005-12-13 Intel Corporation Method for representing and controlling packet data flow through packet forwarding hardware
US6804800B2 (en) 2000-12-29 2004-10-12 Intel Corporation Method and apparatus for detecting and recovering from errors in a source synchronous bus
JP4294879B2 (ja) 2001-02-05 2009-07-15 株式会社日立製作所 サービスレベル制御機構を有するトランザクション処理システム及びそのためのプログラム
US20020111876A1 (en) 2001-02-09 2002-08-15 Rudraraju Panduranga R. Transaction aggregation system and method
US7082386B2 (en) 2001-02-21 2006-07-25 International Business Machines Corporation Generalized software modeling tool
US7188091B2 (en) 2001-03-21 2007-03-06 Resolutionebs, Inc. Rule processing system
US6651234B2 (en) 2001-04-06 2003-11-18 Nec Corporation Partition-based decision heuristics for SAT and image computation using SAT and BDDs
US20020147745A1 (en) 2001-04-09 2002-10-10 Robert Houben Method and apparatus for document markup language driven server
US7082604B2 (en) 2001-04-20 2006-07-25 Mobile Agent Technologies, Incorporated Method and apparatus for breaking down computing tasks across a network of heterogeneous computer for parallel execution by utilizing autonomous mobile agents
US20040093559A1 (en) 2001-05-25 2004-05-13 Ruth Amaru Web client for viewing and interrogating enterprise data semantically
GB2376094A (en) 2001-05-30 2002-12-04 Ibm Flexible navigation of a workflow graph in a data processing system
US20030033432A1 (en) * 2001-08-08 2003-02-13 Simpson Shell S. Web based imaging service that converts web pages into content on behalf of another web site
US7594220B2 (en) 2001-08-14 2009-09-22 National Instruments Corporation Configuration diagram with context sensitive connectivity
US20040006745A1 (en) 2001-08-31 2004-01-08 Van Helden Wico Methods, apparatuses, system, and articles for associating metadata with datastream
US7165030B2 (en) 2001-09-17 2007-01-16 Massachusetts Institute Of Technology Concatenative speech synthesis using a finite-state transducer
US7085426B2 (en) 2001-10-15 2006-08-01 Jonas August Volterra filters for enhancement of contours in images
US7130484B2 (en) 2001-10-15 2006-10-31 Jonas August Biased curve indicator random field filters for enhancement of contours in images
DE10152213B4 (de) 2001-10-23 2006-04-27 Onespin Solutions Gmbh Verfahren zur Verifikation digitaler arithmetischer Schaltungen mittels eines Äquivalenzvergleiches
US7092401B2 (en) 2001-11-15 2006-08-15 International Business Machines Corporation Apparatus and method for managing work and completion queues using head and tail pointers with end-to-end context error cache for reliable datagram
EP1320217B1 (en) 2001-12-14 2004-10-13 Hewlett-Packard Company, A Delaware Corporation Method of installing monitoring agents, system and computer program for monitoring objects in an IT network
US7240247B2 (en) 2002-04-29 2007-07-03 Intel Corporation Providing a chain of tokenized error and state information for a call stack
US20040041838A1 (en) 2002-09-04 2004-03-04 Adusumilli Venkata J.R.B. Method and system for graphing data
US7103597B2 (en) 2002-10-03 2006-09-05 Mcgoveran David O Adaptive transaction manager for complex transactions and business process
US7694272B2 (en) 2002-10-21 2010-04-06 Sungard (Israel) Ltd Method, a language and a system for the definition and implementation of software solutions by using a visualizable computer executable modeling language
US7412658B2 (en) 2002-11-14 2008-08-12 Sap Ag Modeling system for graphic user interface
US7711772B2 (en) 2002-11-15 2010-05-04 Schlumberger Technology Corporation Web-based system and method for electronic data delivery
US7430747B2 (en) 2002-12-04 2008-09-30 Microsoft Corporation Peer-to peer graphing interfaces and methods
US7441008B2 (en) 2002-12-18 2008-10-21 International Business Machines Corporation Method for correlating transactions and messages
US20050193056A1 (en) 2002-12-26 2005-09-01 Schaefer Diane E. Message transfer using multiplexed connections in an open system interconnection transaction processing environment
US20040148373A1 (en) 2003-01-23 2004-07-29 International Business Machines Corporation Service level agreement compliance measurement
WO2004072796A2 (en) 2003-02-05 2004-08-26 Arizona Board Of Regents Reconfigurable processing
US7707564B2 (en) 2003-02-26 2010-04-27 Bea Systems, Inc. Systems and methods for creating network-based software services using source code annotations
US7088374B2 (en) 2003-03-27 2006-08-08 Microsoft Corporation System and method for managing visual structure, timing, and animation in a graphics processing system
US7417645B2 (en) 2003-03-27 2008-08-26 Microsoft Corporation Markup language and object model for vector graphics
US7669129B2 (en) 2003-04-04 2010-02-23 Avid Technology, Inc. Graphical user interface for providing editing of transform hierarchies within an effects tree
US7665025B2 (en) 2003-04-16 2010-02-16 The Mathworks, Inc. Signal navigation and label propagation in block diagrams
US20040225657A1 (en) 2003-05-07 2004-11-11 Panacea Corporation Web services method and system
WO2004113557A2 (en) 2003-06-18 2004-12-29 Applera Corporation Methods and systems for the analysis of biological sequence data
EP1639510A1 (en) 2003-06-24 2006-03-29 BAE Systems PLC A method, tool and system for increasing the efficiency of a design process
CA2891145C (en) 2003-06-25 2019-02-19 Craig W. Stanfill Computer-aided parallelizing of computation graphs
WO2005008414A2 (en) 2003-07-11 2005-01-27 Computer Associates Think, Inc. Method and apparatus for parallel action processing
GB0318196D0 (en) 2003-08-02 2003-09-03 Ibm A method apparatus and computer program for processing a queue of messages
US7243088B2 (en) 2003-08-06 2007-07-10 Oracle International Corporation Database management system with efficient version control
US7444595B2 (en) 2003-08-13 2008-10-28 National Instruments Corporation Graphical programming system and method for creating and managing a scene graph
US8307109B2 (en) 2003-08-27 2012-11-06 International Business Machines Corporation Methods and systems for real time integration services
US7174479B2 (en) 2003-09-10 2007-02-06 Microsoft Corporation Method and system for rollback-free failure recovery of multi-step procedures
CA2655731C (en) 2003-09-15 2012-04-10 Ab Initio Software Corporation Functional dependency data profiling
US20050102670A1 (en) 2003-10-21 2005-05-12 Bretl Robert F. Shared object memory with object management for multiple virtual machines
US20050097515A1 (en) 2003-10-31 2005-05-05 Honeywell International, Inc. Data empowered laborsaving test architecture
US7840949B2 (en) 2003-11-03 2010-11-23 Ramal Acquisition Corp. System and method for data transformation using dataflow graphs
US7480863B2 (en) 2003-11-26 2009-01-20 International Business Machines Corporation Dynamic and intelligent hover assistance
US7296072B2 (en) 2003-12-12 2007-11-13 International Business Machines Corporation Enhanced port type agnostic proxy support for web services intermediaries
US7404189B2 (en) 2003-12-30 2008-07-22 International Business Machines Corporation Scheduler supporting web service invocation
US7543275B2 (en) 2004-01-29 2009-06-02 Sun Microsystems, Inc. Mechanism for executing test suites written for different harnesses under one test execution harness
US7467383B2 (en) 2004-03-08 2008-12-16 Ab Initio Software Llc System for controlling task execution using a graphical representation of task dependency
EP1757087A4 (en) 2004-04-16 2009-08-19 James A Aman AUTOMATIC VIDEO RECORDING OF EVENTS, PURSUIT AND CONTENT PRODUCTION SYSTEM
US20050256818A1 (en) 2004-04-30 2005-11-17 Xerox Corporation Workflow auto generation from user constraints and hierarchical dependence graphs for workflows
JP2007536634A (ja) 2004-05-04 2007-12-13 フィッシャー−ローズマウント・システムズ・インコーポレーテッド プロセス制御システムのためのサービス指向型アーキテクチャ
US7614037B2 (en) 2004-05-21 2009-11-03 Microsoft Corporation Method and system for graph analysis and synchronization
US7316001B2 (en) 2004-06-05 2008-01-01 Graphlogic Inc. Object process graph system
US7613881B2 (en) 2004-06-08 2009-11-03 Dartdevices Interop Corporation Method and system for configuring and using virtual pointers to access one or more independent address spaces
US7398514B2 (en) 2004-09-29 2008-07-08 Microsoft Corporation Test automation stack layering
US7343482B2 (en) 2004-10-20 2008-03-11 Arm Limited Program subgraph identification
JP4759983B2 (ja) 2004-11-04 2011-08-31 船井電機株式会社 ディスク装置のファームウェア書き換え方法、及びファームウェア書き換えプログラム
US7598953B2 (en) 2004-11-05 2009-10-06 Microsoft Corporation Interpreter for simplified programming of graphics processor units in general purpose programming languages
US8082541B2 (en) 2004-12-09 2011-12-20 Advantest Corporation Method and system for performing installation and configuration management of tester instrument modules
US20060282474A1 (en) 2005-01-18 2006-12-14 Mackinnon Allan S Jr Systems and methods for processing changing data
US8396886B1 (en) 2005-02-03 2013-03-12 Sybase Inc. Continuous processing language for real-time data streams
US7620947B2 (en) 2005-03-11 2009-11-17 Autodesk, Inc. Enhanced directed graph representation for dependency systems
US7505975B2 (en) 2005-04-14 2009-03-17 Bea Systems, Inc. Use of transaction context to select single database instance for global transaction
JP4246176B2 (ja) 2005-04-25 2009-04-02 株式会社日立製作所 トランザクション処理方法及びその実施装置並びにその処理プログラムを記録した媒体
US7716630B2 (en) 2005-06-27 2010-05-11 Ab Initio Technology Llc Managing parameters for graph-based computations
US7877350B2 (en) 2005-06-27 2011-01-25 Ab Initio Technology Llc Managing metadata for graph-based computations
US20070118839A1 (en) 2005-10-24 2007-05-24 Viktors Berstis Method and apparatus for grid project modeling language
JP2007128343A (ja) * 2005-11-04 2007-05-24 Sharp Corp 情報処理装置、情報処理方法、プログラムおよびコンピュータ読取り可能な記録媒体
US7747565B2 (en) 2005-12-07 2010-06-29 Microsoft Corporation Garbage collector support for transactional memory
US8073671B2 (en) 2006-03-31 2011-12-06 Microsoft Corporation Dynamic software performance models
US7870556B2 (en) 2006-05-16 2011-01-11 Ab Initio Technology Llc Managing computing resources in graph-based computations
KR101495575B1 (ko) 2006-08-10 2015-02-25 아브 이니티오 테크놀로지 엘엘시 그래프 기반 연산에서의 분배 서비스
US7844946B2 (en) 2006-09-26 2010-11-30 Intel Corporation Methods and apparatus to form a transactional objective instruction construct from lock-based critical sections
EP2092424B1 (en) 2006-10-19 2015-12-30 Checkmarx Ltd. Locating security vulnerabilities in source code
US8191052B2 (en) 2006-12-01 2012-05-29 Murex S.A.S. Producer graph oriented programming and execution
US20080244524A1 (en) 2007-03-27 2008-10-02 Tim Kelso Program Test System
US7805635B2 (en) 2007-04-09 2010-09-28 International Business Machines Corporation Constraint programming for reduction of system test-configuration-matrix complexity
WO2008131106A1 (en) 2007-04-17 2008-10-30 Earl Industries Llc Digital system for organizing diverse information
JP4073033B1 (ja) 2007-04-27 2008-04-09 透 降矢 結合演算の処理機能の向上を考慮した合成関係演算を利用したマルチオペレーション・プロセッシングを用いたデータベースのクエリー処理システム
KR101635945B1 (ko) 2007-07-26 2016-07-04 아브 이니티오 테크놀로지 엘엘시 에러 핸들링이 가능한 그래프 기반의 트랜잭션 연산 처리 방법 및 시스템
US8347292B2 (en) 2007-08-30 2013-01-01 International Business Machines Corporation Transaction aggregation to increase transaction processing throughout
US7886141B2 (en) 2007-10-27 2011-02-08 Asix Electronics Corporation Method and systems for advanced reprogrammable boot codes and in-application programming of embedded microprocessor systems
US8775441B2 (en) 2008-01-16 2014-07-08 Ab Initio Technology Llc Managing an archive for approximate string matching
US20090193416A1 (en) 2008-01-24 2009-07-30 Nec Laboratories America, Inc. Decidability of reachability for threads communicating via locks
US8225288B2 (en) 2008-01-29 2012-07-17 Intuit Inc. Model-based testing using branches, decisions, and options
US8797178B2 (en) 2008-03-10 2014-08-05 Microsoft Corporation Efficient stream sharing for multi-user sensor data collection
US20090235267A1 (en) 2008-03-13 2009-09-17 International Business Machines Corporation Consolidated display of resource performance trends
US9184874B2 (en) 2008-03-31 2015-11-10 Qualcomm Incorporated Storing log likelihood ratios in interleaved form to reduce hardware memory
US8336052B2 (en) 2008-06-16 2012-12-18 International Business Machines Corporation Management, control, and monitoring of workload including unrelated processes of different containers
CA2729304C (en) 2008-06-30 2016-12-13 Ab Initio Technology Llc Data logging in graph-based computations
US20100070955A1 (en) 2008-07-08 2010-03-18 Nec Laboratories America Alias analysis for concurrent software programs
US8782613B2 (en) 2008-08-12 2014-07-15 Hewlett-Packard Development Company, L.P. Optimizing applications using source code patterns and performance analysis
US8286176B1 (en) 2008-09-29 2012-10-09 Amazon Technologies, Inc. Optimizing resource configurations
US20100169137A1 (en) 2008-12-31 2010-07-01 Ebay Inc. Methods and systems to analyze data using a graph
US7979479B2 (en) 2009-01-08 2011-07-12 International Business Machines Corporation Transaction-controlled graph processing and management
US8635694B2 (en) * 2009-01-10 2014-01-21 Kaspersky Lab Zao Systems and methods for malware classification
WO2010093879A1 (en) 2009-02-13 2010-08-19 Ab Initio Technology Llc Managing task execution
US7992040B2 (en) 2009-02-20 2011-08-02 International Business Machines Corporation Root cause analysis by correlating symptoms with asynchronous changes
US8327377B2 (en) 2009-04-30 2012-12-04 Ca, Inc. Detecting, logging and tracking component dependencies in web service transactions
US8332811B2 (en) 2009-04-30 2012-12-11 United Parcel Service Of America, Inc. Systems and methods for generating source code for workflow platform
US8473901B1 (en) 2009-06-12 2013-06-25 The Mathworks, Inc. Non-literal representation of programming language code
US8205113B2 (en) 2009-07-14 2012-06-19 Ab Initio Technology Llc Fault tolerant batch processing
US8667329B2 (en) 2009-09-25 2014-03-04 Ab Initio Technology Llc Processing transactions in graph-based applications
AU2014262225A1 (en) 2010-06-15 2014-12-04 Ab Initio Technology Llc Dynamically loading graph-based computations
EP2583168B1 (en) 2010-06-15 2017-11-08 Ab Initio Technology LLC Dynamically loading graph-based computations
US8458729B2 (en) 2010-07-20 2013-06-04 International Business Machines Corporation Managing and optimizing workflows among computer applications
US9158650B2 (en) 2010-08-04 2015-10-13 BoxTone, Inc. Mobile application performance management
EP2609507B1 (en) 2010-08-25 2019-05-15 Ab Initio Technology LLC Evaluating dataflow graph characteristics
JP5902185B2 (ja) 2010-10-25 2016-04-13 アビニシオ テクノロジー エルエルシー コンピュータプログラムを表すデータフローグラフ内のデータセットオブジェクトの管理
CN102012862A (zh) * 2010-11-09 2011-04-13 北京神舟航天软件技术有限公司 基于控制流图逻辑结构对比的编译器验证方法
US8997024B2 (en) 2010-12-09 2015-03-31 Microsoft Technology Licensing, Llc Navigating between views of a graph using placemarkers
AU2012100128A4 (en) 2011-02-22 2012-03-08 Zensar Technologies Ltd A computer implemented system and method for indexing and optionally annotating use cases and generating test scenarios therefrom
US8863089B2 (en) 2011-02-25 2014-10-14 Nintendo Co., Ltd. Method and apparatus for visualizing computer program execution
US8732669B2 (en) 2011-03-11 2014-05-20 Oracle International Corporation Efficient model checking technique for finding software defects
US9165029B2 (en) 2011-04-12 2015-10-20 Microsoft Technology Licensing, Llc Navigating performance data from different subsystems
CN103827908A (zh) 2011-07-12 2014-05-28 益百利信息解决方案公司 用于大规模信贷数据处理架构的系统和方法
US9607045B2 (en) 2012-07-12 2017-03-28 Microsoft Technology Licensing, Llc Progressive query computation using streaming architectures
US9875094B2 (en) 2012-08-29 2018-01-23 International Business Machines Corporation Microcode upgrade in a storage system
US9274926B2 (en) 2013-01-03 2016-03-01 Ab Initio Technology Llc Configurable testing of computer programs
EP3092557B1 (en) 2013-12-05 2024-03-27 AB Initio Technology LLC Managing interfaces for dataflow graphs composed of sub-graphs

Patent Citations (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7164422B1 (en) * 2000-07-28 2007-01-16 Ab Initio Software Corporation Parameterized graphs with conditional components
US6832369B1 (en) * 2000-08-01 2004-12-14 International Business Machines Corporation Object oriented method and apparatus for class variable initialization
US20030004771A1 (en) * 2001-06-28 2003-01-02 International Business Machines Corporation Method, system, and program for executing a workflow
US20070022077A1 (en) * 2002-10-10 2007-01-25 Ab Inition Software Company, A Delaware Corporation Startup and Control of Graph-Based Computation
US20040260590A1 (en) * 2003-06-17 2004-12-23 International Business Machines Corporation, Armonk, New York Automatic generation of process models
CN1965296A (zh) * 2004-03-08 2007-05-16 Ab开元软件公司 依赖关系图参数范围的划分
CN101702942A (zh) * 2007-04-10 2010-05-05 起元技术有限责任公司 编辑和汇编商业规则
WO2009039352A1 (en) * 2007-09-20 2009-03-26 Ab Initio Technology Llc Managing data flows in graph-based computations

Cited By (17)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10318252B2 (en) 2013-12-05 2019-06-11 Ab Initio Technology Llc Managing interfaces for sub-graphs
CN106170762A (zh) * 2013-12-05 2016-11-30 起元技术有限责任公司 管理包括子图的数据流图所用的接口
US10901702B2 (en) 2013-12-05 2021-01-26 Ab Initio Technology Llc Managing interfaces for sub-graphs
CN106170762B (zh) * 2013-12-05 2020-01-14 起元技术有限责任公司 管理包括子图的数据流图所用的接口
CN104216766A (zh) * 2014-08-26 2014-12-17 华为技术有限公司 对流数据进行处理的方法及装置
CN104216766B (zh) * 2014-08-26 2017-08-29 华为技术有限公司 对流数据进行处理的方法及装置
US11301445B2 (en) 2014-09-02 2022-04-12 Ab Initio Technology Llc Compiling graph-based program specifications
CN106663010A (zh) * 2014-09-02 2017-05-10 起元科技有限公司 执行基于图的程序规范
CN107250988A (zh) * 2014-11-05 2017-10-13 起元技术有限责任公司 应用程序测试
CN107924406A (zh) * 2015-08-05 2018-04-17 起元技术有限责任公司 选择用于对实时数据流执行的查询
US10671669B2 (en) 2015-12-21 2020-06-02 Ab Initio Technology Llc Sub-graph interface generation
CN109564507A (zh) * 2016-06-03 2019-04-02 起元技术有限责任公司 格式特定的数据处理操作
US11347484B2 (en) 2016-06-03 2022-05-31 Ab Initio Technology Llc Format-specific data processing operations
CN109564507B (zh) * 2016-06-03 2022-06-24 起元技术有限责任公司 数据处理方法、系统和存储介质
CN107632890A (zh) * 2017-08-10 2018-01-26 北京中科睿芯科技有限公司 一种数据流体系结构中动态节点分配方法和系统
CN114911630A (zh) * 2022-07-14 2022-08-16 小米汽车科技有限公司 数据处理方法、装置、车辆、存储介质及芯片
CN114911630B (zh) * 2022-07-14 2022-11-04 小米汽车科技有限公司 数据处理方法、装置、车辆、存储介质及芯片

Also Published As

Publication number Publication date
JP6116721B2 (ja) 2017-04-19
JP2016129059A (ja) 2016-07-14
CA2801573A1 (en) 2011-12-22
CN107066241B (zh) 2021-03-09
HK1249218A1 (zh) 2018-10-26
CA2801573C (en) 2018-08-14
JP2013528884A (ja) 2013-07-11
KR20130100261A (ko) 2013-09-10
KR20150042297A (ko) 2015-04-20
WO2011159759A4 (en) 2012-03-01
EP2583168B1 (en) 2017-11-08
AU2011268459A1 (en) 2012-12-13
US8875145B2 (en) 2014-10-28
US20110307897A1 (en) 2011-12-15
EP3287896A1 (en) 2018-02-28
CN107066241A (zh) 2017-08-18
AU2011268459B2 (en) 2014-09-18
EP2583168A1 (en) 2013-04-24
JP5898188B2 (ja) 2016-04-06
US9753751B2 (en) 2017-09-05
US20150106818A1 (en) 2015-04-16
CN103069385B (zh) 2016-12-28
EP3287896B1 (en) 2023-04-26
WO2011159759A1 (en) 2011-12-22
KR101687213B1 (ko) 2016-12-16

Similar Documents

Publication Publication Date Title
CN103069385A (zh) 动态加载基于图的计算
JP7023718B2 (ja) リアルタイムデータストリームに対して実行するためのクエリの選択
EP2021920B1 (en) Managing computing resources in graph-based computations
US9424050B2 (en) Parallelization and instrumentation in a producer graph oriented programming framework
US8060544B2 (en) Representation of data transformation processes for parallelization
AU2019203337B2 (en) Dynamic component performance monitoring
CN101887365A (zh) 用于构造基于组件的应用的可执行代码的方法和系统
US20110126179A1 (en) Method and System for Dynamic Patching Software Using Source Code
AU2014262225A1 (en) Dynamically loading graph-based computations
US10303558B2 (en) Checkpointing higher order query operators
AU2016200107B2 (en) Dynamically loading graph-based computations
AU2012241069B2 (en) Managing computing resources in graph-based computations

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
C14 Grant of patent or utility model
GR01 Patent grant