连续数据流上的可变持续时间窗口的制作方法

文档序号:9621366阅读:407来源:国知局
连续数据流上的可变持续时间窗口的制作方法
【专利说明】
[0001] 对相关申请的交叉引用
[0002] 本申请要求于2013年1月15日提交的标题为"VARIABLE DURATION WINDOWS 0N CONTINUOUS DATA STREAMS"的美国临时申请No. 61/752, 850的权益和优先权。本申请还要 求于 2013 年 3 月 15 日提交的标题为 "VARIABLE DURATION WINDOWS ON CONTINUOUS DATA STREAMS"的美国非临时申请No. 13/838, 259的权益和优先权,该申请又要求美国临时申请 No. 61/752, 850的优先权。61/752, 850和13/838, 259申请的全部内容通过引入被结合于 此,用于所有目的。
技术领域
[0003] 所公开的实施例一般而言涉及数据处理系统,并且更具体而言涉及用于利用可变 持续时间窗口处理连续事件流的技术。
【背景技术】
[0004] 在传统的数据库系统中,数据通常以表的形式存储在一个或多个数据库中。然后, 所存储的数据利用诸如SQL的数据管理语言被查询和操纵。例如,SQL查询可以被定义并 执行,以便从存储在数据库中的数据识别相关的数据。因此,SQL查询对存储在数据库中的 有限数据集执行。另外,当SQL查询被执行时,它对有限数据集执行一次并且产生有限的静 态结果。因此,数据库最佳配备为在有限存储的数据集上运行。
[0005] 但是,众多的现代应用和系统以连续数据或事件流而不是有限数据集的形式生成 数据。这种应用的例子包括但不限于传感器数据应用、金融行情(financial tickers)、网 络性能测量工具(例如,网络监视和流量管理应用)、点击流分析工具、汽车交通监视,等 等。例如,温度传感器可被配置为发出温度读数。这种应用已经引起了对可以处理数据流 的新型应用的需求。
[0006] 管理和处理用于这些类型的基于事件流的应用的数据涉及利用强时间焦点建立 数据管理和查询能力。需要包括对连续无界限数据集进行长期运行查询的不同种类的查询 机制。虽然一些厂商现在提供针对事件流处理的产品套件,但是这些产品供应仍然缺乏处 理如今的事件处理需求所需要的处理灵活性。

【发明内容】

[0007] 本发明的某些实施例一般而言涉及数据处理系统,并且更具体而言涉及利用可变 持续时间的窗口处理连续事件流的技术。技术可以包括,例如,利用对事件数据流操作的计 算机实现的方法实现的技术,处理事件数据流的计算设备、系统或装置,存储可由一个或多 个处理单元执行的多条指令的计算机可读存储器,等等。
[0008] 在某些实施例中,事件有资格保留在基于时间的窗口中的持续时间可以对经由相 同事件流接收的不同事件变化。例如,对于经由事件流接收的第一输入事件,第一事件有资 格保留在基于时间的窗口中的持续时间可以是"X",并且对于经由相同事件流接收的第二 输入事件,第二事件有资格保留在基于时间的窗口中的持续时间可以是"Y",其中X与Y不 同。第一和第二事件可以具有相同的关联时间戳或不同的时间戳。因此,本发明的实施例 使得事件在基于时间的窗口中所花费的时间量受控。
[0009] 在某些实施例中,输入事件在基于时间的窗口中所花费的持续时间是该事件的一 个或多个属性的一个或多个值的函数。由于不同的事件可以具有不同的一个或多个属性 值,因此不同的事件可以在基于时间的窗口中花费不同的时间量。这使得事件在基于时间 的窗口中所花费的时间量能够经由该事件的一个或多个属性来控制。
[0010] 在一种实施例中,多个事件可以被计算设备经由事件流接收。例如,第一事件和第 二事件可以经由事件流接收。第一持续时间可以为第一事件确定,其中第一持续时间指示 第一事件有资格保留在为该事件流指定的基于时间的窗口中的持续时间。第二持续时间可 以为第二事件确定,其中第二持续时间指示第二事件有资格保留在该基于时间的窗口中的 持续时间,其中第二持续时间不同于第一持续时间。
[0011] 在某些实施例中,第一和第二事件可以添加到为事件流指定的基于时间的窗口。 第一事件保留在基于时间的窗口中第一持续时间,然后从基于时间的窗口除去或删除。第 二事件保留在基于时间的窗口中第二持续时间,然后从基于时间的窗口除去或删除。以这 种方式,第一事件在基于时间的窗口内所花费的持续时间可以不同于第二事件在基于时间 的窗口内所花费的持续时间。
[0012] 在上述第一和第二事件示例实施例中,第一事件可以具有关联的第一时间并且第 二事件可以具有关联的第二时间。在一种情况下,第一时间和第二时间可以相同。在第二 种情况下,第一时间可以与第二时间不同。
[0013] 在某些实施例中,事件有资格在基于时间的窗口内花费的持续时间可以基于该事 件的一个或多个属性的值。
[0014] 在某些实施例中,行-时间范围窗口可以是不同的分区。事件所属的分区可以基 于第一事件的属性的值。事件有资格在用于分区的行-时间范围窗口内花费的时间量可以 基于该事件的一个或多个属性的一个或多个值。因此,对于属于特定分区的事件,不同的事 件可以有资格在用于特定分区的行-时间范围窗口中花费不同的持续时间。
[0015] 在某些实施例中,基于与第一事件关联的第一时间和第一持续时间,可以为第一 事件计算第一到期时间。基于与第二事件关联的第二时间和第二持续时间,可以为第二事 件计算第二到期时间。在第一到期时间发生时或者之后,第一事件从基于时间的窗口被除 去或删除。同样,在第二到期时间发生时或者之后,第二事件可以从基于时间的窗口被除去 或删除。
[0016] 根据本公开内容的一方面,提供了计算设备。计算设备包括配置为确定用于第一 事件的第一持续时间的第一确定单元,其中第一事件是由计算设备经由事件流接收的,第 一持续时间指示第一事件有资格保留在为事件流指定的基于时间的窗口中的持续时间。计 算设备可以包括配置为确定用于第二事件的第二持续时间的第二确定单元,其中第二事件 是由计算设备经由事件流接收的,第二持续时间指示第二事件有资格保留在该基于时间的 窗口中的持续时间。第二持续时间可以不同于第一持续时间。
[0017] 在某些实施例中,计算设备还包括配置为在第一时间事件已经在基于时间的窗口 中第一持续时间之后从基于时间的窗口除去第一事件的第一去除单元,以及配置为在第二 时间事件已经在基于时间的窗口中第二持续时间之后从基于时间的窗口除去第二事件的 第二去除单元。
[0018] 在某些实施例中,第一事件具有关联的第一时间并且第二事件具有关联的第二时 间,其中第一时间与第二时间相同。
[0019] 在某些实施例中,第一事件具有关联的第一时间并且第二事件具有关联的第二时 间,其中第一时间与第二时间不同。
[0020] 在某些实施例中,确定第一持续时间包括基于第一事件的一个或多个属性的一个 或多个值计算第一持续时间。另外,确定第二持续时间包括基于第二事件的一个或多个属 性的一个或多个值计算第二持续时间。
[0021] 在某些实施例中,第一确定单元配置为基于第一事件的第一属性的值确定用于第 一事件的第一分区。第二确定单元配置为基于第二事件的第一属性的值确定第二事件属于 第一分区。基于时间的窗口用于该第一分区。
[0022] 在某些实施例中,第一确定单元配置为基于与第一事件关联的第一时间和第一持 续时间确定用于第一事件的第一到期时间。第二确定单元配置为基于与第二事件关联的第 二时间和第二持续时间确定用于第二事件的第二到期时间。第一去除单元配置为在第一到 期时间发生时或者之后从基于时间的窗口除去第一事件。第二去除单元配置为在第二到期 时间发生时或者之后从基于时间的窗口除去第二事件。
[0023] 以下具体描述与附图一起将提供对本发明实施例的本质的更好理解。
【附图说明】
[0024] 图1绘出了可以结合本发明实施例的事件处理系统的简化高级图。
[0025] 图2绘出了根据本发明实施例描绘用于管理可变持续时间窗口的方法的简化流 程图。
[0026] 图3绘出了根据本发明实施例可以用来实现基于可变持续时间的窗口处理的模 块和数据结构。
[0027] 图4绘出了描绘在如上所述的优先级队列用来实现基于可变持续时间的窗口的 实施例中可以由基于事件的窗口操作器(operator)执行的处理的简化流程图。
[0028] 图5绘出了根据本发明实施例描绘用于管理用于分区的可变持续时间窗口的方 法的简化流程图。
[0029] 图6绘出了根据本发明实施例描绘可以由基于时间的窗口操作器执行的用于利 用优先权队列处理用于分区的可变持续时间窗口的处理的简化流程图。
[0030] 图7是说明可以根据本发明实施例使用的系统环境的部件的简化框图。
[0031] 图8是可以根据本发明某些实施例使用的计算机系统的简化框图。
[0032] 图9是可以根据本发明某些实施例使用的计算设备的简化框图。
【具体实施方式】
[0033] 在以下描述中,为了解释,阐述具体的细节,以便提供对本发明实施例的透彻理 解。但是,应当认识到,各种实施例没有这些具体细节也可以实践。附图和描述不是约束性 的。
[0034] 描述了提供用于处理数据流的改进技术的某些实施例。事件有资格保留在基于时 间的窗口内的持续时间可以对经由相同事件流接收的不同事件变化。在某些实施例中,输 入事件在基于时间的窗口内花费的持续时间是该事件的一个或多个属性的一个或多个值 的函数。由于不同的事件可以具有不同的一个或多个属性值,因此不同的事件可以在用于 那个事件流的基于时间的窗口内花费不同的时间量。事件在基于时间的窗口内花费的时间 量可以经由该事件的一个或多个属性来控制。
[0035] 连续的数据流(也被称为事件流或事件数据流)是本质上没有明确结束的连续或 无界的数据或事件的流。在逻辑上,事件或数据的流是数据元素(也被称为事件)序列,每 个数据元素具有关联的时间戳。连续的事件流可以逻辑表示为数据元素的包(bag)或集合 (s,T),其中"s"代表数据部分并且"T"是在时间域中。"s"部分一般被称为元组或事件。 因此,事件流是带时间戳的元组或事件的序列。
[0036] 在一些实施例中,与流中的事件关联的时间戳可以等同于时钟时间。但是,在其它 实施例中,与事件流中的事件关联的时间可以由应用域定义并且不对应于时钟时间,但是 可以例如代替地由序列号表示。因此,与事件流内的事件关联的时间信息可以由表示时间 序列的符号的数字、时间戳或者任何其它信息表示。对于接收输入事件流的系统,事件按增 大的时间戳的次序到达系统。可以有多个一个具有相同时间戳的事件。
[0037] 在一些实施例中,事件流中的事件可以代表一些世俗事件的发生(例如,当温度 传感器把值改变成新值时;当股票代码的价格改变时)并且与事件关联的时间信息可以指 示由数据流事件表示的世俗事件发生的时间。
[0038] 对于经由事件流接收的事件,与事件关联的时间信息被用来确保事件流中的事件 按增大的时间戳值的次序到达。这使得在事件流中接收的事件基于它们关联的时间信息被 排序并处理。为了启用这种排序,时间戳以非减小的方式与事件流中的事件关联,使得后生 成的事件具有比早生成的事件更晚的时间戳。作为另一个例子,如果序列号被用作时间信 息,则与后生成的事件关联的序列号大于与之前生成的事件关联的序列号。属于相同事件 流的事件一般按照由关联的时间信息强加到事件的次序处理,较早的事件在较晚的事件之 前被处理。在一些实施例中,多个事件可以与相同的时间戳或序列号关联,例如,当由数据 流事件表示的世俗事件同时发生时。在这些情况下,事件按其接收的次序被处理。
[0039] 与事件流中事件关联的时间信息(例如,时间戳)可以由流的源设置或者,作为替 代,可以由接收流的系统设置。例如,在某些实施例中,心跳可以在接收事件流的系统上维 护,并且与事件关联的时间可以基于事件到达系统的时间,如由心跳测量的。有可能事件流 中的两个事件具有相同的时间信息。应当指出,虽然时间戳排序需求特定于一个事件流,但 是不同流的事件可以任意交织。
[0040] 事件流具有关联的模式"S",该模式包括时间信息和一组一个或多个命名属性。属 于特定事件流的所有事件都符合与那个特定事件流关联的模式。因此,对于事件流(S,T), 事件流可以具有模式"S" (<time_stamp>,〈attribute (s) >),其中〈attribute〉代表模式的 数据部分并且可以包括一个或多个属性。例如,用于股票行情事件流的模式可以包括属性 〈股票代码〉和〈股票价格〉。每个经由这种流接收的事件将具有时间戳和两个属性。例 如,股票行情事件流可以接收以下事件和关联的时间戳:
[0041] ...
[0042] (<timestamp_N>, <NVDA, 4?
[0043] (<timestamp_N+l>, <0RCL, 62?
[0044] (<timestamp_N+2>, <PCAR, 38?
[0045] (<timestamp_N+3>, <SP0T, 53?
[0046] (<timestamp_N+4>, <PDC0, 44?
[0047] (<timestamp_N+5>, <PTEN, 50?
[0048] …
[0049] 在以上的流中,对于流元素 (〈timestamp_N+l>,〈ORCL, 62>,用于属性"stock_ symbol "和" stock_value"的事件值分别是0RCL和62。与流元素关联的时间戳是 "timestamp_N+l"。因此,连续事件流是事件的流,每个事件具有相同的属性序列。
[0050] 图1绘出了可以结合本发明实施例的事件处理系统100的简化高级图。事件处理 系统100可以包括一个或多个事件源(104,106,108),配置为提供用于处理事件流的环境 的事件处理服务器(EPS) 102,以及一个或多个事件接收器(110,112)。事件源生成由EPS 102接收的事件流。EPS 102可以从一个或多个事件源接收一个或多个事件流。例如,如图 1中所示,EPS 102从事件源104接收输入事件流114,从事件源106接收第二输入事件流 116并且从事件源108接收第三事件流118。一个或多个事件处理应用(120、122和124) 可以部署在EPS 102上并由其执行。由EPS 102执行的事件处理应用可以配置为监听一个 或多个输入事件流,基于从输入事件流选择一个或多个事件作为值得注意的事件的处理逻 辑处理经由一个或多个事件流接收的事件。然后,值得注意的事件可以以一个或多个输出 事件流的形式发送到一个或多个事件接收器(110,112)。例如,在图1中,EPS 102把输出 事件流126输出到事件接收器110,并且把第二输出事件流128输出到事件接收器112。在 某些实施例中,事件源、事件处理应用和事件接收器彼此解耦,使得可以添加或除去这些部 件中任何部件,而不造成对其它部件的改变。
[0051] 在一种实施例中,EPS 102可以实现为包括带共享服务的轻量级Java应用容器, 诸如基于Equinox OSGi的容器,的Java服务器。在一些实施例中,EPS 102可以对处理事 件支持超高吞吐量和微秒级延迟,例如,通过使用JRockit Real Time。EPS 102还可以提 供开发平台(例如,完全实时的端到端Java事件驱动体系架构(EDA)开发平台),包括用于 开发事件处理应用的工具(例如,Oracle CEP Visualizer和Oracle CEP IDE)。
[0052] 事件处理应用配置为监听一个或多个输入事件流,执行用于从一个或多个输入事 件流选择一个或多个值得注意的事件的逻辑(例如,查询),并且把选定的值得注意的事件 经由一个或多个输出事件流输出到一个或多个事件源。图1提供了用于一个这种事件处理 应用120的钻取(drilldown)。如图1中所示,事件处理应用120配置为监听输入事件流 118、执行包括用于从输入事件流118选择一个或多个值得注意的事件的逻辑的查询130, 并且经由输出事件流128向事件接收器112输出选定的值得注意的事件。事件源的例子包 括,但不限于,适配器(例如,JMS、HTTP和文件)、通道、处理器、表、高速缓存,等等。事件 接收器的例子包括,但不限于,适配器(例如,JMS、HTTP和文件)、通道、处理器、表、高速缓 存^等等。
[0053] 虽然图1中的事件处理应用120示为监听一个输入流并且经由一个输出流输出选 定的事件,但这不是要作为限制。在备选实施例中,事件处理应用可以配置为监听从一个或 多个事件源接收的多个输入流,从被监视的流选择事件,并且经由一个或多个输出事件流 向一个或多个事件接收器输出选定的事件。相同的查询可以与多于一个事件接收器并且与 不同类型的事件接收器关联。
[0054] 由于其无界性,经由事件流接收的数据量一般非常大。因此,为了查询目的而存储 或归档所有数据一般是不实际和不期望的。当事件被EPS 102接收时,事件流的处理需要 实时的事件处理,而无需存储所有接收的事件数据。因此,当事件被EPS 102接收时,EPS 102提供使事件处理能够被执行的具体查询机制,而无需存储所有接收的事件。
[0055] 事件
当前第1页1 2 3 4 5 6 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1