CN107924406A - 选择用于对实时数据流执行的查询 - Google Patents
选择用于对实时数据流执行的查询 Download PDFInfo
- Publication number
- CN107924406A CN107924406A CN201680046044.5A CN201680046044A CN107924406A CN 107924406 A CN107924406 A CN 107924406A CN 201680046044 A CN201680046044 A CN 201680046044A CN 107924406 A CN107924406 A CN 107924406A
- Authority
- CN
- China
- Prior art keywords
- data
- inquiry
- component
- data flow
- parameter
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/24—Querying
- G06F16/245—Query processing
- G06F16/2455—Query execution
- G06F16/24568—Data stream processing; Continuous queries
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/24—Querying
- G06F16/242—Query formulation
- G06F16/2428—Query predicate definition using graphical user interfaces, including menus and forms
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/90—Details of database functions independent of the retrieved data types
- G06F16/901—Indexing; Data structures therefor; Storage structures
- G06F16/9024—Graphs; Linked lists
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Databases & Information Systems (AREA)
- Physics & Mathematics (AREA)
- Data Mining & Analysis (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Computational Linguistics (AREA)
- Software Systems (AREA)
- Human Computer Interaction (AREA)
- Mathematical Physics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
一种计算机实现方法,用于对位于近实时数据流中的不同位置的数据项执行查询,以随着所述查询的执行而提供所述查询的近实时中间结果,所述计算机实现方法包括以下步骤:不时地,利用一个或多个计算机系统来对位于所述近实时数据流中的不同位置的数据项中的两个或更多个数据项执行所述查询,其中针对所述两个或更多个数据项中的各数据项,近实时地访问所述两个或更多个数据项;生成表示执行所述查询的结果的信息;以及随着所述查询的继续执行,通过将所述结果与对在所述近实时数据流中先前出现的数据项执行所述查询的先前结果进行聚合,来生成查询执行的中间结果;以及在所述查询的执行完成之前,将查询执行的所述中间结果发送至一个或多个客户端装置。
Description
技术领域
本申请涉及用以选择用于对数据流、特别是实时数据流执行的查询的计算机系统、方法和机器可读硬件存储器。具体地,实现涉及实现对可能源自于数据源的分布式网络的数据流所要执行的多个活动查询的基于数据流图的计算。
背景技术
许多联网数据处理系统需要及时地访问关键信息以作出决策。满足这些要求的传统方法是构建数据仓库、数据集市和报告应用。这些方法尚不能满足真正实时应用(诸如欺诈检测、服务监控、游戏和实时趋势等)的严格的服务水平协议(SLA)要求,这是因为这些方法不能在搜索模式或条件的同时监控连续到达的数据流。
另外,数据库和结构化查询语言(SQL)不具有用以等待数据到达的构造。在查询被激发时,SQL对存储库中所存在的历史数据起作用。针对数据仓库中所存储的历史数据的该处理通常无法满足多个延迟要求,这是因为该处理需要时间来收集、清理和集成数据仓库中的数据(通常已知为ETL-提取变换加载)并且因为该处理还需要时间来开始用于处理仓储数据的查询。
发明内容
在实现中,一种计算机实现方法,用于对位于(例如,近实时)数据流中的不同位置的数据项执行查询以随着所述查询的执行而提供所述查询的(例如,近实时)中间结果,所述计算机实现方法包括以下步骤:不时地(例如,定期地),利用一个或多个计算机系统来对位于所述数据流中的不同位置的数据项中的两个或更多个数据项执行所述查询,其中可选地,针对所述两个或更多个数据项中的各数据项,近实时地访问所述两个或更多个数据项;生成表示执行所述查询的结果的信息;以及随着所述查询的继续执行,通过将所述结果与对所述(例如,近实时)数据流中先前出现的数据项执行所述查询的先前结果进行聚合,来生成查询执行的中间结果;以及在所述查询的执行完成之前,将查询执行的所述中间结果发送至一个或多个客户端装置。一个或多个计算机的系统可被配置为借助于使软件、固件、硬件或它们的组合安装在该系统上来进行特定操作或动作,其中该软件、固件、硬件或它们的组合在工作时,使系统进行这些动作。一个或多个计算机程序可被配置为借助于包括指令来进行特定操作或动作,其中这些指令在由数据处理设备执行时,使该设备进行这些动作。
这些动作包括:在后续时间点,将所述中间结果与在所述后续时间点执行所述查询的结果进行聚合,以生成最终结果。这些动作还包括存储最终结果,并且丢弃所述中间结果。不时地执行所述查询包括:对(i)所述(例如,近实时)数据流中的一个或多个第一数据项和(ii)所述(例如,近实时)数据流中的一个或多个第二数据项执行所述查询,其中,所述一个或多个第一数据项位于所述数据流的第一部分中,以及所述一个或多个第二数据项位于所述数据流的第二部分中。执行所述查询包括:定期地执行表示所述查询的数据流图,其中所述数据流图包括用以实现所述查询的可执行计算机代码,以及所述数据流图接收所述查询的查询规范作为输入。所述数据流图包括表示在执行第一查询时要进行的操作的组件,以及所述计算机实现方法还包括以下步骤:针对组件,进行检查点操作,其中所述检查点操作用于保存所述组件的本地状态以实现所述数据流图的状态的可恢复性。对在某时间段内所述近实时数据流中出现的数据项执行所述查询,其中该时间段的结束在开始执行所述查询时是未知的。执行所述查询的所述数据流中的数据项的量在开始执行所述查询时是未知的。
这些动作包括:访问表示针对所聚合结果的数据变换所用的用户定义定制操作的信息;对所聚合结果执行所述用户定义定制操作;以及根据所述用户定义定制操作来对所聚合结果进行变换。这些动作包括:基于所聚合结果来生成近实时警告,以向用户警告检测到预定义条件。近实时数据流包括(i)在不同时间定期地接收或者(ii)在不同时间连续地接收数据项的数据流。这些动作包括:从数据队列、数据存储库或数据馈送接收所述近实时数据流。所述查询是第一查询,以及所述计算机实现方法还包括以下步骤:选择用于对所述数据流中的不同位置出现的数据项中的两个或更多个数据项执行的第二查询;以及针对所述数据流中的数据项,(例如,近实时地)执行所述第一查询和所述第二查询。这些动作包括生成用户界面所用的信息,其中所述用户界面在呈现在显示装置上的情况下,包括:输入字段,用于输入用以定义对所述近实时数据流要执行的查询的信息。这些动作包括在控制存储库中访问作为针对所述近实时数据流的执行候选的预定义查询。
上述的全部或一部分可被实现为包括如下的指令的计算机程序产品,其中所述指令存储在一个或多个非暂时性机器可读存储介质以及/或者一个或多个计算机可读硬件存储装置上、并且能够在一个或多个处理装置上执行,其中所述一个或多个计算机可读硬件存储装置是硬盘驱动器、随机存取存储器存储装置(诸如动态随机存取存储器等)、机器可读硬件存储装置和其它类型的非暂时性机器可读存储装置。上述的全部或一部分可被实现为可以包括用以存储可执行指令以实现所述功能的一个或多个处理装置和存储器的设备、方法或电子系统。
尽管大型计算机网络潜在地可以从分布在网络内的各种源(例如,分布在全球各地的数据源)收集大量数据,但在遇到提取、变换和加载所收集到的数据的挑战的情况下、特别是在数据包括连续到达的数据流的情况下,这些大型计算机网络遭受延迟。这种分布式网络可以是物流网络(例如,机场、火车站、港口或其它物流中心)、安全相关网络(例如,信用卡信息处理、银行业务或其它认证系统)、或者进行工业处理的机器网络。这里所述的实施例使得能够以非常快的方式(例如,实时地/近实时地)处理大量数据,同时还保持对数据进行的计算的可靠性和/或安全性。在这些实施例的上下文中所描述的方法针对数据量、数据源自于的底层网络的大小和对数据流所要执行的活动查询的量/种类,以灵活方式可扩展。
在以下的附图和说明书中阐述了一个或多个实施例的详情。通过说明书和附图并且通过权利要求书,这里所述的技术的其它特征、目的和优点将显而易见。
附图说明
图1是数据处理系统的框图。
图2、5B和8各自是聚合数据处理的结果的概念图。
图3~5A是数据流图的示图。
图6~7是流程图。
图9是多个查询的动态执行的示图。
图10A是示出主要元件的相互关系的本发明的一个实施例的框图。
图10B是数据流图的框图。
图11是包括具有指定运行时参数的上卷组件和排序组件2004的典型图的框图。
图12是表示将与图相关联的运行时参数网格的图形对话框的一个实施例的示图。
图13是总结使用运行时参数的处理的流程图。
图14是由关键字提示生成的图形对话框的一个实施例的示图。
图15是由过滤提示生成的图形对话框的一个实施例的示图。
图16是由上卷提示生成的图形对话框的一个实施例的示图。
图17是由重定格式提示生成的图形对话框的一个实施例的示图。
图18A是第一个图中的合并联接(MergeJoin)组件合并来自文件A和B的数据并且将结果输出至输出文件的框图。
图18B是第二个图中的上卷(Rollup)组件聚合来自文件A的数据并且将结果输出至输出文件的框图。
图18C是图中的合并联接组件联接来自文件A和B的数据并且上卷组件聚合如此得到的数据并将最终结果输出至输出文件的框图。
图19是呈现具有条件解释控件的条件的图形对话框的一个实施例的示图。
图20是示出发生中毒(poisoning)的情形的图的示图。
图21是总结包括完全移除(Remove Completely)条件组件的图的运行时准备的处理的流程图。
图22是总结包括针对本发明的特定实施例的用流代替(Replace With Flow)条件组件的图的运行时准备的处理的流程图。
图23是表示在没有运行时参数的情况下的上卷应用的图的示图。
图24是表示图23的上卷应用的运行时参数化版本的图的示图。
图25是表示针对图24的示例性应用的运行时参数网格的图形对话框的一个实施例的示图。
图26A是表示由Web界面(Web Interface)根据图25的参数网格中的信息而生成的表单的图形对话框的一个实施例的示图。
图26B是用户用参数值填写的图26A的表单的示图。
图27是表示运行时参数化上卷和联接应用的图的示图。
图28是表示针对图27的示例性应用的运行时参数网格的图形对话框的一个实施例的示图。
图29是表示由Web界面根据图28的参数网格中的信息而生成的表单的图形对话框的一个实施例的示图。
图30是表示运行时参数化上卷-联接-排序应用的图的示图。
图31是表示针对图30所示的示例性应用的运行时参数网格的图形对话框的一个实施例的示图。
图32A是传播元数据的图的示图。
图32B是针对图32A的图中的组件的子图的示图。
图33是针对元数据传播处理的流程图。
图34A是包括具有组件内和组件间依赖性的参数的图。
图34B和34C是表示图34A中的图的参数之间的依赖性的依赖图。
图35是修改后的拓扑排序处理的示图。
图36是执行数据流图的系统的示例性配置的框图。
图37是包括微图(micrograph)的典型数据流图的例示。
图38A是典型专用组件的例示。
图38B是典型微图的例示。
图39是在存储器中具有多个微图的典型专用组件的例示。
图40A是具有多个微图处理数据流的典型专用组件的例示。
图40B是具有多个专用组件的典型数据流图的例示。
图41是包括预处理组件和后处理组件的典型专用组件的框图。
图42是各自与单个数据库交互的多个数据流组件的示例的例示。
图43是与多个数据库交互的典型数据流组件的例示。
图44A是与多个数据库交互的典型数据流组件的例示。
图44B是使用通用协议层与多个数据库交互的典型数据流组件的例示。
图45是在运行时之前对数据流图进行编译的系统的示例性配置的框图。
各个附图中的相同的附图标记表示相同的元素。
具体实施方式
与本发明一致的系统实现实时交易跟踪系统(RTTT)。通常,RTTT是实现用于在延长(且未知)的时间段内从数据流获得信息的操作(例如,查询)的软件程序。RTTT允许对实时应用中的查询的自组织监控。如以下进一步所述,RTTT还支持动态添加的多个查询的执行,并且提供部分结果的可视性。如这里所使用的,“实时”包括但不限于近实时和基本实时,其中针对这两者各自,在接收或访问数据时和在实际发生该数据的处理时之间可能存在时滞,但在(例如,连续地或定期地)接收到数据时仍实时地处理该数据。使用RTTT,用户可以实时地指定针对数据流要(例如,并发地)进行的操作(例如,查询)。RTTT生成所执行查询的中间结果,并且(例如,定期地)利用所执行查询的新的后续结果来更新这些中间结果。通常,中间结果包括查询执行完成之前发生的查询执行的结果。RTTT还向用户提供以下的界面,其中这些界面用以(例如,定期地)(随时)生成新的查询以供执行,以及/或者向用户提供与系统是否可以(以期望方式、例如实时地)对数据流进行指定操作(例如,查询)有关的反馈。如以下进一步所述,用户还可以随意停止或终止查询。
RTTT还仅存储查询的结果并且丢弃在数据流中发生的各个项。利用RTTT,用户能够定期地和/或连续地监控数据并且频繁地(实时地)对该数据进行操作以获得信息。
参考图1,数据处理环境100(例如,运行时环境)包括用于实现RTTT 103的系统102。RTTT 103包括:源数据读取器106,用于接收源数据;控制存储库112,用于存储查询107a...107n和查询对象111a...111n;查询驱动器或执行模块108,用于确定要执行查询对象111a...111n中的哪个查询对象;以及查询工人引擎110a...110n,用于对源数据(或者对源数据的一部分)执行查询。RTTT 103使用这里所述的技术来支持多个查询的执行。以下说明可以参考“查询”或“该查询”。针对“查询”或“该查询”的这些参考是为了方便的目的,而不是将伴随的说明局限于单个查询。下述的技术适用于多个查询。
通常,源数据包括从位于系统102外部的第三方数据源(例如,系统)接收到的数据。源数据包括源数据读取器106从外部系统接收到的实时数据流104(例如,近实时数据流)。实时数据流104包括如下的数据流:例如在正定期地、间歇地和/或连续地接收该流时,数据项位于该流中的不同位置。例如,一些数据项位于流的一部分中,并且其它数据项位于流的另一后续部分中。实时数据流104还包括数据项是(i)在不同时间定期地接收到或者(ii)在不同时间连续地接收到的数据流。实时数据流104包括各种类型的数据,例如包括表示交易(例如,物流交易、机器数据交易、借记卡交易、自动柜员机(ATM)交易、信用卡交易、签帐卡交易、储值卡交易、支付卡的国际交易、支付卡的国内交易和手动现金交易等)的交易日志馈送数据。在图1的示例中,在实时数据流104中接收文件109。在该示例中,文件是一种类型的源数据。通常,文件包括一组记录(例如,二十万条记录),其中各记录表示数据项。文件中的记录例如可以由RTTT 103安排到工作单元中。通常,工作单元是要处理的数据的集合。例如,工作单元可以表示一组记录或记录的子集。源数据读取器106扫描系统102中的多个目录(未示出)以备来自第三方数据源的源数据到达。这些目录是预先配置在系统102中的,以接收源数据。源数据读取器106从实时数据流104读取数据。源数据读取器106读取该数据一次,并且使用该读取数据来服务多个查询(例如,查询107a...107n)。在该示例中,系统102不包括用于(例如,永久地)存储实时数据流104中发生的数据项的数据存储器。相反,在正针对实时数据流104中的数据执行查询的同时,实时数据流104除暂时存储在系统102的缓冲器高速缓存中外,还被源数据读取器106读取然后被丢弃。在执行这些查询之后,缓冲器高速缓存的内容也被丢弃。
RTTT 103还包括查询创建器114,其中该查询创建器114向用户(例如,分析人员)提供用于创建查询并且获得与所创建的查询是否可以由系统进行有关的反馈的用户界面。查询创建器114包括用于向分析人员提供用户界面以生成查询的模块。在示例中,查询创建器114是数据输入所用的用户界面。在另一示例中,查询创建器114包括电子表格模板。查询创建器114验证查询句法并且(根据模板)生成作为查询所用的可执行代码的查询工人引擎。将可执行代码作为文件存储在系统102内的盘上,并且控制存储库112跟踪查询何时开始和停止。如以下所述,查询工人引擎包括用于执行任何查询对象的通用可执行代码。查询创建器114还向用于控制、元数据、安全和审计的控制存储库112注册查询元数据(例如,查询状态)。查询状态指定查询当前是否正在执行、或者最后一次执行查询的时间。
通过查询创建器114的用户界面,客户端装置116将查询107a发送至系统102。用户可以定义被发送至系统102并存储的多个查询107a...107n。发送查询107a的客户端装置116由创建查询107a的用户117进行操作。查询107a包括指定查询的句法的查询句法信息。响应于接收到查询107a,查询创建器114验证查询句法并且生成查询对象111a。查询107a包括查询规范、即查询(查询词项)的详细说明。
例如,查询107a是用于指定如何处理传入数据流(例如,实时数据流104)和如何处理结果例如以供显示(例如,用户想要看到什么结果)的用户输入信息。查询107a还指定查询执行的标准。查询对象111a是查询107a的机器表示(即,机器语言表示),使得查询工人引擎可以读取并处理该查询。查询工人引擎执行该查询对象。为了方便的目的且并非限制性地,可以使用词项查询来指代用户指定查询(例如,查询107a)或查询对象(例如,查询111a)。
如前面所述,查询工人引擎是查询所用的可执行代码。该可执行代码包括未实例化的数据流图,例如不是针对具体实例表示的数据流图。该未实例化的数据流图包括各种组件。在读入查询对象时,查询工人引擎或预执行模块例如基于执行如由查询对象指定的查询所需的组件,来关闭某些组件并且开启其它组件。即,查询对象指定哪些组件要由查询工人引擎本地执行以满足查询的规范。在该示例中,查询创建器114针对各查询生成查询对象。例如,查询创建器114针对查询107a...107n分别生成查询对象111a...111n。
在示例中,系统102生成图形用户界面(GUI)所用的数据,其中经由该GUI,用户输入产生查询和查询规范时所使用的数据。经由GUI,用户输入与查询相关联并且用于标识该查询的查询标识符(ID)。如以下进一步详细所述,查询ID还用于检索查询规范并且命名各查询结果文件、例如用于存储查询执行的中间结果和最终结果的文件。用户还将用于指定查询执行的开始时间、查询执行的停止时间和报告间隔(例如,用户可能查看执行查询的结果的频率)的数据输入到查询规范中。通过指定查询的开始/停止时间,用户可以调度查询以在特定时间运行并运行特定次数。在变形例中,系统102(例如,经由图形用户界面中的显示器)向用户提供用于提供查询的自动开始和停止的控件。
通过查询创建器114,用户可以动态地添加一个或多个查询以供实时执行。一旦创建了查询,用户可以通过更新查询规范以指定新的开始时间(例如,作为当前时间)和/或新的停止时间来(例如,向正执行的一组多个查询)动态地添加查询。即,经由查询创建器114,用户可以向已处于执行中的一组多个查询动态地添加附加查询。用户可以动态地且实时地添加多个查询以供实时的当前执行。
查询107a还包括为了实现查询而执行的编译数据流图的名称。通常,数据流图是有向图。将编译数据流图的该名称保存为查询规范的一部分。如以下更详细地所述,经由将查询应用于实时数据流104的一部分的数据流图来实现查询。在该示例中,数据处理环境100是用于将查询开发为包括顶点(表示数据处理图组件或数据集)的数据流图的环境(例如,开发环境),其中这些顶点通过顶点之间的有向链接(表示组件之间的工作元素即数据的流)来连接。例如,以下更详细地描述这种环境。在标题为“Executing ComputationsExpressed as Graphs”的美国专利5,966,072中描述了用于执行这种基于图的查询的系统。根据该系统所制成的数据流图可以提供用于将信息输入和输出图组件所表示的各个处理、用于使信息在处理之间移动以及用于定义处理的运行顺序的方法。该系统可以包括从任何可用方法中选择处理间通信方法的算法(例如,根据图的链接的通信路径可以使用TCP/IP或UNIX域套接字,或者使用共享内存来在处理之间传递数据)。
如这里所述的数据流图(例如,微图)可以由系统实现,其中该系统可以包括:数据存储器;计算环境,其连接至数据存储器并且被配置为生成数据流图,该数据流图实现与针对文件要执行的多个活动查询相关联的基于图的计算,其中该基于图的计算包括用以实现多个查询的可执行计算机代码,该基于图的计算是针对从一个或多个输入数据集经由处理图组件的图流向一个或多个输出数据集的数据所进行的,其中该数据流图由数据存储器中的数据结构指定,该数据流图具有由数据结构指定、并且表示利用一个或多个链接所连接的图组件的多个顶点,这些链接由数据结构指定并且表示图组件之间的数据流;运行时环境,其安装在一个或多个计算机上,以执行基于图的计算并且连接至数据存储器,该运行时环境包括:预执行模块,其被配置为读取用于指定数据流图的所存储的数据结构、并且分配并配置用于进行由预执行模块指派至数据流图的图组件的计算的计算资源;以及执行模块,用于调度并控制所指派的计算的执行,使得执行这里所述的方法中的一个或多个方法的操作。
使用系统102所开发的数据流图可以存储在控制存储库112(或另一数据存储器)中并且由RTTT 103进行访问。RTTT 103可以执行这些数据流图以执行与这些数据流图的组件相关联的查询,从而处理在实时数据流104中接收到的数据。
使用查询创建器114,用户可以指定查询的各种查询标准和查询参数。通常,查询标准包括查询执行之前要满足的条件(例如,要查询的数据的类型)。在示例中,基于查询开始时间(例如,而不是基于查询标准)来选择查询以供执行。即,用户指定查询的开始时间,并且查询在该时间“唤醒”或者开始执行。存在各种类型的查询参数,例如包括要显示在结果中的属性(例如,用户在查询结果中想要查看哪些属性)、指定如何聚合查询结果的聚合关键字、过滤条件、排序条件(例如,指定如何对查询结果进行排序的信息,诸如基于日期等)、输出样式(例如,指定查询结果的输出所用的格式的信息)、以及警告阈值(指定触发发送警告的一个或多个预定义条件的信息)。
例如,用户可以指定过滤条件,即指定如何过滤实时数据流104中所包括的数据项的信息。过滤条件表示要从查询结果中滤除(排除)哪些类型的数据、以及要将哪些类型的数据滤入(包含到)查询结果中。基于用户提供的过滤条件,系统102利用过滤条件更新查询对象111a,并且将查询对象111a提供至查询工人引擎,以使得查询工人引擎能够根据用户的过滤条件来过滤查询结果。
使用查询创建器114,用户还可以定义针对查询结果的数据变换所用的定制操作。用户可以指定用以读取并转换扩展二进制编码的十进制交换码(EBCDIC)日期时间的操作。用户可以指定用以将表示货币金额的数据项的格式转换成美元(USD)货币的另一操作。用户可以指定用以根据实时数据流104中的数据的类型来确定支付卡类型(例如,借记卡、ATM卡、储值卡、信用卡和签帐卡等)的又一类型的操作。通过查询参数和用户定义定制操作,查询工人引擎(例如,查询工人引擎110a...110n其中之一)能够根据用户的规定来定制查询结果。特别地,查询工人引擎(例如,经由控制存储库112中的查询对象111a)访问表示针对执行查询的聚合(例如,最终)结果的数据变换所用的用户定义定制操作的信息。查询工人引擎针对该聚合结果执行用户定义定制操作,并且根据用户定义定制操作来变换(例如,修改)该聚合结果。
查询创建器114将查询107a和查询对象111a(彼此相关联地)存储在控制存储库112(例如,用于存储查询和关联的查询对象的数据存储库)中。在该示例中,控制存储库112存储针对实时数据流104要执行的查询107a...107n和查询对象111a...111n。在该示例中,查询107a...107n包括查询107a,并且查询对象111a...111n包括查询对象111a。如前面所述,查询创建器114提供查询107a的审计和安全。查询创建器114还向查询驱动器108注册查询对象111a...111n。
如以下更详细地所述,查询驱动器108是RTTT 103中的选择查询对象111a...111n中的一个或多个查询对象以供执行并且确定何时执行这些所选择的查询对象的部分。查询驱动器108包括传入消息总线上读取实时的源数据流的连续应用。在示例中,查询驱动器108连续地执行数据流图。经由数据流图,查询驱动器108被配置成:在查询驱动器108(例如,从数据流)检测或接收到更多数据的情况下,该查询驱动器108检查控制存储库112以确定要运行哪个查询对象。查询驱动器108针对需要运行的各查询对象使查询工人引擎的一个实例实例化。
查询驱动器108针对活动的、且被调度为要(例如,在当前时间和/或在即将到来的时间)运行的查询,(例如,间歇地)轮询控制存储库112。通过针对活动查询间歇地轮询控制存储库112,查询驱动器108使得动态添加的多个查询能够例如通过被调度为在特定时间开始来执行。如这里所述,查询可被调度为在指定时间开始和停止。针对已在执行中的给定(原始)的一组查询,查询驱动器108可以例如基于轮询控制存储库112的结果来识别要添加至原始一组执行查询的附加查询。在该示例中,这些附加查询被调度为在原始组中的查询的执行时间之后的时间执行。通过间歇地轮询控制存储库112,查询驱动器108通过添加要执行的更多附加查询来向已执行的查询进行动态添加。在变形例中,在向控制存储库112注册查询时,控制存储库112向查询驱动器108推送用于指定要执行哪些查询(以及何时执行这些查询)的信息。该推送信息包括针对所注册查询指定活动的查询工人引擎的信息。存在向控制存储库112注册查询的各种方式,例如包括生成查询的查询对象并且将该查询对象存储在控制存储库112中。
查询驱动器108将传入数据(例如,在最后5秒内到达的所有数据)分批为小的工作单元。如前面所述,针对各工作单元,查询驱动器108通过轮询控制存储库112以确定此时的活动的查询工人引擎,来确定要执行哪些查询对象。这些活动的查询工人引擎表示当前活动的查询。如前面所述,查询具有开始时间。查询工人引擎被编程为在该开始时间开启(例如,被列为活动)。查询驱动器108对于针对当前工作单元所要执行的各查询,调用查询工人引擎的一个实例。在查询工人引擎完成执行时,控件传递回至查询驱动器108并且更新控制数据库(例如,控制存储库112)中的查询状态。
在变形例中,在查询创建器114向查询驱动器108注册查询对象111a...111n其中之一时,查询驱动器108(例如,在其内存高速缓存中)存储指定用于执行各个查询对象111a...111n的查询标准和各个查询对象111a...111n的查询ID的数据。使用所存储的信息,查询驱动器108实时地以及在接收到实时数据流104时,判断应当针对实时数据流104执行查询对象111a...111n中的哪个查询对象。查询驱动器108通过例如基于这些查询的查询规范确定用户指定的查询的开始和停止时间来进行该判断。在一些示例中,查询规范指定查询的开始和停止时间。在另一示例中,查询驱动器108通过将查询标准与实时数据流104中的数据项的质量(例如,属性)进行比较来进行该判断。在查询驱动器108判断为满足查询对象111a...111n中的一个或多个查询对象的查询标准(以及/或者特定查询应当根据开始时间而开始)的情况下,查询驱动器108使用适当的查询ID来从控制存储库112中检索满足查询标准的查询并且检索适当查询的查询对象。在另一示例中,查询规范表示:只要实时数据流104包括满足正执行的查询的查询标准的数据,就应当执行查询。
查询驱动器108实现从源数据读取器106读取实时数据流104的如上所述的数据流图(例如,连续图和定期图等)。使用该图,查询驱动器108确定实时数据流104的哪些数据项满足控制存储库112中所存储的查询对象111a...111n的查询标准。在识别出满足查询标准的查询时,查询驱动器108调用查询工人引擎(例如,查询工人引擎110a...110n其中之一)的实例。在变形例中,查询驱动器108针对活动的查询工人引擎的列表轮询控制存储库112,并且将这些活动的查询工人引擎应用于实时数据流104或其一部分。查询驱动器108还将用以跟踪执行了哪些查询、何时执行这些查询以及这些查询执行了多长时间的查询执行状况(例如,审计追踪)记录作为控制存储库112中的查询的查询状态的一部分。
通常,查询工人引擎是可以支持用户查询的通用程序。查询驱动器108对于针对给定工作单位需要执行的各用户查询引发查询工人引擎的一个实例。仅这些查询工人引擎在当前系统日期时间处于相应查询的监控时间段内的情况下被实例化。实际用户查询驱动查询工人的特征(例如,如果特定用户查询无聚合或排序,则针对查询工人的相应实例关闭这些功能)。查询工人引擎在被请求的情况下,还计算警告度量并且在阈值时传送警告。
查询工人引擎包括用于查询(例如,查询对象111a...111n其中之一)的如上所述的数据流图(例如,单个通用图)。通过执行该图来执行查询对象。针对所执行的各查询,查询驱动器108生成或选择查询工人引擎的一个实例作为图。在图1的示例中,查询驱动器108针对实时数据流104中的数据项(例如,并发地)执行查询对象111a...111n。为了执行这些查询对象,查询驱动器108生成或选择查询工人引擎110a...110n。在该示例中,查询工人引擎110a...110n分别执行查询对象111a...111n。
在示例中,实时数据流104中的数据项的量在开始执行查询对象111a...111n其中之一时是未知的。另外,数据项在一段时间内在实时数据流104中出现。该段时间的结束在开始执行查询对象111a...111n其中之一时是未知的。在该示例中,源数据读取器106接收实时数据流104中的文件109。在该示例中,源数据读取器106按指定时间间隔(例如,每5分钟)接收新的文件。查询驱动器108判断针对文件109应当执行查询对象111a...111n中的哪个查询对象。在该示例中,查询驱动器108判断为针对文件109应当执行查询对象111a...111n中的各查询对象。如此,查询驱动器108生成或检索查询工人引擎110a...110n以针对文件109(并发地)执行查询对象111a...111n。然后,例如针对具有指定查询仍是活动的、并且正在执行的开始时间和结束时间的查询,在下一文件到达时,重复该处理。在该示例中,源数据读取器106读入文件109并且将文件109发送至查询驱动器108。查询驱动器108将文件109分别发送至查询工人引擎110a...110n中的各查询工人引擎以在执行查询对象111a...111n时使用。
(例如,在用户输入不符合查询处理的预定义要求的情况下,)针对查询,查询工人引擎还生成警告度量并传送警告。例如,在用户正定义查询规范时,用户将指定触发警告的各种预定义事件(例如,指定事件的发生的通知消息)。这些事件可以存储在关联查询的查询对象中。在另一示例中,用户可以指定事件的阈值,其中用户请求被通知事件的数量何时超过阈值。通常,事件包括一个或多个预先指定的数据值或类型的发生。查询驱动器108将表示针对经由查询工人引擎110a...110n正执行的各个查询的预定义事件的数据发送至查询工人引擎110a...110n中的各查询工人引擎,以使得查询工人引擎110a...110n能够生成适当的警告。
基于针对实时数据流104中的数据项执行查询对象111a...111n,查询工人引擎110a...110n生成中间结果118a...118n。中间结果118a...118n在查询执行的整个持续时间内均可用(以供用户评审)。如以下更详细地所述,查询工人引擎110a...110n将中间结果118a...118n分别与查询对象111a...111n的后续执行的后续结果进行组合。(例如,在查询的执行停止时)这些组合结果产生新的中间结果或最终结果。
使用中间结果118a...118n(或最终结果),查询工人引擎110a...110n针对所执行的查询(例如,采用逗号分隔值(CSV)形式或采用结构化查询语言(SQL)格式)生成警告120和查询结果122。在示例中,在查询仍在执行中并且在完成之前,查询结果包括部分结果,例如直到当前时间点为止的查询执行的结果。在该示例中,例如,在查询继续执行时,利用新的结果来连续地和/或定期地更新这些部分结果。例如,在RTTT 103检测到实时数据的一个或多个项满足查询的条件中的一个或多个条件时,还实时地显示这些部分结果。在RTTT103连续地检测到实时数据的新项满足查询条件时,RTTT 103例如基于新检测到的项来更新并显示部分结果。在该示例中,系统102将警告120和查询结果122发送至客户端装置125。在示例中,将查询结果122存储在控制存储库112中以供后续检索。通常,警告包括向用户通知所检测到的事件的通知消息。通常,查询结果包括执行查询的结果的可视化,并且包括指定检测到特定事件的频率和时间的信息。警告120可以是电子邮件警告或简单消息服务(SMS)警告。系统102可被配置为在所定义的阈值(例如,指定针对要发送的警告必须超过的大小(例如,事件的大小)的信息)处传送警告。警告120和查询结果122各自被发送至客户端装置124,例如以供客户端装置124的用户125查看。系统102输出各种类型的查询结果,例如包括统一输出和附加输出。通常,统一输出包括将结果量化成图表和其它可视化的数据。通常,附加输出包括结果的数据文件。由于查询实时地(以及在接收到实时数据流104时)运行,因此系统102能够实时地以及在数据到达的数分钟内传送结果。
在示例中,数据处理环境100用于判断支付卡(例如,借记卡、ATM卡、储值卡、信用卡和签帐卡等)何时存在欺诈活动的风险。在该示例中,系统102从发行该卡的实体(例如,发行实体)接收用于指定存在风险的一个或多个卡的信息。在该示例中,源数据读取器106从发行实体的系统接收表示交易的实时数据流。基于实时数据流,系统102监控来自存在风险的卡的交易,并且确定这些卡所发起的交易的数量的计数和类型。存在各种类型的交易,例如包括手动现金交易、ATM交易、国内使用交易、国际使用交易、借记卡交易、签帐卡交易、储值卡交易和信用卡交易等。在该示例中,雇员(例如,欺诈保护部门的分析人员)使用查询创建器114来指定警告条件。例如,警告条件指定系统102何时确定针对存在风险的卡的各种类型的交易(例如,国际使用交易)的阈值量以警告发行实体的系统(例如,使得发行实体可以拒绝交易)。
RTTT 103可用于监控按区域和国家等所处理的物流事件或货物的总数。RTTT 103还用于销售分析,以确定特定产品在特定时间段内(例如,在从15/11/2013 08:00:00起的N个小时的时间段内)在特定国家中的总销售额和交易计数。RTTT 103可用于按区域和国家等监控营销供给拒绝的总数。用户可以配置RTTT 103以指定他/她想要被通知拒绝的总数是否超过阈值。RTTT 103可用于在传入数据中的任何强制性列为NULL(空)或空白的情况下,生成警告。
在示例中,RTTT 103还进行警告所用的实时滚动窗口操作(例如,聚合)。对于所定义的时间窗,存在各种类型的操作,例如包括求和操作、计数操作、平均值操作、最小值操作和最大值操作等。时间窗自身的大小是用户定义参数(例如,10分钟和60分钟等)。例如,用户可以配置RTTT 103以对滚动10分钟时间窗的供给的拒绝数进行计数。用户还可以定义指定用户想要何时以及如何(例如,经由电子邮件和SMS等)得到通知的各种警告阈值。例如,用户可以指定拒绝计数何时大于阈值量,以通过发送电子邮件警告来通知用户。
在另一示例中,金融机构正计划在区域内推出新的产品组合,并且商业用户想要在该推出之后的最初“N”个小时(监控时间段)内监控该产品的接受情况。商业用户想要监控诸如签约的客户的计数、所承诺的总量、按产品和地理位置的划分等的多个度量。在新的客户在产品中投资多于特定阈值量的情况下,商业用户还想要监控时间段期间的警告。这些商业用户需要在监控间隔内规则地监控组合的接受情况,并且按需需要信息以绘制趋势图。在该示例中,在整个数据集在数据仓库中将可用于SQL查询和分析的情况下,商业用户不想等待监控时间段的结束。在该示例中,传入数据馈送并没有存储在新的专用报告存储库中以供短期监控需求用,这将会导致数据与数据仓库重复。使用这里所述的技术,“即时地”(例如,实时地)查询数据以将所请求的监控信息实时地提供至用户。另外,用户可以预先配置各自具有自己的监控时间段的数百个查询。这些查询并发地运行。各查询对连续的数据流进行实时计算,并且连续地生成商业可用的结果。在针对各个查询的监控间隔结束时,系统将最终结果推送至接收方并且自动清除查询以释放系统资源。
在示例中,针对各查询驱动器存在一个数据流。在该示例中,数据流包括一个格式的记录。在该示例中,对于各自表示特定格式的记录的多个数据流,数据处理环境包括多个查询驱动器,其中各查询驱动器被指派至这些数据流其中之一。
参考图2,图150从概念上示出将查询执行的中间结果与查询执行的后续结果进行聚合。在该示例中,在时间T1处执行特定查询。基于该查询的执行,RTTT 103生成结果152(例如,时间T1处的结果)。在时间T1之后的时间T2处,再次执行查询(例如,此次针对不同的数据)。例如,可以针对所接收到的新文件再次执行查询。基于时间T2处的查询执行,RTTT103生成作为在时间T2处执行查询的结果的结果156。RTTT 103将结果152与结果156进行组合以生成时间T2处的中间结果158。通常,中间结果是直到当前时间段为止并且包括该当前时间段的所有结果的聚合。确定各后续时间处的新中间结果的该处理继续,直到时间Tn为止。在时间Tn处,查询的执行完成。另外,在时间Tn处,RTTT 103确定在时间Tn处执行查询的结果162。RTTT 103通过将(作为时间Tn之前的所有时间的聚合结果的)中间结果160与结果162进行组合,来生成查询执行的最终结果164。在该示例中,中间结果160是时间Tn-1处的中间结果。结果162是时间Tn处的结果(例如,仅时间Tn处的结果)。
参考图3,示出微图200。通常,微图是如上所述的数据流图的专用子图,并且被配置为动态地检索并且嵌入在运行微图组件内。以下说明用于执行这种动态加载的图的系统。在一些实现中,微图可以被预编译。
在一些示例中,在允许查看、配置和/或执行数据流图的用户界面中显示微图200。微图200表示如图1所示、RTTT 103对系统102所进行的数据处理操作。在示例中,查询工人引擎执行微图200(或微图的实例)。微图200针对(例如,实时)数据流的一部分运行查询。例如,文件(例如,实时数据流的一部分)按预定义时间间隔(例如,每五分钟)到达系统102。作为响应,系统102将这些文件保持在系统102的缓冲器高速缓存中,同时针对这些文件运行多个查询。对于按预定义间隔所接收到的文件,系统102针对要对文件执行的各查询执行微图(例如,微图200)。
在该示例中,微图200包括表示被称为“微图输入”的操作的图组件202(以下被称为微图输入组件202)。微图输入操作(例如从正调用微图200并由此向微图200传递数据的另一数据流图中的图组件)接收用于指定要执行哪个查询的信息、以及执行查询的格式化数据(例如,格式化文件和格式化工作单元等)。微图200还包括表示被称为“读取多个文件”的操作的组件204(以下被称为读取多个文件组件204)。在该示例中,数据从微图输入组件202流向读取多个文件组件204。读取多个文件组件204从数据库读取文件并且将这些文件添加至经由微图输入组件202所接收到的输入信息。例如,读取多个文件组件204可以读取用于指定针对特定查询的结果所要进行的数据处理操作的信息,例如,要如何输出特定查询的结果(例如,以供用户评审)、要如何对结果进行排序、以及要从查询中滤除哪些类型的数据等。在示例中,读取多个文件组件204读入联系要执行的查询的查询对象的数据文件。然后,使用查询对象,可以执行查询或者可以以与查询对象一致的方式获得结果。读取多个文件组件204将向输入数据添加所读取的文件的结果输出至上卷组件206。
上卷组件聚合数据、例如针对数据执行查询的结果。在该示例中,上卷组件206将查询(例如,查询词项或查询字符串)应用于读取多个文件组件204的输出。基于应用查询,上卷组件206确定将查询应用于文件或数据的分区分组的结果。这些结果包括与查询词项相匹配或者与查询字符串所指定的数据的类型相对应的数据。
在该示例中,上卷组件206例如对于针对最近接收到的文件或工作单元的查询的该特定执行,聚合查询执行结果。上卷组件206根据该上卷组件206的配置,将各个数据项聚合成单个数据项或者提供各个数据项的数量的计数。上卷组件206的输出是将查询应用于文件或工作单元的聚合结果。上卷组件206还可以以查询对象所指定的格式或方式输出结果。
微图200还包括先前运行聚合组件210,其中该先前运行聚合组件210用于存储表示将查询应用于先前接收到的文件的先前聚合结果的数据。这些先前聚合结果存储在各查询结果文件、例如存储特定查询的结果(例如,中间结果)的文件中。各查询结果文件保持运行总计,其中可以按预定义间隔(例如,每5分钟间隔或5分钟间隔的某一倍数)将这些运行总计报告回至用户或中央服务器。各查询结果文件被存储在数据存储库(例如,控制存储库112)中并且由先前运行聚合组件210访问。
数据从先前运行聚合组件210和上卷组件206流向实现联接操作的联接组件208。“联接”操作将两个类型的数据(例如,一个数据源中所包括的一个类型的数据和另一数据源中所包含的另一类型的数据)进行组合。在该示例中,联接组件208将查询的应用的当前结果(例如,上卷组件206的输出)和先前运行聚合组件210的输出进行联接。联接组件208写入新的各查询结果文件,其中该新的各查询结果文件将(i)针对当前查询执行的当前聚合结果与(ii)针对先前查询执行的先前聚合结果进行组合。基于该组合,联接组件208产生新的聚合结果(即,当前聚合结果和先前聚合结果的组合)。联接组件208可以将新的聚合结果存储在数据存储库内的新的各查询结果文件中。这些新的聚合结果是中间结果。这些中间结果可以稍后(例如,在稍后的时间点)与后续结果进行联接。
数据(例如,中间结果)从联接组件208流向下一运行聚合组件212。下一运行聚合组件212利用(包括中间结果的)新的各查询结果文件来更新数据存储库,以使得先前运行聚合组件210能够例如在下一查询执行期间访问该各查询结果文件。
微图200的各组件包括一个或多个连接端口,其中经由这一个或多个连接端口,组件可以通过数据流连接(也称为“连接”或“链接”)而连接至数据流图的一个或多个其它组件。连接端口可以是用于接收向组件内的数据的输入端口或者从组件输出数据所经由的输出端口。在一些示例中,描绘连接端口的符号可以表示连接端口是输入端口还是输出端口。例如,在图3的示例中,读取多个文件组件204具有用输入端口符号表示的输入端口214以及用输出端口符号表示的输出端口216。
在该示例中,微图200内的组件中的至少一部分组件进行检查点操作,其中该检查点操作将图组件的本地状态保存在(例如,系统102的)缓冲器中以使得能够实现数据流图的状态的可恢复性。这里所述的其它数据流图中的组件同样地进行检查点机制。如以上针对数据流图所述,微图200可以由系统来实现,其中该系统包括:数据存储器;计算环境,其连接至数据存储器、并且被配置为生成数据流图,该数据流图实现与针对文件要执行的多个活动查询相关联的基于图的计算,其中该基于图的计算包括用以实现多个查询的可执行计算机代码,该基于图的计算是针对从一个或多个输入数据集经由处理图组件的图流向一个或多个输出数据集的数据所进行的,其中数据流图由数据存储器中的数据结构指定,该数据流图具有由数据结构指定、并且表示利用一个或多个链接所连接的图组件的多个顶点,这些链接由数据结构指定并且表示图组件之间的数据流;运行时环境,其连接至数据存储器、并且安装在一个或多个数据处理装置上,其中该运行时环境可以包括:预执行模块,其被配置为读取指定微图200的所存储的数据结构(即,表示图组件202、204、206、208、210、212的顶点和这些图组件之间的链接)、并且分配并配置用于进行由预执行模块指派至微图200的图组件的计算的计算资源。运行时环境还可以包括执行模块,其中该执行模块用于调度并控制所指派的计算的执行,使得执行在图3的上下文中所描述的操作。
参考图4,数据流图300例如从文件到达时刻的执行开始,针对文件执行查询。在示例中,查询驱动器执行数据流图300。如上所述,数据流图300可以由如下的系统来实现,其中该系统包括:数据存储器;计算环境,其连接至数据存储器、并且被配置为生成数据流图,该数据流图实现与针对文件要执行的多个活动查询相关联的基于图的计算,其中该基于图的计算包括用以实现多个查询的可执行计算机代码,该基于图的计算是针对从一个或多个输入数据集经由处理图组件的图流向一个或多个输出数据集的数据所进行的,其中该数据流图由数据存储器中的数据结构指定,该数据流图具有由数据结构指定、并且表示利用一个或多个链接所连接的图组件的多个顶点,这些链接由数据结构指定并且表示图组件之间的数据流;运行时环境,其连接至数据存储器并且安装在一个或多个数据处理装置上,其中该运行时环境可以包括:预执行模块,其被配置为读取指定数据流图300的所存储的数据结构(即,表示图组件的顶点和这些顶点之间的链接)、并且分配并配置用于进行由预执行模块指派至数据流图300的图组件的计算的计算资源。该运行时环境还可以包括执行模块,其中该执行模块用于调度并控制所指派的计算的执行,使得执行在图4的上下文中所描述的操作。这些查询是通过针对各查询实现微图(例如,微图200)来执行的。数据流图300包括订阅源数据读取器(例如,从源数据读取器接收数据)的订阅组件302。通过订阅组件302,数据流图300例如实时地访问(例如,实时)数据流中所包括的数据项。在该示例中,订阅组件302接收(例如,包括数千条记录的)文件。数据从订阅组件302流向联接组件304。联接组件304从数据源(或多个数据源)依次读取数据(例如,记录),并且将输入数据排列成离散工作单元的序列。如前面所述,工作单元例如可以表示基于输入记录按预定格式存储的记录,或者例如可以表示要处理的交易。在一些实现中,各工作单元可以利用分批内唯一的编号(诸如所处理的工作单元的计数等)来进行标识。然后,将这些工作单元依次传递至数据流图300中的下一组件。
联接组件304还将文件与当期活动的查询进行联接。通常,当前活动的查询是查询驱动器判断为针对(例如,实时)数据流应当执行的查询。在示例中,联接组件304检索要执行的当前活动的查询的列表。该列表是在本地存储在查询驱动器108上的情况下从查询驱动器108(图1)检索到的,或者是从控制存储库112检索到的。该列表指定要执行的查询的查询ID。当前活动的查询是基于实时或文件时间所确定的。
例如,数据存储库包括当前活动的查询的数据库表。在该表中利用查询ID来标识当前活动的查询。针对各当前活动的查询,数据库表还指定时间戳。时间戳指定查询驱动器108判断为应当执行查询的时间。在一些示例中,联接组件304在数据库表中利用在当前文件时间(例如,当前正接收文件的当前时间间隔)内发生的时间戳来标识查询。在其它示例中,联接组件304在数据库表中利用接近当前时间的时间戳(例如,当前时间和利用时间戳指定的时间之间的差小于阈值时间量的时间戳)来标识查询。在又一示例中,联接组件304选择被指定为当前活动的查询的查询。联接组件304选择当前活动的查询,并且将所选择的这些查询与实时数据进行联接。联接组件304还检索用于所选择的查询的查询规范,以用来处理查询。
数据从联接组件304流向分区组件306,其中该分区组件306将(例如,同一文件上的)要处理的当前活动的查询分区(例如,分配)到多个组件实例,例如重定格式组件的实例308a...308n(以下称为重定格式组件308a...308n)和运行微图组件的实例310a...310n(以下称为运行微图组件310a...310n)。即,分区表示跨组件的各个实例的当前活动的查询的划分。在该示例中,存在“n”个当前活动的查询。在该示例中,以针对各查询一次的方式,对文件处理“n”次。通过对查询进行分区,查询可以彼此并行地(并且跨各个分布式系统)运行。分区组件306通过将第一查询指派至这些实例中的第一实例、将第二查询指派至这些实例中的第二实例、等等,来以循环(round-robin)方式对查询进行分区。在示例中,在系统上执行这些实例中的一部分实例,由此使所有的实例分布在各个系统中。
在工作单元的处理完成时,结果被传递至收集组件338,其中该收集组件338从多个实例收集结果并且将这些结果传递至数据流图中的下一数据处理组件。
数据(例如,指定查询的分区和当前文件的数据)从分区组件306流向重定格式组件308a...308n。重定格式组件308a...308n各自与当前活动的查询其中之一相对应。重定格式组件表示重定格式处理,使得在系统102执行数据流图300时,执行重定格式组件所表示的重定格式处理。通常,重定格式处理包括用于将数据从一种格式转换成另一种格式的一系列指示。在该示例中,重定格式组件将(例如,当前文件中的)数据记录重定格式为数据流图(例如,另一数据流图或者连接至数据流图300的微图200中的一个或多个微图)可读取的格式。
重定格式后的数据从重定格式组件308a...308n流向运行微图组件310a...310n,其中运行微图组件310a...310n执行用以针对文件中的数据(连续地)执行查询的微图。特别地,运行微图组件310选择要执行的微图(例如,微图200)。针对各查询,执行微图,例如以针对文件连续地处理查询。在该示例中,运行微图组件310a...310n各自与针对当前文件要处理的“n”个查询其中之一相对应。
数据流图300还包括收集组件312,其中该收集组件312收集针对文件中的数据记录的查询执行的结果。通常,收集组件312从运行微图组件310a...310n收集结果并将这些结果传递至数据流图300中的下一数据处理组件。数据从运行微图组件310a...310n流向收集组件312。收集组件312例如通过针对所执行的查询访问各查询结果文件来收集查询执行的结果。表示查询执行的结果的数据从收集组件流向发布组件314、或者流向被配置为对所发布的数据进行进一步的基于图的计算的另一数据流图,其中该发布组件314例如在用于显示针对给定查询ID或针对多个查询ID的各查询结果文件的内容的结果查看GUI中发布结果。在示例中,各查询结果文件存储来自最后一次查询执行的小计和运行总计。在该示例中,GUI包括用于显示最后五分钟的结果和自查询第一次开始运行起的结果的仪表板。仪表板还显示按不同时间尺度的多组总计,例如最后5分钟的结果、最后10分钟的结果和最后30分钟的结果等。该仪表板显示不同级别的粒度,例如一个或多个特定查询的结果以及/或者所有查询的结果。
参考图5A,数据流图400实现给定文件/查询组合内的并行性(例如,提供流水线并行性),例如以并行地执行多个查询以及进一步并行地处理特定查询的数据记录。该处理提高了大文件(例如,超过2千兆字节的文件)的可伸缩性,由此缩短了处理时间并且提高了处理速度。例如,由于针对各相关查询处理文件,因此系统102对文件进行预定义次数(例如,N次)的处理。在该示例中,在存在N个相关查询的情况下,系统102对文件进行N次处理。可以连续地或并行地处理查询。在连续地处理查询的情况下,将查询连续地应用于文件中的数据项。代替连续地处理查询,数据流图400例如通过将当前文件中的数据划分成工作单元、然后将要执行的查询并行地应用于工作单元,来针对特定查询并行地处理数据。
如上所述,数据流图400可以由如下的系统来实现,其中该系统包括:数据存储器;计算环境,其连接至数据存储器、并且被配置为生成数据流图,该数据流图实现与针对文件要执行的多个活动查询相关联的基于图的计算,其中该基于图的计算包括用以实现多个查询的可执行计算机代码,该基于图的计算是针对从一个或多个输入数据集经由处理图组件的图流向一个或多个输出数据集的数据所进行的,其中该数据流图由数据存储器中的数据结构指定,该数据流图具有由数据结构指定、并且表示利用一个或多个链接相连接的图组件的多个顶点,这些链接由数据结构指定并且表示图组件之间的数据流;运行时环境,其连接至数据存储器并且安装在一个或多个数据处理装置上,其中该运行时环境可以包括:预执行模块,其被配置为读取指定数据流图400的所存储的数据结构(即,表示图组件的顶点和这些顶点之间的链接)、并且分配并配置用于进行由预执行模块指派至数据流图400的图组件的计算的计算资源。运行时环境还可以包括执行模块,其中该执行模块用于调度并控制所指派的计算的执行,使得执行在图5A/5B的上下文中所描述的操作。
数据流图400包括订阅组件402(其进行关于图4中的订阅组件302所述的功能)和联接组件404(其进行关于图4中的联接组件304所述的功能)。数据从联接组件304流向归一化组件406,其中该归一化组件406将文件的内容划分成一系列行范围以供并行处理数据用。例如,文件包括数据的行,例如各行表示数据记录。归一化组件406将这些行指派至各行范围(例如,行的子集)。行范围表示工作单元。在示例中,文件具有10000行交易数据。在该示例中,将行1~1000指派至行范围I(例如,第一工作单元),将行1001~2000指派至行范围II(例如,第二工作单元),等等。
数据从归一化组件406流向分区组件408(其进行关于分区组件306所述的功能),以将重定格式组件410和运行微图组件412的实例分配至各工作单元(例如,如图4的上下文所述,重定格式组件410可以包括重定格式组件308a…308n的多个实例,并且运行微图组件412可以包括运行微图组件310a…310n的多个相应实例)。如前面所述,分区表示当前活动的查询跨组件的各实例的划分。在该示例中,各分区对行的不同子集(或工作单元)进行处理。分区组件408将要执行的查询(例如,当前活动的查询)分配至各工作单元。例如,针对各工作单元,将要执行的查询的总数分配至针对该工作单元的重定格式组件410和运行微图组件412的各实例。
表示(针对各工作单元的)分区的数据从分区组件408流向用以对工作单元中的数据进行重定格式以供输入到数据流图(例如,微图200)中的重定格式组件410的实例。通常,重定格式处理包括用于将数据从一种格式转换成另一种格式的一系列指示。在该示例中,重定格式组件将工作单元重定格式为各微图可读取的格式。重定格式后的数据流向用于计算针对特定工作单元执行查询的部分和的运行微图组件412的实例。重定格式组件410实现针对重定格式组件308a~308n所述的功能。运行微图组件412实现针对运行微图组件310a~310n所述的功能。如以下针对图5B更详细地所述,运行微图组件412的各实例针对特定工作单元执行特定查询。即,如果存在要执行的“p”个查询,则对各工作单元进行“p”次处理。并行地处理这些工作单元。针对各工作单元,并行地处理查询。通常,部分和是表示针对数据的一部分(例如,文件或特定工作单元的一部分)执行查询的结果的数据。针对各工作单元,对于各当前活动的查询执行运行微图组件412的实例。为此,系统102生成运行微图组件412的p个不同实例,其中运行微图组件412的各实例针对“p”个当前活动的查询其中之一。
分区组件408的方面可以是:分区组件408在将重定格式410和运行微图412的实例实际分配至各工作单元之前进行预处理。该预处理可以包括:确定执行被指派至各实例(例如,实例1~p)的各个查询(例如,各个查询1~p)有可能需要的计算资源,并且根据所确定的对用于执行各个查询的计算资源的需求来在实例之间分发计算资源,其中与判断为关联查询(例如,查询2,其与查询1相比将需要更少的计算资源)的执行将有可能需要更少的计算资源的实例(例如,实例2)相比,向判断为关联查询(例如,查询1)的执行将有可能需要更多的计算资源的实例(例如,实例1)分配更多的计算资源。预处理可以附加地或可选地包括:确定分区组件408所接收到的工作单元的数据格式;以及基于所确定的工作单元的数据格式来将该工作单元分配至实例其中之一。例如,分区组件408可以确定将工作单元从所确定的数据格式转换成各个实例(特别是各个微图)所要求的数据格式所需的计算资源和/或时间,并且可以将工作单元分配至要执行的查询的执行需要较少量的计算资源和/或转换时间的实例。
预处理还可以提高数据处理的速度,并且还可以缩短查询的执行所需的时间。这在必须以非常快的方式对用户、交易或数据进行认证以确保数据安全的网络中也可以是有益的,尽管涉及了分布式网络和/或大量数据(例如,与信用卡处理、银行业务或航空旅行有关的认证系统)。
数据流图400包括收集组件414,其中该收集组件414针对各工作单元,将针对该特定工作单元的查询执行的部分和收集在一起。在该示例中,数据(例如,表示部分和的数据)从收集组件414流向用于计算全局和的运行微图组件416。通常,全局和是表示针对文件执行查询(例如,针对文件的所有行范围(工作单元)执行查询)的最终结果的数据。为了计算全局和,运行微图组件416执行用于聚合针对各工作单元执行查询的结果的另一微图(例如,微图200)。在示例中,各查询具有运行微图组件416的关联实例以针对该查询计算全局和(例如,针对所有工作单元执行该查询的结果)。即,运行微图组件416通过针对该特定查询聚合(跨不同工作单元的)部分和来(例如,针对特定查询)计算全局和。表示全局和的数据从运行微图组件416流向发布组件418以发布全局和(例如,针对文件执行查询的结果)。发布组件418的功能包括前面针对发布组件314所述的功能。
参考图5B,图500示出图5A中的组件406、408、410、412和414的执行结果的示例。在该示例中,归一化组件406将文件划分成“q”个工作单元,例如工作单元502a...502q。在该示例中,还存在针对文件要执行的“p”个当前活动的查询。文件包含随后由归一化组件406跨工作单元进行分发的数据。如前面所述,将分区组件408应用于各个工作单元502a...502q。针对各工作单元,将分区组件408应用于各个工作单元502a...502q(除跨重定格式组件410的关联的不同实例外)还跨运行微图组件412的“p”个不同实例对“p”个查询进行分区。在该示例中,分区组件408针对工作单元502a生成运行微图组件412的实例506a...506p,其中各实例与查询相对应。分区组件408针对工作单元502q生成运行微图组件412的实例508a...508p,其中各实例与查询相对应。运行微图组件的实例310a...310n可用于运行微图组件412的实例506a...506p或者可以与这些实例506a...506p相同,并且可以与重定格式组件410的各实例308a...308n进行通信。可选地,单个重定格式组件410可以与运行微图组件412的多个实例一起使用。
分区组件408还可以针对各工作单元生成重定格式组件410的q个不同实例,以在将该工作单元转发至微图之前对该工作单元中的数据进行重定格式。在针对各工作单元执行运行微图组件412的实例之后,收集组件414生成针对该工作单元的部分结果。例如,在执行运行微图组件412的实例506a...506p之后,收集组件414生成针对工作单元502a的部分结果510a。部分结果510a包括针对工作单元502a中的数据执行查询1...p的结果。在执行运行微图组件412的实例508a...508p之后,收集组件414生成针对工作单元502q的部分结果510q。部分结果510q包括针对工作单元502q中的数据执行查询1...p的结果。收集组件414将部分结果510a...510q发送至运行微图组件416,其中该运行微图组件416计算针对文件中的所有工作单元执行各查询的全局和。
这里所述的数据流图(和微图)例如是从错误事件可恢复的。为了确保可恢复性,(数据流图或微图中的)组件通过检查点机制维持本地状态。本地状态指定数据流中发生了处理的位置,例如直到数据流中发生了处理的点为止。本地状态还指定直到该点为止的处理的结果。在示例中,将文件排列成工作单元的序列。即,将文件中所包括的数据记录排列成工作单元的序列。各工作单元具有所指派的标识符(ID)。在数据流图开始处理工作单元时,数据流图的一个或多个组件存储ID,以指定处理了这些工作单元中的哪个工作单元。组件还进行检查点机制以存储针对工作单元进行(如由该组件指定的)动作的结果。将该结果与ID相关联地存储。检查点机制有效地将标记插入数据流中,以指定该流中的哪个数据已被处理以及处理该数据的结果。由于经由检查点机制的这种可恢复性,因而如果数据流图或微图崩溃或以其它方式遇到错误,则该数据流图或微图可以通过确定已处理了直到哪个单元为止来进行恢复,并且例如从该工作单元起继续处理,而不是必须再次开始处理流。
在示例中,系统102将文件维持在盘上和/或内存高速缓存中(例如,而不是将文件存储在数据存储库中)。在该示例中,查询工人引擎向查询驱动器发送以下消息:查询工人引擎结束了针对文件处理查询对象。在查询驱动器从正处理该文件的所有查询工人引擎接收到该消息的情况下,存档该文件以及/或者从高速缓存和/或盘删除该文件。在该示例中,文件的存档没有导致将文件存储在数据存储库中。
参考图6,系统102(系统102上的RTTT 103)在选择用于对实时数据流中在不同时间出现的数据项执行的查询时,实现处理600。在操作中,系统102针对该流的各个数据项,实时地访问(602)这些数据项。例如,系统102通过从数据队列、(例如,位于系统102内部或位于系统102外部的)数据存储库、或数据馈送(例如,图1中的实时数据流104)接收实时数据流来访问数据项。在示例中,系统102针对两个或更多个数据项中的各数据项近实时地访问这两个或更多个数据项,其中例如通过在流中一个数据项在另一数据项之前发生,来使这两个或更多个数据项中的各数据项位于流中的不同位置。
系统102例如通过分析数据项的内容,来确定(604)数据项的属性(例如,所接收到的数据项的数据类型或格式)。系统102在控制存储库中访问作为对实时数据流执行的候选的预定义查询。系统102将这些属性与作为执行候选的各种查询的查询标准进行比较(606)。基于该比较,系统102选择(608)针对在不同时间出现和/或位于流中不同位置的数据项中的两个或更多个数据项执行的查询。例如,系统102利用数据项的一个或多个属性所满足的查询标准来选择查询。系统102例如基于何时接收到与查询相关的数据项,还选择不同时间(和/或针对流的不同部分出现的数据项)的查询。
在变形例中,系统102还基于数据项的一个或多个属性来选择用于对流中在不同时间出现的数据项中的两个或更多个数据项执行的另一查询。系统102针对流中的数据项实时地执行所选择的这两个查询。在又一变形例中,系统102例如基于查询的用户指定开始时间,通过选择该时间的活动查询工人引擎来确定要执行哪个查询。如前面所述,查询工人引擎被编程为在查询开始时间变为活动。系统102(或查询驱动器)对于针对当前工作单元要执行的各查询,调用查询工人引擎的一个实例。
参考图7,系统102(或系统102上的RTTT 103)实现处理700,以针对实时数据流中在不同时间出现的数据项执行查询,从而随着(例如对随后出现的数据项的)查询的继续执行而提供该查询的(例如,近实时)中间结果。在操作中,系统102不时地对流中不同时间出现的数据项中的两个或更多个数据项执行(702)查询。例如,系统102对以下两个数据项执行查询:(i)实时数据流中的第一数据项、以及(ii)实时数据流中的第二数据项,其中第一数据项是在第一时间接收到的,第二数据项是在第二时间接收到的。
系统102通过间歇地(或定期地)执行如上所述的实现查询的数据流图来执行查询。在该示例中,数据流图包括用以实现查询的可执行计算机代码。基于查询的执行,系统102生成(704)初始结果,例如表示执行查询的结果的信息。系统102判断(706)查询是否将在后续时间执行。例如,系统102基于查询规范中的查询停止时间来进行该判断。如果系统102判断为查询将不在后续时间执行,则系统102将查询执行的初始结果设置(708)为最终结果。如果系统102判断为查询将在后续时间执行,则系统102再执行(710)查询。基于该查询的再执行,系统102通过将再执行的结果与对实时数据流中先前出现的数据项执行查询的先前结果(例如,初始结果)进行聚合,来生成(712)中间结果。在示例中,随着查询的执行,系统102生成中间结果,例如以随后与后续结果进行聚合。在该示例中,用户(例如,业务分析人员)可能想要看到并评审中间结果,例如以判断哪些卡或交易存在风险。在该示例中,系统102在查询的执行完成之前,将查询执行的中间结果发送至用户的客户端装置。
系统102判断(714)查询是否将在后续时间执行。如果系统102判断为查询将不会在后续时间执行,则系统102将查询执行的中间结果设置(716)为最终结果。如果系统102判断为查询将在后续时间执行,则系统102适当地重复动作710、712、714、716。基于重复这些动作,系统102(在后续时间点)将中间结果与用于在后续时间点执行查询的结果进行聚合,例如以生成最终结果。在该示例中,系统102将最终结果存储在数据存储库中并且丢弃中间结果。基于最终结果(或中间结果),系统102生成实时警告以向用户警告检测到预定义条件。
使用这里所述的技术,在接收到实时数据并且无需访问来自数据库的存储数据(这增加了延迟)时,RTTT对该实时数据流中的数据项执行并发查询。通过在接收到数据时实时地执行查询,RTTT随着查询的执行而生成查询执行的实时结果(例如,中间结果和最终结果这两者)。为了接收结果,用户无需等待接收所有的数据。相反,用户可以随着查询的执行而实时地接收结果。
另外,在将来的预定义监控时间段内运行用户定义查询。在该监控时间段内数据连续地到达,并且利用该监控时间段内的传入数据来生成结果。RTTT实现针对瞬态数据的静态查询,而不是针对静态数据的瞬态查询的传统数据库处理模型。这些查询由用户预先创建,并且这些查询在系统中占主导,直到监控开始时间为止。用户使用简单界面来指定查询谓词,诸如所需的属性、过滤、聚合、排序标准、如开始/停止时间那样的查询控制参数、可选的警告条件和结果接收方列表。查询“监听”连续的数据馈送(例如,端口上的消息队列或消息),在监控开始时间“唤醒”,对流中的数据进行计算,并且在流中不存在数据的情况下/时休眠。中间结果在查询的整个“寿命”中均可用,并且最终结果在针对查询的监控时间段的结束时间立即可用。
参考图8,图800从概念上显示如下:例如利用以在图5A的上下文中所描述的数据流图为基础的系统经由五个并发查询(例如,经由五个不同的微图(例如,微图200)所执行的查询)来处理文件中的数据记录。在该示例中,RTTT103定期地接收文件802a...802n(而这些文件包括在实时数据流801中)。RTTT 103按时间间隔T1...Tn分别接收文件802a...802n。在该示例中,各个文件802a...802n位于流801中的不同位置。例如,文件802a位于流801中的、在流801中的包括文件802b的位置(例如,部分)之前出现的另一位置(例如,流801的特定部分)。即,流801的一部分包括文件802a,另一部分包括文件802b,等等。图8所示的例示性示例示出查询806、808、810、812、814在文件802a...802n上执行的特定时间点。即,文件802a...802n表示流801中的在特定时间点(例如,查询806、808、810、812、814正同时执行的时间点)期间接收到的文件。在该示例中,由于查询806、808、810、812、814中的一个或多个查询按照不同的时间间隔执行,因此查询806、808、810、812、814也可以在图8中未示出的(流801中所包括的)其它文件上执行。在该示例中,可以使用针对这些其它文件的执行结果来确定最终结果。
在该示例中,RTTT 103在时间08:00:30接收文件802a,在时间08:01:00接收文件802b,等等。RTTT 103每30秒接收新的文件。文件802包括记录804a...804n。在该示例中,文件802中存在250000条记录。在该示例中,各记录包括以下的数据类型:日期(dd/mmm/yyyy)、时间(hh:mm:ss)、产品标识符(“prod id.”)、国家标识符(“country id.”)、状态标识符(“state id.”)和销售量。其它文件(例如,文件802b...802n)还包括单独的数据记录。
在该示例中,跑鞋公司的业务经理想要(例如,在发行新的市场营销活动之后)观察运动鞋的销售额,并且例如紧接在市场营销活动之后和市场营销活动期间,动态地(例如,实时地)生成问题,诸如运动鞋销售额的上升(例如,增加)量为多少等。
在该示例中,业务经理使用RTTT 103来针对文件802a...802n创建并执行查询806、808、810、812、814。在该示例中,由于查询806、808、810、812、814在不同的时间段内执行以及/或者在不同的时间开始执行,因此根据何时接收到文件以及查询何时开始和停止执行,查询806、808、810、812、814各自可以仅处理文件802a...802n的一部分。
在该示例中,跑鞋公司正针对Acme运动鞋和酷跑运动鞋这两个不同的跑鞋品牌推出两个世界范围的活动。针对Acme运动鞋的活动是在2014年11月14日(14/11/2014)的08:00:00(推出活动的各国家的当地时间)推出的。针对酷跑运动鞋的活动是在2014年11月14日(14/11/2014)的13:00:00(推出活动的各国家的当地时间)推出的。查询806、808、810、812、814各自通常遵循“向我展示在从DD/MM/YYYY(日/月/年)起的N个小时的时间段内在国家Y中(或者针对某国家内的特定州)的产品X的总销售额和/或交易计数”的格式。在该示例中,查询806是用以对从14/11/2014的08:00:00开始在10个小时的时间段内在新加坡销售的Acme运动鞋的交易数(Tx)进行计数的查询。查询808是用以对从14/11/2014的08:00:00开始在10个小时的时间段内在美国佐治亚州销售的Acme运动鞋的交易数(Tx)进行计数的查询。在该示例中,由于查询808针对特定州、而不是整个国家的度量,因此查询808比查询806更具粒度。查询810是用以对从14/11/2014的08:00:00开始在10个小时的时间段内在美国销售的Acme运动鞋的总销售额进行计数的查询。查询812是用以对从14/11/2014的13:00:00开始在24个小时的时间段内在日本销售的酷跑运动鞋的总销售额进行计数的查询。查询814是用以对从14/11/2014的13:00:00开始在24个小时的时间段内在美国销售的酷跑运动鞋的总销售额和交易数进行计数的查询。
使用这里所述的技术,RTTT 103使记录(例如,文件802a的记录804a...804n和文件802b...802n中的记录)例如并发地并且实时/近实时地通过查询806、808、810、812、814,而无需将这些记录存储到电子数据仓库。在查询806、808、810、812、814处理记录(例如,804a...804n)时,RTTT 103分别生成结果816、818、820、822、824,以随着查询的处理而提供查询执行的实时结果。在该示例中,RTTT 103每分钟处理约500000条记录,并且RTTT103每分钟接收多个文件。在该示例中,RTTT 103在接收到文件802a...802n时,连续地执行查询806、808、810、812、814并且例如近实时地处理文件802a...802n。例如,在时间08:00:00,针对文件802a执行查询806、808、810、812、814。在时间08:00:30,针对文件802b执行查询806、808、810、812、814,等等(例如,在每30秒接收到文件的情况下)。
基于查询806的执行,RTTT每次在处理了新的传入数据文件之后(例如,在定期地接收数据作为文件时),生成中间(增量)结果。在该示例中,一处理了当前的一组输入数据(其中,存在与查询条件相匹配的记录),就产生中间结果。文件每30秒到达,并且针对在08:00:00处开始的查询806、808和810,在08:00:30和08:01:00等产生或更新中间结果。在该示例中,在这些查询所用的第一数据文件到达时,在8:00:00在新加坡和佐治亚州立即售出至少一双Acme鞋。否则,在这些场所售出第一双时,将在8AM之后的任何时间产生输出。
在该示例中,RTTT 103生成用于显示新加坡Acme鞋的交易数的结果816。在该示例中,结果816包括中间结果(例如,部分结果)816a、816b和最终结果816c。如中间结果816a、816b所示,分别在08:00:00~08:00:30之间在新加坡售出第一双Acme鞋,以及在08:00:30~08:01:00之间在新加坡销售出第二双Acme鞋。在该示例中,在RTTT检测到与查询标准相匹配的记录时,(实时地)更新中间结果。在该示例中,中间结果816a、816b显示产生中间结果的时间,例如在08:00:30和08:01:00等。在该示例中,中间结果显示发生交易的时间(或发生增量或附加交易的时间)。
在该示例中,所显示的各最终结果是从查询开始执行起的聚合结果。例如,针对18:00:00所示的交易结果816c(例如,157692次交易)是08:00:00~18:00:00的交易数。在该示例中,在18:00:00处示出的结果是处理多个文件的结果。这些结果各自是在利用RTTT103接收到文件时现场近实时地提供的。使用这里所述的技术,在实时地以及接收到数据时对该数据运行查询的情况下,不存在数据存储。在针对未来即将到达的数据而非历史数据运行查询的情况下,查询是前瞻性的。查询可被设置成在数秒~数周或数月的持续时间内运行。RTTT还向用户提供在监控时间段内接收中间结果的能力。读取数据一次并将该数据分发至独立地应用单独的查询逻辑的查询工人。例如,系统可以包括每次在系统中活动的数百个查询工人。被传送至业务的信息的延迟的量级为秒。
参考图9,图900提供2015年11月14日8am~2015年11月15日8am的24小时的时间段内的多个查询的动态执行的视觉例示。在从2015年11月14日8am开始的10小时内,调度查询902、904以供执行。在同样从2015年11月14日8am开始的24个小时内,调度查询906以供执行。在8am(或者8am之前按预先指定的时间间隔),查询驱动器108(图1)针对活动查询轮询控制存储库112。基于该轮询,查询驱动器108将查询902、904、906标识为被调度以供在8am执行,并且使查询工人引擎实例化以执行查询902、904、906。针对近实时数据流911执行查询902、904、906。
在该示例中,在从2015年11月14日1pm开始到2015年11月14日11pm结束的10个小时内,调度查询908以供执行。在从2015年11月14日1pm开始到第二天(2014年11月15日)的1pm结束的24个小时内,调度查询910以供执行。在控制存储库112的间歇轮询期间,查询驱动器108将查询908、910标识为活动查询以供执行,并且使查询908、910在1pm开始执行,同时查询902、904、906仍正在执行。在该示例中,与已在执行中的其它查询(即,查询902、904、906)并发地,动态地添加查询908、910以供执行。在6pm,当查询906、908、910继续执行时,查询902、904完成执行。在11pm,当查询906、910继续执行时,查询908完成执行。在第二天的8am,查询906完成执行,而查询910仍继续执行。
图9还示出作为RTTT 103在24小时的时间段(2014年11月14日8am~2014年11月15日8am)内在近实时数据流911中所接收到的文件的文件912a...912n、914a...914n、916a...916n、918a...918n。在该示例中,RTTT 103在8am~1pm内接收文件912a...912n,在1pm~6pm内接收文件914a...914n,在6pm~11pm内接收文件916a...916n,并且在11pm~第二天的8am内接收文件918a...918n。在该示例中,近实时数据流911中所包括的文件由RTTT103按例如包括每30秒的各时间间隔接收到。(在接收到文件912a...912n、914a...914n、916a...916n、918a...918n时)针对各文件执行适当的查询,并且基于对文件912a...912n、914a...914n、916a...916n、918a...918n进行处理来更新这些查询的中间(或最终)结果。根据查询的开始时间和结束时间,针对文件912a...912n、914a...914n、916a...916n、918a...918n的不同组合执行查询902、904、906、908、910。
在该示例中,RTTT 103在8am~6pm之间接收文件912a...912n、914a...914n。查询902、904在接收到文件912a...912n、914a...914n中的各文件时近实时地处理文件912a...912n、914a...914n,以生成查询902、904的执行的中间结果和最终结果。
RTTT 103在8am(11/14/2014)~8am(11/15/2014)之间的24小时的时间段内接收到文件912a...912n、914a...914n、916a...916n、918a...918n。查询906在接收到文件912a...912n、914a...914n、916a...916n、918a...918n中的各文件时近实时地处理文件912a...912n、914a...914n、916a...916n、918a...918n,以生成查询906的执行的中间结果和最终结果。RTTT 103在1pm~11pm的10小时的时间段内接收到文件914a...914n、916a...916n。查询908在接收到文件914a...914n、916a...916n中的各文件时近实时地处理文件914a...914n、916a...916n,以生成查询908的执行的中间结果和最终结果。RTTT103在1pm~第二天的8am内接收到文件914a...914n、916a...916n、918a...918n。查询910被调度为在从2014年11月14日1pm开始的24小时内运行。查询910在接收到文件914a...914n、916a...916n、918a...918n中的各文件时近实时地处理文件914a...914n、916a...916n、918a...918n,以生成查询910的执行的中间结果。查询910继续处理在(11/15/2015的)8am之后接收到的其它文件(未示出),直到查询910完成为止。
在示例中,数据处理环境包括用于将查询开发为包括顶点(表示数据处理组件和数据集)的数据流图的环境,其中这些顶点通过顶点之间的有向链接(表示工作元素即数据的流)来连接。
概述
图10A是示出主要元件的相互关系的本发明的一个实施例的框图。图形开发环境(GDE)1002提供了用于创建可执行图并且定义图组件的参数的用户界面。GDE可以例如是可从本发明的受让人获得的CO>OPERATING GDE。GDE 1002与存储库1004和并行操作系统1006进行通信。同样连接到存储库1004和并行操作系统1006的是Web界面(WebInterface)1008和执行程序1010。
存储库1004优选是可扩展的面向对象的数据库系统,其被设计为支持基于图的应用的开发和执行以及基于图的应用和其它系统(例如,其它操作系统)之间的元数据的交换。存储库1004是用于包括(但不限于)文档、记录格式、变换函数、图、作业和监控信息的各种元数据的存储系统。存储库是本领域已知的;参见例如美国专利5,930,794、6,032,158、6,038,558和6,044,374。
并行操作系统1006接受在GDE 1002中生成的数据流图的表示,并生成与图所定义的处理逻辑和资源相对应的计算机指令。并行操作系统1006然后通常在多个处理器(无需是同构型的)上执行那些指令。合适的并行操作系统是可从本发明的受让人获得的CO>OPERATING
Web界面1008提供了存储库1004的内容的基于网络浏览器的视图。使用Web界面1008,用户可以浏览对象,创建新对象,更改现有对象,指定应用参数,调度作业等。Web界面1008基于存储在存储库1004中的信息来自动地为参数化图创建基于表单的用户界面以获得该图的运行时参数。
执行程序1010是通过Web界面1008而访问的可选的基于存储库的作业调度系统。执行程序1010将作业和作业队列保持为存储库1004内的对象,并且Web界面1008提供用以操纵作业和作业队列的视图和工具。
图10B示出具有通过流1024而连接至过滤组件1026的输入数据集1022的简单数据流图1020。过滤组件1026通过流1028而连接至输出数据集1030。数据集可以例如包括用于提供数据(例如,输入数据集)或接收数据(例如,输出数据集)以用于数据流图执行的计算的文件或数据库表。
由数据流图中的“流”表示的数据流可被组织为离散的数据元素。例如,元素可以包括被组织为记录(或行)和字段(或列)的数据集中的记录。将描述了与记录中的值相对应的字段序列和数据类型的元数据称为“记录格式”。
图中的组件和数据集具有用于连接到流的输入和/或输出端口。流1024和1028的“源端”分别与输入数据集1022的输出端口和过滤组件1026的输出端口相接合。流1024和1028的“宿端”分别与过滤组件1026的输入端口和输出数据集1030的输入端口相接合。数据集或组件的输入或输出端口与元数据(诸如流入或流出端口的数据的记录格式等)相关联。
包括用于与组件相关联的端口或其它元数据的记录格式的参数根据参数范围的规则而被绑定到一个值。参数可以在设计时或运行时绑定到一个值(即,如下所述的“运行时参数”)。参数的值可例如由用户通过用户界面(例如,响应于提示)来定义、从文件中定义或者根据同一上下文或不同上下文中的另一参数来定义。例如,可以通过指定参数具有与另一参数“相同”的关系来从不同的上下文中导出该参数(例如,在不同组件的上下文中评价的参数)。
可以使用与形成“子图”的流互连的其它组件来实现图中使用的组件。在将子图用作另一图中的组件之前,定义组件的各种特性,诸如组件的输入和/或输出端口。在一些情况下,在图中使用组件之前,应当指定与子图组件之间的关系有关的组件的特性。例如,可能需要选择子图组件的运行时参数的提示顺序。以下更详细地描述用于选择图中组件的运行时参数的提示顺序的方法。
元数据传播
与端口相关联的元数据的值(诸如记录格式参数)可以通过“传播”来获得。元数据传播可能发生在“外部”或“内部”。对于外部元数据传播,第一组件的端口的记录格式参数的值可以通过传播通过流连接到第一组件的第二组件的端口的记录格式值,来获得值。该值能够从流的源端向下游传播至宿端,或者从流的宿端向上游传播至源端。元数据从已定义元数据的端口传播至未定义元数据的端口。
对于内部元数据传播,针对组件的一个端口所定义的元数据基于实现组件的子图而传播至该组件的另一端口。在一些情况下,内部元数据传播发生在“非变换”内部数据路径上。例如,用户可以为用于指定流入排序组件的记录的数据类型的排序组件的输入端口提供元数据。由于排序组件对记录进行重新排序但不进行变换,因此排序组件不会改变数据类型并且该数据类型不变地传播至排序组件的输出端口,从而准确地描述流出排序组件的记录的数据类型。
一些组件对流过它们的数据进行变换(或可选地进行变换)。例如,用户可以为用于指定流入过滤组件的记录的字段的过滤组件的输入端口提供元数据。过滤组件可以从每个记录移除给定字段的值。可以使用元数据定义来指定如下内容:过滤器组件的输出端口的元数据根据组件的过滤操作而与输入端口的元数据相关。例如可以从指定记录字段的元数据中移除被过滤的字段。即使在已知输入端口元数据之前,也可以提供这样的元数据定义。因此,如以下更详细地描述,通过允许与端口相关联的元数据被指定为一个或多个参数(包括用于另一端口的元数据)的函数,元数据甚至可以在变换内部数据路径上传播。
这种内部和外部元数据传播可以可选地被配置为在正构建图的设计时发生,并且用户为图中的一些组件的一些端口提供元数据。可选地,元数据传播可以在构建图之后(包括在运行时或刚好在运行时之前)发生。
运行时参数
运行时参数允许应用建立器将参数设置值(例如,排序函数的关键字参数、文件名、记录格式、变换函数等)推迟到运行时(例如,在计算机系统上执行或即将执行程序的时间)。运行时参数的值可以由最终用户提供,或者从存储在对象存储库中的其它运行时参数或对象的组合中导出。
运行时参数为应用增加了一定量的灵活性。通过使用这些参数按需计算元数据(数据格式或类型、以及程序逻辑或变换)来实现附加灵活性。类型和变换可以从其它类型和变换、用户提供的参数值以及所存储的对象(例如,从存储库)进行合成。这使得可以建立适用于任何类型的输入数据或通过一系列经由运行时参数值直接或间接控制结构的变换来产生数据的“通用”应用。
在一些实现中,当创建或编辑运行时参数时,开发者可以指定针对每个参数的提示以及用于显示该提示的条件。系统解释提示指令以在满足条件的情况下呈现用于接收参数值的图形用户界面(GUI)控件。
运行时参数的指定
运行时参数为开发者提供了一种用于在图执行时(即运行时)基于外部输入来修改图的行为的机制。在优选实施例中,这些外部值由直接用户输入提供。然而,这些外部值也可能来自许多不同的源,包括环境变量和命令行参数。GDE 1002生成正确的代码,以处理所有这些情况并在图直接由GDE执行时为开发者提示测试值。使用运行时参数,开发者可例如明确地声明:输入文件的路径将由具有特定名称的环境变量提供;然后环境变量称为图形界面的已知部分。因此,对于这些参数,存在定义明确的界面。例如,无需读取生成的外壳脚本并在其中搜索对环境变量和命令行参数的引用以查找用于控制特定图的执行的参数集。
图11是包含具有指定运行时参数的上卷组件2002和排序组件2004的典型图2000的框图。运行时参数(排序组件2004的关键字和上卷组件2002的规则)将在用于输入的界面2006中呈现给用户。以下部分描述了如何指定运行时参数并且创建集成用户界面以呈现提示用户输入的运行时参数。
运行时参数能够以多种方式指定或定义。一种方式是使用GDE 1002中显示的运行时参数网格。
图12是表示将与图相关联的运行时参数网格3000的图形对话框的一个实施例的示图。通过简单地填写适当的字段来创建新的运行时参数。在存储库1004中创建与每个运行时参数相关联的对象,并将其链接到利用参数的所有图组件。例如,如果图排序组件的排序关键字被定义为运行时参数,则表示该排序关键字参数的对象被存储在存储库1004中并链接到相关联的排序组件。定义运行时参数的可选方式是特别地标记图组件的现有参数并使其相对于其它组件“可见”(将其导出至其它组件)。可以使用这些方法的组合。例如,当创建组件时,开发者可以将该组件的特定参数指定为运行时参数。然而,开发者可以使用参数网格来设定图的所有运行时参数的默认值和其它特性,并定义新的运行时参数。
当运行图时,对参数进行处理以从用户输入或从外部程序源(例如,命令行参数或环境变量)获得每个参数的值。在所示的实施例中,运行时参数网格3000包括以下字段:
名称3002–此字段包含运行时参数的名称。“Score_threshold”是针对名称而显示的示例。
类型3004–此字段包含运行时参数中所允许的值的类型。“Integer”(整数)是针对类型而显示的示例。所示实施例中的支持类型是:
·布尔(boolean)–值可以为真或假;
·选择(choice)–值为值列表之一;
·整理器(collator)–关键字参数值;
·数据集(dataset)–外部数据文件名和位置;
·日期(date)–日期值;
·表达式(expression)–算术、逻辑和/或条件表达式(例如,选择表达式);
·浮点数(float)–浮点数;
·整数–整数;
·布局(layout)–并行或串行布局定义;
·记录格式(record format)–记录描述或包含记录描述的文件;
·字符串(string)–任意字符串;
·变换(transform)–变换描述或包含变换描述的文件。
位置(Loc)3006–此字段与记录格式和变换类型一起使用。它指定类型字段3004是否描述文件位置或者其是否包含嵌入式描述。支持的位置有:
·嵌入(Embedded)–参数将包含记录或变换描述;
·主机(Host)–参数将包含对主机上的文件的引用;
·本地(Local)–参数将包含对本地机上的文件的引用;
·存储库(Repository)–参数将包含对存储库变换或记录格式的引用。
默认值3008–此字段包含(1)在外部程序源未提供其它值的情况下将使用的运行时参数的默认值或(2)描述如何从用户输入中导出运行时值或者如何从执行图的用户交互式地获得该信息的规则或表达式。在后一种情况下,如果用户未提供输入值,则可以使用第二默认值字段(未示出)来提供运行时参数的值。对于“布尔”和“选择”类型,此字段将用户限制为有效选择。对于“布局”类型,此字段是只读的,并显示当前定义的布局定义。对于所有其它类型,此字段优选是简单的用户可向其中输入有效字符串的文本编辑器。
编辑3010–在参数行中点击编辑空间3010(或图标,例如铅笔图标)将提供一个更高级的编辑窗口,该编辑窗口使用户通过用于编辑默认值字段3008的各种选项。在所示的实施例中,以下编辑器可用于其相关联的类型:
·单行编辑(Single line edit)–用于整数、浮点数、日期和字符串类型;
·选择对话框(Choice dialog)–用于布尔和选择类型;
·关键字编辑器(Key Editor)–用于整理器类型;
·文件浏览器(File Browser)–用于数据集类型以及用于位置未嵌入的记
录格式和变换类型;
·变换编辑器(Transform Editor)–用于具有嵌入式位置的变换类型;
·记录格式编辑器(Record Format Editor)–用于具有嵌入式位置的记录
格式类型;
·表达式编辑器(Expression Editor)–用于表达式类型;
·布局编辑器(Layout Editor)–用于布局类型。
除非种类字段值(见下文)是“PL”(代表参数语言),否则启动上述编辑器。在这种情况下,向用户呈现编辑器,用以在图执行时定义用于导出或提示参数值的规则。
描述3012–这是一个自由格式字段,其中在该字段中,开发者描述运行时参数的预期值。如果默认值包含用于向用户请求输入值的规则,则在运行时将描述3012用作提示。
种类3014–此字段定义了图要在图执行时获得相关联的参数的值的情况。支持的种类字段3014的值有:
·环境(Environment)–预期在相同名称的环境变量中找到运行时参数的值。如果未定义环境变量,则使用默认值字段3008中的值。如果需要参数(即,导出的参数)并且默认值字段3008为空,则将生成运行时错误并将停止图执行。
·位置(Positional)–运行时参数的值预期在调用应用的命令行上的相对位置处。例如,如果运行时参数是所定义的第三个位置运行时参数,则其参数值将被预期为执行脚本中的第三个位置命令行参数值。必须提供任何指定的位置参数,如果缺失一个,则将会生成运行时错误。
·关键词(Keyword)–运行时参数的值预期为关键词命令行参数。在所示的实施例中,关键词参数的形式如下:
-<参数名称><参数值>
关键词参数是可选的,并且只有在未提供关键词参数且默认值字段3008为空且需要相应的导出参数的情况下,才会生成运行时错误。
·固定(Fixed)–参数的运行时值始终为默认值。这对于在两个或更多个运行时参数之间共享常量值是有用的。
·PL–运行时参数的默认值包含PL表达式,该PL表达式将在图执行时被理解为从其它参数中导出运行时参数的值、或者提示用户进行附加输入。被选择与本发明的任何特定实施例一起使用的组件描述语言(Component Description Language)可以是任何合适的脚本语言,诸如公开可用的面向对象的脚本语言“Python”。这样的脚本可以在程序控制下构建元数据(类型和变换),并且对用户输入、从外部以编程方式提供的输入和其它运行时参数执行条件测试、比较、数据变换、算术和逻辑运算、字符串和列表操纵以及其它功能,以生成任何运行时参数的最终值。
在所示的实施例中,用于引用直接在运行时参数网格3000上创建的运行时参数的有用约定是简单地输入以美元符号“$”开头的参数名称。例如,$key引用名为key的运行时变量。在所示的实施例中,新的运行时参数基于针对默认运行时种类(默认运行时种类为“环境”)的高级选项对话框中的值而默认为“字符串”类型和默认种类。
因为运行时参数值可以在运行时确定并且PL脚本可以提供条件测试,所以可以创建“条件”运行时参数。只有当运行时确定的参数的所有条件启用时,条件运行时参数才会为用户输入生成提示。因此,例如如果用户以“否”来响应于请求是否对数据集进行排序的第一个提示,则无需显示请求排序关键字的第二个条件提示。
因此,在设计阶段(“设计时间”),开发者将图组件的特定参数指定为“运行时”参数。然后,将与该图组件相关联的对象与相关参数数据(例如,来自图11的参数网格3000的信息的类型)存储在一起。
图13是总结使用运行时参数的处理的流程图。在运行时,(例如,从存储库)检索与要执行的应用相对应的参数对象(步骤4000)。针对每个这样的对象来确定是否指示用户输入(步骤4002)。如果指示用户输入,则确定是否已经满足用于显示提示的任何条件(步骤4003),这可以包括对先前提示的用户输入进行评价。如果不满足用于显示提示的任何条件,则使用默认值(步骤4008)。可选地,可能不需要参数值(例如,如果用户未选择激活排序功能,则将不需要排序关键字),因此可以忽略。否则,针对用户输入生成提示(步骤4004)。
如果用户未输入特定参数的值(步骤4006),则可以选择该参数的默认值(步骤4008)。可选地,可以提出错误条件以指示出缺少用户输入。在任何情况下(假设没有由于缺少用户输入而造成的错误条件),考虑到输入以及基于其它参数的依赖性和条件的变换,确定参数的最终值(步骤4010)。
如果确定用户输入未指示出特定参数(步骤4002),则确定参数值是否以编程方式诸如通过环境变量或命令行参数提供从外部提供(步骤4012)。如果参数值不是以编程方式从外部提供,则选择参数的默认值(步骤4014)。可选地,可以提出错误条件以指示出缺少指定类型的可用输入。在任何情况下(假设没有由于缺少外部输入而造成的错误条件),考虑到输入以及基于其它参数的依赖性和条件的变换,确定参数的最终值(步骤4010)。
一旦确定出最终参数值,作为可选步骤,可以根据指定条件和上述规则完全移除或用流(即,图链接或边)代替(以下讨论的)所有条件组件(步骤4016)。一旦敲定了操作图结构并确定了最终参数值,则以常规方式执行图(步骤4018)。
测试值
为了在使用运行时参数创建并测试图期间支持开发者,GDE 1002的优选实施例还支持运行时参数的测试值。当开发者使用运行时参数运行图或者想要查看影响图组件的底层代码时,GDE 1002显示相关联的测试参数网格,用户可以在其中输入一个或多个运行时参数的新测试值。优选地,记住所使用的最后一组测试值并将其与图保存在一起。
对于每个运行时参数,开发者在测试值列中输入期望的测试值。编辑字段可以与每个测试值列相关联。除了参数种类为PL的情况,测试值字段和编辑字段的行为与运行时参数网格2000中的默认值字段和编辑字段相同。
如果PL表达式指示出要提示用户获得特定运行时参数的值,则测试值字段和编辑行为基于相关联的PL表达式的解释。如果PL表达式仅导出基于其它输入的值,则在正常模式下,运行时参数在测试值网格中是不可见的。
指定运行时参数如何获取各自的值
在将参数指定为运行时参数之后,在存储库1004中创建相应的对象。如果运行时参数具有种类字段2014值“PL”,则该参数的默认值字段3008包括具有以下优选形式的prompt_for伪函数:
prompt_for“prompt-kind[modifiers]”options…
如上所示,prompt_for伪函数可以是基于先前的输入来确定是否显示提示的条件表达式的一部分。
对于这样的对象,使用用户界面来向用户呈现直接输入运行时参数。在优选实施例中,Web界面1008提供该功能。特别地,在运行时,每个运行时参数对象的每个prompt_for伪函数由Web界面1008解析以生成具有相应用户提示的(例如,HTML格式的)网页。(可选地,这样的网页可以在运行时之前生成,并且在运行时简单地呈现。然而,运行时生成这样的网页提供了更大的灵活性。特别地,页面的内容可以取决于先前的用户输入。)Web界面1008与可显示这种网页并接收用户输入的传统网络浏览器结合使用。
prompt_for伪函数向Web界面1008指示如何提示参数值。特别地,prompt-kind参数(字符串常量)指示出要呈现何种用户界面(UI)元素(文本框、下拉列表等)。字符串的修饰符(modifier)部分(以逗号隔开的关键词列表)提供了各种提示常见的一些选项。在所示的实施例中,空间在修饰符字符串内是不重要的。修饰符关键词解释如下:
·关键词in place声明:元素应当直接呈现在应用的汇总级别用户界面,从而允许在不“钻入”更低级别的情况下提供值。如果未指定in place,则在汇总级别界面呈现简单的“编辑”按钮,该按钮将把用户带至另一页面以提供参数值。
·关键词blank ok声明:用户无需提供值;应用将以合理的方式处理默认值。如果未指定blank ok,则用户将无法在不提供某些值的情况下执行应用。
以下是使用不同种类的修饰符的prompt_for调用的一些示例:
${prompt_for“text,inplace”}
${prompt_for“filter,in place”,$input_type}
${prompt_for“radio,blankok,in place”,${list 1,2,3}}
本节的其余部分列出了各种提示种类(prompt-kinds)及其相应的选项(options),并解释了每个提示种类将如何出现在Web界面1008所生成的网页中。
text[size]–呈现常规的单行文本框大小字符宽(如果未提供大小,其默认为浏览器的默认文本框大小)。
radio choice-list[description-list]–以一组单选按钮的形式呈现常规的“选择一个”提示,其中一个按钮用于选择列表(choice-list)中的每个元素。如果提供描述列表(description-list),则每个选择都标有相应的描述;否则,这些选择标有来自选择列表的字符串形式的相应项。
radioplus choice-list[description-list]–与单选(radio)相同,但在文本框旁呈现一个附加按钮,以允许用户选择不在选择列表中的“写入”值。
checkbox choice-list[description-list]–以一组复选框的形式呈现常规的“选择零个或多个”提示,其中一个按钮用于选择列表中的每个元素。如果提供描述列表,则每个选择都标有相应的描述;否则,这些选择标有来自选择列表的字符串形式的相应项。
dropdown choice-list[description-list,size]–以下拉列表的形式提供常规的“选择一个”提示以获得选择列表的元素。如果提供描述列表,则每个选择都标有相应的描述;否则,这些选择标有来自选择列表的字符串形式的相应项。如果提供大小,则许多选择将立即可见;否则,只有一个选择可见。
multidropdown choice-list[description-list,size]–以下拉列表的形式提供常规的“选择零个或多个”提示以获得选择列表的元素。如果提供描述列表,则每个选择都标有相应的描述;否则,这些选择标有来自选择列表的字符串形式的相应项。如果提供大小,则许多选择将立即可见;否则,示出浏览器的默认项数。
key type-obj[size]–呈现由给定type-obj中的字段组成的关键字(亦称为整理器)的提示。关键字(key)可以具有尽可能多的大小(size)部分,其默认为type-obj中的字段的数量。
图14是由关键字提示生成的图形对话框5000的一个实施例的示图。以下是3条关键字提示的脚本文本的示例,其中文件/datasets/fixed定义了下拉框5002中示出的可用关键字的内容:
${prompt_for“key”,${dataset_type“/datasets/fixed”},3}
在所示实施例中,正常整理顺序是升序的,但是用户可以通过检查相关联的复选框5004来选择关键字的降序整理顺序。
filter type-obj–呈现由给定type-obj的每个字段上的条件组成的过滤表达式的提示。blank ok修饰符对过滤器没有影响;空的过滤产生“真”表达式。
图15是由过滤提示生成的图形对话框6000的一个实施例的示图。与每个表达式文本编辑框6004相关联的可用字段名称6002由type-obj定义。将比较值输入到文本编辑框6004中,并且从相应的下拉列表控件6006中选择比较运算符(例如,等于,小于,以及小于或等于)。
flexifilter type-obj–与过滤提示相同,但呈现了由给定type-obj的每个字段上的条件组成的过滤表达式的提示,其中每行的字段名称可以从下拉列表中选择。这允许针对多个条件而使用相同的字段(例如,字段STATE=MA或字段STATE=CA)。
rollup type-obj key[size]–基于给定关键字上卷的给定type-obj的字段来呈现对于上卷计算的提示。上卷可以具有尽可能多的大小规则,其默认为type-obj中的字段的数量。blank ok修饰符对上卷没有影响;空的上卷产生了仅提供每个组的关键字值的包。
图16是由上卷提示生成的图形对话框7000的一个实施例的示图。在所示的实施例中,下拉框列7002定义可用的上卷计算函数(例如,求和、最小、最大)。与每个计算相关联的可用字段名称7004由type-obj定义。每个上卷规则具有用于用户定义期望表达式的相关联的文本编辑框7006、用于(通过布尔表达式)定义源值参与计算的标准的“where”文本编辑框7008、以及用于指定将接收计算结果的字段的输出字段文本编辑框7010。在可以明确导出的情况下,无需指定输出字段的名称。
reformat type-obj[size]–基于给定type-obj的字段来呈现对于重定格式计算的提示。重定格式可以具有尽可能多的大小规则,其默认为type-obj中的字段的数量。
图17是由重定格式(reformat)提示生成的图形对话框8000的一个实施例的示图。在所示的实施例中,重定格式提示包括用于简单地将输入字段复制到相同名称的输出字段的部分8002(使用复选框控件单独地选择/取消选择,或者通过使用全部选择或全部不选按钮整体地选择/取消选择)。提示的第二部分包括允许定义重定格式表达式(例如,total=revenue_1-revenue_2)的文本编辑框8004的列。每个规则具有相关联的输出字段文本编辑框806,用于指定将接收重定格式后的结果的字段。
outputspec–呈现输出数据集规范的提示。所显示的控件包括用于呈现可用格式选项的下拉控件以及用于输入输出数据集的特定实例的名称的文本编辑框。blank ok修饰符对输出数据集规范没有影响。
fpath starting-point–呈现文件路径的提示。该提示本质上是文本框,但旁边有一个“浏览”按钮,该“浏览”按钮将导致弹出窗口出现以便浏览文件路径。如果文本框非空,则将被用作浏览操作的起点;如果为空,则使用起点(starting-point)参数值。
rpath starting-point–呈现存储库路径的提示。该提示本质上是文本框,但旁边有一个“浏览”按钮,该“浏览”按钮将导致弹出窗口出现以供浏览。如果文本框非空,则将被用作浏览操作的起点;如果为空,则使用起点参数值。
radiofpath choice-list[description-list]–与radioplus相同,但在“写入(write-in)”槽中呈现fpath样式框+浏览按钮(fpath-style box-plus-browse-button)。
radiorpath choice-list[description-list]–与radioplus相同,但在“写入(write-in)”槽中呈现rpath样式框+浏览按钮(rpath-style box-plus-browse-button)。
条件组件
一些实现包括条件组件机制,该条件组件机制允许基于参数值和计算出的元数据来改变图的组件和流的结构。图的每个组件都有一个条件,用于控制在运行时该组件是否会出现在图中。该条件可以通过运行时参数直接或间接地计算。条件组件可用于各种目的,例如使图优化或专门化。为了优化,如果不使用某些数据集的值,则应用可以省略对这些数据集的处理,从而允许图更高效地运行。为了专门化,应用可以基于所需的详细程度来决定若干个不同的输出数据集的产生,或允许执行图的若干个可选部分之一。
图18A是第一个图中的合并联接组件9000联接来自文件A和B的数据并将结果输出至输出文件9002的框图。
图18B是第二个图中的上卷组件9004聚合来自文件A的数据并将结果输出至输出文件9002的框图。
图18C是图中的合并联接组件9006联接来自文件A和B的数据并且上卷组件9008聚合如此得到的数据并将最终结果输出至输出文件9002的框图。使用条件组件,这三个图可以组合为最初看起来像图18C的图的单个图,但其确切的结构在运行时才确定。通过设定适当的条件,可以用连接(流)来代替上卷组件9008,从而导致运行时图与图18A中的图类似。类似地,通过设定适当的条件,可以用与文件A的连接(流)来代替合并联接组件9006,从而导致运行时图与图18B的图类似。
在所示实施例中,条件组件可以是定义顶点的任何图组件(即,诸如输入/输出文件的数据集组件、诸如重定格式或排序组件等的处理组件、或已知为子图的其它图)。在优选实施例中,条件组件由两个特殊参数控制:条件(Condition)和条件解释(Condition-interpretation)。条件是评价被推迟到运行时的布尔表达式或值。在所示的实施例中,值“假”和“0”指定假条件,所有其它值(包括空)表示真条件。条件解释参数具有两个允许的互斥值:完全移除和用流代替。
图19是呈现具有条件解释控件1904的条件1902的图形对话框1900的一个实施例的示图。条件解释控件1904允许选择完全移除解释1906或者用流代替解释1908。
完全移除:通过这种解释,如果满足条件,则将组件及其连接的所有流(例如,图链接或边)从图中移除。主动的完全移除条件在功能上将组件及其所有直接连接的流从图中移除。完全移除条件可以用在任何组件上。
从图中移除的条件组件可以使依赖于该条件组件的存在的其它连接组件“中毒”,从而导致其移除。
图20是示出出现这种中毒的情况的图2100的示图。如果输入文件(Input File)组件2102上的条件指示移除,并且其相应的条件解释是完全移除,则将输入文件组件2102及其连接的流都从图2100中移除。这转而会使排序组件2104中毒,从而导致其被移除,因为它的输入是所需的输入端口,却再也没有与其相连接的任何数据流。这转而会使上卷组件2106中毒,从而导致其被移除,因为它的输入是所需的输入端口,但不再有与其相连接的任何数据流。停止这种“消失之毒”的唯一办法是连接至下游组件的可选端口或计数端口。因此,当输入文件组件2102上的条件指示移除时,将整个排序上卷图分支2108有效地从图2100中移除。图20中的结果是:名义上,原始图结构的3输入联接组件2110在运行时变为2输入联接组件。
在一个实现中,中毒的详细语义(亦称为“隐含条件”)如下:
·如果组件具有所需的端口,并且没有连接至该组件的活动流,则将组件和连接至组件的所有流从图中移除。
·如果组件已从图中完全移除,则将连接至其端口的所有流从图中移除。
·如果组件被流代替,则将连接至该组件的指定输入端口和指定输出端口以外的所有端口的所有流都从图中移除。
·如果所需的索引端口没有连接到该端口的活动流,则对于具有相同索引的每个相应的可选索引端口,将连接到该相应端口的任何流从图中移除。
这些规则存在一些令人惊讶的后果。例如,仅具有可选端口的组件永远不会因为中毒而被移除。因此,如果需要,必须明确地移除该组件。
图21是总结包括完全移除条件组件的图的运行时准备的处理的流程图。如果条件解释是完全移除并且条件未满足(步骤2200),则不将条件组件从图中移除(步骤2202)。如果条件满足(步骤2200),则将条件组件连同连接至该组件的所有流从图中移除(步骤2204)。然后根据以上阐述的规则将所有“有毒的”组件和流从图中移除(步骤2206)。
用流代替:通过这种解释,如果条件满足,则用流(例如,图边)代替组件。用流代替条件解释需要附加信息。参考图19,用户指定输入端口1910(或一系列计数端口)和输出端口1912(或一系列计数端口),用于在组件从图中移除时建立连接。默认情况下,如果正好有一个所需的输入端口或计数端口并且正好有一个所需的输出端口或计数端口,则这些端口是指定的流通连接端口(分别称为指定输入端口和指定输出端口)。所需的端口是需要连接至少一个流的端口。
图22是总结包括针对本发明的特定实施例的用流代替条件组件的图的运行时准备的处理的流程图。由于一些组件对所示实施例中的某些可用输入和输出的依赖性(其基于CO>OPERATING中可用的组件),因此几条规则适用于该实现并且使用用流代替条件:
·如果条件解释是用流代替并且条件未满足(步骤3300),则不将条件组件从图中移除(步骤3302)。
·只有在正好有一个连接至指定输入端口的活动直线流并且正好有一个连接至指定输出端口的活动直线流时(“活动”流是在运行时未移除的流),才可以用流代替具有指定输入端口和指定输出端口的组件(步骤3304)。如果是这样,则将组件本身从图中移除,并且将连接至指定输入端口的直线活动流和连接至指定输出端口的直线活动流链接在一起(步骤3306)。将直接链接到被移除的组件的其它端口(即,特别指定的输入和输出端口以外的任何端口)的任何其它流从图中移除。如上所述,移除连接至被移除的组件的任何“有毒”组件和流(步骤3308)。
·如果具有用流代替条件的组件具有连接至一系列计数输入中的不止一个指定输入端口的活动流(步骤3310),则不将该组件从图中移除,因为需要该组件来使图有效(步骤3312)。
·在所需输入上具有活动扇入流的组件需要特殊的处理。“活动扇入流”意味着组件具有连接至所需输入端口的活动扇入流或全方位流,或者其具有连接至单个所需输入端口的不止一个活动直线流。对于这样的组件,解释用流代替条件应当用收集所有活动输入流的收集组件来代替条件组件(步骤3314)。如上所述,然后移除连接至被代替的组件的任何“有毒”流和组件(步骤3316)。
元数据传播的各方面
图的元数据可例如由图开发者、图用户提供,或者通过来自图的另一部分的传播来提供。可以传播各种元数据,包括与数据或对数据的计算相关联的元数据,诸如端口的记录格式(例如,字段的序列以及流入或流出端口的记录的数据类型)、排序、压缩方法、字符集、二进制表示(大端、小端)、分区、组件可能使用的计算资源(例如,处理器,临时磁盘空间)、数据变换以及组件可能使用的内存量等。图结构的各个方面可能影响元数据的传播。以下描述了这些方面中的两个方面。
组件移除之后的传播
在一些实现中,在移除图组件之后生成流时,必须作出关于在修正后的图中应当如何传播用于在这样的流中定义数据的元数据的选择。元数据可以从流的任一端获得。在一些实现中,来自流的上游端的元数据是优选的。
如果流的上游端是被移除的组件(或已由收集组件代替的组件),则GDE1002通过在图中向上游“行走”来查找流的元数据,直到其找到尚未被移除的组件为止。使用该上游组件所公开的元数据来定义所生成的流的数据特性。
变换后的元数据的传播
如上所述,通过允许将与端口相关联的元数据指定为一个或多个参数(包括用于另一端口的元数据)的函数,元数据甚至可以在变换内部数据路径上传播。例如,图32A示出计算对来自数据集31302和数据集31304的数据的联接操作的图31300。在该示例中,图开发者在数据集的输出端口处提供元数据。然后将该元数据传播至“智能联接”组件31306,该“智能联接”组件31306计算对输入数据集的记录的联接操作。例如,元数据从输出端口31308传播至输入端口31310。然后元数据通过“智能联接”组件31306而被变换并且从“智能联接”组件31306的输出端口31316传播至过滤组件31318的输入端口31317。
图32B示出实现“智能联接”组件31306的子图。组件31306使用key_field参数,其值表示联接组件31350所执行的联接操作的关键字字段。组件31306还使用key_field参数作为用于包括条件排序组件31354和31356的条件。如果流入输入端口31310的记录已经按照key_field进行排序,则去掉排序组件31354。类似地,如果流入输入端口31314的记录已经按照key_field进行排序,则去掉排序组件31356。如果输入记录的流都尚未按照key_field进行排序,则排序组件31354和31356在记录流入联接组件31350之前对其进行排序。
为了能够通过该“智能联接”组件来传播变换后的元数据,图开发者将“智能联接”组件31306的输出端口31316的元数据(例如,用于描述字段的元数据)定义为第一输入端口31310的元数据input0.metadata、第二输入端口31314的元数据input1.metadata以及关键字字段参数key_fieldd的函数:
output.metadata=metadata_join(key_field,input0.metadata,input1.metadata)
通过将函数参数值绑定到值(相对于适当的上下文)并对结果执行函数metadata_join,来确定输出端口元数据。在该示例中,由于端口31310和31314的元数据未定义,因而传播的元数据被绑定到元数据参数input0.metadata和input1.metadata。用户为输出端口31308提供指定了从端口31308流至“智能联接”组件31306的输入端口31310的记录的字段“A”和“B”的元数据。用户还为输出端口31312提供指定了从端口31312流至“智能联接”组件31306的输入端口31314的记录的字段“A”和“C”的元数据。该用户提供的元数据传播到端口31310和31314。联接操作的关键字字段是字段A,因此将“形式参数”key_field绑定到值“A”。
函数metadata_join通过首先确定key_field参数的值是否是由input0.metadata和input1.metadata指定的两个字段集中的成员来确定输出元数据。如果是,则输出元数据是两个字段集的并集。如果不是,则输出元数据表示空的字段集。
在元数据传播到“智能联接”组件31306的输入端口(或者以其它方式,例如由用户提供)之后,“智能联接”组件31306的输出端口的变换后的元数据包括字段A、B和C。然后,该变换后的元数据可被传播到其它组件。在该示例中,变换后的元数据传播到过滤组件31318。
无论是由用户提供还是在端口之间传播,元数据都可以显示给用户。例如,用户可以使用输入装置(例如,鼠标)来选择查看元数据值所用的组件的一部分。也可以响应于这样的用户选择来触发元数据传播。
典型元数据传播处理
图33示出典型元数据传播处理22400的流程图。可例如在图每次改变时响应于用户动作和/或刚好在图运行之前,执行处理22400。处理22400生成22402工作列表,其中图中的每个组件根据流所确定的部分定序来定序(例如,如果存在从组件A到组件B的流,则组件A出现在组件B之前)。在流没有确定两个组件之间的唯一顺序的情况下,组件标记的字母顺序可以用作决定因素。这为工作列表中的组件提供了稳定的定序(假设组件标记是唯一的)。如果传播处理22400对于图而重复(例如,在添加新的组件之后重复),则新的工作列表在先前存在于工作列表中的组件之间保持相同的顺序。
处理22400起始于工作列表的开始处,并且对于工作列表中的每个组件,处理22400基于实现组件的子图的规范(例如,子图中的数据流)来在组件内向内传播22404元数据(例如,从输入端口向输出端口,或者从输出端口向输入端口)。这种内部元数据传播包括:在非变换数据路径的任一端的端口之间传递未变换的元数据。如上所述,内部元数据传播还包括:导出具有参考图的参数和/或其它端口的元数据的元数据定义的端口的元数据。当处理22400遇到这样的元数据定义时,处理22400评价需要其值来导出元数据的任何参数。
在针对工作列表上的组件执行内部元数据传播之后,处理22400将元数据从具有该元数据的组件的每个端口向外传播22406至没有元数据的相关组件的端口。通过这种向外传播获取元数据的任何组件将移动22408至工作列表的末尾。处理22400在处理完工作列表上的最后一个组件之后终止22410。
支持这类向外元数据传播的组件之间的一类关系是两个组件的端口(例如,从输入端口到输出端口,或者从输出端口到输入端口)之间的数据流链接。
支持这类向外元数据传播的组件之间的另一类关系是表示一个端口的元数据也可以用于另一端口的链接。这类“元数据链接”不一定与数据流链接相对应。例如,端口可以具有与图中的并未特别地关联于任何端口的元数据的元数据链接。
组件化子图中的运行时参数
在子图被“组件化”地用作另一图中的组件之前,定义组件的各种特性,诸如组件的输入和/或输出端口。对于包括具有运行时参数的组件的子图,应选择运行时参数的提示顺序。由于图中的组件不一定是按顺序定序的,所以运行时参数可能有多个可能的全局定序来提示用户。全局定序中的一些与关联于每个组件的原始定序不一致。生成用于提示的全局定序是有帮助的,该全局定序尽可能地保留每个组件中的参数的定序,同时在适当时考虑依赖性来进行重新定序。例如,组件可以将询问“要处理什么数据?”的提示定序在询问“想在哪里存储处理后的数据?”的提示之前。尽管可以按任一顺序提供提示,但也可以期望地按该顺序来提供提示。
由于在评价所提示的运行时参数的处理中可能需要评价未提示的运行时参数,因此从所有运行时参数的评价顺序获得提示顺序。用于确定图的运行时参数(包括不与任何组件相关联的图的参数)的评价顺序的一种方法包括:基于表示参数之间的依赖性的一个或多个有向非循环图来执行拓扑排序。然而,一些拓扑排序算法可能对参数进行不必要的重新定序,从而导致对运行时参数的不期望的提示定序。
排序示例1
在第一个示例中,参数排序处理提供了针对两个图组件的参数的初始参数列表:组件I和连接至组件I的组件II。在该示例中,参数仅具有“组件内”依赖性。也就是说,组件的参数仅依赖于同一组件中的其它参数。参数定义如下:
组件I包括以下参数:
组件II包括以下参数:
列出参数的顺序定义了要提示用户获得值的期望顺序。初始参数列表保持了每个组件的这种“初始定序”。向每个参数分配一个“序数”,以指示出该参数在初始定序中的位置。下表列出了该初始定序中的参数。
“依赖性”列指示出列出的参数所依赖的其它参数。依赖性对参数的评价施加了定序约束:参数需要在由另一个参数使用(例如,引用)之前定义。
“常见的拓扑排序”算法遍历列表,从而在每次遍历时将具有零依赖性的参数传递至有序输出列表。每遍过后,将任何传递的参数从依赖性列移除。重复该处理,直到所有参数都被传递。输出列表中的参数的顺序表示“最终定序”,使得依赖于其它参数的参数在其它参数已被评价之后进行评价。
在该示例中,在第一遍时,参数x、q、a和c被传递至输出列表。在第二遍时,参数y和b被传递至输出列表。在第三遍和最后一遍时,参数z被传递至输出列表。因此,参数的最终定序是:x、q、a、c、y、b、z。虽然该定序确实满足参数依赖性所施加的定序约束,但是它对参数进行了不必要的重新定序。在该示例中,初始定序也满足参数依赖性所施加的定序约束。
用于确定针对满足定序约束的图的参数的评价顺序的其它方法一定遵循初始定序。例如,一些方法对参数进行定序以满足定序约束,根据基于初始定序的基准来进行定序。该基准可以包括各种基准中的任意基准,该任意基准优先将顺序保持为接近于初始定序(例如,基于对初始排序的改变来使度量最小化)。在一些情况下,可能不存在唯一的“最佳”定序,这是因为根据基准,多个定序可以同样很好地满足给定基准。
遵循初始定序的方法的示例是“修改后的拓扑排序”方法。在该方法中,基于初始定序的基准是:使在传递不依赖于任何未传递参数的前一参数之前从初始列表传递的参数的数量最小化。换句话说,“修改后的拓扑排序”在传递具有零依赖性的下一参数之前将所传递的参数从依赖性列中移除。对于以上示例,“修改后的拓扑排序”方法生成与初始定序相同的最终定序:x、y、z、q、a、b、c。
遵循初始定序的修改后的拓扑排序处理
以下为两个典型“修改后的拓扑排序”处理赋予伪代码,其中,这两个处理都遵循由所分配的每个参数的序数所确定的初始定序。第二个处理包括优化,以提高某些情况下的时间效率。这两个处理操纵由参数的输入数据所生成的数据结构。
假设有N个要定序的参数,则输入数据包括由唯一的参数名称、命名参数所依赖的参数集(称为“依赖集”)、以及存储与命名参数相关的信息的可选属性数据对象组成的N个三元组的列表。
与该输入数据相关联的是表示参数之间的依赖性的一个或多个有向非循环图,称为“依赖图”。每个唯一的参数名称与依赖图中的节点相对应,并且相关联的依赖集与其它节点到该节点的链接集相对应。因此,链接从第一参数的第一节点指向依赖于该第一参数的第二参数的第二节点。可选地,链接方向和参数依赖性之间的对应关系可以反向。
输出数据结构result_list包括来自重新定序(如果需要的话)的输入数据的N个参数的列表,使得当优先将顺序保持为接近于初始定序时,在参数用于评价另一参数之前对该参数进行评价。为生成输出数据结构result_list,处理通过将参数一次一个地从工作数据结构param_list传递至数据输出结构result_list来“消除”参数。在消除了所有参数之后,输出数据结构是完整的。
第一个“修改后的拓扑排序”处理包括两个阶段。在第一阶段,处理基于用于生成排序后的输出数据结构的输入数据来建立工作数据结构。在第二阶段,处理根据这些工作数据结构所表示的依赖性约束来对参数进行迭代排序和消除。
处理在第一阶段中所建立的工作数据结构中的一些是词典,这些词典是基于散列的数据结构。可以在O(logN)时间有效地访问词典中的项。在第一阶段建立以下典型数据结构:
parm_list[index]:利用编号索引(index)来进行索引的未消除参数名称的有序列表(其中index=0与列表中的第一项相对应)。该数据结构是“动态的”(即,在处理的执行期间发生改变)。按位置对列表进行索引,使得如果从列表中间移除项,则在被移除的项之后的项的索引相应地移位。
n_dependencies_dict[name]:按参数名称(name)键入的词典,其条目包含键入的参数所依赖的参数的数量。该词典是动态的。
dependers_dict[name]:按参数名称(name)键入的词典,其条目是(也按参数名称键入的)表示依赖于键入参数的参数集的词典。该词典是“静态的”(即,不会在处理的执行期间发生改变)。
order_dict[name]:按参数名称(name)键入的词典,其存储初始定序的参数的序数位置(范围从0到N-1的整数)。该词典是静态的。
attribute_dict[name]:按参数名称(name)键入的词典,其存储键入参数的可选属性数据对象。该词典是静态的。
result_list[index]:利用编号索引来进行索引的参数名称和表示处理的输出的属性的有序列表(其中index=0与列表中的第一项相对应)。该数据结构初始为空。该数据结构是动态的。
为了分析处理的时间效率,假设依赖图的平均“度”(或者来自节点的链接数)为z。建立这些数据结构花费了O(N)时间,n_dependencies_dict和dependers_dict除外,后两者花费了O(N*z)时间。
在第二阶段,处理根据排序基准by_n_deps_and_order来对param_list数据结构中的参数进行排序,其中,该排序基准by_n_deps_and_order首先利用这些参数所依赖的未消除参数的数量(即,利用这些参数的n_dependencies_dict的值)从低到高对这些参数进行排序,然后利用这些参数的序数(即,利用这些参数的order_dict的值)从低到高对这些参数进行排序。然后处理消除排序后的param_list中的第一参数。该参数的n_dependencies_dict的值应当为零。(如果排序后的sorted param_list中的第一参数的n_dependencies_dict的值不为零,则标记错误。)
为了消除参数,处理将该参数(连同任何相应属性一起)附加到result_list,并将该参数的所有依赖项(即,dependers_dict中的参数)的依赖计数(即,n_dependencies_dict的值)减1。最后,从parm_list删除该参数。重复对所得到的第一参数的这种排序和消除,直到所有参数都被消除为止。
以下是消除(eliminate)过程的伪代码定义:
消除过程的参数值是列表(其值例如为parm_list)和索引。函数result_list.append将位置索引所指示的列表(list)项连同其相关联的属性附加到result_list。然后,针对正被消除的参数上所键入的作为dependers_dict数据结构的成员的每个参数依赖项(depender),该过程使n_dependencies_dict的值减小。然后,该过程从列表删除参数。消除过程的运行时间是O(zlogN)。
以下是第一个“修改后的拓扑排序”处理的排序/消除循环的伪代码:
处理首先使用根据上述的排序基准by_n_deps_and_order对param_list的参数进行定序的函数parm_list.sort(by_n_deps_and_order)来对param_list进行初始排序。然后,处理进行消除过程并且消除过程之后进行对param_list的另一排序,直到param_list为空为止。处理进行检查以确保param_list中的第一参数(index=0)的依赖性的数量为零。如果不为零,则处理移除该参数、记录循环错误并继续。排序花费了O(NlogN),并且循环范围为N,使得对循环的整个运行时间的估计为O(N2logN)。
第二个“修改后的拓扑排序”处理利用依赖图稀疏的情况,使得z<<N。在一个初始排序之后,处理可以保持不依赖于任何其它参数的参数的列表候选(candidates)的排序。这样如下所述减少了该预期运行时间。
以下是第二个“修改后的拓扑排序”处理的伪代码:
处理首先使用根据上述的排序基准by_n_deps_and_order对param_list的参数进行定序的函数parm_list.sort(by_n_deps_and_order)来对param_list进行初始排序。然后,处理进行具有三个部分(标记为“#部分(#section)1”、“#部分2”以及“#部分3”)的循环。
在部分1中,处理建立仅包含具有零依赖性的参数的候选列表。处理扫描parm_list中的所有参数,并将其附加到候选,从而保留其相对定序。
在部分2中,处理进行循环,其中在该循环中,消除来自候选的参数并将新的参数合并到候选中。从候选中消除并从param_list中删除候选中被保存为this_parm的第一参数。函数get_new(this_parm)返回作为新消除的this_parm的dependers_dict的成员并具有零依赖性的参数名称列表。然后根据by_n_deps_and_order对这些参数(表示已经移除了最后依赖性的参数)进行排序(以确保这些参数按照其各自的序数进行定序),并将这些参数合并到候选中。因此,候选列表保持按序数进行排序的零依赖性参数的列表。
如果发生了“循环错误”(例如,在两个参数根据彼此进行定义的情况下),仅进入部分3。在这种情况下,处理再次对parm_list进行排序,并且如果parm_list中的第一参数具有非零依赖性,则删除该第一参数、并且循环从部分1重复。
假设没有循环错误,则仅在开始时对N个参数的列表parm_list进行排序,从而导致排序时间为O(NlogN)。此后,排序仅发生在通过消除候选列表头部的参数所新生成的零依赖性参数的更小列表中。该列表的大小(平均来说)小于z,从而导致排序时间为O(zlogz)、且合并时间为O(z)。因此,循环的一次迭代的时间为O(z log z),而总时间为O(Nzlog z+N log N)。对于z不随着N增加而增长的情况,总时间有效地为O(NlogN)。
排序示例2
在另一示例中,参数排序处理(例如,第一个或第二个“修改后的拓扑排序”处理)确定如图34A所示的具有图组件22502、22504和22506的图22500的运行时参数的初始列表。图22500还具有与输入数据集22510的输出端口22508以及输出数据集22514的输入端口22512相关联的运行时参数。在该示例中,参数具有“组件内”依赖性和“组件间”依赖性两者。即,组件的参数依赖于同一组件中的参数以及其它组件中的参数。在该示例中,组件间依赖性由于组件之间的流动而产生,其使得能够传播一些参数所依赖的元数据。
在图34A中由从第一参数或端口到第二参数或端口的虚线箭头来表示依赖性。到端口的箭头表示链接参数的值从该端口传播到下游端口。从端口起的箭头表示值从上游端口传播到链接参数。从第一参数到第二参数的箭头表示第二参数的值依赖于(例如,引用)第一参数的值。
图34B基于图22500而示出表示参数p0、p1、p2、p4、p5和p6之间的定序约束的依赖图22500。
图34C基于图22500而示出表示参数p3、p7、p8和p9之间的定序约束的依赖图22552。
参数排序处理根据图22500中的元素放置的顺序来向各个图元素的十个参数p0、p2、...、p9中的每一个分配序数。在图34A中,(例如,用户使用GDE1002)添加到图22500的第一个图元素是具有参数p0、p1和p2的组件22502。所添加的第二个元素是具有参数p3、p4和p5的组件22506。所添加的第三个元素是具有参数p6的数据集22510。所添加的第四个元素是具有参数p7的数据集22514。所添加的最后一个元素是没有运行时参数的数据集22516。下表列出了由所分配的序数定义的初始定序的参数。
以下在各个处理阶段的param_list和result_list中的参数的列表对应于上述的第一个“修改后的拓扑排序”处理。param_list被显示为根据各个阶段的排序基准by_n_deps_and_order进行排序。
以下在各个处理阶段的候选和result_list中的参数的列表与上述的第二个“修改后的拓扑排序”处理相对应。由于参数在每个阶段保持相同的顺序,因此没有必要在各阶段之间对候选进行排序。
因此,参考图35,“修改后的拓扑排序”处理22600将提示用户运行时参数值的期望第一定序22602以及这些参数的定序约束22604(例如,依赖图22550和22552)作为输入。处理22600根据该期望第一定序22602来提供满足定序约束的参数集的新定序22606。
典型用途
通常,用户坐在Web界面1008的前方,并在存储库1004中查找该用户想要运行的应用的图。通过扫描与应用图相关联的所有对象,Web界面1008生成允许用户为应用的运行时参数指定值的web页面表单。一旦指定了所有运行时参数,则将应用和参数设置组合在一起,作为被调度以供执行程序1010执行的作业。当运行该作业时,执行程序1010以已知的方式对应用进行排队,以供在并行操作系统1006下执行。并行操作系统1006收集跟踪信息和作业状态,并将该信息存储在存储库1004中,使得用户和管理员可以跟踪作业的进程和性能。
示例
图23是表示在没有运行时参数的情况下的上卷应用的图1400的示图。该图计算每种类型的账户数量,并将结果写入输出文件。创建图的开发者已经确定了该应用的每个方面:输入文件组件1402的名称、输入数据的格式、用于在HashRollup组件1404中对数据进行上卷的关键字和变换规则、输出格式、以及输出文件组件1406的名称。用户只能精确地按照定义来执行该图。
图24是表示图23中的上卷应用的运行时参数化版本的图1500的示图。该应用的数据流图结构与非运行时参数化版本非常类似,但是该应用更加灵活。通过运行时参数,最终用户可以指定抽象输入数据集1502(将会从中导出输入文件名称和格式的存储对象)的名称、HashRollup组件1504的上卷关键字和上卷规则、以及输出文件组件1506的名称。
图25是表示针对图24的示例性应用的运行时参数网格1600的图形对话框的一个实施例的示图。该图是图11所示的参数网格的填写版本。注意,许多默认参数是使用如上所述的prompt_for伪函数来定义的,因此需要通过Web界面1008的用户输入。虽然该图的外观与非运行时参数化应用图相差甚微,但是一个或多个参数网格(或其它合适控制)使得开发者能够完全跟踪控制图的执行的所有参数。
图26A是表示由Web界面1008根据图25的参数网格1600中的信息而生成的表单1700的图形对话框的一个实施例的示图。在该示例中,表单1700呈现用户输入的四个运行时参数:输入数据集存储库路径1702、上卷关键字1704、上卷规则1706以及输出路径1708。
图26B是用户用参数值填写的图26A中的表单1700的示图。使用与运行时参数1702~1708相关联的直接输入和/或编辑或浏览器控制按钮,用户提供相应的参数值1710~1716,以执行相关联的图。
图27是表示运行时参数化上卷和联接应用的图1800的示图。
图28是表示针对图27的示例性应用的运行时参数网格1900的图形对话框的一个实施例的示图。此处,应用的一些方面已被参数化,但大多数方面(包括联接关键字和输入数据集)保持不变。
图29是表示由Web界面1008根据图28的参数网格1900中的信息而生成的表单2220的图形对话框的一个实施例的示图。注意,由于在显示最上级表单时已知上卷的输入类型,因此可以就地提示上卷规则2222。
图30是表示运行时参数化上卷-联接-排序应用的图22110的示图。虽然与图27中的示例类似,但条件排序组件22112已被添加到图22110。
图31是表示针对图30中所示的示例性应用的运行时参数网格32200的图形对话框的一个实施例的示图。只有当用户表示期望排序时,才提示sort_key运行时参数32202。为了获得该效果,开发将prompt_for伪函数放在sort_key运行时参数32202的默认值32204的if条件测试内。if条件测试引用第二个运行时参数do_sort 32206。定义do_sort参数32206的默认值字段32208和描述字段32210,以生成询问用户以获得文本提示“应该存储数据?”的真/假或是/否答案的单选提示。如果针对do_sort参数32206所提供的值为“真”,则将包括排序组件22112作为运行时的图的一部分。否则,将会根据排序组件22112的指定条件解释从图中完全移除或者用流来代替排序组件22112。
脚本实现
虽然GDE 1002有助于构建参数化图,但有时存在人们想要提供基于表单的界面的非图程序。使用应用级PL和存储库1004,可以对任意外壳脚本进行参数化。例如,可以以与以下结构类似的结构向文件写入应用的描述:
通用计算机实现
本发明可以在硬件、软件或者两者的组合(例如,可编程逻辑阵列)中实现。除非另有指定,否则作为本发明的一部分而包括的算法不会固有地与任何特定的计算机或其它设备相关。特别地,各种通用机器可以与根据这里的教导所写入的程序一起使用,或者其可以更方便地构建更专门化的设备来进行所需的方法步骤。然而,优选地,本发明在一个或多个可编程计算机系统上所执行的一个或多个计算机程序中实现,其中,该一个或多个可编程计算机系统各自包括至少一个处理器、至少一个数据存储系统(包括易失性和非易失性存储器和/或存储元件)、至少一个输入装置或端口以及至少一个输出装置或端口。在处理器上执行程序代码以进行这里描述的功能。
每一个这种程序可以在任何期望的计算机语言(包括机器编程语言、汇编编程语言、或高级过程编程语言、逻辑编程语言、或面向对象编程语言)中实现,以与计算机系统进行通信。在任何情况下,语言可以是编译语言或解释语言。
优选将每一个这种计算机程序存储在通用或专用可编程计算机可读取的存储介质或装置(例如,固态介质、磁性介质、或光学介质)上或者下载至该存储介质或装置,以在利用计算机系统读取存储介质或装置以进行这里所述的过程的情况下配置计算机并使该计算机进行工作。本发明的系统还可被视为作为配置有计算机程序的计算机可读存储介质来实现,其中如此配置成的介质使计算机系统以特定且预定义的方式进行工作,以进行这里所述的功能。
已经描述了本发明的许多实施例。然而,应当理解,可以在不偏离本发明的精神和范围的情况下作出各种修改。例如,上述的许多功能步骤可以在基本上不影响整体处理的情况下按不同的顺序进行,例如,可以按相反的顺序来进行图13中的步骤4002和4012。因此,其它实施例在所附权利要求书的范围内。
图36示出可以使用动态加载技术的典型数据处理系统1100。该系统1100包括数据源1101,其中该数据源1101可以包括诸如存储装置或到在线数据流的连接等的一个或多个数据源,其中该一个或多个数据源各自可以以多种存储格式(例如,数据库表、电子表格文件、纯文本文件或大型机所使用的本机格式)中的任意存储格式来存储数据。执行环境1104包括预执行模块1105和执行模块1106。执行环境1104可以在诸如UNIX操作系统等的合适操作系统的控制下安装在一个或多个通用计算机上。例如,执行环境1104可以包括多节点并行计算环境,该多节点并行计算环境包括使用多个中央处理单元(CPU)的计算机系统的结构,其中计算机系统可以是本地的(例如,诸如SMP计算机等的多处理器系统)、或本地分布式的(例如,连接为集群或MPP的多个处理器)、或远程地、或远程分布式的(例如,经由局域网(LAN)和/或广域网(WAN)而连接的多个处理器)、或者它们的任何组合。
预执行模块1105被配置为进行诸如以下等的各种任务以为执行数据流图和其它可执行程序作准备:编译数据流图;相对于执行环境1104可访问的数据存储系统1107存储/加载编译数据流图;或者解析参数值并且将解析后的值绑定至参数。在一些情况下,预执行模块1105响应于来自数据源1101的数据而进行任务(例如,加载编译数据流图)。提供数据源1101的存储装置相对于执行环境1104可以是本地的,例如存储在连接至运行执行环境1104的计算机的存储介质(例如,硬盘驱动器1102)上,或者相对于执行环境1104可以是远程的,例如安装在经由远程连接与运行执行环境1104的计算机进行通信的远程系统(例如,大型机1103)上。
执行模块1106使用预执行模块1105所生成的编译数据流图来生成输出数据,其中该输出数据可被提供回至数据源1101和/或存储在数据存储系统1107中。数据存储系统1107也可访问开发人员1109能够设计数据流图的开发环境1108。可以使表示数据流图的数据结构序列化并且存储在数据存储系统1107中。
执行模块1106可以从包括不同形式的数据库系统的数据源1101的各种系统接收数据。该数据可被组织为具有用于各字段(还被称为“属性”或“列”)的值(包括可能的空值)的记录。在从数据源读取数据时,执行数据流图可以包括用于处理与该数据源中的记录有关的初始格式信息的组件。在一些情形中,数据源的记录结构最初可能并不知晓,并且作为代替可以在数据源的分析之后确定。与记录有关的初始信息可以包括表示不同值的位数、记录内的字段的顺序和利用位所表示的值的类型(例如,字符串、有符号/无符号整数)。
参考图37,执行模块1106所执行的数据流图1155的示例使得能够读取来自输入数据源1110的数据并且将该数据处理为离散工作元素的流。在组件1120、1130中进行处理工作元素所涉及的计算的不同部分,其中组件1120、1130被表示为图的顶点(或节点)以及由图的链接(或弧、边)(诸如联接组件1120和1130的链接1125等)所表示的组件之间的数据流。在通过引用包含于此的美国专利5,566,072“EXECUTING COMPUTATIONS EXPRESSED ASGRAPHS”中描述了实现这种基于图的计算的系统。根据该系统所作出的数据流图提供了用于使信息进出图组件所表示的各个处理、用于使信息在这些处理之间移动、以及用于定义这些处理的运行顺序的方法。该系统包括用于选取处理间通信方法的算法(例如,根据图的链接的通信路径可以使用TCP/IP或UNIX域套接字或者使用共享内存来在处理之间传递数据)。
准备未编译数据流图以供执行的处理涉及各种阶段。数据流图的未编译表示是连同与数据流图相关联的用于提供编译处理中所使用的值的任何参数一起检索到的。在静态参数解析阶段,解析静态参数(其值是在运行之前为了解析所指定的)并且将解析值绑定至静态参数。在一些情况下,为了解析静态参数的值,进行计算以推导特定值(例如,如在通过引用包含于此的标题为“MANAGING METADATA FOR GRAPH-BASED COMPUTATIONS”的美国公开2006/0294150中所述的元数据值)。一些参数可被指定为保持未解析以在稍后运行时或紧挨在运行之前解析的动态参数。在例如基于静态参数值不满足(或满足)预定条件的情况下,将被指定为条件组件的组件从图中移除(例如,被数据流链接代替)。在编译阶段,生成表示在执行期间要使用的数据流图(包括其组件和链接)的数据结构。编译还可以包括将采用脚本语言的嵌入式脚本编译成字节码或机器码。在运行时,将与数据流图相关联的任何动态参数绑定至解析值,并且通过开始一个或多个处理、打开任何所需文件(例如,利用动态参数标识的文件)和/或链接任何动态库,来启动编译数据流图的数据结构。这些处理还进行用以设置利用链接表示的数据流的任务(例如,分配共享内存或者打开TCP/IP流)。在一些情况下,如在通过引用包含于此的标题为“MANAGING COMPUTING RESOURCES INGRAPH-BASED COMPUTATIONS”的美国公开2007/0271381中所述,数据结构被配置为在单个处理中执行多个组件。
可以利用各种抽象级别指定数据流图。自身是包含组件和链接的数据流图的“子图”可以在另一包含数据流图内表示为单个组件,从而仅示出将子图连接至该包含数据流图的链接。在一些情况下,子图用于隐藏开发环境108内的包含数据流图的组件和链接,但表示组件和链接的数据已集成在该包含数据流图内。在一些实施例中,如以下更详细地所述,子图最初不包括在包含数据流图中,而是随后根据以编译数据流图开始的“微图”推导出的,其中该编译数据流图包括表示要加载到包含数据流图中的组件和链接的数据结构。
再次参考图37,数据流图1155能够从数据源(在该示例中,利用数据集组件1110来表示)接受输入数据的连续流。数据流在以下意义上是连续的:尽管该数据流在数据流图1155的操作期间可能盈亏,但该数据流不必具有可辨识的开始或结束,例如在输入系统中接收到的信用卡交易或订单的流。另外,数据流图1155能够将输出数据的连续流提供至输出数据存储库(在该示例中利用数据集组件1140来表示)。一些数据流图被设计为在无限的时间段内处理连续数据流的连续数据流图以供执行,并且一些数据流图被设计为开始执行以处理数据的离散批然后在处理了该批之后终止执行的批数据流图以供执行。数据流图的数据处理组件1120和1130可以包含一系列指令、子图或它们的一些组合。
在一些配置中,专用组件1130可以加载作为被配置成动态地检索到并且嵌入在包含数据流图内的专用种类的子图的微图1160。微图可以动态地嵌入有包含数据流图的包含组件,诸如专用组件1130等。在一些配置中,微图1160是根据先前编译好并存储在数据存储系统1107中的数据流图所推导出的。在一些配置中,微图1160在从数据存储系统1107加载的情况下,保持未编译形式。例如,代替加载编译数据流图,专用组件1130可以发起图编译过程以使得包含专用组件1130的数据流图能够执行紧挨在使用之前编译的微图。该图编译过程可以在专用组件1130的外部或者在专用组件1130的内部进行。在一些配置中,微图1160在被存储在数据存储系统1107中之前序列化。通常,序列化是如下的处理:将采用编译或未编译表示的数据流图转译成0和1的二进制流,使得该数据流图采用可以容易地存储在永久存储器或存储缓冲器中的形式。在期望微图的快速加载的实现中,数据流图通常以具有数据结构的编译表示的形式序列化并且存储在数据存储系统1107中,使得可以容易地检索到序列化后的编译数据流图,并且在运行时去序列化且动态地加载这些数据结构。编译是如下的处理:准备包括表示为数据流图的程序的计算机程序以供计算机执行。编译使得可以生成机器码、准备在计算机上执行的指令、或者由在计算机上执行的虚拟机执行的中间码(例如,Java字节码)。在数据流图的情况下,编译包括采用准备在计算机上执行的形式生成表示数据流图的组件和链接的数据结构。
将沿着专用组件1130的传入链接1125流经数据流图1155的数据暂时存储在缓冲器中,而专用组件1130加载微图1160并且将微图1160集成到数据流图1155中。同样,能够将数据流累积在缓冲器中,而将微图从数据流图1155分离并卸载。在一些配置中,分离的微图可以保持载入存储器中以供(例如,使用高速缓存机制)随后访问。
缓冲可被配置为使用利用链接的输入队列所实现的流控制机制,从而将工作元素的输入流提供至组件。该流控制机制使得在不必将数据写入通常大但缓慢的诸如盘驱动器等的非易失性本地存储器的情况下,数据能够在数据流图的组件之间流动。可以使输入队列保持得足够小以将工作元素保持在(通常比非易失性存储器小且块的)易失性存储器中。这种存储空间和时间的潜在节省即使针对非常大的数据集也存在。代替输入队列或除输入队列外,组件可以使用输出缓冲器。在两个组件通过流而连接的情况下,只要下游组件保持消耗工作元素,上游组件就向下游组件发送工作元素。如果下游组件落后,则上游组件将填满下游组件的输入队列并停止工作,直到输入队列再次清空为止。
在一些配置中,微图1160通过调度处理、作为批数据流图的一部分或者根据命令行按调度执行,并且不必加载到包含数据流图的专用组件中。可选地,调度器可以使用专用组件以通过向队列发送消息来启动批处理所用的微图,其中该队列用于将消息的连续流提供至包含将响应于来自队列的消息而加载适当微图的专用组件的运行数据流图。
1专用组件
参考图38A,在一个实施例中,专用组件38200被配置为接受多个输入38205、38210、38215并且传送多个输出38220、38225、38230和38235。这些输入包括数据输入38205、38210和控制输入38215。这些输出包括数据输出38220、38225、38230和状况输出38235。控制输入38215接受(例如,在所接收的控制元素内)要运行的微图38240的标识符、以及可选的用于运行微图38240的一组参数。通常,专用组件38200可以经由诸如数据输入38205、38210等的各数据输入端口接受输入工作元素的0个或更多个流。状况输出38235产生包括来自微图3824的执行的退出状况和跟踪信息的状况记录。另外,专用组件经由诸如数据输出38220、38225和38230等的各数据输出端口来产生输出工作元素的0个或更多个流。在一个实施例中,专用组件38200在正常执行期间产生一个状况记录并且接受一个控制记录。
控制输入38215可以接收各自标识要加载的相应微图的一系列多个控制元素。各控制输入元素与经由数据输入所接收到的工作元素的流中的表示利用所标识的微图要处理的工作单元的工作元素的不同子集相关联。在一些情况下,基于分析工作单元中的一个或多个工作元素来生成标识微图的控制元素,以选择适当微图来处理该工作单元。在一些情况下,独立地接收标识微图的控制元素和表示利用所标识的微图要处理的工作单元的工作元素,并且使用多种技术中的任意技术来使这两者彼此匹配。例如,首先接收到标识微图的控制元素,并且通过使工作单元的至少一个工作元素中出现的关键字值与相应控制元素(例如,工作单元中的仅第一个工作元素或者工作单元中的每个工作元素)相匹配来确定表示利用所标识的微图要处理的工作单元的工作元素。可选地,被称为“定界符工作元素”的工作元素可以用作分隔属于同一工作单元的不同序列的工作元素的定界符。可选地,专用组件200被配置为接收属于连续工作单元的预定数量的工作元素以与各控制元素相关联。
微图38240可以是从被设计成与专用组件38200兼容的微图的集合中所选择的。例如,微图38240的输入端口和输出端口的数量可以与专用组件38200的的输入端口和输出端口的数量相匹配。在该示例中,微图38240具有两个输入端口和三个输出端口,其中这两个输入端口和三个输出端口可以位于微图38240的被配置为接收输入流的两个不同组件和微图38240的被配置为提供输出流的三个不同组件上。可选地,微图38240的多个输入或输出端口可以位于同一组件上。
在一些实施例中,专用组件38200在微图38240中监控预定义条件并且可以对这些条件作出响应。例如,专用组件38200可以使用单独的处理来监控如下处理,其中该处理执行微图38240的组件以判断微图38240的执行期间的延迟是否超过最大阈值或超时条件。作为响应,专用组件38200可以通过例如加载微图38240的第二实例来对该条件作出响应。同样,监控错误条件。响应于检测到错误条件,专用组件38200可以记录错误,基于错误条件来对工作单元进行重定向,并且在需要时,可以重新启动微图38240并经由状况输出38235报告该错误。微图38240的重新启动不需要中断包含专用组件38200的包含数据流图的任何其它组件。
在一些实施例中,专用组件38200分析输入端口上的数据流以判断要执行哪个微图38240。在其它实施例中,将要运行的微图38240的名称或其它标识信息作为数据流的一部分供给至专用组件38200。在另外的其它实施例中,通过专用组件38200的控制输入38215来供给标识微图38240的信息。
专用组件38200从数据存储系统1107加载微图38240,如以下更详细地所述将微图38240嵌入到包含专用组件38200的数据流图中,并且使得微图38240能够处理该数据流。
在操作完成时,专用组件38200移除微图38240。在一些实施例中,专用组件38200可以将微图38240存储在存储位置中所存储的微图高速缓存(其中,与数据存储系统1107相比,该微图高速缓存相对更容易访问)内,以供后续访问。在一些实施例中,在微图38240正被加载、集成和移除时,专用组件38200可以缓冲传入数据。
2微图结构
参考图38B,微图38240的示例包括数据处理组件38305、38310、38315和38320,其中这些数据处理组件38305、38310、38315和38320对到达链接至上游组件的一个或多个输入端口的数据流中的输入工作元素进行操作,并且在离开链接至下游组件的一个或多个输出端口的数据流中产生输出工作元素。微图38240还包括组件38300A、38300B和38302A、38302B、38302C,其中这些组件38300A、38300B和38302A、38302B、38302C被配置为促使进行将微图38240嵌入被称为“界面组件”的专用组件38200中的处理。界面组件还使得微图能够作为不需要嵌入到要运行的专用组件中的独立数据流图而运行。
界面组件用于使微图连接至包含专用组件的端口。将微图嵌入专用组件中涉及确定如何使各界面组件与专用组件的正确端口配对。输入界面组件(38300A、38300B)具有输出端口,并且输出界面组件(38302A、38302B、38302C)具有输入端口。在使输入界面组件与专用组件的输入端口配对的情况下,在输入端口和输入界面组件的输出端口链接至的端口之间生成数据流链接。同样,在使输出界面组件与专用组件的输出端口配对的情况下,在输出界面组件的输入端口链接至的端口和该输出端口之间生成数据流链接。
可以如下所述确定界面组件与各自的专用组件输入和输出端口的正确配对。可以可选地利用标识符来标记界面组件和专用组件的端口。如果在指派至专用组件的输入/输出端口的标识符和指派至输入/输出界面组件的标识符之间存在匹配,则该端口和该界面组件将配对。标识符之间的匹配可以是准确或不准确的(例如,找到标识符的一些前缀或后缀之间的匹配)。在一个配对过程中,在确定了准确匹配之后,使具有数字后缀的界面组件与具有匹配的数字后缀的端口匹配(例如,专用组件的“out1”端口将与“微图输出-1”界面组件配对)。
在(例如,响应于来自开发环境1108的为了测试目的的命令)专用组件的外部执行微图的情况下,界面组件提供数据集组件的功能,从而经由连接至界面组件的输出或输入端口的链接提供数据流中的工作元素的源或宿。基于微图是否已嵌入在专用组件内来确定适当功能。界面组件各自包括用于在微图嵌入在专用组件内的情况下在微图和专用组件之间发送工作元素的指令、以及用于在微图没有嵌入在专用组件内的情况下在微图和存储位置之间发送工作元素的指令。存储位置可以是为了提供输入工作元素所读取的或者为了接收输出工作元素所写入的文件。
在一些实施例中,微图38240通过对可以包括在微图中的数据处理组件(在该示例中为组件38305、38310、38315和38320)的功能施加特定约束来配置。例如,在一些实施例中,可能要求微图38240的数据处理组件38305、38310、38315和38320(例如,通过如在引用包含于此的美国公开2007/0271381中更详细地所述地折叠到单个处理中而)能够在单个处理内运行。在一些实施例中,微图不支持从订阅源(诸如队列等)接收数据的订阅者组件。在一些实施例中,可能要求微图被配置为批数据流图。在一些实施例中,微图38240所执行的任何交易操作必须适合单个交易。在其它实施例中,通过控制输入38215来控制微图38240的交易方面(例如,检查点、交易上下文和多阶段提交)。
在数据流图处理中,连续数据流可能会影响传统交易语义。检查点操作涉及在数据流中的某点处存储足够的状态信息,以使得数据流图能够从数据流中的该点处重新开始。如果获取检查点过于频繁,则性能下降。如果获取检查点不够频繁,则交易失败的情况下的恢复过程变得更加复杂和资源密集。可以使用交易上下文来向微图通知其操作是较大交易的一部分。该交易可以是涵盖多个组件对单个数据源进行工作的较大交易,或者可以包括多个数据源之间(例如,在两阶段提交操作中)协调交易所需的信息。
3微图管理
参考图39,在一个实施例中,专用组件39405可以具有一次加载到专用组件可访问的高速缓存中(例如,存储在本地存储器中)的多于一个的微图。在该示例中,一个微图39430连接到包括专用组件39405的数据流图。专用组件39405的输入39440通过链接而连接至微图39430的输入39445,并且微图39430的输出39450通过链接而连接至专用组件39405的输出39455。微图39430的输入39440和输出39450例如表示输入和输出界面组件、或者用于将微图嵌入到专用组件中的任何其它机制。
存储其它微图39410、39415、39420和39425的高速缓存可以位于存储所连接的微图39430的同一存储器中。在一些实施例中,微图39410、39415、39420、39425和39430能够作为运行专用组件39405的同一进程内的线程、或者作为该进程的子进程而执行。可选地,微图39410、39415、39420、39425和39430可以在该进程的同一主线程内执行。在一些实施例中,专用组件39405运行微图39410、39415、39420、39425和39430的多个副本。在一些实施例中,专用组件39405在访问数据存储系统1107中所存储的原始微图之前,使用高速缓存中所存储的所选择微图的副本,除非该副本被标记为“脏”的(这表示原始微图已存在改变)。在所选择微图的副本不在高速缓存中的情况下,专用组件39405从数据存储系统1107加载微图。在一些实施例中,(例如,利用高速缓存中的条目)将所选择的微图表示为处于“离线”状态,这表示所选择微图当前不可用(例如,微图可能处于正被开发人员修改的处理中)。作为响应,专用组件可以指示加载所选择微图时的错误,或者可以加载替代微图(例如,具有相同能力的不同微图)。
参考图40A,在一个场景中,单个专用组件40505具有同时集成到数据流中的多个微图40510、40515和40520。专用组件40505的输入端口40525使用用于将来自输入数据流的工作元素分区成多个数据流的分区组件40557分别连接至微图40520、40515和40510的输入40530、40545和40555。这些微图的输出40535、40550和40560使用用于收集来自多个数据流的工作元素并且将这些工作元素合并成单个输出数据流的组件40562(被称为“收集组件”)而连接至专用组件40505的输出40540端口。在该结构中,专用组件40505能够将传入数据路由至微图40510、40515和40520。例如,在这些组件是相同微图的分离副本的情况下,专用组件40505可以在进行分区时利用负载平衡算法(例如,循环、最小利用等…)。
参考图40B,在另一场景中,数据流图40565包括多个专用组件,从而使得能够将微图的灵活组合配置在高度可定制容器数据流图中。在该示例中,来自数据集组件40570的工作元素(其可以表示一批输入数据或输入数据的连续流)首先由数据处理组件40572进行处理(例如,以对工作元素进行重定格式),然后经由链接40574被发送至第一专用组件40576。响应于检测到特定类型的工作元素,组件40576加载为了处理所检测到的类型的工作元素而配置的微图40578。然后,将来自第一专用组件40576的处理后的输出工作元素发送至加载微图40582的第二专用组件40580。在该配置中,为了加载到第二专用组件40580所选择的微图40582可以依赖于所选择的第一个微图40578的结果。如此得到的输出工作元素被发送至数据集组件40584。可以使用数据流图内的策略位置中的专用组件来动态地加载不同微图的大量组合。在该简单示例中,如果存在可以加载到第一专用组件40576中的可能的10个不同微图、并且存在可以加载到第二专用组件40580中的可能的10个不同微图,则在正处理数据流时,存在可以按照需求动态地构建的多达100个的不同的数据流图,其中:与将数据流分区成100个不同的运行数据流图相比,可能需要少得多的资源,并且与针对各工作单元启动100个不同的数据流图其中之一相比,可能存在更快的延迟。
4预处理和后处理
除所加载的微图内的组件以外,专用组件还包括其它组件。参考图41,在一个实施例中,专用组件41605包括执行微图之前的预处理和执行微图之后的后处理(在该图中表示为围绕微图41615的预处理组件41610和后处理组件41620)。预处理活动和后处理活动例如可以与交易管理有关。在一些实施例中,各微图41615表示单独交易,在这种情况下,预处理可以开始交易并且后处理可以结束交易。在其它实施例中,微图41615可以表示较长交易中的检查点。例如,微图41615可以是使用两阶段提交协议的较长交易的一部分。例如,可以使用多个不同的微图或者同一微图的多次执行来处理这种交易。
预处理组件41610可以从数据存储器(未示出)加载微图41615并且潜在地将所加载的微图存储在数据高速缓存中以供随后访问,或者从内存高速缓存(未示出)访问加载版本的微图并且将该微图集成到专用组件41605中。后处理组件41620可以将所加载的微图41615从与专用组件41605的数据流的集成中移除。可以进行各种其它的预处理和后处理功能,例如包括通过准备数据流内的记录以供微图41615处理(例如,对记录进行重定格式)所进行的预处理、以及通过准备从微图41615接收到的记录以供连接至专用组件41605的输出的组件处理(例如,通过对记录进行重定格式)所进行的后处理。
5数据库连接管理
参考图42,在一些场景中,要求不同的组件能够访问不同类型的数据库。例如,要求组件42702访问由一个供应商提供的数据库42706,而要求另一组件42704访问由另一供应商提供的数据库42704。通常,组件42702将通过访问集成到该组件中的库42710(例如,由数据库42706的供应商供给的库)来访问数据库42706。同样,组件42704将通过访问集成到该组件中的另一库42712(例如,由数据库42708的供应商提供的库)来访问数据库42708。库可被编译到特定组件中,或者可以动态地链接至特定组件。
参考图43,专用组件43802可以包括多个不同的微图43804、43806和43808。在该示例中,微图43808嵌入在专用组件43802内,并且微图43804和43806加载到可访问的高速缓存中以根据需要动态地嵌入。这些微图中的一些微图可以访问一个数据库43706,并且其它微图可以访问另一数据库43708。传统上,访问这两个数据库可能要求库43710支持第一数据库43706并且要求另一库43712支持要与专用组件43802集成的另一数据库43708。集成多个不同数据库的库可能会导致与专用组件43802相关联的二进制文件的大小增大、以及在供应商所供给的一个库43710与不同的供应商所供给的另一库43712不兼容的情况下的不可预测行为。例如,不兼容性可以包括冲突的符号名称或不同的编译模型。
避免不兼容性和/或减小二进制文件的大小的一个方法是将库从专用组件中移除,并且作为代替,利用与执行专用组件的进程分开的计算机进程来访问这些库。参考图44A,将数据库的库44710和44712从专用组件44902移除(例如,没有被编译或动态地链接至组件44902)。微图组件44904、44906和44908通过经由客户端/服务器界面访问库44710、44712来访问数据库44706、44708。为了访问库44710、44712,专用组件44902使用集成客户端存根44910,其中该集成客户端存根44910使用进程间通信来与外部进程中运行的配对服务器存根44912进行通信。例如,外部进程和专用组件44902可以通过访问共享内存段来交换数据。同样,为了访问运行服务器存根44920的外部进程,专用组件44902使用另一集成客户端存根44918,其中该另一集成客户端存根44918使用进程间通信来与外部进程中运行的服务器存根44920进行通信。
服务器存根44912与数据库的库44710集成以提供对数据库44706的访问。同样,服务器存根44920与数据库的库44712集成以提供对数据库44708的访问。通常。客户端存根44910、44918具有比数据库的库44710、44712小的内存占用,因此使得专用组件能够使用较少的内存资源。另外,由于数据库的库已被移出专用组件44902,因此不存在数据库的库44710、44712之间的不兼容性的风险。
参考图44B,在一些实施例中,客户端存根44910、44918和服务器存根44912、44920被配置为接近地反映数据库的库44710、44712的各应用编程接口(API)。为了将微图44904、44906和44908与库API的差异隔离开,将抽象层44930集成到专用组件44902中。抽象层44930在微图内提供可能需要利用单个API访问不同数据库的多个不同组件,其中利用该单个API,独立于这些数据库所用的数据库的库之间的差异来进行标准数据库动作。在一些实施例中,抽象层44930将来自微图的组件的请求转译成向客户端存根44910、44918的库特定API的特定调用。在一些实施例中,抽象层44930将来自微图组件的请求作为通用调用进行传递,并且各客户端存根被配置为进行从通用调用到向各服务器存根的API的库特定调用的转译。
6编译和参数
参考图45,在一个实施例中,数据流图编译和执行系统451000包括数据流图编译器451015、参数分析器451030、数据流图加载器451035和数据流图执行引擎451040。编译器451015基于来自参数集数据存储器451005的参数集中的参数,来处理来自未编译数据流图数据存储器451010的包括微图的未编译数据流图。与给定参数相关联的值可以确定数据流图的各种特性中的任何特性。编译器451015使用来自参数集的值来编译数据流图以生成编译数据流图。将编译数据流图存储在编译数据流图数据存储器451020中。数据存储器451010和451020例如可以安装在数据存储系统1107内。编译器451015、参数分析器451030和加载器451035例如可被实现为预执行模块1105的一部分。执行引擎451040可被实现为执行模块1106的一部分。
参数集数据存储器451005包含参数的集合,并且各参数集可以与数据流图相关联。参数集包括一组参数元素。这些元素包含参数的名称和表达式,其中该表达式在(例如,通过进行计算,并且在一些情况下,通过求出其它参考参数的值而)被评价时,解析为绑定到参数的值。各未编译数据流图可以与一个或多个参数集相关联。一些参数可以影响编译处理。例如,一些参数可以影响特定条件组件是否包括在编译版本的数据流图中。一些参数可以影响编译数据流图的加载和启动。例如,参数的值可以是向计算机上所存储的文件的路径、或者要与包含输入数据或作为输出数据的对象的数据集组件相关联的存储位置(例如,表示数据库中的表的存储位置)的名称。参数的值可以确定给定组件需要并行运行的方式的数量。参数的值可以判断组件之间的链接的数据流是否与运行所链接的组件的不同处理器和/或计算机之间的边界交叉,并且如果交叉,则使得分配TCP/IP流而不是分配共享内存流。在一些场景中,参数的值可以依赖于其它参数。例如,货币转换查找文件的名称可以依赖于指定日期的参数。
通常,根据基于上下文的参数范围的规则来将参数绑定到值。给定参数在第一上下文中可以具有一个值并且在另一上下文中可以具有不同的值。在(例如,在参数可以影响编译处理的情况下利用编译器451015的)编译期间,在运行时(例如,在加载器451035将编译数据流图数据结构加载到执行引擎451040的存储器中的情况下),在正执行数据流图时(例如,推迟解析用于提供文件名的参数,直到紧挨读取或写入文件之前为止),或者在一些情况下在不同时间的组合时,可以将参数绑定到值。参数的值例如可以由用户经由用户界面(例如,响应于提示)来定义,根据文件来定义,包括在数据源中,或者从同一上下文中或不同上下文中的另一参数的角度定义。例如,可以通过指定参数具有与另一参数“相同”的关系来从不同的上下文导出该参数(例如,不同组件的上下文中所评价的参数)。
可以在接收到任何输入数据之前(诸如在(例如,利用编译器451015的)编译期间等)绑定数据流图的参数。将在数据流图的编译之前或期间所绑定的这些参数称为“静态参数”。数据流图的参数还可以响应于诸如紧挨在运行之前(例如,响应于接收到数据流内的新的一批数据或初始工作单元而利用加载器451035)或者在运行时期间(例如,响应于加载新的微图以处理数据流内的新的工作单元而利用执行引擎451040)接收到新的输入数据来绑定。将在数据流图的编译之后并且更接近运行时绑定的这些参数称为“动态参数”。在一些情况下,无需针对数据流内的各新的一批数据或工作单元重新评价动态参数。静态参数通常是在正编译图时评价的,并且可能会影响编译数据流图。然而,例如在编译在直到运行之前不会发生的情况下,也可以在运行时评价静态参数。由于动态参数是在运行时评价的并且可能促使启动数据流图的整体延迟,因此在一些实施例中,可以通过限制动态参数的能力来优化动态参数评价。例如,动态参数可以被限制为特定数据类型(例如,字符串),在特定表达式内可能不参考动态参数,并且动态参数可以具有(例如,“相同”绑定没有直接地或间接地参考的)更严格的绑定。然而,在其它实施例中,动态参数的功能可能不受限制,并且如其它参数一样利用。
存在用以使得编译器451015能够在编译处理期间区分静态参数和动态参数的各种方式。一种技术使用用于参数集中的动态参数的标志或特殊句法,从而用信号向编译器通知动态参数应保持未绑定。另一种技术将参数集的静态参数和动态参数分离到不同的子集中,并且仅将静态参数的子集提供至编译器451015。然后,在运行时将动态参数的子集提供至加载器451035。尽管编译器451015没有将动态参数绑定到解析值,但编译器451015仍可被配置为在编译期间检查(例如,用于非法句法或其它错误的)动态参数。给定表达式可以包括静态参数参考和动态参数参考这两者。例如,静态目录名称参数可以由编译器451015解析,但动态文件名称参数可以保持未解析,并且由于该动态文件名称参数被识别为动态参数,因此编译器451015可以在编译处理期间保留未解析的动态参数参考。
在一些场景中,参数的存在或值可能会影响数据流图内的组件的拓扑结构和/或连接性。参数可以表示在图的特定执行期间不执行一个或多个组件所进行的操作。这在两个不同的数据源上使用同一数据流图的情况下可能特别相关。例如,一个数据源可以采用第一格式(例如,UTF-8),并且另一源可以包含采用针对至少一部分字符使用不同编码的第二格式的文本。处理这两个数据源的数据流图可能需要将采用第二格式的文本转换成UTF-8格式。然而,在访问UTF-8数据源时,将不需要转换。可以使用参数来向数据流图通知数据已采用UTF-8格式并且可以绕过转换组件。在一些配置中,基于参数值的条件组件的排除可能会导致该条件组件被移除并且被编译数据流图中的数据流代替。可以在通过引用包含于此的美国专利7,164,422中发现条件组件的附加描述。
再次参考图45,编译器451015从未编译数据流图数据存储器451010获得未编译数据流图。编译器451015获得要用于根据参数集数据存储器451005编译数据流图的参数集。在一些情况下,针对给定数据流图可以使用多个不同的参数集,并且针对各参数集,图编译器451015能够编译相应版本的未编译数据流图。数据流图的各编译版本可以基于参数集中的参数的值来包括或排除一些组件或其它可执行语句。例如,在编译数据流图被序列化的情况下,编译数据流图与来自用于生成该编译数据流图的参数集的绑定参数值相关联。编译数据流图使用多个不同机制(例如,查找表、数据库中的外键-主键关系等)中的任何机制与来自关联参数集的参数值相关联。例如,可以使用能够进行读操作和写操作的任何文件系统或数据库来实现编译数据流图数据存储器451020。
在数据流图执行期间(在“运行时”),数据从输入数据源451025进入系统。输入数据源451025可以包括各种个体数据源,其中个体数据源各自可以具有唯一的存储格式和界面(例如,数据库表、电子表格文件、纯文本文件或大型机所使用的本机格式)。个体数据源可以在系统451000本地,例如安装在同一计算机系统(例如,文件)上,或者可以在系统451000的远处,例如安装在经由局域或广域数据网络所访问的远程计算机上。
参数分析器451030和加载器451035使得能够从所存储的编译数据流图快速地加载数据流图,从而避免可能冗长的编译过程,同时通过响应于所接收到的输入数据而在数据流图的不同编译版本之间进行选择,仍允许运行时的灵活性。参数分析器451030响应于从输入数据源451025接收到输入数据,分析这些输入数据以及潜在的在直到运行之前可能并不知晓的其它值,以确定要用于目标数据流图的一个或多个参数(潜在地包括静态参数和动态参数这两者)的值。目标数据流图是使用各个不同参数集编译到编译数据流图数据存储器451020内所存储的不同版本中的未编译数据流图。加载器451035将参数分析器451030所提供的静态参数的任何值与可能已用于生成目标数据流图的编译版本中的任何编译版本的相同参数的任何值进行比较,以寻找匹配。如果加载器451035在静态参数中找到匹配,则加载器451035可以解析并绑定动态参数,并且加载如此得到的数据流图以由执行引擎451040启动。如果加载器451035在静态参数中没有找到匹配,则加载器451035可以将输入数据路由至错误处理器(未示出),或者加载器451035可以具有能够将可能的不同参数值作为未优化默认值进行处理的可用的目标数据流图的版本。可选地,加载器可以启动编译器451015以利用适当的静态参数值来编译目标数据流图的新版本。在这些情况下,可以根据需要随时进行编译。在第一次运行目标数据流图时,在运行时进行编译并且保存如此得到的具有绑定静态参数的编译数据流图。然后,在下次运行目标数据流图时,仅在没有找到具有期望静态参数值的编译版本的情况下,才重新进行编译。
例如,对于包括参数A、B和C的参数集(其中,A和B是静态的,并且C是动态的),考虑使用A=真且B=假进行了编译的目标数据流图的第一编译版本以及使用A=真且B=真进行了编译的同一目标数据流图的第二编译版本。如果参数分析器451030判断为要使用A=真、B=真且C=真的目标数据流图来处理所接收到的工作单元,则可以利用加载器451035来加载第二编译版本并且绑定动态参数C。如果参数分析器451030判断为要使用A=假、B=真且C=真的目标数据流图来处理所接收到的工作单元,则利用编译器451015来编译目标数据流图的新版本(其中A=假,B=真),并且利用加载器451035来绑定动态参数C。还可以将新编译版本存储在编译数据流图数据存储器451020中以供随后使用。
加载器451035将所选择的编译数据流图加载到图执行引擎451040可访问的存储器中以执行该编译数据流图,从而处理来自输入数据源451025的输入数据的流。在一些实施例中,加载器451035的功能由运行数据流图中的专用组件来进行,并且所加载的数据流图是嵌入专用组件内的微图。加载器451035可以(在判断为使用适当的静态参数值之后)访问保持高速缓存在存储器中的所选择的编译数据流图的先前加载版本,而不必访问编译数据流图数据存储器451020。然后,所加载的数据流图由执行引擎451040执行。一旦利用目标数据流图处理了输入数据,则可以将该数据流图从系统卸载,或者可以高速缓存该数据流图,以供随后访问。
通常,数据流图的编译是将图变换成可执行格式的处理。可执行格式可以采用平台特定形式(例如,机器码)或采用中间形式(例如,字节码)。在一些实施例中,编译器451015解析静态参数,遍历数据流图,并且将该数据流图缩减为准备执行的一组数据结构。从被表示为顶点和链接的数据流图向机器码的变换可以包括多个步骤。这些步骤其中之一可以包括动态码生成,其中在该动态码生成中,将数据流图变换成第三代编程语言(例如,C、C#、C++、Java等)。根据第三代语言,可以使用标准编译器来生成机器可读码或字节码。
在一些实施例中,在编译之前并未确定参数是被视为静态参数还是动态参数。所评价的并且其值被硬编码到编译数据流图中的参数被视为静态参数。而动态参数通常不是在编译时评价的,而是作为代替在图加载或执行期间评价的。如上所述,将由参数集确定的值用于准备数据流图的不同编译版本的目的,以供运行时的快速加载和执行。在来自参数集的参数的值明确地定义了对于编译图有效的唯一可能值的情况下,将该值编码到编译数据流图中,并且将该参数视为静态参数。在其它情况下,在来自参数集的参数的值提供一系列可能值的情况下,该参数可能不是在编译时作为静态参数进行评价,而是作为代替,在加载时或运行时作为动态参数进行评价的。
此外,在编译处理期间,编译器可以例如通过消除不必要的可执行语句来优化数据流图。例如,数据流图可以包含条件组件。条件组件可以包括基于一个或多个参数的值而包括在编译数据流图中或者从编译数据流图排除的一系列可执行语句。条件组件可用于诸如图优化或专业化等的各种目的。为了图优化,在将不使用来自数据集的值的情况下,应用可以省略该数据集的处理或创建,由此使得能够更加高效地运行图。为了图专业化,应用可能基于所期望的详细程度来调整多个不同输出数据集的产生,或者使得能够执行图的多个可选部分其中之一。
上述技术可以使用软件来实现以在计算机上执行。例如,该软件形成了在一个或多个编程或可编程计算机系统(可以具有诸如分布式、客户端/服务器或网格式等的各种架构)上执行的一个或多个计算机程序中的过程,其中该一个或多个编程或可编程计算机系统各自包括至少一个处理器、至少一个数据存储系统(包括易失性和非易失性存储器和/或存储元件)、至少一个输入装置或端口以及至少一个输出装置或端口。该软件可以形成例如提供与数据流图的设计和配置有关的其它服务的较大程序的一个或多个模块。该图的节点或组件和元素可被实现为存储在计算机可读介质中的数据结构或符合数据存储库中所存储的数据模型的其它有组织数据。
可以将软件设置在利用通用或专用可编程计算机可读取的存储介质和/或硬件存储装置(诸如CD-ROM等)上,或者经由网络的通信介质(以编码在传播信号中的形式)传送至执行该软件的计算机的存储介质。可以在专用计算机上、或者使用诸如协处理器等的专用硬件来进行所有的功能。可以以利用不同的计算机来进行软件所指定的计算的不同部分的分布式方式来实现该软件。优选将每一个这种计算机程序存储在通用或专用可编程计算机可读取的存储介质或装置(例如,固态存储器或介质、或者磁性或光学介质)上或者下载至该存储介质或装置,以在利用计算机系统读取该存储介质或装置以进行这里所述的过程的情况下配置计算机并使该计算机进行工作。本发明的系统还可被视为作为配置有计算机程序的计算机可读存储介质来实现,其中如此配置成的存储介质使计算机系统以特定且预定义的方式进行工作,以进行这里所述的功能。
已经说明了本发明的多个实施例。然而,应当理解,可以在没有背离本发明的精神和范围的情况下进行各种变形。另外,上述步骤中的一部分可以是与顺序无关的,因而可以以与所述顺序不同的顺序来进行。
应当理解,上述说明意图例示而非限制由所附权利要求书的范围所定义的本发明的范围。例如,上述的多个功能步骤可以在基本上不会影响整体处理的情况下以不同的顺序进行。其它实施例在所附权利要求书的范围内。
Claims (31)
1.一种计算机实现方法,用于对位于数据流中的不同位置的数据项执行查询以随着所述查询的执行而提供所述查询的中间结果,所述计算机实现方法包括以下步骤:
不时地,
利用一个或多个计算机系统来对位于所述数据流中的不同位置的数据项中的两个或更多个数据项执行所述查询;
生成表示执行所述查询的结果的信息;
随着所述查询的继续执行,
通过将所述结果与对所述数据流中先前出现的数据项执行所述查询的先前结果进行聚合,来生成查询执行的中间结果;以及
在所述查询的执行完成之前,将查询执行的所述中间结果发送至一个或多个客户端装置。
2.根据权利要求1所述的计算机实现方法,其中,还包括以下步骤:
在后续时间点,将所述中间结果与在所述后续时间点执行所述查询的结果进行聚合,以生成最终结果。
3.根据权利要求1至2中任一项的计算机实现方法,其中,还包括以下步骤:
存储最终结果,并且丢弃所述中间结果。
4.根据权利要求1至3中任一项所述的计算机实现方法,其中,不时地执行所述查询包括:
对(i)所述数据流中的一个或多个第一数据项和(ii)所述数据流中的一个或多个第二数据项执行所述查询,其中,所述一个或多个第一数据项位于所述数据流的第一部分中,以及所述一个或多个第二数据项位于所述数据流的第二部分中。
5.根据权利要求1至4中任一项所述的计算机实现方法,其中,执行所述查询包括:
定期地执行表示所述查询的数据流图,其中所述数据流图包括用以实现所述查询的可执行计算机代码,以及所述数据流图接收所述查询的查询规范作为输入。
6.根据权利要求5所述的计算机实现方法,其中,所述数据流图包括表示在执行第一查询时要进行的操作的组件,以及所述计算机实现方法还包括以下步骤:
针对组件,进行检查点操作,其中所述检查点操作用于保存所述组件的本地状态以实现所述数据流图的状态的可恢复性。
7.根据权利要求1至6中任一项所述的计算机实现方法,其中,对在某时间段内所述数据流中出现的数据项执行所述查询,其中该时间段的结束在开始执行所述查询时是未知的。
8.根据权利要求1至7中任一项所述的计算机实现方法,其中,执行所述查询的所述数据流中的数据项的量在开始执行所述查询时是未知的。
9.根据权利要求7或8所述的计算机实现方法,其中,还包括以下步骤:
访问表示针对所聚合结果的数据变换所用的用户定义定制操作的信息;
对所聚合结果执行所述用户定义定制操作;以及
根据所述用户定义定制操作来对所聚合结果进行变换。
10.根据权利要求1至9中任一项所述的计算机实现方法,其中,还包括以下步骤:
基于所聚合结果来生成近实时警告,以向用户警告检测到预定义条件。
11.根据权利要求1至10中任一项所述的计算机实现方法,其中,所述数据流包括(i)在不同时间定期地接收或者(ii)在不同时间连续地接收数据项的数据流。
12.根据权利要求1至11中任一项所述的计算机实现方法,其中,还包括以下步骤:从数据队列、数据存储库或数据馈送接收所述数据流。
13.根据权利要求1至12中任一项所述的计算机实现方法,其中,所述查询是第一查询,以及所述计算机实现方法还包括以下步骤:
选择用于对所述数据流中的不同位置出现的数据项中的两个或更多个数据项执行的第二查询;以及
针对所述数据流中的数据项,近实时地执行所述第一查询和所述第二查询。
14.根据权利要求1至13中任一项所述的计算机实现方法,其中,还包括以下步骤:
生成用户界面所用的信息,其中所述用户界面在呈现在显示装置上的情况下,包括:
输入字段,用于输入用以定义对所述数据流要执行的查询的信息。
15.根据权利要求1至14中任一项所述的计算机实现方法,其中,还包括以下步骤:
在控制存储库中访问作为针对所述数据流的执行候选的预定义查询。
16.根据权利要求1至15中任一项所述的计算机实现方法,其中,所述数据流中的数据是近实时数据并且所述中间结果是近实时中间结果,以及针对所述两个或更多个数据项中的各数据项,正近实时地访问所述两个或更多个数据项。
17.一种系统,用于对位于数据流中的不同位置的数据项执行查询以随着所述查询的执行而提供所述查询的中间结果,所述系统包括:
一个或多个处理装置;以及
一个或多个机器可读硬件存储装置,用于存储指令,所述指令能够由所述一个或多个处理装置执行以进行包括以下步骤的操作:
不时地,
利用一个或多个计算机系统来对位于所述数据流中的不同位置的数据项中的两个或更多个数据项执行所述查询;
生成表示执行所述查询的结果的信息;
随着所述查询的继续执行,
通过将所述结果与对近实时数据流中先前出现的数据项执行所述查询的先前结果进行聚合,来生成查询执行的中间结果;以及
在所述查询的执行完成之前,将查询执行的所述中间结果发送至一个或多个客户端装置。
18.根据权利要求17所述的系统,其中,所述操作还包括以下操作:
在后续时间点,将所述中间结果与在所述后续时间点执行所述查询的结果进行聚合,以生成最终结果。
19.根据权利要求18所述的系统,其中,所述操作还包括以下操作:
存储最终结果,并且丢弃所述中间结果。
20.根据权利要求17至19中任一项所述的系统,其中,不时地执行所述查询包括:
对(i)所述数据流中的一个或多个第一数据项和(ii)所述数据流中的一个或多个第二数据项执行所述查询,其中,所述一个或多个第一数据项位于所述数据流的第一部分中,以及所述一个或多个第二数据项位于所述数据流的第二部分中。
21.根据权利要求17至20中任一项所述的系统,其中,还包括数据存储器,
其中,执行所述查询包括:
执行用以实现与所述查询相关联的基于图的计算的数据流图,其中所述基于图的计算包括用以实现所述查询的可执行计算机代码;
所述数据流图由所述数据存储器中的数据结构指定,所述数据流图具有由所述数据结构指定、并且表示利用一个或多个链接所连接的数据处理图组件的多个顶点,所述链接由所述数据结构指定并且表示所述数据处理图组件之间的数据流;以及
所述数据流图接收所述查询的查询规范作为输入,并且对从一个或多个输入数据集经由所述数据处理图组件的所述数据流图而流向一个或多个输出数据集的数据流进行所述基于图的计算。
22.根据权利要求21所述的系统,其中,还包括:
运行时环境,其连接至所述数据存储器并且安装在所述一个或多个处理装置上,所述运行时环境包括预执行模块,所述预执行模块被配置为读取所存储的用以指定所述数据流图的数据结构、并且分配并配置用以进行由所述预执行模块指派至所述数据流图的数据处理图组件的计算的计算资源;
所述运行时环境还包括执行模块,所述执行模块用于调度并控制所指派的计算的执行。
23.根据权利要求21或22所述的系统,其中,所述数据流图包括表示在执行第一查询时要进行的操作的组件,以及所述操作还包括:
针对组件,进行检查点操作,其中所述检查点操作用于保存所述组件的本地状态以实现所述数据流图的状态的可恢复性。
24.根据权利要求17至23中任一项所述的系统,其中,对在某时间段内所述数据流中出现的数据项执行所述查询,其中该时间段的结束在开始执行所述查询时是未知的。
25.根据权利要求17至24中任一项所述的系统,其中,执行所述查询的所述数据流中的数据项的量在开始执行所述查询时是未知的。
26.根据权利要求17至25中任一项所述的系统,其中,所述数据流中的数据是近实时数据并且所述中间结果是近实时中间结果,以及针对所述两个或更多个数据项中的各数据项,正近实时地访问所述两个或更多个数据项。
27.一种机器可读硬件存储器,用于对位于数据流中的不同位置的数据项执行查询以随着所述查询的执行而提供所述查询的中间结果,所述机器可读硬件存储器用于存储指令,所述指令能够由一个或多个处理装置执行以进行包括以下步骤的操作:
不时地,
利用一个或多个计算机系统来对位于所述数据流中的不同位置的数据项中的两个或更多个数据项执行所述查询;
生成表示执行所述查询的结果的信息;
随着所述查询的继续执行,
通过将所述结果与对所述数据流中先前出现的数据项执行所述查询的先前结果进行聚合,来生成查询执行的中间结果;以及
在所述查询的执行完成之前,将查询执行的所述中间结果发送至一个或多个客户端装置。
28.一种系统,包括:
数据存储器;
计算环境,其连接至所述数据存储器并且被配置为生成数据流图,所述数据流图用于实现与针对文件要执行的活动的多个查询相关联的基于图的计算,其中所述基于图的计算包括用以实现所述多个查询的可执行计算机代码,所述基于图的计算是针对从一个或多个输入数据集经由处理图组件的图而流向一个或多个输出数据集的数据所进行的,其中所述数据流图由所述数据存储器中的数据结构指定,所述数据流图具有由所述数据结构指定、并且表示利用一个或多个链接所连接的所述处理图组件的多个顶点,所述链接由所述数据结构指定并且表示所述处理图组件之间的数据流;以及
运行时环境,其安装在一个或多个计算机上以执行所述基于图的计算,并且连接至所述数据存储器,所述运行时环境包括:
预执行模块,其被配置为读取所存储的用以指定所述数据流图的数据结构、并且分配并配置用以进行由所述预执行模块指派至所述数据流图的处理图组件的计算的计算资源;以及
执行模块,用于调度并控制所指派的计算的执行,以使得:
归一化组件被配置为将所述文件划分成多个工作单元;
分区组件被配置为应用于所述多个工作单元中的各工作单元,其中将所述分区组件应用于所述多个工作单元中的各工作单元包括针对所述多个工作单元中的各工作单元使所述多个查询跨运行微图组件的多个不同实例分区,其中各所述实例与能够对所述工作单元内的数据执行的查询其中之一相对应;
重定格式组件被配置为对所述多个工作单元中的各工作单元内的数据进行重定格式,以利用所述运行微图组件的实例中的各相应实例对所述数据执行所述查询中的相应查询;
收集组件被配置为在针对所述多个工作单元中的各工作单元执行所述运行微图组件的实例之后,生成该工作单元的部分结果,其中所述部分结果包括对该工作单元内的数据执行所述查询的一部分或全部的结果;以及
运行微图组件被配置为针对所述多个查询中的各查询,基于所述部分结果来计算针对所述文件的所有工作单元的查询的全局和。
29.根据权利要求28所述的系统,其中,将所述分区组件应用于所述多个工作单元中的各工作单元还包括:
针对所述多个工作单元中的各工作单元,生成所述重定格式组件的多个不同实例和所述运行微图组件的多个不同实例,其中所述重定格式组件的各实例与所述运行微图组件的实例其中之一链接并关联,以及所述重定格式组件的各实例被配置为在所述运行微图组件的关联实例处处理该工作单元内的数据之前,对该数据进行重定格式。
30.根据权利要求28或29所述的系统,其中,将所述分区组件应用于所述多个工作单元中的各工作单元还包括:
对该工作单元进行预处理,其中所述预处理包括:确定该工作单元内的数据的属性;以及基于所确定的属性来选择实例和相应查询。
31.根据权利要求28至30中任一项所述的系统,其中,将所述分区组件应用于所述多个工作单元中的各工作单元还包括:
在向该工作单元分配实例之前进行预处理,所述预处理包括:确定为了执行所述查询中与各实例相对应的相应查询而有可能需要的计算资源;以及根据所确定的对用于执行各查询的计算资源的需求,在各实例之间分发所述计算资源。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US14/818,895 US10657134B2 (en) | 2015-08-05 | 2015-08-05 | Selecting queries for execution on a stream of real-time data |
US14/818,895 | 2015-08-05 | ||
PCT/US2016/045612 WO2017024164A1 (en) | 2015-08-05 | 2016-08-04 | Selecting queries for execution on a stream of real-time data |
Publications (1)
Publication Number | Publication Date |
---|---|
CN107924406A true CN107924406A (zh) | 2018-04-17 |
Family
ID=56852389
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201680046044.5A Pending CN107924406A (zh) | 2015-08-05 | 2016-08-04 | 选择用于对实时数据流执行的查询 |
Country Status (8)
Country | Link |
---|---|
US (1) | US10657134B2 (zh) |
EP (1) | EP3332336A1 (zh) |
JP (1) | JP7023718B2 (zh) |
CN (1) | CN107924406A (zh) |
AU (1) | AU2016301376B2 (zh) |
CA (1) | CA2994408C (zh) |
HK (1) | HK1250404A1 (zh) |
WO (1) | WO2017024164A1 (zh) |
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110083583A (zh) * | 2019-03-29 | 2019-08-02 | 北京奇安信科技有限公司 | 流式事件处理方法及装置 |
CN110457340A (zh) * | 2018-05-07 | 2019-11-15 | 吕纪竹 | 一种实时寻找大数据自身重复规律的方法 |
CN110471940A (zh) * | 2019-08-05 | 2019-11-19 | 威讯柏睿数据科技(北京)有限公司 | 一种流关系数据库管理系统 |
CN112508768A (zh) * | 2020-12-22 | 2021-03-16 | 北京百度网讯科技有限公司 | 单算子多模型流水线推理方法、系统、电子设备及介质 |
CN112927770A (zh) * | 2021-04-12 | 2021-06-08 | 徐州市通用科技有限公司 | 医疗数据共享方法及系统 |
Families Citing this family (31)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CA3114544A1 (en) | 2013-12-05 | 2015-06-11 | Ab Initio Technology Llc | Managing interfaces for dataflow composed of sub-graphs |
US10609534B2 (en) * | 2015-08-24 | 2020-03-31 | Ayla Networks, Inc. | Feed service engine |
US9740787B2 (en) * | 2015-12-14 | 2017-08-22 | Quixey, Inc. | Application search results based on a current search query and a previous search query |
US11989096B2 (en) * | 2015-12-21 | 2024-05-21 | Ab Initio Technology Llc | Search and retrieval data processing system for computing near real-time data aggregations |
US11573965B2 (en) | 2016-09-15 | 2023-02-07 | Oracle International Corporation | Data partitioning and parallelism in a distributed event processing system |
US11615088B2 (en) * | 2016-09-15 | 2023-03-28 | Oracle International Corporation | Complex event processing for micro-batch streaming |
US10831509B2 (en) * | 2017-02-23 | 2020-11-10 | Ab Initio Technology Llc | Dynamic execution of parameterized applications for the processing of keyed network data streams |
US11947978B2 (en) | 2017-02-23 | 2024-04-02 | Ab Initio Technology Llc | Dynamic execution of parameterized applications for the processing of keyed network data streams |
WO2018169429A1 (en) | 2017-03-17 | 2018-09-20 | Oracle International Corporation | Framework for the deployment of event-based applications |
WO2018169430A1 (en) | 2017-03-17 | 2018-09-20 | Oracle International Corporation | Integrating logic in micro batch based event processing systems |
EP3602297B1 (en) | 2017-03-29 | 2023-03-22 | AB Initio Technology LLC | Systems and methods for performing data processing operations using variable level parallelism |
US11663205B2 (en) | 2017-05-04 | 2023-05-30 | Salesforce, Inc. | Technologies for asynchronous querying |
US10776121B2 (en) * | 2017-05-10 | 2020-09-15 | Atlantic Technical Organization | System and method of execution map generation for schedule optimization of machine learning flows |
US10338963B2 (en) * | 2017-05-10 | 2019-07-02 | Atlantic Technical Organization, Llc | System and method of schedule validation and optimization of machine learning flows for cloud computing |
US11803547B2 (en) * | 2017-05-19 | 2023-10-31 | Oracle International Corporation | System and method for query resource caching |
US11188434B2 (en) | 2017-12-08 | 2021-11-30 | Ab Initio Technology Llc | Systems and methods for monitoring execution of structured query language (SQL) queries |
US11423031B2 (en) * | 2018-02-22 | 2022-08-23 | Microsoft Technology Licensing, Llc | Standing query creation using store query |
US11232106B1 (en) * | 2018-03-23 | 2022-01-25 | Amazon Technologies, Inc. | Windowed query with event-based open time for analytics of streaming data |
CN109582320B (zh) * | 2018-08-08 | 2022-05-10 | 深圳市飞速创新技术股份有限公司 | 写码方法及终端设备 |
CN109241033A (zh) * | 2018-08-21 | 2019-01-18 | 北京京东尚科信息技术有限公司 | 创建实时数据仓库的方法和装置 |
US11301535B2 (en) * | 2018-11-29 | 2022-04-12 | Sap Se | Systems and methods for determining a geographic location |
US11194815B1 (en) * | 2019-02-11 | 2021-12-07 | Amazon Technologies, Inc. | Constrained query execution |
US11122624B2 (en) * | 2019-06-17 | 2021-09-14 | Sony Group Corporation | Pre-packet arrival channel contention |
US11202314B2 (en) * | 2019-06-18 | 2021-12-14 | Sony Group Corporation | Immediate retransmission scheme for real time applications |
US11464054B2 (en) | 2019-07-24 | 2022-10-04 | Sony Group Corporation | RTA contention collision avoidance |
US20210034621A1 (en) * | 2019-07-30 | 2021-02-04 | Innoplexus Ag | System and method for creating database query from user search query |
US11556370B2 (en) * | 2020-01-30 | 2023-01-17 | Walmart Apollo, Llc | Traversing a large connected component on a distributed file-based data structure |
CN111768090B (zh) * | 2020-06-19 | 2024-02-02 | 北京思特奇信息技术股份有限公司 | 一种用于监控产商品资费配置风险的方法及系统 |
WO2022165321A1 (en) | 2021-01-31 | 2022-08-04 | Ab Initio Technology Llc | Data processing system with manipulation of logical dataset groups |
CN112948127B (zh) * | 2021-03-30 | 2023-11-10 | 北京滴普科技有限公司 | 云平台容器平均负载监视方法、终端设备及可读存储介质 |
US20230229717A1 (en) * | 2022-01-14 | 2023-07-20 | Crowdstrike, Inc. | Optimized real-time streaming graph queries in a distributed digital security system |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2009005594A2 (en) * | 2007-06-29 | 2009-01-08 | Lucent Technologies Inc. | Method and apparatus for efficient aggregate computation over data streams |
US20100299339A1 (en) * | 2009-05-20 | 2010-11-25 | International Business Machines Corporation | Indexing provenance data and evaluating provenance data queries in data processing systems |
WO2012152315A1 (en) * | 2011-05-10 | 2012-11-15 | Telefonaktiebolaget L M Ericsson (Publ) | Optimised data stream management system |
CN103069385A (zh) * | 2010-06-15 | 2013-04-24 | 起元技术有限责任公司 | 动态加载基于图的计算 |
WO2014011708A2 (en) * | 2012-07-12 | 2014-01-16 | Microsoft Corporation | Progressive query computation using streaming architectures |
AU2014262225A1 (en) * | 2010-06-15 | 2014-12-04 | Ab Initio Technology Llc | Dynamically loading graph-based computations |
Family Cites Families (239)
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 |
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 |
JPH05134886A (ja) | 1990-11-30 | 1993-06-01 | Fujitsu Ltd | デツドロツク検出方式 |
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 | 日本電信電話株式会社 | 知識ベース推論方法およびその装置 |
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 |
US5857204A (en) | 1996-07-02 | 1999-01-05 | Ab Initio Software Corporation | Restoring the state of a set of files |
JP3672208B2 (ja) | 1996-07-02 | 2005-07-20 | インターナショナル・ビジネス・マシーンズ・コーポレーション | 階層化トランザクション処理方法 |
US5966072A (en) | 1996-07-02 | 1999-10-12 | Ab Initio Software Corporation | Executing computations expressed as graphs |
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 |
US6038558A (en) | 1996-10-18 | 2000-03-14 | Sagent Technology, Inc. | Extensible database retrieval and viewing architecture |
US5930794A (en) | 1996-10-18 | 1999-07-27 | Sagent Technologies, Inc. | Database repository with deferred transactions |
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 |
US5899988A (en) * | 1997-02-28 | 1999-05-04 | Oracle Corporation | Bitmapped indexing with high granularity locking |
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 |
US6587836B1 (en) | 1997-09-26 | 2003-07-01 | Worldcom, Inc. | Authentication and entitlement for users of web based data management programs |
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 |
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 |
US6480876B2 (en) | 1998-05-28 | 2002-11-12 | Compaq Information Technologies Group, L.P. | System for integrating task and data parallelism 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 |
US6608630B1 (en) | 1998-11-09 | 2003-08-19 | Broadcom Corporation | Graphics display system with line buffer control scheme |
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 |
US6640244B1 (en) * | 1999-08-31 | 2003-10-28 | Accenture Llp | Request batcher in a transaction services patterns environment |
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 |
WO2001046798A2 (en) | 1999-12-20 | 2001-06-28 | Headway Research Limited | System and method for computer-aided graph-based dependency analysis |
US6848100B1 (en) | 2000-03-31 | 2005-01-25 | Intel Corporation | Hierarchical software path profiling |
WO2001074820A1 (de) | 2000-03-31 | 2001-10-11 | 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 |
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 |
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 |
US7069536B2 (en) | 2001-06-28 | 2006-06-27 | International Business Machines Corporation | Method, system, and program for executing a workflow |
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 |
US7130484B2 (en) | 2001-10-15 | 2006-10-31 | Jonas August | Biased curve indicator random field filters for enhancement of contours in images |
US7085426B2 (en) | 2001-10-15 | 2006-08-01 | Jonas August | Volterra 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 |
DE60106467T2 (de) | 2001-12-14 | 2006-02-23 | Hewlett-Packard Development Co., L.P., Houston | Verfahren zum Installieren Überwachungsagenten, System und Computerprogramm von Objekten in einem IT-Netz Überwachung |
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 |
US7167850B2 (en) | 2002-10-10 | 2007-01-23 | Ab Initio Software Corporation | Startup and control of graph-based computation |
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 |
US7417645B2 (en) | 2003-03-27 | 2008-08-26 | Microsoft Corporation | Markup language and object model for vector graphics |
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 |
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 |
US8265979B2 (en) | 2003-06-17 | 2012-09-11 | International Business Machines Corporation | Automatic generation of process models |
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 |
AU2004252918B2 (en) | 2003-06-25 | 2009-12-10 | Ab Initio Technology Llc. | 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 |
KR100922141B1 (ko) | 2003-09-15 | 2009-10-19 | 아브 이니티오 소프트웨어 엘엘시 | 데이터 프로파일링 방법 및 시스템 |
US7287133B2 (en) * | 2004-08-24 | 2007-10-23 | Symantec Operating Corporation | Systems and methods for providing a modification history for a location within a data store |
US20050102670A1 (en) | 2003-10-21 | 2005-05-12 | Bretl Robert F. | Shared object memory with object management for multiple virtual machines |
US7408566B2 (en) | 2003-10-22 | 2008-08-05 | Oki Data Corporation | Semiconductor device, LED print head and image-forming apparatus using same, and method of manufacturing semiconductor device |
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 |
US7594227B2 (en) | 2004-03-08 | 2009-09-22 | Ab Initio Technology Llc | Dependency graph parameter scoping |
EP2408193A3 (en) | 2004-04-16 | 2014-01-15 | James A. Aman | Visible and non-visible light sensing camera for videoing and object tracking |
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 |
CN101031882B (zh) | 2004-06-08 | 2010-09-08 | 达尔特设备互操作有限公司 | 用于通用设备互操作性平台的设备组招募和内容再现的体系结构、装置和方法 |
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 |
US7703027B2 (en) | 2005-01-13 | 2010-04-20 | National Instruments Corporation | Merging graphical programs |
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 |
US7590806B2 (en) | 2005-12-07 | 2009-09-15 | Microsoft Corporation | Filtering of transactional memory operations using associative tables |
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 |
JP5894724B2 (ja) | 2006-08-10 | 2016-03-30 | アビニシオ テクノロジー エルエルシー | グラフ型計算の分散サービス |
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 |
US8069129B2 (en) | 2007-04-10 | 2011-11-29 | Ab Initio Technology Llc | Editing and compiling business rules |
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 | 透 降矢 | 結合演算の処理機能の向上を考慮した合成関係演算を利用したマルチオペレーション・プロセッシングを用いたデータベースのクエリー処理システム |
CA2965896C (en) | 2007-07-26 | 2020-01-07 | Ab Initio Technology Llc | Transactional graph-based computation with error handling |
US8347292B2 (en) | 2007-08-30 | 2013-01-01 | International Business Machines Corporation | Transaction aggregation to increase transaction processing throughout |
JP5453273B2 (ja) | 2007-09-20 | 2014-03-26 | アビニシオ テクノロジー エルエルシー | グラフベース計算におけるデータフロー管理 |
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 |
KR101499599B1 (ko) | 2008-06-30 | 2015-03-18 | 아브 이니티오 테크놀로지 엘엘시 | 그래프 기반 계산에서의 데이터 로깅 |
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 |
JP5337447B2 (ja) * | 2008-10-28 | 2013-11-06 | 株式会社日立製作所 | ストリームデータ処理方法、及びシステム |
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 |
US9886319B2 (en) | 2009-02-13 | 2018-02-06 | Ab Initio Technology Llc | Task managing application for performing tasks based on messages received from a data processing application initiated by the task managing application |
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 |
WO2011069131A1 (en) * | 2009-12-04 | 2011-06-09 | Google Inc. | Presenting real time search results |
KR101862235B1 (ko) * | 2009-12-14 | 2018-05-29 | 아브 이니티오 테크놀로지 엘엘시 | 사용자 인터페이스 요소 지정 |
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 |
US9727438B2 (en) | 2010-08-25 | 2017-08-08 | Ab Initio Technology Llc | Evaluating dataflow graph characteristics |
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 |
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 |
US9116955B2 (en) * | 2011-05-02 | 2015-08-25 | Ab Initio Technology Llc | Managing data queries |
AU2012281182B2 (en) | 2011-07-12 | 2015-07-09 | Experian Information Solutions, Inc. | Systems and methods for a large-scale credit data processing architecture |
US9152470B2 (en) | 2011-09-07 | 2015-10-06 | Imagine Communications Corp. | Systems and methods for computing applications |
US9674058B2 (en) * | 2011-11-07 | 2017-06-06 | Hitachi, Ltd. | Time series data processing device, time series data processing method, and computer-readable recording medium storing time series data processing program |
US9875094B2 (en) | 2012-08-29 | 2018-01-23 | International Business Machines Corporation | Microcode upgrade in a storage system |
JP5887418B2 (ja) * | 2012-09-14 | 2016-03-16 | 株式会社日立製作所 | ストリームデータ多重処理方法 |
US9507682B2 (en) | 2012-11-16 | 2016-11-29 | Ab Initio Technology Llc | Dynamic graph performance monitoring |
US9274926B2 (en) | 2013-01-03 | 2016-03-01 | Ab Initio Technology Llc | Configurable testing of computer programs |
JP2014157510A (ja) * | 2013-02-15 | 2014-08-28 | International Business Maschines Corporation | ストリーム・データ処理システム、方法及びプログラム |
CA3114544A1 (en) | 2013-12-05 | 2015-06-11 | Ab Initio Technology Llc | Managing interfaces for dataflow composed of sub-graphs |
AU2014362192B2 (en) * | 2013-12-13 | 2020-01-30 | Ab Initio Technology Llc | Dynamically determining a mode of a data processing application |
-
2015
- 2015-08-05 US US14/818,895 patent/US10657134B2/en active Active
-
2016
- 2016-08-04 CN CN201680046044.5A patent/CN107924406A/zh active Pending
- 2016-08-04 EP EP16759900.0A patent/EP3332336A1/en not_active Ceased
- 2016-08-04 JP JP2017567783A patent/JP7023718B2/ja active Active
- 2016-08-04 WO PCT/US2016/045612 patent/WO2017024164A1/en active Application Filing
- 2016-08-04 CA CA2994408A patent/CA2994408C/en active Active
- 2016-08-04 AU AU2016301376A patent/AU2016301376B2/en active Active
-
2018
- 2018-07-30 HK HK18109824.3A patent/HK1250404A1/zh unknown
Patent Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2009005594A2 (en) * | 2007-06-29 | 2009-01-08 | Lucent Technologies Inc. | Method and apparatus for efficient aggregate computation over data streams |
US20100299339A1 (en) * | 2009-05-20 | 2010-11-25 | International Business Machines Corporation | Indexing provenance data and evaluating provenance data queries in data processing systems |
CN103069385A (zh) * | 2010-06-15 | 2013-04-24 | 起元技术有限责任公司 | 动态加载基于图的计算 |
AU2014262225A1 (en) * | 2010-06-15 | 2014-12-04 | Ab Initio Technology Llc | Dynamically loading graph-based computations |
WO2012152315A1 (en) * | 2011-05-10 | 2012-11-15 | Telefonaktiebolaget L M Ericsson (Publ) | Optimised data stream management system |
US20140052729A1 (en) * | 2011-05-10 | 2014-02-20 | David Manzano Macho | Optimized data stream management system |
WO2014011708A2 (en) * | 2012-07-12 | 2014-01-16 | Microsoft Corporation | Progressive query computation using streaming architectures |
CN104471572A (zh) * | 2012-07-12 | 2015-03-25 | 微软公司 | 使用流式架构的渐进式查询计算 |
Cited By (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110457340A (zh) * | 2018-05-07 | 2019-11-15 | 吕纪竹 | 一种实时寻找大数据自身重复规律的方法 |
CN110457340B (zh) * | 2018-05-07 | 2024-04-09 | 吕纪竹 | 一种实时寻找大数据自身重复规律的方法 |
CN110083583A (zh) * | 2019-03-29 | 2019-08-02 | 北京奇安信科技有限公司 | 流式事件处理方法及装置 |
CN110471940A (zh) * | 2019-08-05 | 2019-11-19 | 威讯柏睿数据科技(北京)有限公司 | 一种流关系数据库管理系统 |
CN110471940B (zh) * | 2019-08-05 | 2021-10-08 | 威讯柏睿数据科技(北京)有限公司 | 一种流关系数据库管理系统 |
CN112508768A (zh) * | 2020-12-22 | 2021-03-16 | 北京百度网讯科技有限公司 | 单算子多模型流水线推理方法、系统、电子设备及介质 |
CN112508768B (zh) * | 2020-12-22 | 2022-05-27 | 北京百度网讯科技有限公司 | 单算子多模型流水线推理方法、系统、电子设备及介质 |
CN112927770A (zh) * | 2021-04-12 | 2021-06-08 | 徐州市通用科技有限公司 | 医疗数据共享方法及系统 |
CN112927770B (zh) * | 2021-04-12 | 2023-09-08 | 徐州市通用科技有限公司 | 医疗数据共享方法及系统 |
Also Published As
Publication number | Publication date |
---|---|
US10657134B2 (en) | 2020-05-19 |
EP3332336A1 (en) | 2018-06-13 |
WO2017024164A1 (en) | 2017-02-09 |
JP7023718B2 (ja) | 2022-02-22 |
US20170039245A1 (en) | 2017-02-09 |
HK1250404A1 (zh) | 2018-12-14 |
JP2018528506A (ja) | 2018-09-27 |
CA2994408A1 (en) | 2017-02-09 |
AU2016301376A1 (en) | 2018-01-25 |
CA2994408C (en) | 2022-12-06 |
AU2016301376B2 (en) | 2021-07-22 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN107924406A (zh) | 选择用于对实时数据流执行的查询 | |
US20220066772A1 (en) | System and Method for Code and Data Versioning in Computerized Data Modeling and Analysis | |
US10275502B2 (en) | System and method for interactive reporting in computerized data modeling and analysis | |
US10268753B2 (en) | System and method for optimized query execution in computerized data modeling and analysis | |
JP7344327B2 (ja) | アプリケーションプログラミングインターフェイスのメタデータ駆動型外部インターフェイス生成ためのシステムおよび方法 | |
US10394532B2 (en) | System and method for rapid development and deployment of reusable analytic code for use in computerized data modeling and analysis | |
US8340995B2 (en) | Method and system of using artifacts to identify elements of a component business model | |
US20170109657A1 (en) | Machine Learning-Based Model for Identifying Executions of a Business Process | |
US20170109676A1 (en) | Generation of Candidate Sequences Using Links Between Nonconsecutively Performed Steps of a Business Process | |
CN110383268A (zh) | 对用于处理带键网络数据流的参数化应用的动态执行 | |
CN104838377A (zh) | 利用映射缩减集成事件处理 | |
WO2018236886A1 (en) | SYSTEM AND METHOD FOR MANAGING CODE AND DATA VERSIONS IN COMPUTERIZED DATA MODELING AND ANALYSIS | |
US20170109636A1 (en) | Crowd-Based Model for Identifying Executions of a Business Process | |
US20170109639A1 (en) | General Model for Linking Between Nonconsecutively Performed Steps in Business Processes | |
US20170109638A1 (en) | Ensemble-Based Identification of Executions of a Business Process | |
US20170109670A1 (en) | Crowd-Based Patterns for Identifying Executions of Business Processes | |
US20170109637A1 (en) | Crowd-Based Model for Identifying Nonconsecutive Executions of a Business Process | |
US20140149186A1 (en) | Method and system of using artifacts to identify elements of a component business model | |
Gkotsopoulou | Unleashing robotic process automation through process mining | |
CN117972342A (zh) | 规则分析系统、规则分析方法及存储介质 | |
Bae et al. | A new framework for business process knowledge discovery |
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 | ||
CB03 | Change of inventor or designer information | ||
CB03 | Change of inventor or designer information |
Inventor after: R.Gadodia Inventor after: J.S.Holly Inventor before: J.S.Holly Inventor before: R.Cadidia |