微软StreamInsight是开发和部署时空事件流的应用平台。 StreamInSight包含了一个时空数据流模型,统一和查询语言功能进一步丰富,处理在事件传递,并保证输出的一致性。得益于其实时低延...
微软StreamInsight是开发和部署时空事件流的应用平台。 StreamInSight包含了一个时空数据流模型,统一和查询语言功能进一步丰富,处理在事件传递,并保证输出的一致性。得益于其实时低延时输出,StreamInsight监测,分析和关联来自多个源的数据流提取有意义的规律和趋势。
传统数据库技术发展迅速且得到了广泛应用,但是它不能够处理在诸如网络路由、传感器网络、股票分析等应用中所生成的一种新型数据,即流数据.流数据的特点是数据持续到达,且速度快、规模宏大。传感器数据,信息是以数据序列(流)的形式产生并且需要实时地持续地进行处理,这就需要一种新型的数据流管理系统(Data Stream Management System ,简称DSMS)对这些数据存储、管理和处理.数据流上的应用大多是监控型的,并且这些监控任务一般是简单事件的组合,但简单的数据流管理系统(DSMS)一般只能处理简单事件的过滤和聚合,缺乏复杂事件概念的支持,因此需要构建数据流上的复杂事件处理系统(CEP)来满足这类需求。因为领域实践是在一个特定的业务部门多年来的经验成果,很难指望用一个单流引擎(开箱即用-没有做什么开发)可以解决所有领域的需求。但是,数据流系统可望有一个可扩展机制,无缝集成特定领域的逻辑到查询管道。因此,StreamInsight被设计为一个可扩展的系统,接受并执行定用户自定义模块(UDMs)。
流(Stream)和事件(事件)
一个物理流是一系列的事件,事件ei = ⟨p; c⟩ 是一个来自于外界的通知,内容包括:(1) 有效负载 p = ⟨p1; : : : ; pk⟩, 和 (2)控制参数 c提供元数据。该控制参数包括一个事件产生的时间,一段时间内影响输出的事件,定义c = ⟨LE; RE⟩, 区间[LE; RE) 的时间内事件的输出,区间的左边端点(LE)称为开始时间(StartTime),是一个事件的发生的时间,也成为事件的时间戳。假设持续时间为x个时间单位,时间的右边端点称为结束时间(EndTime),简单的说就是RE = LE + x。
Compensations:StreamInsight允许用户对早期的事件进行补偿(或更正),这是通过第三个控制参数REnew,表示右边任意一点发生的事件,删除的事件(成为全收缩),表示为REnew = LE (i.e., zero lifetime)。
Canonical History Table :Canonical History Table (CHT)是事件流的逻辑表示,每个CHT有一个周期(LE 和RE)和有效负载(payload)组成。所有时间都是应用使用时间,而不是系统时间,因此StreamInsight模型是一个随时间变化的关系数据流。下面是一个CHT的例子,CHT是实际物理事件(无论是新插入还是撤销)和控制参数c = ⟨LE; RE; REnew⟩.
Detecting Time Progress :我们需要确保一个事件不是随意的序列,这是使用基于时间的标点来实现,一个基于时间的标点表示一个特殊的事件,这些标点符号在StreamInsight里面叫做Current Time Increments (或者CTIs) 。
流查询和操作
CQ是由一个树形的操作组成,每一个执行都有一个输入流和产生的输出流,在StreamInsight里查询使用LINQ来表示,StreamInsight操作都是功能良好的,并在它们对CHT而言明确语义。这使得相关的时间算子代数确定性,甚至当数据无序到达的。通过输入适配器进入进入系统,通过输出适配器输出系统。
有两个主要的操作:基于跨度和基于窗口。一个跨度为基础的操作接受从一个输入事件,每个事件执行一些计算,并产生该事件输出。以跨度为基础的操作包括filter,project和temporal join。另一方面,像Count, Top-K, Sum等等,为每一个独立窗口汇报一个结果(或者系列结果),他们就是基于窗口。其结果是所有事件而计算属于该窗口。 StreamInsight支持几种类型窗户:snapshot (sliding), hopping, tumbling, 和count-based windows。
此外,一个流可以输出到多个操作,叫做多播,而多流合并使用UNION运算符。此外,StreamInsight未来支持用户定义的操作表示自定义计算;
http://streaminsight.codeplex.com/