SQL Server -- StreamInsight 复杂事件处理平台简介
什么是StreamInsight
信息技术的广泛应用,数据流作为一种新颖的数据结构在日常生活中有着越来越广泛的应用,微软在SQL Server 2008 R2 中推出了分析处理数据流的新组件——StreamInsight。
它提供了基于DotNet框架的开发环境,用户能够轻松地使用它来开发出健壮,高效地数据流处理程序。
StreamInsight的本质是复杂事件处理(Complex Event Processing,CEP)的应用程序框架,与传统的数据库查询处理不同,
事件处理系统需要同时处理来自多个数据源的海量事件(Event),并且根据用户提供的查询语句以及匹配模式,实时地输出事件分析结果。我们在下表中列出了事件驱动应用和数据库应用的主要区别:
数据库应用 |
事件驱动的应用(Event Driven) |
|
查询模式 |
特定的查询请求 |
连续的查询 |
响应时间 |
从几秒至数天 |
几毫秒或更少 |
数据流量 |
数百条记录/秒 |
>10000 事件/秒 |
传统的数据库针对静态数据操作,所有信息先被实体化存储在数据库中,然后被取出,再进行一系列的计算。而StreamInsight则针对的是事件流的操作,事件流从入口通过适配器进入,经过一系列查询逻辑的处理,最终通过输出适配器分发到各个目标上。事件流数据暂时保存于内存中,减少了数据存储与读取的时间。同时,StreamInsight了引入了一种时间窗口机制,即对事件流按照时间窗口切片统计,随着事件流入不断推移时间窗口,保持窗口中统计最新的数据。
因此,StreamInsight适用场景有如下特点:
- 输入为数据流尤其是多源无限长数据流
- 数据处理实时性要求高
- 高吞吐量
- 不关心中间结果
- 数据不需要永久保留
比如,多个收费站车辆通过信息作为数据流输入,统计一段时间内车辆的平均数。
由上图可以看出,StreamInsight主要包括三个部分:输入适配器(Input Adapter)、输出适配器(Output Adapter)以及CEP服务器。由于输入输出和CEP服务器都是异步运行的,所以StreamInsight提供了事件流调试器(Event Flow Debugger)方便用户调试事件的处理过程。