Note
Access to this page requires authorization. You can try signing in or changing directories.
Access to this page requires authorization. You can try changing directories.
作为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应用之旅。
- 下载StreamInsight试用版(大小大约是14MB),安装到你的机器上。安装的时候,实例名栏目输入Default。你不需要安装任何的SQL Server实例;
- 打开Microsoft StreamInsight程序组,点击StreamInsight Samples,下载例子代码并展开;
- 启动Visual Studio 2008或者2010,打开StreamInsightProductTeamSamples\Applications\ComposingQueries\ ComposingQueries.sln;
- 打开成功以后,按F7编译,然后Ctrl+F5就可以运行了。
更多的知识,请参考Microsoft StreamInsight程序组里面提供的文档或者查阅无联网。
参考资料
- SQL Server 2008 R2数字之旅,https://www.microsoft.com/sqlserver/tour/zh/cn/videos/stream-insight-complex-event-processing.aspx
- 下载StreamInsight试用版, https://www.microsoft.com/downloads/details.aspx?FamilyId=54ad6107-c552-4d47-b1a1-3f66460f71a9&displaylang=zh-cn
- SQL Server 2008 R2 StreamInsight, https://www.microsoft.com/sqlserver/2008/en/us/R2-complex-event.aspx
- LINQ, https://msdn.microsoft.com/en-us/netframework/aa904594.aspx
如果你想进一步了解SQL Server 2008 R2的一些新功能,请继续关注SQL CRD的博客。
软件工程师 苏宏谋