StreamInsight 浅入浅出(二)—— 流与事件
2010-09-27 00:00:00 来源:WEB开发网传统数据库的基本单位是数据行,而在 StreamInsight 或者说 CEP 架构中,基本数据单位是事件(Event)。在传统数据库中,数据行集合成为数据表,而在 StreamInsight 中,相对应的集合就是流(Stream),所有的查询都是针对流的。其实流中的每个基本数据其实并不是一个完整的事件,只是包含了构成一个事件的基础信息,需要经过打包才能成为一个标准的事件。
流
在 StreamInsight 中,最基本的流是位于两端的输入、输出流,此外,还会有经过各种计算与整理而形成的中间流。
一个最简单的流的声明如下:
var inputStream = CepStream<MyDataType>.Create("input");
其中 MyDataType 由开发者自己定义。而上面这条语句就声明了一个以 MyDataType 为基本类型,名称为"Input"的流。这里看起来很像是创建了一个以 MyDataType 类型对象为元素的集合,类似 List<MyDataType>。但其实它更像一种占位符,一种模板,它申明了这个流中的每个元素的类型,但在此刻,并没有任何元素生成,也没有给集合开辟空间。它只是抽象的存在于整个流的转化过程中,直到整个查询启动时,流才开始形成。
声明一个流之后,可以基于该流进行计算或整理,从而生成以其他类型为基本类型的流。例如:
var newStream = from stream in inputStream
select new {CountString = stream.Count.ToString()};
假设 MyDataType 类型包含一个名为 Count 的属性,则 newStream 生成一个基本类型包含名为 CountString 属性的新的流。这里使用的是 Linq 语法,而 Linq 的 Provider 包含在 Microsoft.ComplexEventProcessing.Linq 命名空间下。该 Linq 语法的具体情况以后会详细讲解,也可以查看 MSDN :http://technet.microsoft.com/zh-cn/library/ee362394.aspx
Tags:StreamInsight 事件
编辑录入:爽爽 [复制链接] [打 印]更多精彩
赞助商链接