对于事件流数据管理的统一的窗口支持的制作方法

文档序号:6606059阅读:175来源:国知局
专利名称:对于事件流数据管理的统一的窗口支持的制作方法
技术领域
本说明书涉及事件流数据管理。
背景技术
在传统的数据库和数据管理系统中,数据以基本上静态的形式存储在一个或多个 计算机存储器内。也就是说,数据一般在期望时可以改变,但是在任何给定的时刻,所存储 的数据代表离散的、静态的、有限的、永久的、可以对其例如发出查询的数据集。但是,在许多设置中,可能不能以这种方式来有效地或有益地管理数据。具体来 说,可能发生数据基本上连续地到达,像与例如真实世界的事件对应的数据点流那样。因 此,已经开发了数据流管理系统(DSMS)以有效地利用这样的数据。例如,代表特定股票的价格的数据一般会随着一天的过程而波动,并且数据流管 理系统可以例如在相等的时间间隔或随着价格变化而连续地接收更新后的股票价格。这样 的数据流的其它示例包括由传感器收集的温度或其它环境数据、计算机网络分析、在医院 收集的病人健康数据、或描述制造过程或其它商业过程的数据。因为这样的数据流可能以快速和/或不可预测的方式或许从分布的不同种类的 源接收到,并且可能是随时间变化的和基本上无界限的,所以它们提出了对包含的数据的 有效使用和处理的挑战。这样的挑战可能由现有数据流管理系统的语法、语义及其它数据 处理方面的不一致而加剧。

发明内容
根据一个一般方面,一种包括记录在计算机可读介质上的指令的计算机系统可 以包括查询处理器,该查询处理器被配置为从流应用接收要对包括代表事件的多个元组 (tuple)的数据流应用的查询。所述系统可以包括流窗口管理器,被配置为以定义包括元 组的子集的窗口的规范(specification)来表达所述查询,该规范将所述窗口的内容定义 为具有通过其来指定所述内容的范围属性的元组的范围,使用指定窗口随时间相对于所述 内容的移动的同步属性来定义何时更新所述窗口,并且使用指定何时执行对所述窗口的内 容的评估的评估属性来定义所述评估。所述系统可以包括查询翻译器,被配置为翻译查 询,包括将范围属性、同步属性和评估属性映射为数据流管理系统(DSMS)的流处理语言, 从而获得翻译后的查询;和DSMS中介体(mediator),被配置为将翻译后的查询提供给DSMS 以用于对其进行处理。实施方式可以具有以下特征中的一个或多个。例如,所述系统可以包括结果管理 器,被配置为从DSMS接收查询结果并且将该结果提供给所述流应用。所述范围属性可以包 括元组的数目的规范、时间的规范、数据流的一个或多个字段的规范、和/或检测到的与所 述元组相关联的模式的规范。所述同步属性可以包括元组的数目的规范、更新所述窗口的 时间的规范、和/或检测到的与所述元组相关联的模式的规范。所述评估属性可以包括所 述元组中的一个或多个的规范、评估所述窗口的时间的规范、和/或检测到的与用于触发
4所述窗口的评估的元组相关联的模式的规范。所述查询翻译器可以包括编译器,被配置为解析所述查询,并且还可以被配置为 选择与DSMS相关联的查询语言相关联的映射表并且利用该映射表执行经解析的查询的映 射,以提供所述查询的语法翻译、语义翻译和行为翻译以获得翻译后的查询。数据流可以包 括被表达为关系数据流或XML数据流或者它们的组合的一个或多个数据流。根据另一个一般方面,一种计算机实现的方法可以包括从流应用接收要对包括 代表事件的多个元组的数据流应用的查询,以及以定义包括所述元组的子集的窗口的规范 来表达所述查询,该规范将所述窗口的内容定义为具有通过其来指定所述内容的范围属性 的元组的范围,使用指定窗口随时间相对于所述内容的移动的同步属性来定义何时更新所 述窗口,并且使用指定何时执行对所述窗口的内容的评估的评估属性来定义所述评估。所 述方法可以包括翻译所述查询,包括将所述范围属性、同步属性和评估属性映射为数据流 管理系统的流处理语言,从而获得翻译后的查询;以及将翻译后的查询提供给所述数据流 管理系统以用于对其进行处理。实施方式可以包括以下特征中的一个或多个。例如,所述方法可以包括从DSMS接 收查询结果并且将该结果提供给所述流应用。所述翻译查询可以包括解析所述查询,选择 与DSMS相关联的查询语言相关联的映射表,并且利用该映射表执行解析的查询的映射,以 提供所述查询的语法翻译、语义翻译和行为翻译以获得翻译后的查询。根据另一个一般方面,一种计算机程序产品可以被有形地包含在计算机可读介质 上,并且可以包括在执行时被配置为使数据处理装置执行以下步骤的指令从流应用接收 要对包括代表事件的多个元组的数据流应用的查询,以及以定义包括所述元组的子集的窗 口的规范来表达所述查询,所述规范将所述窗口的内容定义为具有通过其来指定所述内容 的范围属性的元组的范围,使用指定窗口随时间相对于所述内容的移动的同步属性来定义 何时更新所述窗口,并且使用指定何时执行对所述窗口的内容的评估的评估属性来定义所 述评估。所述指令在被执行时可以被配置为运行所述数据处理装置以翻译所述查询,包括 将所述范围属性、同步属性和评估属性映射为数据流管理系统的流处理语言,从而获得翻 译后的查询;以及将翻译后的查询提供给所述数据流管理系统以用于对其进行处理。实施方式可以包括以下特征中的一个或多个。例如,所述指令还可以使得所述数 据处理装置从DSMS接收查询结果并且将该结果提供给所述流应用。所述指令还可以使得 所述数据处理装置翻译所述查询,包括解析所述查询,选择与所述DSMS相关联的查询语言 相关联的映射表,并且利用该映射表执行解析的查询的映射,以提供所述查询的语法翻译、 语义翻译和行为翻译以获得翻译后的查询。在附图和下面的说明书中阐述一个或多个实施方式的细节。其它特征将从说明书 和附图以及从权利要求书中变得清楚。


图1是对于事件流数据管理的统一的窗口支持的系统的框图。图2是示出了图1的系统的示例操作的流程图。图3是用于图1的系统中的数据流和相关窗口定义的时序图。图4是图1的系统的替换实施方式的框图。
图5是图1的系统的另一个替换实施方式的框图。图6是图5的翻译器的框图。图7是示出了图1和图4-6的系统的示例操作的流程图。图8A-8E是示例数据流和特定的窗口定义的框图。图9是示出了其中可以实现图1和图4-6的系统的示例情形的框图。
具体实施例方式图1是对于事件流数据管理的统一的窗口支持的系统100的框图。在图1的示例 中,数据流查询中介体102位于数据流管理系统(DSMS) 104和流应用106之间,并且提供用 于翻译或调节DSMS 104和流应用106之间的交互的统一、完整的框架。结果,数据流查询 中介体102可以用作使得流应用106在DSMS 104的不同的示例之间可移植、并且使得流应 用106使用单一、统一的语言(例如,语法和语义)来指定与DSMS 104的一个或多个示例 的交互的中间件。用这种方法,流应用106的用户可以以简单可靠的方式而不用必须学习 多个语言来执行就体验到DSMS 104的一个或多个示例的益处。换句话说,数据流查询中介 体102可以用作现有数据流管理系统104上的网关(gateway),并且可以为不同种类的数据 输入、查询和事件处理提供例如单一标准的API和语言。如下所述,这样的标准的API和语 言实际上可以由需要流分析的所有这样的流应用106使用。在图1中,可以看出,可以在流应用106处从用户或者其它系统/服务接收诸如连 续的查询之类的查询108,并且可以看出,反过来可以提供例如经流化的结果110和/或存 储的结果112。可以相对于数据流源114的数据流而执行查询108,该数据流在图1中被示 出为在DSMS 104处接收。如图所示,数据流中的至少一些数据可以被存储在存储数据的数 据库116中。如图1所示并且如下所述,也可以在流应用106处或在数据流查询中介体102 处接收来自于数据流源114的一些或所有数据流。DSMS 104可以代表修改的、传统的、或基本上传统的DSMS。因而,也可以使用其它 传统名称,诸如(BEPS)商业事件处理系统、SPE(流处理引擎)或CEP(复杂事件处理)来 指代DSMS 104。在任何情况下,可以将DSMS 104理解为代表接收一个或多个数据流源114 的数据流或与一个或多个数据流源114的数据流交互的系统。如上所述,已知这样的数据流存在于各种环境和设置中。为了仅仅给出几个示例, DSMS 104可以接收代表网络监视、网络业务工程、电信呼叫记录、金融应用、传感器网络、制 造过程、网络日志和点击流、以及以处理大量数据的方式流化的大量数据集(发生在其内 或相对于其发生的事件)或与之相关联的数据流。因而,这样的数据流可以出现在企业(大 型或小型)中、政府部门内和跨政府部门间、大型与科学相关的协作单位、图书馆(数字的 或其它)、战场或“智能”家庭中。如我们所知,这样的数据流可以是连续的、无界限的、快速的、有噪声的和随时间 变化的。此外,这样的数据流可以例如在它们的形式/格式方面和/或对于数据流源自的 源而不同。例如,接收到的数据可以是关系116(例如,表示为类似于传统的关系数据库的 关系数据)或XML 118(例如,表示为可扩展标记语言(XML)数据)。因此,处理流化的关系 和XML数据二者、组合他们、并以两种格式的任一组合公布结果可能是必需的。例如,可能发生消费者订单未被正确交付。涉及的应用(其中的一个或多个可以代表流应用106、数据流源114/118/120)可以包括企业资源规划(Enterprise Resource Planning,ERP)应用、顾客人际管理(CustomerRelationship Management,CRM)应用、商业 智能(Business Intelligence, Bi)应用和 / 或数据仓库(data warhouse, Dff)应用。ERP 应用可以提供关系数据流而BI应用可以提供XML数据流。CRM可能需要接收与订单接收、 订单装配、订单交付或提供订单的其它方面有关的事件,以便能够确定问题的原因并且与 顾客交互以处理顾客对于错误的订单的担扰。因而,如这里所述,系统100帮助提供一个集 成平台,其可以以实时方式从这样不同的异类信息资源识别事件和模式。为了能够获得期望的数据/结果110/112,流应用的用户必须能够以容易理解和 便利的方式以及以输出期望的结果的方式指定该查询108。例如,如果用户期望股票的平均 股票价格,该价格从遵循价格的大于的任意变化的十个后续价格确定而来,则用户必须 能够这样指定。可以理解,在这种情况下并且在相似的情况下,用户可能试图指定这样的期 望但是可能没有正确地这样做。在这种情况下,用户可能接收不正确的结果110,然而用户 可能不知道结果是不正确的。因此,重要的是,用户能够以可预测的、正确的方式指定查询 108。在图1中,流应用106被示出为包括图形用户界面(⑶I) 122,用户可以利用⑶I 122提交查询108。当然,⑶I 122仅仅是示例,并且可以理解,可以使用其它的查询输入技 术。⑶I 122可以是与数据流查询中介体102有关的专门的⑶I,或者可以是与流应用106 有关的另外标准的GUI。查询108也可以从单独的应用或源接收到并且从该应用或源提供 给流应用106。可以使用统一的窗口语义124构造查询108,该统一的窗口语义124在图1中被 示出为与流应用124有关,但是可以另外或可替换地与数据流查询中介体102和/或DSMS 104有关。在此情况下,下面将详细描述的术语窗口是指接收到的数据流的离散的、限定的 节或部分,用户期望查询将通过(针对)所述数据流来进行评估。因而,窗口指定来自另外 的无界限的数据流中的最近事件、项目或其它离散的元素(在这里被称为“元组(tuple)”) 的有限集合。此有限部分的流随后用于评估该查询并且产生与该时刻对应的结果。随着时 间推进,新的项可以包括到该窗口中,这以旧的元组停止参与计算为代价(并且或许会被 一起丢弃)。一般说来,可以期望窗口以跟上数据项的连续到达的规定模式演化。例如,关 于接收到的数据流的一个简单窗口可以指定“最近的10个事件”或“最近10秒的所有事 件”或“在类型1事件和类型2事件之间发生的所有事件”。除了这样简单的示例以外,可以理解,存在可以被指定的许多种类的窗口,这样的 窗口可以随时间或响应于一些事件而变化或更新(例如下面参考图3和图8A-8E提供不同 窗口的示例)。如下所述,存在现有DSMS语言,每种DSMS语言提供用于指定数据流的窗口 的语义和语法。因此,由于这些语言的语义和语法可能是困难的或使用起来不直观,并且由 于用户必须精通与为了与DSMS的不同示例交互可能所需要的这些不同的语言一样多的语 言,因此用户指定期望的窗口并获得期望的结果可能是困难的。在图1中,数据流查询中介体102连同UWS 124 一起可以用来为各种异类的事件 信息资源以及标准的查询/窗口规范语言提供集成以执行各式各样的查询。因而,数据流 查询中介体102提供集成至少两种上述事件流(关系和XML流)的表示法并且利用一般的 窗口规范(UWS 124)支持统一的事件处理的框架。UWS 124在语义上是清楚的并且易于理解,并且可以用来表达所有的传统窗口类型,并且可以被扩展以指定新的或将来的窗口。此 外,数据流查询中介体102可以将UWS 124中表示的查询翻译成许多不同类型的DSMS 104 的其它供货商专用的流处理语言。因而,数据流查询中介体102可以包括查询处理器126,其被配置为从要针对数据 流(例如,来自于流数据源114)应用的流应用106接收查询108,其中该数据流可以包括代 表事件的多个元组。查询处理器126可以代表或包括用于与流应用106交互的应用编程界 面(API)的全部或一部分。因而,可以构造不同的流应用以与单个查询处理器126交互,但 是仍然可以与DSMS 104的不同示例交互(或在DSMS 104的不同示例之间可移植)。数据流查询中介体102还可以包括流窗口管理器128,其被配置为以定义包括该 元组的子集的窗口的规范(例如,UffS 124)表达该查询108。内容图控制器130可以用来 定义窗口的内容,包括使用范围属性来指定元组的范围的范围控制器132,其中内容通过范 围属性来指定;和使用同步属性来定义何时更新该窗口的演化控制器134,其中同步属性 指定窗口相对于其内容随时间的移动。然后,评估控制器136可以用来使用指定何时执行 对窗口的内容的评估的评估属性来定义该评估。例如,下面参考图3提供控制器130-136 的特定示例和它们的效果。查询翻译器138可以被配置为翻译该查询,包括将该范围属性、同步属性和评估 属性映射为DSMS 104的流处理语言,从而获得翻译后的查询。DSMS中介体140可以被配 置为将翻译后的查询提供给DSMS 104以用于对其处理,并且结果管理器142可以被配置为 从DSMS 104检索结果并且将它们提供给流应用106。例如,DSMS中介体140和结果管理器 142可以是API的一部分,其像查询处理器126 —样,被配置为与流应用106交互并且确保 建立的流应用的可移植性,或被配置为在DSMS 104的不同示例之间使用UWS 124。因而,UffS 124和数据流查询中介体102提供便于学习和使用并且被广泛应用于 许多不同的数据流管理系统之间的流查询语言。如果这里没有特别说明的话,这样的流查 询语言可以基于、或可以使用现有的语言或语言结构。例如,流查询语言可以基于用于现有 数据流管理系统中的开放SQL,该开放SQL从用于传统数据库的公共语言扩展得来并且用 作该公共语言。由于这样的语言是已知的,因此这里不再对它们进行详细的描述。相反,本 说明书一般教导指定有关数据流的操作,并且具体来说,针对窗口规范(诸如UWS 124中) 的语义和语法。在图1中,UWS 124基于使用控制器132、134、136的三个参数(即,基础元组的范 围(广度)、演化(同步)和评估)的窗口规范。因而,这样的规范可以被认为是3E策略或 框架(广度/演化/评估)。在这些语义中,可以使用以下术语和命名。具体地说,由范围控制器132支配的广度策略可以被称为α策略,并且可以指定 与哪些元组有关的窗口内容的部分包括在该窗口中。演化策略可以由演化控制器134支 配,并且可以被称为β策略,并且用于指示窗口内容的另一个方面,例如窗口诸如随时间 或响应于一些事件演化或更新的方式。最后,评估策略可以由评估控制器136支配并且可 以被称为χ策略,并且可以指示窗口的评估频率或窗口的其它评估特征。因而,α策略指示窗口的“范围”,其可以被表达为,例如,或者包括在其中的元组 的数目,或者跨越其内容的时间间隔。例如,可以以逻辑单位测量窗口的范围,诸如以这里 描述的时间戳值。因此,基于时间的窗口可以从跨越它的内容的时间间隔导出。也可以使
8用物理单位,指定落入窗口的边界内的元组的数目。示例变体包括基于元组的和经划分的 窗口,如这里所述的。在其它示例中,更灵活的规则可以用来检测更复杂的事件。例如,模 式识别可以用于α策略中以获得模式或基于模式的窗口(诸如复发事件、交替事件或其它 模式)。β策略根据时间推进、元组到达或指定的事件发生来指示模式的调整。因而,此 特性确定窗口是否随时间改变它的状态以及怎样改变。窗口一般要么由于新的流元组的到 达,要么由于时间的推进,渐进地改变它的内容。因此,可以在不同情形下执行窗口的任意 两个连续的状态之间的转换。例如,在单位步骤中,窗口的边界平滑地、一次一个元组、或在 每个离散时刻(假定存在全局时钟)推进。在跳跃中,可以跨越多个时刻或特定数目的元 组。根据此跳跃大小是小于还是大于窗口大小,可以分别创建重叠或不重叠的窗口广度。在 事件触发器中,可以在指定的事件发生时更新窗口内容。许多使用情况可以使用此窗口来 检测复杂的事件模式。例如,可以在股票价格大于某一价格时更新窗口。如图1所示,分别由范围控制器132和演化控制器134控制的α策略和β策略 二者都是在任意给定时间窗口的内容的控制方面的一部分。另一方面,评估控制器136定 义什么在这里被称为χ策略,其与引起窗口内容的指定的使用或分析的单独的时间、事件 或其它触发器的规范有关。可以简单地对于由演化控制器134引起的窗口更新来定义评估,即每当窗口内容 变化时就引起窗口内容的评估。但是,与演化策略分开来定义评估策略提供了许多益处。 具体地说,例如,这样的策略定义使得能够对数据流进行压缩的(condensative)查询处理 (例如,诸如减少或压缩来自于窗口的信息量的SUM(求和)操作)。这样的策略使得能够 产生高效连续的查询计划并且可以用于验证查询优化,特别是在块查询操作(诸如JOIN) 中。这样的策略还以说明性的方式提供了容易的方式来支持诸如混合跳动窗口、采样窗口 之类的复杂的窗口类型以及甚至更复杂的窗口类型,下面将更详细地进行描述。这里,可以理解,一般说来,用帮助建立流项目之间的顺序的窗口属性来实现窗口 规范,窗口属性可以典型地包括时间戳或其它时间顺序属性。作为对时间戳的添加或替换, 任意单调序列的数字可以用来充当对元组排序的手段,例如,元组到达顺序或附着于每一 元组的唯一的序列号。即使使用时间戳,也可能发生多于一个元组会在相同的时间戳到达, 以使得元组到达顺序(被称为内部等级)还可以用来区分这些同时的元组之间的顺序。然 后,时间戳和内部等级可以一起定义流的总顺序(这里称为外部等级)。因此,在下文中,时 间戳和外部等级属性(分别表示为ts和rank)可以用来获得对策略P的元组资证。在本说明书中,以下语法和语义用作使用UWS 124实现图1的数据流查询中介体 102的示例。具体地说,窗口可以用以下表述来指定WINDOWwindow_identifier(RANGEa_ value[RATTR]{TUPLE(S) |TIME|ON FIELDfield|PATTERN patterns} ; [PARTITION BY fieldlist]SYNC β _value[SATTR]{TUPLE(S) TIME|WHEN conditionl} ; [EVALUATE χ _ value[EATTR]{TUPLE(S)|TIME|WHEN condition〗}])。在前面的表述中,RANGE (范围)是指由范围控制器132所定义的窗口的内容,如已 经在前所述的那样,其定义一种定义什么数据应该包括在该窗口中的策略,因此RATTR(范 围属性)是通过其来指定RANGE的属性。这样的属性可以包括TUPLE(S)、TIME或ON FIELD, 如前所述。在后一示例中,PARTITION BY标识用于将呼入元组分组的字段。亦如上所述,PATTERN(模式)标识元组的模式或可以用来定义窗口内容的其它事件或发生的模式。SYNC(同步)是指由演化控制器134控制的窗口的演化,并且定义窗口移动的步 骤,即何时更新该窗口的内容。然后,SATTR(同步属性)是通过其指定SYNC的属性,并且 可以包括TUPLE⑶、TIME、和/或WHEN(例如,事件的模式指示何时更新该窗口)。EVALUATE是指由评估控制器136控制的、应用于窗口的评估和计算频率。然 后,SATTR(评估属性)是通过其指定SYNC的属性,并且可以包括TUPLE(S)、TIME、和/或 WHEN(例如,指示何时评估窗口并提供结果的模式)。实际上可以使用图1的技术表达各种窗口,包括已知的窗口类型(例如,下面参考 图3和图8A-8E提供其示例)。此外,当新创建的窗口类型变得可用时,该方法可以容易地 用来表达新创建的窗口类型。因而,图1提供用于指定并执行针对数据流的查询的系统和方法。如图1所示,可 以将数据流查询中介体102实现在计算设备144上,该计算设备144实际上可以代表具有 该实施方式所需的相关硬件(例如,处理器、存储器或显示设备)和软件的任意传统的计算 设备。尽管在图1中仅仅示出了使用计算设备144执行数据流查询中介体102,但是可以理 解,也可以在其上或者在单独的计算设备上执行DSMS 104和/或流应用106,图1中没有详 细示出。在后一种情况下,各种单独的计算设备可以经由诸如因特网或特定的(例如,企业 宽网)网络之类的网络而彼此通信。例如,流应用106可以本地运行在客户端计算机上,而 计算设备144可以代表执行数据流查询中介体102和DSMS 104 二者的远程服务器计算机。 其它配置对本领域技术人员应是显而易见的。图2是示出了图1的系统的示例操作的流程图200。在图2中,以连续顺序示出了 操作。但是,可以理解,这样的图示是为了示例,并且如果不特别需要,操作可以实际上完全 或部分以并行方式或重叠方式或者以与所示的顺序不同的顺序执行。在图2中,可以接收要针对包括代表事件的多个元组的数据流应用的查询(202)。 例如,查询处理器126可以从流应用106接收使用UWS 124指定的、对于诸如下面参考图3 描述的数据流的查询108,如图1所示。具体地说,可以使用定义包括该元组的子集的窗口的规范表达该查询,该规范将 该窗口的内容定义为具有范围属性的元组的范围,所述内容通过该范围属性指定,使用指 定该窗口随时间相对于内容的移动的同步属性定义何时更新该窗口,并使用指定何时执行 对该窗口的内容的评估的评估属性定义该评估(204)。例如,流窗口管理器128可以用来实 现范围控制器132、演化控制器134和评估控制器136以指定所述属性,如这里所述。查询可以被翻译,包括将该范围属性、同步属性和评估属性映射为数据流管理系 统的流处理语言,从而获得翻译后的查询(206)。例如,查询翻译器138可以用来执行该翻 译,下面参考图5和图6进行详细的描述。可以将翻译后的查询提供给数据流管理系统用于对其进行处理(208)。例如,DSMS 中介体140可以将翻译后的查询提供给DSMS 104,如图1所示并且这里详细描述的。图3是用于图1的系统中的数据流300和相关窗口定义的时序图。具体地说,图 3为了示意提供了一个简单的示例,其中使用上述的语法和语义将窗口 302(在图3中被示 出为随时间演化为窗口 302a-302d)定义为 RANGE5TUPLES、SYNCH 2TUPLES、EVALUATE WHEN EVENT a OR b。也就是说,如图所示,由范围控制器132控制的窗口 302a的范围或广度是
105个元组长,其是常数并且贯穿所有窗口 302a-302d都是一致的。但是,包括在各个窗口 302a-302d的每一个中的特定的5个元组随时间变化,因为该窗口具有每2个元组发生新的 同步(SYNCH)的演化。然后,当事件a304和后面的事件b306发生时可以发生评估。例如,如果数据流300代表股票价格流,其中每一元组是当时的特定价格,则该评 估可以是使用该窗口 302的5个元组的股票价格的平均。每当两个新的股票价格到达时, 窗口 302就移动(例如,从窗口 302a到窗口 302b)。事件a304可以代表触发平均值的计算 的第一股票价格。例如,当事件a304指示股票价格已经到达第一触发价格时,评估控制器 136可以计算窗口 302b内的5个元组的平均值。然后,该窗口可以在更新到窗口 302d和到 达第二事件b306以前更新到窗口 302c,第二事件b306可以代表用于评估窗口 302d内的5 个元组的平均价格的第二触发价格。然后可以看到,只有当期望时才可以执行实际的计算 (评估),以使得不必在每当窗口更新时都执行计算。此外,可以以确保仅仅捕获期望的元 组并且可以灵活地定义期望的元组以及它的评估的、容易、直观的方式指定窗口 302。图4是图1的系统的替换实施方式的框图。在图4中,为了示例,将各种不同种 类的数据源示出为包括信息技术(IT)基础设施402、企业信息系统404、数据库管理系统 (DBMS)406、服务408和网络应用410。这样的数据源是公知的,并且这里不再详细说明,除 了将它们标识为可以提供各种格式和方式数据的数据源,而传统的系统可能难于以容易和 集成的方式使用这些数据,但是图1和图4的系统可以以综合、直观和直接的方式来使用。具体来说,图4示出了商业事件集成框架(BEIF) 444。BEIF 444可以代表或与图 1的数据流查询中介体102的组件以及这里描述的附加或替换组件有关。因而,各种数据源402-410可以如上所述输出关系和/或XML数据,并且可以使用 各种已知的(例如,供货商专用的)格式、协议、语法和语义这样做。因此,可以包括包装器 412-418作为BEIF 444内的公共商业事件适配器(CBEA)420。因而,CBEA 420提供各种包 装器(wrapper) 412-418来存取不同种类的事件数据源402-410。为了从外部数据源存取数 据流,CBEA420可以使用包装器412-418来处理来自于各种外部数据源402-418的数据流, 其可以包括例如对关系数据库的基于JDBCCJava数据库连接)的存取、对XML文件、ERP系 统、网络服务或因特网应用的访问,如图所示。包装器412-418可以包括具有专门设备的CBEA 420中的程序模块,包括对外部数 据库的一个或多个接口以获得元数据(诸如图式定义)和数据二者。一旦包装器已被定义 用于特定种类的源,CBEA 420就知道如何处理任意流查询或查看对所有这样的源的定义。使用事件空间422来高速缓存已格式化的事件数据并执行一些预处理计算,诸如 例如有效的事件属性附加或无序处理。如图所示,事件空间422可以高速缓存关系数据流 424和/或XML数据流426。然后,处理空间428可以包括与事件空间422交互的多个组件。例如,可以使用元 数据管理器434来管理存在于BEIF 444中的所有元数据,包括全局/局部图式、事件规范 和流规范。基于窗口的查询模型(WBQM)436类似于图1的UWS124和/或与之有关,因而与 提供标准数据流和查询模型有关。查询翻译器(QT)440可以用来将标准的流语言解析并翻译成不同的供货商专用 的流语言,如这里所述。例如,这样的供货商专用的流语言可以包括CoralS CCL, Esper EPL、StreamBase, StreamSQL和扩展的XQuery。事件处理调度器(EPS)442为用户定义的流查询制订计划,并在考虑并行查询处理的同时执行调度优化。然后,EPS 442可以将用 户查询和事件流一起发送到各种DSMS产品,诸如例如StreamBase、Oracle CEP、Coral8或 Truviso0同时,处理知识库(PKB)438提供对事件处理的必要的了解,包括例如商业背景、 领域知识、事件相关信息和翻译知识。存储在PKB 438中的知识可以被存储为可以被BEIF 444的其它组件有效使用的许多规则。事件查询图设计器(EQGD)432可以用来为用户或应用提供用于定义商业事件模 式的可视化工作台。例如,EQGD 432可以与图1的⑶I 122有关,以使得用户可以容易地 定义用于定义或评估期望的窗口的期望的字段、事件或模式。商业事件发布器(BEP) 430提 供商业事件输出适配器以与最终消费者446联系,最终消费者446在显示的示例中诸如是 商业用户和应用、代理人、数据仓库、商业过程或企业控制板。因而,如上参考图1-3所述,交互可以发生在流应用(例如,446或106)、BEIF框架 444和流处理系统(例如,图1的DSMS 104)之间,其中流应用和DSMS仅与BEIF 444对话。 具体地说,在第一种情况下,应用可以以这里描述的标准的流语言将流查询建模,并且BEIF 444创建用于提交的查询的本地元数据然后使用必要的语言翻译方法将它们转发给目标流 处理系统。然后,应用可以将数据流馈送给BEIF 444(其可以选择性地使得数据持久)然 后将数据转发给下层的流处理系统。当该下层的流处理系统检测到预定义的事件时,BEIF 444就将该事件翻译给该应用并且使得结果通过必要的API可用。例如,应用可以经由标 准的API(诸如,增强的JDBC)提交查询。因而,可以将流查询翻译成供货商专用的语言, 并且可以将翻译后的查询通过适当的包装器412-418发送给下层的流处理系统,该包装器 412-418通过供货商专用的API驱动该下层系统。如上所述,数据流查询中介体102 (例如,BEIF 444)可以用来使得流应用可在下 层技术平台(诸如事件处理系统、数据库和操作系统)之间移植。对于这样的跨多个关系 数据库的可移植性,BEIF 444使用Open SQL作为SQL标准语言的变型,其中下层DBI (数 据库接口)层使用供货商专用的DBSL库向下层数据库进行必要的映射。BEIF框架444定 义SQL的扩展用于流处理,在流处理中在解析/翻译时使用和标识可用的流语言的公共特 征子集。如前所述,下面参考例如图5和图6提供这样的翻译的示例。图5是图1的系统的另一个替换实施方式的框图。在图5中,集成框架502提供 图1的数据流查询中介体102的示例实施方式,因此与DSMS 504(在图5中示出为包括复 杂事件处理(CEP)引擎、Corel 8 DSMS产品、和/或流库DSMS产品中的一个或多个,所有 这些仅仅作为非限制示例而包括在其中)的一个或多个示例通信。具体地说,流应用506 将要针对事件510的数据流应用的UWS查询508格式化,并且将该查询转发给集成框架502 的查询界面512。如上所述,查询界面512可以至少包括API和基于查询语言的统一窗口规范(UWS) 这两个组件或与它们关联。例如,API可以包括JDBC的增强版本,具有一些有利于处理查询 508的附加特征。例如,这样的特征可以包括事件馈送(其允许用户将输入事件馈送到系统 中)、事件订阅(其允许用户得到事件510内某些种类的检测到的复杂事件的通知)、查询 提交(其允许用户提交以基于UWS的查询语言撰写的查询)、和查询管理(其允许用户收集 提交的查询的运行时间信息和状态以及对该查询执行一些管理操作(例如,暂停、停止、更 新))。
12
例如,可以将诸如这里描述的基于统一窗口语义(UWS)的查询语言通过一些特定 于基于UWS的事件流处理的附加特征,构造并实现为对标准的SQL的扩展。这样的特征可 以包括例如流声明和窗口定义二者。在这点上,流声明可以是指例如输入事件的源、中间事 件队列和输出事件的连接点的说明。也可以在流声明中定义事件的图式。前面已经描述的窗口定义用来利用统一的窗口语义定义关于事件流的窗口。关 于流的窗口可以被看作是随时间变化的关系,其中由UWS明确地描述窗口的演化和评估行 为,如这里所述。多个基于SQL的事件流查询语言存在于现有技术中并且在流声明上可以是相似 的。因此,为了清楚简要,这里不包括流声明的示例实施方式的细节,但是它们对本领域技 术人员是显而易见的。相反,大多数或所有现有事件流查询语言差异显著但是常常精细地依据窗口定 义。利用这里描述的统一的窗口语义,可以用统一直观的方式表达不同产品提供的各种窗 口。此外,这里描述的基于UWS的查询语言可以被翻译成供货商专用的DSMS语言,如这里 所述。因而,在图5中,在接收、合计、过滤或管理事件的联合器(federat0r)514处接 收流事件510。例如,联合器514可以负责确定一些数据是否被存储在永久数据存储器 (persistent data store) 522中以及多大范围。这样的联合器的示例在本领域中是已知 的,并且图5示出了这样的联合器可以被如何扩展或以其它方式在这里描述的统一窗口语 义的背景下使用的示例。此外,如这里所述,翻译器516可以被配置为将UWS查询508翻译成DSM特定的查 询。翻译后的查询和/或流事件510的优化可以发生在优化器518处,并且由执行器520 作为翻译后的查询524和事件526转发。如图所示,示例DSMS系统504中适当的一个可以 接收翻译后的查询和事件526,并且返回结果528,然后该结果可以由执行器520和/或查 询界面512发送到流应用506作为结果530。下面将参考图6详细描述翻译器516。一般说来,可以理解,这样的翻译可以包括 语法、语义和/或行为的翻译。语法翻译一般是指具有直接对应的目标方言的语句的UWS 语言/模型的语句的交换。语义翻译一般是指不具有直接对应的语句但是可以用目标方言 的某种其他方法表达的语句。最后,行为翻译一般是指不同的系统在执行相同的语句时可 以具有不同的行为的事实。例如,用于无效结果的语句在一种语言中可以输出实际的无效 结果,但是在另一种语言中可以根本没有返回结果。翻译器516也可以包括校验该翻译的 功能,例如以执行原始的和翻译后的查询的至少一部分并比较结果。举例来说,60秒持续时间的基于时间的滚动窗口(下面参考图8A-8E和相关说明 定义的)可以用UWS模型表达为“RANGE 60 second TIME ;SYNC 60 second TIME ;Evaluate 60 second TIME”。在其它的流查询语言中,可以通过翻译器516不同地表达和获得相 同的窗口。例如,在CCL中,这样的窗口将被写为“KEEP EVERY 60SEC0ND ;OUTPUT EVERY 60SEC0ND”。在 StreamBase 流 SQL 中,该窗 口可以被写为 “SIZE 60ADVANCE 60TIME”。在 Esper EPL中,该窗口可以被写为“win time_batch (60)。最后,在扩展的XQuery中,该窗口 可以被写为"forseq$w in ext addTStamp ($seq) tumbling_window, start curltem$first when fn:true () ;end curltem $last when ($last/@tstamp-$first/@tstampe)eq‘P60S,。
图6是图5的翻译器516的框图。一般说来,如上所述,存在流声明翻译和窗口 定义翻译。对于前者,在许多情况下,现有工具可以用于执行翻译。例如,SQL语句可以由 YACC(另一个编译器的编译器)解析成SQL解析树。可以使用现有工具(也诸如YAXX,其 是YACC的XML扩展)将XML查询翻译成SQL。翻译器516也能够执行将窗口(具体地说是基于UWS模型的窗口)的窗口定义翻 译成供货商专用的窗口定义。翻译器516可以基于支持生成规则(例如YACC)的通用编译 器来使用解析器602。解析器602首先解析以基于UWS的查询语言撰写的原始查询,并构造 解析树。然后,翻译器516以例如可以由下层CEP引擎接受的供货商专用语言重写该查询 和窗口定义。在下面示例中,使用两种供货商专用的语言StreamSQL和CCL。当解析器602对于查询中出现的每个窗口解析原始的查询时,解析器602创建包 含该窗口的属性的结构(例如,树),包括ID 604, RANGE 606, RATTR 608, SYNC 610, SATTR 612、EVAL (UATE) 614、EATTR 616和PAR (TITION) 618。对于每种供货商专用的语言,映射表 620包含以该特定的语言支持的UWS模式和为该模式产生的语法之间的映射信息。为每个 供货商专用的语言组成的表格基于这里描述的UWS的语言和语义的特征,以由此获得供货 商专用的查询622。对于要被翻译的窗口,翻译器516利用窗口的属性和目标语言探测映射表620。如 果没有发现项,则翻译器516报告指示下层CEP引擎不支持该种窗口的错误。如果发现了 项,则翻译器516根据产生的列中的模式以目标语言构成窗口的定义。以下表格显示了以UWS和StreamSQL&CCL的一些典型种类的窗口之间的映射。例 如,下面参考图8A-8E和相关讨论提供窗口类型的示例和定义。在表1和2中,其中显示的 “ % RANGE %"和“ % SYNC %,,表示原始查询中的RANGE和SYNC的值。表1 StreamSQL的翻译示例■具有时间同步的基于时间的滑动窗口
权利要求
一种计算机系统,包括记录在计算机可读介质上的指令,该系统包括查询处理器,被配置为从流应用接收将要对包括代表事件的多个元组的数据流应用的查询;流窗口管理器,被配置为以定义包括所述元组的子集的窗口的规范来表达所述查询,该规范将所述窗口的内容定义为具有范围属性的元组的范围,所述内容通过该范围属性指定,使用指定窗口随时间相对于所述内容的移动的同步属性来定义何时更新所述窗口,并且使用指定何时执行对所述窗口的内容的评估的评估属性来定义所述评估;查询翻译器,被配置为翻译所述查询,包括将所述范围属性、同步属性和评估属性映射为数据流管理系统(DSMS)的流处理语言,从而获得翻译后的查询;以及DSMS中介体,被配置为将该翻译后的查询提供给该DSMS,以便利用DSMS对其进行处理。
2.如权利要求1所述的系统,包括结果管理器,被配置为从该DSMS接收查询结果并将该结果提供给该流应用。
3.如权利要求1所述的系统,其中所述范围属性包括所述元组的数目的规范。
4.如权利要求1所述的系统,其中所述范围属性包括时间的规范。
5.如权利要求1所述的系统,其中所述范围属性包括所述数据流的一个或多个字段的 规范。
6.如权利要求1所述的系统,其中所述范围属性包括检测到的与所述元组相关联的模 式的规范。
7.如权利要求1所述的系统,其中所述同步属性包括所述元组的数目的规范。
8.如权利要求1所述的系统,其中所述同步属性包括更新所述窗口的时间的规范。
9.如权利要求1所述的系统,其中所述同步属性包括检测到的与所述元组相关联的模 式的规范。
10.如权利要求1所述的系统,其中所述评估属性包括所述元组中的一个或多个的规范。
11.如权利要求1所述的系统,其中所述评估属性包括评估所述窗口的时间的规范。
12.如权利要求1所述的系统,其中所述评估属性包括检测到的与用于触发所述窗口 的评估的元组相关联的模式的规范。
13.如权利要求1所述的系统,其中所述查询翻译器包括编译器,被配置为解析所述查 询,并且进一步被配置为选择与所述DSMS相关联的查询语言相关联的映射表并且利用该 映射表执行解析的查询的映射,以提供所述查询的语法翻译、语义翻译和行为翻译以获得 翻译后的查询。
14.如权利要求1所述的系统,其中所述数据流包括被表达为关系数据流或XML数据流 或者它们的组合的一个或多个数据流。
15.一种计算机实现的方法,包括从流应用接收将要对包括代表事件的多个元组的数据流应用的查询; 以定义包括所述元组的子集的窗口的规范来表达所述查询,该规范将所述窗口的内容 定义为具有范围属性的元组的范围,所述内容通过该范围属性指定,使用指定窗口随时间 相对于所述内容的移动的同步属性来定义何时更新所述窗口,并且使用指定何时执行对所述窗口的内容的评估的评估属性来定义所述评估;翻译所述查询,包括将所述范围属性、同步属性和评估属性映射为数据流管理系统 (DSMS)的流处理语言,从而获得翻译后的查询;以及将翻译后的查询提供给数据流管理系统,以利用该数据流管理系统对其进行处理。
16.如权利要求15所述的方法,包括从所述DSMS接收查询结果并将该结果提供给所述 流应用。
17.如权利要求15所述的方法,其中所述翻译所述查询的步骤包括解析所述查询;选择与所述DSMS相关联的查询语言相关联的映射表;以及利用所述映射表执行经解析的查询的映射,以提供所述查询的语法翻译、语义翻译和 行为翻译,以获得翻译后的查询。
18.一种计算机程序产品,该计算机程序产品有形地包含在计算机可读介质上,并且包 括当被执行时被配置为使得数据处理装置执行以下步骤的指令从流应用接收将要对包括代表事件的多个元组的数据流应用的查询;以定义包括所述元组的子集的窗口的规范来表达所述查询,该规范将所述窗口的内容 定义为具有范围属性的元组的范围,所述内容通过该范围属性指定,使用指定窗口随时间 相对于所述内容的移动的同步属性来定义何时更新所述窗口,并且使用指定何时执行对所 述窗口的内容的评估的评估属性来定义所述评估;翻译所述查询,包括将所述范围属性、同步属性和评估属性映射为数据流管理系统 (DSMS)的流处理语言,从而获得翻译后的查询;以及将翻译后的查询提供给数据流管理系统,以利用该数据流管理系统对其进行处理。
19.如权利要求18所述的计算机程序产品,其中所述指令还使得所述数据处理装置从 所述DSMS接收查询结果并且将该结果提供给所述流应用。
20.如权利要求18所述的计算机程序产品,其中所述指令还使得所述数据处理装置翻 译所述查询,包括解析所述查询;选择与所述DSMS相关联的查询语言相关联的映射表;以及利用所述映射表执行经解析的查询的映射,以提供所述查询的语法翻译、语义翻译和 行为翻译以获得翻译后的查询。
全文摘要
数据流查询中介可以使用查询处理器,其被配置为从流应用接收要对包括代表事件的多个元组的数据流应用的查询。流窗口管理器可以被配置为以定义包括所述元组的子集的窗口的规范来表达所述查询,该规范将所述窗口的内容定义为具有范围属性的元组的范围,所述内容通过该范围属性来指定,使用指定窗口随时间相对于所述内容的移动的同步属性来定义何时更新所述窗口,并且使用指定何时执行对所述窗口的内容的评估的评估属性来定义所述评估。查询翻译器可以被配置为翻译所述查询,包括将所述范围属性、同步属性和评估属性映射为数据流管理系统(DSMS)的流处理语言,从而获得翻译后的查询。DSMS中介体可以被配置为将所述翻译后的查询提供给所述DSMS,用于对其进行处理。
文档编号G06F17/30GK101957832SQ201010227958
公开日2011年1月26日 申请日期2010年7月16日 优先权日2009年7月16日
发明者单名谦, 张锦, 闫莺 申请人:Sap股份公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1