CN102349056B - 动态组合数据流处理应用程序 - Google Patents
动态组合数据流处理应用程序 Download PDFInfo
- Publication number
- CN102349056B CN102349056B CN201080011985.8A CN201080011985A CN102349056B CN 102349056 B CN102349056 B CN 102349056B CN 201080011985 A CN201080011985 A CN 201080011985A CN 102349056 B CN102349056 B CN 102349056B
- Authority
- CN
- China
- Prior art keywords
- data
- archives
- application program
- subscription
- stream
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/54—Interprogram communication
- G06F9/544—Buffers; Shared memory; Pipes
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Stored Programmes (AREA)
Abstract
提供了用于动态修改应用程序内组件之间的互联的技术。所述技术包括:针对要在一个或多个处理器上执行的软件应用程序内的每一个输出端口接收数据生产者档案,针对应用程序每一个组件中的每一个输入端口接收数据订阅档案,根据每一份数据生产者档案和每一份数据订阅档案的比较,在应用程序内组件的输出端口和输入端口之间建立连接,在一个或多个处理器上执行应用程序以处理数据流,在执行应用程序期间接收新的数据生产者档案或新的数据订阅档案之一或两者都接收,并根据接收的包括新数据档案的数据档案的修正比较在输出端口和输入端口之间建立至少一个新连接。
Description
政府合同
本发明是借助由美国国防部资助的合同号为H98230-07-C-0383的政府支持项目完成的。政府享有本发明的特定权益。
技术领域
本发明的实施例主要涉及信息技术,并且更具体地涉及数据流处理。
背景技术
流处理计算范式包括以流的形式同化来自软件或硬件传感器集合的数据读数(也就是说,无限的元组集合承载了由外部数据源生成的信息),分析数据,然后可能也是以流格式生成可指导行动的结果。流处理应用程序可以包括多个组件,每一个组件均可生成可以由应用程序中的另一个组件调用的数据流。例如,在交通管理系统中,可以设想携带手机的每一位驾驶员都会变成向拥堵控制系统中输送关于其位置和速度信息的数据源。在这样的情况下,分布式交通管理平台的数据收集部分可以将其关注点集中在订阅所有可用的数据源(例如特定区域内所有携带手机的驾驶员)以提高其可能做出的拥堵预测的准确度。因此,对于提供数据源的自动路由存在需求。在上述情况下,这可能会包括将捕获驾驶员速度和位置的瞬时读数以及交通事故的位置和道路养护方案路由至数据使用者(在该示例中是交通和拥堵管理系统平台)。
通常,流处理应用程序可以包括几十到几百个解析操作点,配置在架设了很多其他可能互联的流应用程序的系统上,分布在大量的处理节点中。在现有的方法中,实现可以互联应用程序或者允许集成多个应用程序的流程图通常是通过硬编码应用程序内和应用程序间连接或者是通过依靠发布-订阅或企业服务总线型的机制以特定方式完成的,具有很多关于可扩展性问题方面的缺点。
由生成者产生的数据相对于应用程序的执行可以是间歇性的。例如,在基础设施监控领域内发展起来的大规模分布式应用程序(例如交通管理系统、能量分布系统、大零售商供应链管理系统、分布式欺诈和异常检测系统、监视系统等)往往是长期运行的应用程序,被设计为除了周密计划好的维护停机期间以外可能都要保持连续运行。而且,这些应用程序经常被设计为在它们内部互相协作,例如,通过使交通传感器驱动自动交通控制以用于减少拥堵。
在很多情况下,为现有应用程序输送数据的原始数据源可能会以变化的时间间隔(也就是从几秒到几天)连续地变为可用和不可用,原因就在于这些来源中的一部分是暂时性的。在此情况下,平台中的数据收集部分可以将其关注点集中在订阅所有可用的原始数据源。因此,需要对于向数据使用者提供数据源的自动路由。
现有的方法包括发布/订阅系统。但是,发布/订阅系统是以由生产者生成的各个数据项的间隔来描述数据特性,而不是以生产者的间隔。这样的方法并不实用,原因在于与以数据源的间隔进行注释相比的注释各个数据项相关联的低效率。
发明内容
本发明的原理和实施例提供了用于动态组合数据流处理应用程序的技术。根据本发明的一种应用,一种用于在基于组件的数据流处理应用程序中动态修改多个组件之间互联的示范性方法(可以用计算机实现)可以包括以下步骤:针对要在一个或多个处理器上执行的软件应用程序内的多个输出端口中的每一个输出端口接收数据生产者档案,其中应用程序包括多个组件,每一个组件都包括生成数据流的输出端口和调用数据流的输入端口,并且其中每一份数据生产者档案都描述了由对应输出端口生成的数据特征,针对应用程序多个组件的一个或多个输入端口中的每一个输入端口接收数据订阅档案,其中每一份数据订阅档案都描述了由输入端口调用的数据特征,根据接收的数据生产者档案和接收的数据订阅档案的比较,在应用程序内多个组件的输出端口和输入端口之间建立一个或多个连接,在一个或多个处理器上执行数据流处理应用程序以处理一个或多个数据流,在执行应用程序期间接收新的数据生产者档案或新的数据订阅档案之一或两者都接收,并根据接收的包括一个或多个新数据档案的数据档案的修正比较,在输出端口和输入端口之间建立至少一个新连接。
本发明的一个或多个实施例或者其要素能够以一种计算机产品的形式实现,包括实体的计算机可读取存储介质以及用于执行上述方法步骤的计算机可用程序代码。而且,本发明的一个或多个实施例或者其要素能够以一种设备的形式实现,包括存储器以及连接至存储器并且可操作用于完成示范性方法步骤的至少一个处理器。再进一步地,在另一种应用中,本发明的一个或多个实施例或者其要素能够以一种用于实现本文中所述的一个或多个方法步骤的装置的形式实现;该装置可以包括:(i)一种或多种硬件模块,(ii)一种或多种软件模块和/或组件,或者(iii)硬件和软件模块/组件的组合;(i)-(iii)中的任意一种均可实现本文中所阐述的具体技术,并且软件模块/组件被存储在实体的计算机可读取存储介质(或多个这样的介质)中。
根据以下对本发明说明性实施例的详细介绍,本发明上述以及其他的目标、特征和优点将会变得显而易见,应结合附图阅读所述实施例。
附图说明
图1是示出了根据本发明的实施例的在基于组件的应用程序中动态修改多个组件之间的一种或多种互联的示意图;
图2是示出了根据本发明的实施例的用于基于XPATH的组合机制的示范性语法的示意图;
图3是示出了用于实施本发明的一个或多个实施例的多组件设备的示范性组织的示意图;
图4是示出了根据本发明的实施例的与由应用程序生成的流相关联的可扩展标记语言(XML-)编码档案在通过档案管理器组件保存时的示范性列表;
图5是示出了根据本发明的实施例的在建立新的生产者和/或使用者的流连接时新应用程序的配置如何在流程图中触发修改的流程图;
图6是示出了根据本发明的实施例的在切断新的生产者和/或使用者的流连接时新应用程序的终止如何在流程图中触发修改的流程图;
图7是示出了根据本发明的实施例的在建立和/或切断新的生产者和/或使用者的流连接时描述流的相关性质的流档案的修改如何在流程图中触发修改的流程图;
图8是示出了根据本发明的实施例的在建立和/或切断新的生产者和/或使用者的流连接时与组件输入端口相关联的订阅表达式的修改如何在流程图中触发修改的流程图;
图9是示出了根据本发明的实施例的在建立和/或切断新的生产者和/或使用者的流连接时与组件输入端口相关联的订阅函数的修改如何在流程图中触发修改的流程图;
图10是示出了根据本发明的实施例的在建立和/或切断新的生产者和/或使用者的流连接时与组件输入端口相关联的订阅评价标准的修改如何在流程图中触发修改的流程图;
图11是示出了根据本发明的实施例的用于在基于组件的数据流处理应用程序中动态修改多个组件之间互联的技术流程图;
图12是一种示范性计算机系统的系统示意图,本发明的至少一个实施例能够在该示范性计算机系统上实施。
具体实施方式
本发明的原理包括基于档案的动态应用程序组合。高性能、分布式计算的流处理中间软件能够支持同时运行多种应用程序,其中每一种应用程序都可能包括有用作数据源(生产者)和用作数据宿(使用者)的若干组件。本发明一个或多个实施例提供的技术用于描述由这样的应用程序以生产者的间隔生成的数据特征,用于描述每一个使用者所需的数据特征,以及用于从适当的使用者向使用者动态匹配和路由数据。
本文中详细介绍的技术包括通过确定应用程序中不同组件之间的数据流结构并为数据交换建立必备的物理路由和连接。另外,所述技术包括用于动态操作(例如查询、插入、删除和/或改变)生产者的等级特征(或性质)、基于生产者性质的使用者订阅以及将匹配每一个使用者的生产者按优先顺序排列的评价功能的方法。
在大规模分布式应用程序中,本发明的一个或多个实施例包括以对应用程序有意义的方式定位数据源,允许逻辑订阅规范,其中并不是仅仅依赖于数据源的名称(数据源名称通常直到配置时间之前可能都是未知的),而是可以使用更加丰富的性质集合来推断并建立生产者/使用者的关系。
另外,在处理可能是大型的数据源集合时,本文中介绍的技术提供了可扩展性。本发明的一个或多个实施例包括用于将数据生产者连接至数据使用者的组合机制,其具有内置机制以应对能够满足数据订阅表达式的大量数据源。而且,本文中详细介绍的技术包括评价并约束应该被动态连接至数据使用者的数据源数量。这样的评价机制也可以是可以用程序描述的,因此使用数据的应用程序能够根据特定于应用程序的标准按优先顺序排列要使用哪一个源。
而且,数据使用者经常在它们能够摄取的数据数量方面具有预算(例如通过最大合计摄取速率限制要处理的源数量)以及在它们能够处理的数据质量方面具有阈值(例如通过数据源特定的噪声等级或其他专用领域的质量量度筛选数据源)。因此,本发明的一个或多个实施例将使用者连接至生产者有助于为使用者提供选项以同样地根据这些属性来选择建立和评价连接。
另外,本文中介绍的技术有助于根据数据特性的改变来自我修正(长期运行的)应用程序行为。该修正有可能会发生在例如内容方面(例如交通的突然减慢可以触发从特定位置调用视频数据以评估最近是否发生了交通事故)。
应用程序可以长期运行,而数据源则可以在分布式系统中连续地到达和离开。本发明的一个或多个实施例包括自动建立数据源和相关使用者之间的必备连接。另外,系统内的数据源数量有可能会十分巨大。因此,是基于逻辑谓语的数据订阅而不是明确地命名每一个使用者处的数据源导致可扩展的应用程序设计,这代替了繁琐的人力密集型设计。
而且,由每一个源生成的数据的数量和质量有可能会改变。本发明的一个或多个实施例使应用程序能够根据数据特征的改变以及正在进行的分析的改变来修改其行为。本文中介绍的技术还为应用程序中的不同组件和/或多种应用程序提供了共生和协作环境以在分布式系统中共存。
本发明的一个或多个实施例还包括实现应用程序的参数化。也就是说,应用程序行为可以根据数据的性质被参数化。作为示例,可以复制数据处理的某一部分用于不同的数据源。
如本文中详细介绍的那样,本发明的一个或多个实施例包括用于在分布式应用程序中将数据的生产者和使用者动态互联的机制。数据源可以根据由生产者生成的数据性质以及其他的生产者特定性质(例如涉及在何处以及如何配置生产者的性质,由运行时的环境推断出的性质等)进行描述。
而且,数据订阅可以根据逻辑条件和/或过程函数构建,过程函数对这些性质进行运算并最终评估为真或假以指示是否应该建立生产者/使用者的关系。例如,订阅可以是基于表达式的,也就是说,它可以采用陈述性表达式的形式利用可扩展标记语言(XML)基于路径语言(XPATH)的语法来表达订阅谓语,或者也可以是关于性质的布尔表达式。
图1是示出了根据本发明的实施例的在基于组件的应用程序中动态修改多个组件之间的一种或多种互联的示意图。作为图解,图1示出了生产者(数据源)102以及使用者(数据宿)116。生产者102包括输出端口(例如输出端口104)和流档案(例如流档案106)。生产者还可以包括流性质(例如称为“熵”的流性质)以及流性质的值。
使用者116包括输入端口(例如输入端口110)以及在主机上运行的实现应用程序逻辑的处理单元(例如处理单元112)。使用者还可以包括流订阅表达式(例如流订阅表达式114“熵<15”)。图1还示出了生产者和使用者之间的流连接(例如流连接108)。
图2是示出了根据本发明的实施例的用于基于XML路径语言(XPATH)的组合机制的示范性语法的示意图。图2示出了包括具有三种性质的流档案的数据生产者应用程序202,以及包括基于XPATH的输入订阅表达式的数据使用者应用程序204。图2示出了包括应用程序中的数据流表示的框图。另外,本发明的一个或多个实施例包括能够被用于评估与订阅匹配的各个数据源重要性的评价技术。这样的评价机制使得能够约束可以针对特定使用者物理地建立的生产者/使用者关系的最大数量。
如上所述,本文中详细介绍的技术包括通过将应用程序逻辑与源于其他组件和应用程序的数据流解耦使应用程序能够增量配置,以及响应于数据质量、容量、可用性以及施加在系统上的总负荷等因素的改变使应用程序能够进化和动态自适应。
本发明一个或多个实施例中的每一个数据生产者都与数据档案相关联。例如,考虑在流计算系统内实现基于档案的应用程序组合(例如由纽约Armonk的IBM公司提供的INFOSPHERE STEAMS中间软件应用程序)。在这样的包括处理单元(PE)的应用程序中,每一个处理单元都具有多个输入和输出端口,其中每一个输出端口生成单个流,数据档案与每一个输出端口相关联。数据档案可以包括用于与其相关联的生产者的唯一标识符,并且它还可以包括表达由生产者生成的数据特征的性质集合。这些性质可以属于几种预先确定的数据类型(既有简单的,也有复杂的)之一。例如,在流计算系统中,数据性质可以是字符串型、双精度浮点数型、长整数型、字符串列表型、双精度浮点数列表型和长整数列表型(最后三个是数组型)。每一个档案性质都有名称,并且特定档案内的两种性质不能具有相同的名称。
另外,每一个使用者都利用订阅表达式描述其感兴趣的生产者集合。订阅表达式是关于数据档案性质的任意布尔表达式。其档案性质满足给定表达式的所有生产者都是使用者可能的候选。而且,其他的正则因素可以判定生产者是否需要被连接至订阅者,分别包括安全性、生产者和订阅者的范围以及生产者和使用者的兼容性、输出和输入数据的格式等。作为示例,在流计算系统(例如系统S)中,订阅表达式可以利用XPATH语法定义。例如,表达式:流[位置=″约克镇″][标签[成员=″视频″]]匹配所有这样的数据档案:所述数据档案包含被称为位置的其值为″约克镇″的字符串性质,并且包含被称为标签的字符串列表性质,其中包含被称为″视频″的成员。
而且,本发明的一个或多个实施例包括在生产者和使用者之间动态确定并建立互联的逻辑,该逻辑可以包括例如三个子组件。一个子组件可以包括档案管理器,这是一种用于储存数据档案的可靠的数据结构。它提供了用于在运行时操作和查询数据档案的API。在流计算系统中,档案管理器可以利用可扩展标记语言(XML)的树形表示以及用于操作和查询数据档案的应用程序编程接口(API)来实现。
第二个子组件可以包括匹配技术,该技术通过检查哪一份档案匹配哪一个订阅表达式(可能是为了使匹配效率最大而被工程化和优化)来计算生产者和使用者之间的匹配(或连接)。在应用程序启动期间以及无论何时要修改档案或订阅表达式时还有在处理单元(例如流计算系统内的运行时分析容器)进出时执行该技术。作为示例,可以使用下层的XML引擎将档案管理器内的档案与基于XPATH的订阅表达式进行匹配。
另一个子组件可以包括用于档案和订阅操作的API。这样的API能够使应用程序在运行时修改档案性质和订阅表达式。在本发明的一个或多个实施例中,上述子组件可以驻留在提取图管理器(DGM)模块中。
本文中详细介绍的技术还包括编程语言的等级特征,它在应用程序开发时提供了定义和初始化数据档案和订阅表达式的能力。这样的通过编程语言初始化的档案和订阅在应用程序启动时生效。在本发明的一个或多个实施例中,编程语言(例如SPADE)提供了实现上述内容的特征。Gedik等人在″SPADE:The System S DeclarativeStream Processing Engine″SIGMOD Conference 2008:1123-1134一文中更加完整地介绍了SPADE编程模型。如本文中所述,本发明的一个或多个实施例能够在作为通用数据流处理中间软件(例如数据流处理系统,譬如分别是INFOSPHERE STREAMS和SPADE编程语言)的一部分开发的分布运行时基础结构和编程模型的示范性背景下具体实现。这样支持结构化和非结构化分布式数据流处理应用程序能够覆盖大量的计算节点。
另外,这样的中间软件能够执行大量的作为一个或多个应用程序一部分的长期运行应用程序。这些应用程序可以作为单个应用程序或者可能采用了复杂数据流图形式的相关应用程序组的一部分而交互。数据流图可以包括由数据流连接的处理单元组(例如运行时的执行单元),其中每一个数据流都带有一系列的元组。处理单元是装有实施数据流分析的操作点的容器并且分布在计算节点上。计算节点可以被组织为例如工作站的不共享集群或者大型的超级计算机。
处理单元通过它们的由数据流连接的输入和输出端口彼此通信。处理单元端口以及数据流能够使用应用程序确定的类型系统加以归类(通常是通过组合系统支持的基本类型而建立,基本类型的范围从数值型例如八位整数到复杂类型例如基本类型元素的列表)。处理单元也可以使用在编译时定义的硬编码流连接而被显式地连接或者可以借助本文中介绍的机制通过依赖于数据流性质的流(例如“携带来自位于建筑物A内摄像头的监视视频的流”)而被动态地连接。要注意的是这些连接是动态的(也就是说在运行时根据匹配订阅表达式的流的可用性而建立),并且因此允许中间软件支持增量式的应用程序开发和配置。
表述语言(例如SPADE语言)被用于编写应用程序供这些中间软件使用,正如例如在图2中所示的那样。这种语言提供了包括多种特点的快速应用程序开发前端。一种特点可以包括用于灵活组合并行和分布式数据流图的语言。该语言可以由编程人员直接使用,或者可以被用于任务专用的较高等级编程工具(例如用于查询,映射简化流程等)和较低等级的编程接口(API)之间。表述语言的另一种特点可以包括基于支持增加通用类型流处理操作点的新工具包的可扩展性。另外,表述语言的又一种特点可以包括用于从外部来源摄取数据以及向外部使用者发布结果的大范围边缘适配器(例如网络套接字、数据库、文件系统、自主平台等)。
编程语言也可以提供以流为中心的基于操作点的编程模型以及语法结构,由此应用程序就能够通过本文中介绍的例如由图2示出的机制从其他应用程序接收数据或者向其他应用程序输出数据。以流为中心的设计意味着一种其基本构建模块是流的语言。换句话说,应用程序作者简单地通过列举流的流程并声明用哪一个操作点生成了个体流就能够快速地将数据流从框图译为描述源代码的应用程序。基于操作点的程序设计则将焦点集中在通过推导用于输送应用程序被设计执行的计算所必须的可行的最小构建模块来设计应用程序。
如本文中所述,在本发明的一个或多个实施例中,多个应用程序可以通过使用和生成跨越应用程序边界的流来交互操作。应用程序的组合允许开发动态拓扑结构,其中不同的应用程序可以在不同的时间被配置并且它们之间的生产者-使用者关系可以在运行时建立。换句话说,每一次初始化新的应用程序时,数据流管理组件都会评估新应用程序是否产生并输出了任何其他正在运行的应用程序可能会感兴趣的流。
类似地,数据流管理组件检查已经在运行的应用程序并验证其中是否有任何一个产生并输出了新配置的应用程序感兴趣的流。一旦发现新的生产者-使用者关系,数据流管理组件就指示生产者连接至使用者。这些连接是暂时的,意思就是说,一旦其中一方(生产者或使用者)终止、订阅被改变和/或数据源性质被改变并且可能不再匹配订阅,那么连接就会被自动删除。
也可以(通过精心设定的API)给操作点开发人员提供编程的方式以改变操作点的输入端口订阅、与流档案相关联的流性质以及与操作点订阅相关联的评价标准。而且,通过调用特定API以实现这些改变所造成的变化可以在运行时随着新的流连接的建立和/或切断而触发数据流拓扑结构的修改。
图3是示出了用于实施本发明的一个或多个实施例的多组件设备的示范性结构的示意图。作为图解,图3示出了数据流管理组件302,其包括应用程序编程接口(API)304、档案管理器306、订阅表达式管理器308、触发管理器310、数据流管理器312和数据流图拓扑结构表示314。API 304能够被用于查询、插入、删除和/或修改与通过输出端口、输入端口的订阅表达式、输入端口的评价标准和输入端口的订阅函数而生成的流相关联的流档案。
档案管理器306用作可靠的存储器,用于储存与每一个数据流(或者等价地是与生成数据流的操作点的输出端口)相关联的质量和数量性质。具体地,每一个流的特征都在于包括性质集合的唯一数据档案。这些性质中的每一个都具有分类的性质名称(例如作为单精度浮点数给出的与音频流相关联的平均噪声水平)并且具有具体的数值。在处理系统内的档案管理器的一种示范性实施方式中,流性质可以被定义为由编程语言支持的任何数据类型的保留值。流档案的集合可以由档案管理器以XML树的形式内部储存,其中树的节点构成了档案性质。图4中示出了档案管理器中的流档案和内部内容图解的示例。
图4是示出了根据本发明的实施例的与由应用程序生成的流相关联的XML-编码档案402在通过档案管理器组件保存时的示范性列表。作为图解,图4还示出了性质名称404、性质类型406、性质值408以及用于示范性HealthCareBargains流的基于性质的档案410。
订阅表达式管理器(图3中的组件308)是一种与档案管理器互补的组件。订阅表达式管理器用作可靠的存储器,用于容纳流使用者(或者等价地是用于摄取匹配其订阅以及评价标准的数据流的输入端口)的订阅表达式。具体地,使用例如基于表达式的流订阅机制的每一个输入端口都与唯一的布尔订阅表达式相关联。该表达式明确了流档案内包含的性质为了使其被对应的输入端口使用所必须满足的逻辑条件。处理系统(例如系统S)内的订阅表达式管理器的一种示范性实施方式允许将任意的布尔XPATH表达式(包括流档案性质)作为使用者的订阅。在此情况下,每一个输入端口都与其中包括特定表达式和评价方法的端口描述相关联,并且端口描述符的集合被储存在数据流管理器内。
订阅表达式管理器还提供了一种用于登记订阅函数的方式。订阅函数为特定的使用者提供了一种非常强大的、定制的和程序性的计算匹配的方式。换句话说,用于确定将由输出端口生成的哪些流被路由至该使用者的逻辑就驻留在订阅函数自身当中。这些函数可以是例如由各个订阅者(在其初始化时)用订阅表达式管理器登记。
档案管理器以及订阅表达式管理器使其他组件能够通过API对其进行编程查询。这些API也可以在运行时由通过编程语言(例如SPADE)定义的流处理操作点调用。在本发明的一个或多个实施例中,存在两种用于通过建立新操作点(例如在工具包内组织)扩展编程语言以适应特定的应用领域例如金融工程或雷达数据处理的机制。这些API也可以由应用程序编程人员通过外部程序调用以用于浏览系统内当前配置的不同流中的档案以及用于在应用程序开发时检查输入端口的订阅表达式。
具体地,API可以允许检索例如与由操作点的输出端口生成的特定流相关联的档案或者与来自通过应用程序当前在系统中配置的操作点的所有输出端口相关联的档案。API还可以允许检索订阅表达式或函数以及与特定输入端口相关联的可选的评价标准或者与来自通过应用程序当前在系统中配置的操作点的所有输出端口相关联的可选的评价标准。而且,API可以允许检索匹配给定订阅表达式的流档案以及匹配给定流档案的表达式。除了查询类型的API以外,档案管理器和订阅表达式管理器还可以包含用于建立、删除和修改流档案、各个档案性质、使用者订阅表达式、订阅函数以及订阅评价标准的API。
数据流管理器(图3中的组件312)调用其匹配的技术用于确定哪些输出端口必须被连接至哪些输入端口。如果与由输出端口生成的流相关联的档案性质满足与操作点的输入端口相关联的订阅表达式(或函数),那么该流就是该输入端口可能的匹配。除了满足该条件以外,数据流管理器还可以针对输出端口连接至输入端口实施其他必要的条件。例如,由输入端口调用的元组内存在的属性集合可以被规定为完全匹配由输出端口生成的元组内存在的属性。换句话说,元组属性结构必须匹配输入端口的计划。
而且,输入端口可以被规定为具有足够大的范围和安全性特权,目的是为了调用来自该输入端口的元组。通常,在上述条件满足之后,输入端口就能够与多个输出端口匹配(反之亦然)。本发明的一个或多个实施例包括数据流管理器在处理系统内利用具有功能性支持的库来针对流档案估算基于XPATH的使用者订阅。
本文中介绍的基本表达式估算能力可以如下详细介绍的那样被数据流管理器扩展。例如,数据流管理器可以调用语法引擎和本体(ontology),目的是为了增强其表达式估算和匹配的功能性。作为示例,考虑输入端口的订阅表达式寻找其“原产地”性质的值为“纽约”的所有流。如果存在其档案包含被称为“出处”的值为“Westchester”的性质的流,那么语法引擎在本体管理框架的帮助下将会自动确定该流实际上就是针对该使用者的匹配,原因在于Westchester镇和纽约州之间能够推出的本体关系。
另外,数据流管理器还能够调用评价引擎,其仅选择匹配订阅表达式的流的子集,并仅将该子集连接至使用者。评价引擎可以提供各种类型的评价机制:例如评价可以针对某些档案性质的取值进行(例如,如果流的“质量”是一种这样的性质)。评价机制也可以被提供一个任意的优化目标以用于选择流的子集以及针对所选择流的速率、数量以及其他相关量的约束;各个使用者也可以提供任意的评价函数,评价函数可以用数据流管理器登记并且在无论何时需要评价与该使用者相匹配的流时加以应用。
而且,数据流管理器也可以调用由各个使用者提供的用户定义的订阅函数,目的是为了向这些使用者提供任意的、定制的并且更加完善的匹配能力。
除了提供上述的匹配和评价功能以外,数据流管理器还可以用作可靠的存储器,以用于与动态应用程序组合相关联的不同的数据对象。这可以包括例如包含有其订阅表达式或订阅函数的输入端口描述符的集合。另外,输出端口和输入端口之间存在的现有连接集合也可以出于可靠性和查询效率的原因而被储存为数据流管理器的一部分。
触发管理器(图3中的组件310)负责用于在任何需要重新计算输出和输入端口之间的连接时调用数据流管理器内的匹配和评价技术以及用于在任何要在处理系统上配置新的应用程序(及其操作点的输出和输入端口)或者要删除或修改现有的应用程序(及其操作点的输出和输入端口)时更新档案管理器和订阅表达式管理器。
本发明的一个或多个实施例中不同组件之间涉及的交互(或API的调用顺序)可以包括如下所述的内容:可以包括新应用程序(例如系统S的应用程序)的初始化。注意这样的应用程序由处理单元(PE)的集合构成,每一个处理单元都包含摄取流的输入端口集合以及生成输出流的输出端口集合。在将新应用程序提交至系统运行时间用于初始化时(例如图5所示),系统运行时间就调用触发管理器API用于应用程序登记,将应用程序内包含的PE列表以及每一个PE的输入和输出端口的描述符集合作为参数传递。
对于应用程序内包含的每一个输出端口,触发管理器依次调用档案管理器API以建立新的流档案(并确保用将要被初始化的应用程序中的新流的性质正确填充档案管理器)。类似地,对于应用程序内的每一个输入端口,触发管理器调用订阅表达式管理器API以建立新的输入端口描述符,其也包含有订阅表达式或者指向与该输入端口相关联的订阅函数的指针。而且,触发管理器调用数据流管理器内的匹配技术,其针对包括属于将要被初始化的应用程序中的操作点的新输入端口在内的所有输入端口重新计算可能匹配的流的集合。这可以在调用评价技术之后进行,从而确定用于每一个输入端口的匹配流的最终集合。另外,数据流管理器可以发起对路由组件的调用,目的是为了物理地建立起已经通过上述过程计算出的连接,并且去除在上述过程之后已经不再是有效匹配的物理连接。
如上所述,图5是示出了根据本发明的实施例的在建立新的生产者和/或使用者的流连接时新应用程序的配置如何在流程图中触发修改的流程图。步骤502包括通过数据流管理器向处理平台(例如系统S)的运行时间提交新应用程序。步骤504包括触发管理器接纳包括在处理单元(PE)内分组的操作点集合的应用程序。另外,触发管理器能够执行以下操作。作为示例,对于每一个输出端口,用关于应用程序内每一个输出流性质的信息填充档案管理器。而且,对于每一个输入端口,用关于每一个订阅表达式和/或函数以及评价标准的信息填充订阅表达式管理器。
步骤506包括触发管理器调用匹配技术。触发管理器可以进一步执行以下操作。对于新应用程序的每一个输入端口,可以找到匹配订阅表达式和/或函数的流。而且,触发管理器应用评价标准并挑选出列表以包括最大数量的满足由评价标准施加的约束的流。而且,对于每一个属于其他应用程序的输入端口,触发管理器可以参照新应用程序的评价标准评估新应用程序的输出流是否匹配其他应用程序的订阅表达式和/或函数。
步骤508包括更新数据流管理器的内部拓扑数据流图。另外,步骤510包括数据流管理器向要互联的应用程序发出路由通知,在生产者和使用者之间建立物理路由。
本发明的一个或多个实施例还包括在通过对数据流管理器的请求而终止现有的应用程序时在本文中所述的不同组件之间涉及的步骤或API调用顺序(例如图6所示)。系统运行时间可以调用触发管理器API用于应用程序登记,将要终止的应用程序作为参数传递。对于要终止的应用程序内的操作点的每一个输出端口,触发管理器发出API请求以用于从档案管理器中删除对应的流档案,并从这些输出端口中通知流的使用者关于生产者即将终止的信息。对于要终止的应用程序内的操作点的每一个输入端口,订阅管理器发出API请求以用于移除对应的订阅表达式(或函数),并且通知它们的生产者关于使用者即将终止的信息。
而且,数据流管理器可以通过移除将要被移除的连接来更新其内部的数据流图拓扑结构。另外,对于在上述过程中已经失去一个或多个生产者的每一个剩余的使用者来说,数据流管理器会重新应用评价技术以确保为该使用者选择最优的流集合。
如上所述,图6是示出了根据本发明的实施例的在切断新的生产者和/或使用者的流连接时新应用程序的终止如何在流程图中触发修改的流程图。步骤602包括通过请求数据流管理器查询要终止的应用程序。步骤604包括触发管理器执行输出端口和输入端口的操作。例如,对于要终止的应用程序内的操作点的每一个输出端口,清理档案管理器并由数据流管理器通知使用者关于生产者即将终止的信息。对于要终止的应用程序内的操作点的每一个输入端口,清理订阅表达式管理器并由数据流管理器通知生产者关于使用者即将终止的信息。另外,对于剩余操作点的每一个输入端口,如果输入端口的生产者集合内有改变,那么数据流管理器就会重新应用评价技术,目的是为该输入端口重新计算正确的流集合。
进而,步骤606包括通过移除生产者和/或使用者的连接来更新数据流管理器内部的拓扑数据流图。
本发明的一个或多个实施例还包括在通过生成流的操作点、其他操作点或者通过管理平台在外部修改流档案时(也就是在流档案中添加、删除或者修改性质),在本文中所述的不同组件之间涉及的步骤或API调用的顺序(例如图7所示)。数据流管理器用其档案要被修改的特定输出端口的标识符(ID)来调用触发管理器。触发管理器调用档案管理器并确保实现对流档案的适当修改。
而且,触发管理器在所有的使用者集合上都调用匹配技术以检查被修改的流是不是使用者可能的匹配,并且对先前(档案被修改之前)订阅该流或者现在(重新应用匹配技术之后)订阅该流的使用者重新应用评价函数。而且,数据流管理器可对其内部的数据流图拓扑结构进行必要的更新。数据流管理器能够另外向要互联的应用程序发出路由通知,在必要时建立或移除生产者和相关使用者之间的物理路由。
如上所述,图7是示出了根据本发明的实施例的在建立和/或切断新的生产者和/或使用者的流连接时描述流的相关性质的流档案的修改如何在流程图中触发修改的流程图。步骤702包括通过应用程序编程接口(API)(例如用生成流的操作点、其他操作点或者用管理控制台外部地)调用数据流管理器来修改流档案(例如新性质、性质删除或性质更新)。步骤704包括触发管理器调用匹配技术并执行评估操作。作为示例,对于属于其他应用程序的每一个输入端口,触发管理器评估其档案被改变的输出流相对于它们的评价标准现在是否与其订阅表达式和/或函数相匹配。
步骤706包括更新数据流管理器内部的拓扑数据流图。另外,步骤708包括数据流管理器向要互联的应用程序发出路由通知信息,必要时在该生产者以及新发现和/或移除的使用者之间建立和/或移除物理路由。
另外,本发明的一个或多个实施例还包括在通过API由拥有输入端口的操作点调用数据流管理器来修改订阅表达式时在本文中所述的不同组件之间涉及的步骤或API调用的顺序(例如图8所示)。数据流管理器用其订阅表达式正在被修改的特定输入端口的ID来调用触发管理器。触发管理器调用订阅表达式管理器并确保实现对订阅表达式的适当修改。
而且,触发管理器对该使用者调用匹配技术以找到匹配该使用者的所有流集合,并且应用评价技术以选择流中满足由使用者施加的评价约束的优化子集。另外,数据流管理器能够对其内部的数据流图拓扑结构进行必要的更新。数据流管理器还能够向要互联的应用程序发出路由通知,建立或移除相关生产者和使用者之间的物理路由。
如上所述,图8是示出了根据本发明的实施例的在建立和/或切断新的生产者和/或使用者的流连接时与组件输入端口相关联的订阅表达式的修改如何在流程图中触发修改的流程图。步骤802包括通过应用程序编程接口(API)通过拥有输入端口的操作点调用数据流管理器修改流的订阅表达式(Page 23)。步骤804包括触发管理器调用订阅表达式管理器以在订阅表达式中做出适当的改变。
步骤806包括触发管理器调用匹配技术并执行流操作。作为示例,触发管理器能够找到与新的订阅表达式相匹配的流。另外,触发管理器能够应用评价标准并选出列表以包含流中满足由评价标准施加的约束的优化子集。
步骤808包括更新数据流管理器内部的拓扑数据流图。另外,步骤810包括数据流管理器向要互联的应用程序发出路由通知,在新发现和/或移除的生产者以及该使用者之间建立和/或移除物理路由。
本发明的一个或多个实施例还可以包括在通过API调用数据流管理器由拥有输入端口的操作点修改订阅表达式时,在本文中所述的不同组件之间涉及的步骤或API调用顺序(例如图9所示)。数据流管理器用其订阅表达式正在被修改的特定输入端口的标识符来调用触发管理器。触发管理器调用订阅表达式管理器并确保登记新的订阅函数。
而且,触发管理器对该使用者调用匹配技术以找到匹配该使用者的所有流集合,并且应用评价技术以选择流中满足由使用者施加的评价约束的优化子集。另外,数据流管理器能够对其内部的数据流图拓扑结构进行必要的更新。数据流管理器还能够向要互联的应用程序发出路由通知,建立或移除相关生产者和使用者之间的物理路由。
图9是示出了根据本发明的实施例的在建立和/或切断新的生产者和/或使用者的流连接时与组件输入端口相关联的订阅函数的修改如何在流程图中触发修改的流程图。步骤902包括通过API调用数据流管理器由拥有输入端口的操作点修改流的订阅函数。步骤904包括触发管理器调用匹配技术并执行流操作。例如,触发管理器能够找到与新的订阅函数相匹配的流,并且能够应用评价标准并选出列表以包含最大数量的满足由评价标准所施加约束的流。
步骤906包括更新数据流管理器内部的拓扑数据流图。另外,步骤908包括数据流管理器向要互联的应用程序发出路由通知,在新发现和/或移除的生产者以及该使用者之间建立和/或移除物理路由。
本发明的一个或多个实施例能够另外包括在通过API调用数据流管理器由拥有输入端口的操作点修改评价标准时,在本文中所述的不同组件之间涉及的步骤或API调用顺序(例如图10所示)。数据流管理器应用新的评价标准以选择流中满足由该评价标准施加的约束的优化子集。而且,数据流管理器能够对其内部的数据流图拓扑结构进行必要的更新,并且向要互联的应用程序发出路由通知,建立或移除相关生产者和使用者之间的物理路由。
如上所述,图10是示出了根据本发明的实施例的在建立和/或切断新的生产者和/或使用者的流连接时与组件输入端口相关联的订阅评价标准的修改如何在流程图中触发修改的流程图。步骤1002包括通过API调用数据流管理器由拥有输入端口的操作点修改流的订阅评价标准。步骤1004包括数据流管理器应用新的评价标准以选出流中满足由评价标准所施加约束的优化集合。
步骤1006包括更新数据流管理器内部的拓扑数据流图。另外,步骤1008包括数据流管理器向要互联的应用程序发出路由通知,在新发现和/或移除的生产者以及该使用者之间建立和/或移除物理路由。
图11是示出了根据本发明的实施例的用于在基于组件的数据流处理应用程序中动态修改多个组件之间互联的技术流程图。该应用程序可以包括分布式应用程序(也就是在不同的计算机上运行不同的片段)以及由不同组件构成的应用程序(也就是多个组件的分布项目)。
步骤1102包括针对要在一个或多个处理器上执行的软件应用程序内的多个输出端口中的每一个输出端口接收数据生产者档案,其中应用程序包括多个组件,每一个组件都包括生成数据流的输出端口和使用数据流的输入端口,并且其中每一份数据生产者档案都描述了由对应输出端口生成的数据特征。该步骤例如可以使用本文介绍的不同软件组件中的一个或多个实现。针对软件应用程序内的多个输出端口中的每一个输出端口接收数据生产者档案可以包括这些档案在应用程序开发时的规范(例如在SPADE编程语言中使用的结构),或者通过运行时API的使用规范。而且,由输出端口生成的数据特征可以包括例如形式为档案的特征,其应用于由数据源携带的所有数据(例如流处理系统内的流)。
步骤1104包括针对应用程序多个组件的一个或多个输入端口中的每一个输入端口接收数据订阅档案,其中每一份数据订阅档案都描述了由输入端口使用的数据特征。该步骤例如可以使用本文介绍的不同软件组件中的一个或多个实现。针对应用程序多个组件的一个或多个输入端口中的每一个输入端口接收数据订阅档案可以包括在应用程序开发期间的订阅表达式规范(例如在SPADE语言中使用XPATH订阅机制),或者通过使用运行时API的规范。而且,由输入端口使用的数据的特征可以包括例如根据一个或多个数据源档案性质定义的表述订阅表达式、过程性订阅技术和/或逻辑谓语(例如每个使用者一个)。
步骤1106包括根据接收的数据生产者档案和接收的数据订阅档案的比较,在应用程序内多个组件的输出端口和输入端口之间建立一个或多个连接。该步骤例如可以使用本文介绍的不同软件组件中的一个或多个实现。本发明的一个或多个实施例还包括使用API以允许查询和更新档案,允许动态物理重构应用程序间的互联。
步骤1108包括在一个或多个处理器上执行数据流处理应用程序以处理一个或多个数据流。该步骤例如可以使用本文介绍的不同软件组件中的一个或多个实现。处理一个或多个数据流可以包括在系统中不同的处理节点处配置处理单元并运行它们。
步骤1110包括在执行应用程序期间接收新的数据生产者档案或新的数据订阅档案之一或两者都接收。该步骤例如可以使用本文介绍的不同软件组件中的一个或多个实现。
步骤1112包括根据接收的包括一个或多个新数据档案的数据档案的修正比较,在输出端口和输入端口之间建立至少一个新连接。该步骤例如可以使用本文介绍的不同软件组件中的一个或多个实现。在输出端口和输入端口之间建立新连接可以包括使用编程语言结构以及运行时的应用程序编程接口以分别在应用程序配置时间和运行时间建立每一个生产者和使用者之间的动态数据连接。
而且,在输出端口和输入端口之间建立新连接可以另外包括:根据一个或多个数据生产者档案特征以及一个或多个数据订阅档案特征之间的匹配所确定的,将应用程序内的输出端口以及外部数据源动态互联至应用程序内的输入端口。本发明的一个或多个实施例可以包括在运行时操作数据生产者档案和数据订阅档案(包括例如建立、删除和修改档案性质)。
在运行时操作数据生产者档案例如可以包括根据由每一个输出端口生成的每一个数据项的值动态地操作数据生产者档案性质(例如建立、删除和/或修改),根据每一个输出端口生成的每一个数据项的容量动态地操作数据生产者档案性质(例如建立、删除和/或修改);以及查询档案管理器(其可以包括例如评价和筛选机制)。在运行时操作数据订阅档案可以包括例如修改流订阅表达式,并且修改订阅函数。
而且,在输出端口和输入端口之间建立连接可以进一步包括在数据流模块中储存计算的路由,并且在数据档案和/或数据订阅每一次发生改变时都更新储存在数据流模块中的信息。
图11示出的技术还可以包括在应用程序运行期间接收对现有数据档案和/或现有订阅表达式的修改。而且,在本发明的一个或多个实施例中,订阅机制可以由以下步骤之一或其组合实现。可以通过将表述订阅表达式应用于流的具有性质集合并评估性质是否满足谓语来计算匹配。而且,还可以通过应用订阅函数来计算匹配,所述订阅函数能够过程性地查询档案管理器和实现额外的计算例如评价、筛选等并且返回表明哪些流满足函数的布尔结果。
本发明的一个或多个实施例可以另外包括动态地改变使用者订阅(例如在订阅者不再对原始数据感兴趣时或者订阅者的兴趣已经转移到其他方面时),以及动态地改变由输出端口生成的输出数据特征的输出说明(也就是流档案)。而且,图11中示出的技术可以包括建立和修改由数据使用者采用的用于约束要被连接至使用者的数据源集合的评价标准(例如,其中订阅者可以根据某些预定标准来评价源)。
而且,本发明的一个或多个实施例可以包括使用触发机制来动态地计算流匹配。计算流匹配可以包括登记每一个订阅表达式和每一个订阅函数,根据关于新登记的流的每一个订阅表达式和/或每一个订阅函数来评估触发条件;根据流性质的改变来评估触发条件,以及根据订阅表达式和/或每一个订阅函数中的改变来评估触发条件。
图11中示出的技术也可以如本文中所述在系统上运行,其中该系统包括不同的软件组件和/或模块,不同的软件组件中的每一种都可以在实体的计算机可读取可记录存储介质上实体化。不同的软件组件可以包括在硬件处理器上运行的应用程序编程接口组件、档案管理器组件、订阅表达式管理器组件、触发管理器组件和数据流组件。
另外,图11中示出的技术可以通过计算机程序产品实现,其包括储存在数据处理系统内计算机可读取存储介质中的计算机可用程序代码,并且其中计算机可用程序代码可以用网络从远程数据处理系统下载。而且,在本发明的一个或多个实施例中,计算机程序产品可以包括储存在服务器数据处理系统内的计算机可读取存储介质中的计算机可用程序代码,并且其中计算机可用程序代码可以在网络上下载到远程数据处理系统中以使用远程系统在计算机可读取存储介质中使用。
使用专用硬件、通用处理器、固件、软件或其组合的各种技术可以应用于实现本发明或其组件。本发明的一个或多个实施例或其要素可以用计算机产品的形式实施,包括用于实现上述方法步骤的具有计算机可用程序代码的计算机可用介质。而且,本发明的一个或多个实施例或其要素可以用包括存储器和至少一个处理器的装置的形式实施,至少一个处理器被耦合至存储器并且可操作用于执行示范性的方法步骤。
一个或多个实施例可以使用在通用计算机或工作站上运行的软件。参照图12,这样的实施方式可以采用例如处理器1202、存储器1204、例如由显示器1206和键盘1208构成的输入/输出接口。本文中所用的术语“处理器”应被理解为包括任意的处理设备例如包括CPU(中央处理器)和/或其他形式处理电路的处理设备。而且,术语“处理器”可以表示多于一个的独立处理器。术语“存储器”应被理解为包括与处理器或CPU相关联的存储器,例如RAM(随机存取存储器)、ROM(只读存储器)、固定存储设备(例如硬盘)、可移除存储设备(例如磁盘)、闪存等。另外,本文中所用的短语“输入/输出接口”应被理解为包括例如用于向处理单元输入数据的一种或多种机制(例如鼠标),以及用于提供与处理单元相关结果的一种或多种机制(例如打印机)。处理器1202、存储器1204以及输入/输出接口例如显示器1206和键盘1208可以通过例如作为数据处理单元1212一部分的总线1210互联。例如通过总线1210的适当互联也可以被设置用于网络接口1214,例如能够被设置用于连接计算机网络的网卡,以及介质接口1216,例如能够被设置用于连接介质1218的磁盘或CD-ROM驱动器。
因此,如本文中所述包括用于实现本发明方法的指令或代码的计算机软件可以被储存在一个或多个相关联的存储设备(例如ROM、固定或可移除存储器)中,并且在准备要使用时部分或整体载入(例如载入到RAM内)并由CPU执行。这样的软件可以包括但不限于固件、常驻软件、微代码等。
而且,本发明可以采用能从计算机可用或计算机可读取介质(例如介质1218)存取的计算机程序产品的形式,提供程序代码用于由计算机或任意指令执行系统使用或与之结合使用。对于本说明书而言,计算机可用或计算机可读取介质可以是用于由指令执行系统、装置或设备使用或与之结合使用的任何装置。介质可以储存程序代码以执行本文中阐述的一个或多个方法步骤。
介质可以是电、磁、光、电磁、红外或半导体系统(或装置或设备)或传播介质。实体计算机可读取存储介质的示例包括半导体或固态存储器(例如存储器1204)、磁带、可移除计算机磁盘(例如介质1218)、随机存取存储器(RAM)、只读存储器(ROM)、刚性磁盘和光盘(但是传播介质除外)。光盘的现有示例包括高密度磁盘-只读存储器(CD-ROM)、高密度磁盘-读/写(CD-R/W)和DVD。
适用于存储和/或执行程序代码的数据处理系统可以包括通过系统总线1210直接或间接地连接至存储元件1204的至少一个处理器1202。存储器元件可以包括在实际执行程序代码期间使用的局部存储器、大容量存储器以及为了在执行期间减少必须从大容量存储器中获取的时间码数量而提供至少部分程序代码临时储存的高速缓冲存储器。
输入/输出或I/O设备(包括但不限于键盘1208、显示器1206、点击设备等)可以被直接连接(例如通过总线1210)至系统或者通过中介I/O控制器(为了清楚而省略)连接至系统。
网络适配器例如网络接口1214也可以被连接至系统以使数据处理系统能够中介的私有或公用网络被连接至其他的数据处理系统或远程打印机。调制解调器、线缆调制解调器和以太网卡仅仅是现有可用类型的网络适配器中的几种。
如本文包括权利要求中所用,“服务器”包括运行服务器程序的物理数据处理系统(例如图12中所示的系统1212)。应该理解这样的物理服务器可以包括也可以不包括显示器和键盘。
用于实现本发明操作的计算机程序带脉可以用一种或多种编程语言的任意组合编写,包括面向对象的编程语言例如Java、Smalltalk、C++等以及成规的过程编程语言例如“C”编程语言或类似的编程语言。这些程序代码可以完全在用户的计算机上运行、部分在用户的计算机上并且部分在远程计算机上运行或者完全在远程计算机或服务器上运行。在后面的情况下,远程计算机可以通过任意类型的网络连接至用户的计算机,包括局域网(LAN)或广域网(WAN),或者连接也可以对外部计算机进行(例如通过使用了互联网服务提供商的互联网)。
已经参照方法流程图和/或框图、装置(系统)和计算机程序产品在本文中介绍了本发明的实施例。应该理解流程图和/或框图中的每一个模块以及流程图和/或框图中的模块组合均可通过计算机程序指令实现。这些计算机程序指令可以被提供给通用计算机、专用计算机或用于生成机械的其他可编程数据处理装置的处理器以使得通过计算机或其他可编程数据处理装置的处理器执行的指令建立起用于实现流程图和/或框图的一个或多个模块中明确的功能/动作的方式。
这些计算机程序指令也可以被储存在能够引导计算机或其他可编程数据处理装置以特定方式工作的实体计算机可读取介质中,以使得储存在计算机可读取介质中的指令生成包括指令方式的加工主题,实现流程图和/或框图的一个或多个模块中明确的功能/动作。计算机程序指令还可以被载入计算机或其他可编程数据处理装置以使一系列的操作步骤得以在计算机或其他可编程数据处理装置上执行,从而形成计算机实现过程,以使计算机或其他可编程数据处理装置上执行的指令提供用于实现流程图和/或框图的一个或多个模块中明确的功能/动作的过程。
附图中的流程图和框图根据本发明的不同实施例示出了系统、方法和计算机程序产品的可行实施方式的结构、功能和操作。在此,流程图或框图中的每一个模块都可以表示组件、程序块、程序段或一部分代码,其包括用于实现一个或多个特定逻辑函数的一条或多条可执行指令。还应该注意的是,在某些可选的实施方式中,模块中注明的函数可以不以附图中所示的顺序进行。例如,依次示出的两个模块实际上可以基本上同时执行,或者模块有时根据涉及的功能还可以按相反的顺序执行。还应该注意的是框图和/或流程图中的每一个模块以及框图和/或流程图中的模块组合可以由实现特定功能或动作的基于硬件的专用系统实现,或者由专用硬件和计算机指令的组合实现。
而且,应该注意到的是本文中介绍的任何方法都可以包括提供一种包括不同软件组件的系统的附加步骤,软件组件在实体的计算机可读取存储介质上实现;组件可以包括图3中示出的任意或全部组件。随后方法步骤就可以如上所述利用在硬件处理器上运行的系统中不同的软件组件和/或子组件来实现。而且,计算机程序产品可以包括实体的计算机可读取存储介质以及适用于执行以实现本文中所述的一个或多个方法步骤的代码,包括为系统提供不同的软件组件。
在任何情况下,都应该理解本文中介绍的组件可以用各种形式的硬件、软件或其组合实施,例如应用程序专用集成电路(ASICS)、功能电路、一台或多台适当编程的具有相关存储器的通用数字计算机等。根据本文中提供的本发明的教导,相关领域的普通技术人员将能够设想出本发明中组件的其他实施方式。
本发明的至少一个实施例可以提供一种或多种有利效果例如以生产者的间隔描述由应用程序生成的数据特征。
应该意识到并且应该理解本发明上述的示范性实施例可以用多种不同的方式实现。根据本文中提供的本发明的教导,本领域技术人员就能够设想出本发明其他的实施方式。实际上,尽管已经在本文中参照附图介绍了本发明的说明性实施例,但是应该理解本发明并不局限于这些明确的实施例,并且可以由本领域技术人员进行各种其他的修改和变形而并不背离本发明的保护范围或实质。
Claims (23)
1.一种用于在基于组件的数据流处理应用程序中动态修改多个组件之间互联的系统,包括:
处理器;
耦合至处理器的存储器;
储存在存储器上的档案管理器模块,针对要在一个或多个处理器上执行的软件应用程序内的多个输出端口中的每一个输出端口接收数据生产者档案,其中应用程序包括多个组件,每一个组件都包括生成数据流的输出端口和使用数据流的输入端口,并且其中每一份数据生产者档案都描述了由对应输出端口生成的数据的特征;
储存在存储器上的订阅表达式管理器模块,针对应用程序的多个组件的一个或多个输入端口中的每一个输入端口接收数据订阅档案,其中每一份数据订阅档案都描述了由对应输入端口使用的数据的特征;
储存在存储器上的数据流模块,根据每一份数据生产者档案和每一份数据订阅档案的比较,在应用程序内的多个组件的输出端口和输入端口之间建立一个或多个连接。
2.如权利要求1所述的系统,其中处理器操作用于执行数据流处理应用程序以处理一个或多个数据流,档案管理器模块进一步操作用于在执行数据流处理应用程序期间接收新的数据生产者档案,并且数据流模块进一步操作用于根据接收的包括新数据生产者档案的数据档案的修正比较,在输出端口和输入端口之间建立至少一个新连接。
3.如权利要求1所述的系统,其中处理器操作用于执行数据流处理应用程序以处理一个或多个数据流,订阅表达式管理器模块进一步操作用于在执行数据流处理应用程序期间接收新的数据订阅档案,并且数据流模块进一步操作用于根据接收的包括新数据订阅档案的数据档案的修正比较,在输出端口和输入端口之间建立至少一个新连接。
4.如权利要求1所述的系统,其中耦合至存储器的、操作用于在输出端口和输入端口之间建立至少一个新连接的至少一个处理器进一步操作用于:将应用程序内的一个或多个输出端口以及一个或多个外部数据源动态地互联至由一个或多个数据生产者档案特征以及一个或多个数据订阅档案特征之间的一个或多个匹配确定的应用程序内的一个或多个输入端口。
5.如权利要求1所述的系统,其中耦合至存储器的至少一个处理器进一步操作用于建立和修改由数据使用者采用的评价标准,用于约束将被连接至使用者的一个或多个数据源的集合。
6.一种用于在基于组件的数据流处理应用程序中动态修改多个组件之间互联的方法,所述方法包括:
针对要在一个或多个处理器上执行的软件应用程序内的多个输出端口中的每一个输出端口接收数据生产者档案,其中应用程序包括多个组件,每一个组件都包括生成数据流的输出端口和使用数据流的输入端口,并且其中每一份数据生产者档案都描述了由对应输出端口生成的数据的特征;
针对应用程序的多个组件的一个或多个输入端口中的每一个输入端口接收数据订阅档案,其中每一份数据订阅档案都描述了由输入端口使用的数据的特征;
根据接收的数据生产者档案和接收的数据订阅档案的比较,在应用程序内的多个组件的输出端口和输入端口之间建立一个或多个连接;
在一个或多个处理器上执行数据流处理应用程序以处理一个或多个数据流;
在执行应用程序期间接收新的数据生产者档案或新的数据订阅档案之一或两者都接收;以及
根据接收的包括一个或多个新数据档案的数据档案的修正比较,在输出端口和输入端口之间建立至少一个新连接。
7.如权利要求6所述的方法,进一步包括在执行应用程序期间接收对现有数据档案和现有订阅表达式中的至少一种进行的一个或多个修改。
8.如权利要求6所述的方法,其中针对软件应用程序内的多个输出端口中的每一个输出端口接收数据生产者档案包括在应用程序开发期间的数据档案的规范以及由应用程序在执行期间通过一个或多个运行时应用程序编程接口使用的数据档案的编程规范中的至少一种。
9.如权利要求6所述的方法,其中针对应用程序的多个组件的一个或多个输入端口中的每一个输入端口接收数据订阅档案包括在应用程序开发期间的订阅的规范以及由应用程序在执行期间通过一个或多个运行时应用程序编程接口使用的订阅的编程规范中的至少一种。
10.如权利要求6所述的方法,其中处理一个或多个数据流包括在系统的一个或多个处理节点上配置一个或多个处理单元并且运行一个或多个处理单元。
11.如权利要求6所述的方法,其中在输出端口和输入端口之间建立至少一个新连接包括分别在应用程序配置时和在运行时使用一种或多种编程语言结构和运行时应用程序编程接口在每一个生产者和使用者之间建立一个或多个动态数据连接。
12.如权利要求6所述的方法,其中在输出端口和输入端口之间建立至少一个新连接进一步包括将应用程序内的一个或多个输出端口以及一个或多个外部数据源动态互联至由一个或多个数据生产者档案特征和一个或多个数据订阅档案特征之间的一个或多个匹配确定的应用程序内的一个或多个输入端口。
13.如权利要求12所述的方法,进一步包括在运行时操作一个或多个数据生产者档案以及一个或多个数据订阅档案。
14.如权利要求13所述的方法,其中在运行时操作一个或多个数据生产者档案包括:
根据每一个输出端口生成的每一个数据项的一个或多个值,动态地操作一个或多个数据生产者档案性质;
根据每一个输出端口生成的每一个数据项的容量,动态地操作一个或多个数据生产者档案性质;以及
查询档案管理器。
15.如权利要求13所述的方法,其中在运行时操作一个或多个数据订阅档案包括:
修改流订阅表达式;以及
修改订阅函数。
16.如权利要求6所述的方法,其中在输出端口和输入端口之间建立一个或多个连接进一步包括:
在数据流模块中储存计算的路由;以及
在数据档案和数据订阅中的至少一种每一次发生改变时都更新储存在数据流模块中的信息。
17.如权利要求6所述的方法,其中由输出端口生成的数据的特征包括应用于由数据源携带的所有数据的档案形式的特征。
18.如权利要求6所述的方法,其中由输入端口使用的数据的特征包括针对一个或多个数据源档案性质定义的表述订阅表达式、过程性订阅技术和逻辑谓语。
19.如权利要求6所述的方法,进一步包括动态地改变使用者订阅。
20.如权利要求6所述的方法,进一步包括动态地改变由输出端口生成的输出数据的输出特征描述。
21.如权利要求6所述的方法,进一步包括建立和修改由数据使用者采用的评价标准,用于约束将被连接至使用者的一个或多个数据源的集合。
22.如权利要求6所述的方法,进一步包括利用触发机制来动态地计算一个或多个流匹配,其中计算一个或多个流匹配包括:
登记每一个订阅表达式和每一个订阅函数;
根据关于一个或多个新登记流的每一个订阅表达式和每一个订阅函数中的至少一种来评估一个或多个触发条件;
根据一个或多个流性质的一个或多个改变来评估一个或多个触发条件;以及
根据一个或多个订阅表达式以及一个或多个订阅函数中的至少一种的一个或多个改变来评估一个或多个触发条件。
23.如权利要求6所述的方法,其中所述方法在一种系统上运行,其中所述系统包括一个或多个不同的软件组件,一个或多个不同的软件组件中的每一个都可以在实体的计算机可读取可记录存储介质上实现,并且其中一个或多个不同的软件模块包括在硬件处理器上运行的应用程序编程接口模块、档案管理器模块、订阅表达式管理器模块、触发管理器模块和数据流模块。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US12/465,910 US8286191B2 (en) | 2009-05-14 | 2009-05-14 | Dynamically composing data stream processing applications |
US12/465,910 | 2009-05-14 | ||
PCT/US2010/034714 WO2010132666A1 (en) | 2009-05-14 | 2010-05-13 | Dynamically composing data stream processing applications |
Publications (2)
Publication Number | Publication Date |
---|---|
CN102349056A CN102349056A (zh) | 2012-02-08 |
CN102349056B true CN102349056B (zh) | 2014-07-16 |
Family
ID=43069412
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201080011985.8A Active CN102349056B (zh) | 2009-05-14 | 2010-05-13 | 动态组合数据流处理应用程序 |
Country Status (6)
Country | Link |
---|---|
US (1) | US8286191B2 (zh) |
JP (1) | JP5420065B2 (zh) |
CN (1) | CN102349056B (zh) |
CA (1) | CA2755317C (zh) |
MX (1) | MX2011010795A (zh) |
WO (1) | WO2010132666A1 (zh) |
Families Citing this family (45)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10616619B2 (en) | 2009-03-03 | 2020-04-07 | Mobilitie, Llc | System and method for multi-channel WiFi video streaming |
US9986268B2 (en) | 2009-03-03 | 2018-05-29 | Mobilitie, Llc | System and method for multi-channel WiFi video streaming |
US9271054B2 (en) | 2009-03-03 | 2016-02-23 | Mobilitie, Llc | System and method for WiFi video streaming |
US9619291B2 (en) * | 2009-12-20 | 2017-04-11 | Yahoo! Inc. | System and method for a task management library to execute map-reduce applications in a map-reduce framework |
US20120047467A1 (en) * | 2010-08-17 | 2012-02-23 | International Business Machines Corporation | Port compatibilty checking for stream processing |
US8260803B2 (en) * | 2010-09-23 | 2012-09-04 | Hewlett-Packard Development Company, L.P. | System and method for data stream processing |
US8732300B2 (en) * | 2011-01-10 | 2014-05-20 | International Business Machines Corporation | Application monitoring in a stream database environment |
US8972923B2 (en) * | 2011-02-08 | 2015-03-03 | Maxeler Technologies Ltd. | Method and apparatus and software code for generating a hardware stream processor design |
US9460131B2 (en) * | 2012-05-04 | 2016-10-04 | International Business Machines Corporation | Data stream quality management for analytic environments |
WO2014152677A2 (en) * | 2013-03-15 | 2014-09-25 | Mobilitie, Llc | System and method for multi-channel wifi video streaming |
US10318895B1 (en) | 2013-08-27 | 2019-06-11 | Curb, Inc. | System for promoting efficient use of resources |
US9298485B2 (en) * | 2013-11-19 | 2016-03-29 | International Business Machines Corporation | Maintaining virtual machines for cloud-based operators in a streaming application in a ready state |
US9262222B2 (en) * | 2013-12-03 | 2016-02-16 | International Business Machines Corporation | Lazy initialization of operator graph in a stream computing application |
US11126627B2 (en) | 2014-01-14 | 2021-09-21 | Change Healthcare Holdings, Llc | System and method for dynamic transactional data streaming |
US10121557B2 (en) | 2014-01-21 | 2018-11-06 | PokitDok, Inc. | System and method for dynamic document matching and merging |
US10574714B2 (en) * | 2014-06-25 | 2020-02-25 | Microsoft Technology Licensing, Llc | Stream-based reactive programming platform |
US10007757B2 (en) | 2014-09-17 | 2018-06-26 | PokitDok, Inc. | System and method for dynamic schedule aggregation |
US9886486B2 (en) * | 2014-09-24 | 2018-02-06 | Oracle International Corporation | Enriching events with dynamically typed big data for event processing |
EP3221708A4 (en) | 2014-11-17 | 2018-06-27 | Curb Inc. | Resource monitoring system with disaggregation of devices and device-specific notifications |
CA2985839A1 (en) | 2015-01-20 | 2016-07-28 | PokitDok, Inc. | Health lending system and method using probabilistic graph models |
US20160239851A1 (en) * | 2015-02-18 | 2016-08-18 | PokitDok, Inc. | Multi commodity system and method for calculating market dynamics in health networks systems |
US10095547B1 (en) * | 2015-03-13 | 2018-10-09 | Twitter, Inc. | Stream processing at scale |
US20160342750A1 (en) | 2015-05-18 | 2016-11-24 | PokitDok, Inc. | Dynamic topological system and method for efficient claims processing |
US9967160B2 (en) | 2015-05-21 | 2018-05-08 | International Business Machines Corporation | Rerouting data of a streaming application |
US9531602B1 (en) | 2015-07-27 | 2016-12-27 | International Business Machines Corporation | Processing element placement tool |
US10366204B2 (en) | 2015-08-03 | 2019-07-30 | Change Healthcare Holdings, Llc | System and method for decentralized autonomous healthcare economy platform |
CA3002032A1 (en) | 2015-10-15 | 2017-04-20 | PokitDok, Inc. | System and method for dynamic metadata persistence and correlation on api transactions |
JP6764938B2 (ja) * | 2016-01-14 | 2020-10-07 | アビニシオ テクノロジー エルエルシー | リカバリ可能なストリーム処理 |
DE112016006514T5 (de) | 2016-02-29 | 2018-12-06 | NEC Laboratories Europe GmbH | Verfahren und Datenverarbeitungssystem zum Verwalten von Datenstromverarbeitungstasks einervordefinierten Anwendungstopologie |
US10042611B2 (en) * | 2016-03-21 | 2018-08-07 | International Business Machines Corporation | Stream operator management |
JP2019516167A (ja) | 2016-03-23 | 2019-06-13 | フォグホーン システムズ, インコーポレイテッドFoghorn Systems, Inc. | リアルタイムデータフロープログラミング言語のためのツールおよび方法 |
US10102340B2 (en) | 2016-06-06 | 2018-10-16 | PokitDok, Inc. | System and method for dynamic healthcare insurance claims decision support |
US10191881B2 (en) * | 2016-06-06 | 2019-01-29 | Hewlett Packard Enterprise Development Lp | Modifications to a stream processing topology during processing of a data stream |
US10108954B2 (en) | 2016-06-24 | 2018-10-23 | PokitDok, Inc. | System and method for cryptographically verified data driven contracts |
US9836467B1 (en) | 2016-10-31 | 2017-12-05 | International Business Machines Company | Altering in-flight streamed data from a relational database |
US10025826B2 (en) * | 2016-10-31 | 2018-07-17 | International Business Machines Corporation | Querying in-flight streamed data from a relational database |
US10127283B2 (en) | 2016-10-31 | 2018-11-13 | International Business Machines Corporation | Projecting effect of in-flight streamed data on a relational database |
CN108255862B (zh) * | 2016-12-29 | 2019-09-17 | 北京国双科技有限公司 | 一种裁判文书的检索方法及装置 |
US10409811B1 (en) * | 2017-01-27 | 2019-09-10 | Intuit, Inc. | Decomposition of queries |
US10817334B1 (en) * | 2017-03-14 | 2020-10-27 | Twitter, Inc. | Real-time analysis of data streaming objects for distributed stream processing |
US10805072B2 (en) | 2017-06-12 | 2020-10-13 | Change Healthcare Holdings, Llc | System and method for autonomous dynamic person management |
US10691489B2 (en) | 2018-01-29 | 2020-06-23 | International Business Machines Corporation | Managing the processing of streamed data in a data streaming application using query information from a relational database |
US11204926B2 (en) | 2018-10-31 | 2021-12-21 | International Business Machines Corporation | Storing partial tuples from a streaming application in a database system |
US11368549B2 (en) | 2019-12-05 | 2022-06-21 | Microsoft Technology Licensing, Llc | Platform for multi-stream sampling and visualization |
US12047249B2 (en) * | 2020-08-27 | 2024-07-23 | Siemens Industry Software Inc. | Centralized management of data flow maps for distributed edge node deployment |
Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101248416A (zh) * | 2005-08-24 | 2008-08-20 | 诺基亚公司 | 组件架构 |
Family Cites Families (13)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5566337A (en) * | 1994-05-13 | 1996-10-15 | Apple Computer, Inc. | Method and apparatus for distributing events in an operating system |
US20020152305A1 (en) * | 2000-03-03 | 2002-10-17 | Jackson Gregory J. | Systems and methods for resource utilization analysis in information management environments |
US20030225876A1 (en) * | 2002-05-31 | 2003-12-04 | Peter Oliver | Method and apparatus for graphically depicting network performance and connectivity |
JP2004348680A (ja) * | 2003-05-26 | 2004-12-09 | Fujitsu Ltd | 複合イベント通知システムおよび複合イベント通知プログラム |
US7693983B1 (en) * | 2005-05-27 | 2010-04-06 | Symantec Operating Corporation | System and method providing application redeployment mappings using filtered resource usage data |
US20070261041A1 (en) * | 2005-08-23 | 2007-11-08 | Lisa Amini | Method and system for dynamic application composition in streaming systems |
WO2007099245A2 (fr) * | 2006-02-28 | 2007-09-07 | France Telecom | Procede de collecte de descriptions de flux portant sur des flux relatifs a au moins un reseau client rattache a un reseau d'interconnexion |
US7493406B2 (en) * | 2006-06-13 | 2009-02-17 | International Business Machines Corporation | Maximal flow scheduling for a stream processing system |
US8359347B2 (en) * | 2007-04-10 | 2013-01-22 | International Business Machines Corporation | Method and apparatus for cooperative data stream processing |
US8102836B2 (en) * | 2007-05-23 | 2012-01-24 | Broadcom Corporation | Synchronization of a split audio, video, or other data stream with separate sinks |
US8320410B2 (en) * | 2007-05-23 | 2012-11-27 | Broadcom Corporation | Synchronization of media data streams with separate sinks using a relay |
US8893204B2 (en) * | 2007-06-29 | 2014-11-18 | Microsoft Corporation | Dynamically adapting media streams |
US7945745B2 (en) * | 2007-09-17 | 2011-05-17 | General Electric Company | Methods and systems for exchanging data |
-
2009
- 2009-05-14 US US12/465,910 patent/US8286191B2/en active Active
-
2010
- 2010-05-13 CN CN201080011985.8A patent/CN102349056B/zh active Active
- 2010-05-13 WO PCT/US2010/034714 patent/WO2010132666A1/en active Application Filing
- 2010-05-13 CA CA2755317A patent/CA2755317C/en active Active
- 2010-05-13 MX MX2011010795A patent/MX2011010795A/es active IP Right Grant
- 2010-05-13 JP JP2012511012A patent/JP5420065B2/ja active Active
Patent Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101248416A (zh) * | 2005-08-24 | 2008-08-20 | 诺基亚公司 | 组件架构 |
Non-Patent Citations (1)
Title |
---|
Bugra Gedik et al.spade:the system s declarative stream processing engine.《SIGMOD"08》.2008,1123-1134. * |
Also Published As
Publication number | Publication date |
---|---|
MX2011010795A (es) | 2011-10-28 |
JP5420065B2 (ja) | 2014-02-19 |
CA2755317C (en) | 2017-09-19 |
US20100293301A1 (en) | 2010-11-18 |
CA2755317A1 (en) | 2010-11-18 |
JP2012527054A (ja) | 2012-11-01 |
WO2010132666A1 (en) | 2010-11-18 |
US8286191B2 (en) | 2012-10-09 |
CN102349056A (zh) | 2012-02-08 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN102349056B (zh) | 动态组合数据流处理应用程序 | |
Kovacs et al. | Standards-based worldwide semantic interoperability for IoT | |
CN105677875B (zh) | 一种基于标准数据元素统一约束的可视化建模平台 | |
US20150227617A1 (en) | Extensible device object model | |
Mohanty | Big data: An introduction | |
Vandana et al. | Semantic ontology based IoT-resource description | |
Flahive et al. | A methodology for ontology update in the semantic grid environment | |
Ouyang et al. | Semantic enrichment of object associations across federated BIM semantic graphs in a common data environment | |
Borrmann et al. | AEC Digital Twin Data-Why structure matters | |
Meisen et al. | Adaptive information integration: Bridging the semantic gap between numerical simulations | |
Mahapatra et al. | Graphical flow-based spark programming | |
Babovic et al. | Novel system architectures for semantic-based integration of sensor networks | |
US10853366B2 (en) | Cooperative expression visitors | |
Schmatz et al. | An interface to heterogeneous data sources based on the mediator/wrapper architecture in the Hadoop ecosystem | |
Cushing et al. | Automata-based dynamic data processing for clouds | |
Nonnemann et al. | A characterization of data exchange between visual analytics tools | |
Abidi et al. | Towards an Environment for doing Data Science that runs in Browsers | |
Santhar et al. | Self-describing Digital Assets and Their Applications in an Integrated Science and Engineering Ecosystem | |
Lim et al. | Solving optimization problems in Nimrod/OK using a genetic algorithm | |
CN112925655B (zh) | 划分服务的解耦系统及其方法 | |
Jacquet et al. | Blackboard rules for coordinating context-aware applications in mobile ad hoc networks | |
Prisciantelli | StreamWARE: enabling efficient stream processing in FIWARE | |
Merilinna et al. | Bridging the gap between the quality requirements and implementation | |
Narsimha | Scaling effectivity of research contributions in distributed data mining over grid infrastructures | |
Palacios et al. | Semantic Context Broker Tool |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant |