WEB开发网
开发学院数据库MSSQL Server StreamInsight 浅入浅出(二)—— 流与事件 阅读

StreamInsight 浅入浅出(二)—— 流与事件

 2010-09-27 00:00:00 来源:WEB开发网   
核心提示: 事件 关于事件的官方介绍可以查看 MSDN : http://technet.microsoft.com/zh-cn/library/ee391434.aspx,以下是对官方介绍的一些补充说明,StreamInsight 浅入浅出(二)—— 流与事件(2),DateTimeOffset vs D

事件

关于事件的官方介绍可以查看 MSDN : http://technet.microsoft.com/zh-cn/library/ee391434.aspx,以下是对官方介绍的一些补充说明。

DateTimeOffset vs DateTime

事件的标题部分中包含的时间戳使用的是 DateTimeOffset 类型,如 MSDN 所述:“此类型可分辨时区,并且基于 24 小时时钟。”这种数据结构是 .Net 3.5 提供的。包含了一个 DateTime 值还有一个 Offset 属性,正是由 Offset 属性确定了 DateTimeOffset 类型对象的时区,也就是与 UTC 时间之间的差值。关于 DateTimeOffset 和 DateTime 的比较以及相互间的转化,在 TerryLee 的博文中已有详细介绍:http://www.cnblogs.com/Terrylee/archive/2008/08/29/using-net-framework-new-datetime-data-type.html。

另外一点需要注意的是,事件的时间戳与服务器系统时间无关,由源数据提供。也就是说,事件中的时间戳与事件被 StreamInsight 接收的时间或者事件对象创建的时间并无必然联系。

事件类型

事件类型中的 Insert 类型很好理解,一般我们创建的事件和最终读取的事件都是这个类型的。而 CTI ( current time increment ) 事件类型一般由系统根据指定的 CTI 生成频率自动生成。

CTI 事件的作用有点类似一种认证。它标志着在其时间戳之前的事件是完整的,也就是在该 CTI 事件插入队列之后,不会再有新的时间戳早于该 CTI 事件的时间戳的事件插入队列。如果有怎么办?会根据你的设置,进行校正(校正为 CTI 时间戳之后的时间)或者抛弃。被标注完整性的事件的时间戳必须早于 CTI 的时间戳。

通过 CTI 事件标志过完整性的事件就可以释放开窗运算或者一些聚合运算,因为这些运算都是基于一批数据而不是单个数据的。也就是说如果一个应用了开窗或者聚合运算的流里面没有包含一个 CTI 事件,则永远不会得到计算结果。

Tags:StreamInsight 事件

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接