SQL Server 2008 R2 StreamInsight简介

作为SQL Server 2008 R2一个主要的部分,StreamInsight提供了复杂事件处理(Complex Event Processing,CEP)功能。它处理的对象是例如证券交易行情、物联网、医疗监护等数量巨大并且需要实时处理的复杂事件。

从体系结构上看,StreamInsight类似于一个基于内存的数据库系统。它通过输入适配器接收事件并保存在内存里面。然后通过LINQ对输入事件进行处理得到结果,用于进一步的处理。StreamInsight的LINQ扩展提供了丰富的功能,包括过滤、分组、汇总、连接等常见的SQL功能,和窗口切分这样比较特殊的功能。

窗口切分是CEP系统和一般DBMS不太一样的一个地方。它用于把一个无限长的输入流转换成为一个一个有限的集合,从而可以方便的进行处理。StreamInsight提供多种窗口切分支持,以适应不同的应用场景需要。例如下面的LINQ查询代码采用了数量为2的计数窗口进行切分,计算后面一个事件相对于前面一个事件的变化值。

var deltas = from e in inputstream

             group e by e.DeviceId into eachGroup

             from win in eachGroup.CountByStartTimeWindow(2, CountWindowOutputPolicy.PointAlignToWindowEnd)

             select new { ValueDelta = win.Delta(e => e.Value), SourceID = eachGroup.Key };

此外,StreamInsight还提供了事件流程调试器,它对于了解事件引擎的内部处理流程、开发和调试应用都有很大的帮助。

和其他微软产品一样,StreamInsight虽然功能很复杂很强大,但是非常容易使用。你可以按照下面的步骤很快把它提供的例子运行起来,开始你的CEP应用之旅。

  1. 下载StreamInsight试用版(大小大约是14MB),安装到你的机器上。安装的时候,实例名栏目输入Default。你不需要安装任何的SQL Server实例;
  2. 打开Microsoft StreamInsight程序组,点击StreamInsight Samples,下载例子代码并展开;
  3. 启动Visual Studio 2008或者2010,打开StreamInsightProductTeamSamples\Applications\ComposingQueries\ ComposingQueries.sln;
  4. 打开成功以后,按F7编译,然后Ctrl+F5就可以运行了。

更多的知识,请参考Microsoft StreamInsight程序组里面提供的文档或者查阅无联网。

参考资料

  1. SQL Server 2008 R2数字之旅,https://www.microsoft.com/sqlserver/tour/zh/cn/videos/stream-insight-complex-event-processing.aspx
  2. 下载StreamInsight试用版, https://www.microsoft.com/downloads/details.aspx?FamilyId=54ad6107-c552-4d47-b1a1-3f66460f71a9&displaylang=zh-cn
  3. SQL Server 2008 R2 StreamInsight, https://www.microsoft.com/sqlserver/2008/en/us/R2-complex-event.aspx
  4. LINQ, https://msdn.microsoft.com/en-us/netframework/aa904594.aspx

如果你想进一步了解SQL Server 2008 R2的一些新功能,请继续关注SQL CRD的博客。

软件工程师 苏宏谋