浅谈SQL Server 2008 R2 中的新组件——StreamInsight
随着信息技术的广泛应用,数据流作为一种新颖的数据结构在日常生活中有着越来越广泛的应用,微软在SQL Server 2008 R2 中推出了分析处理数据流的新组件——StreamInsight。它提供了基于DotNet框架的开发环境,用户能够轻松地使用它来开发出健壮,高效地数据流处理程序。
StreamInsight的本质是复杂事件处理(Complex Event Processing,CEP)的应用程序框架,与传统的数据库查询处理不同,事件处理系统需要同时处理来自多个数据源的海量事件(Event),并且根据用户提供的查询语句以及匹配模式,实时地输出事件分析结果。我们在下表中列出了事件驱动应用和数据库应用的主要区别:
数据库应用 | 事件驱动的应用(Event Driven) | |
查询模式 | 特定的查询请求 | 连续的查询 |
响应时间 | 从几秒至数天 | 几毫秒或更少 |
数据流量 | 数百条记录/秒 | >10000 事件/秒 |
通过使用StreamInsight,用户可以开发出基于CEP的程序来实时处理大量的原始数据,利用数据之间的层次和关联关系,有效的采用相应的规则进行处理,以降低进行事件分析,事件关联及事件解析等操作的代价。StreamInsight同时能够支持对数据流模式匹配、异常检测、趋势分析等操作,使用户能够更好地管理、监控和挖掘数据,最终使用户得到之前无法了解的信息,并能够更快速和更有效的进行操作决策,提高关键绩效指标(KPI)。
在StreamInsight的应用中,其核心为StreamInsight服务器,它主要由输入,输出适配器(Adaptor)以及CEP引擎(CEP Engine)组成。
- CEP引擎(CEP Engine):所有的输入数据都将再CEP引擎中进行分析和处理,它根据用户定义的查询逻辑,有效地分析和转换输入的数据,并及时输出结果。
- 适配器(Adaptor):StreamInsight提供了适配器的框架,开发者能够通过实现不同的接口来开发不同种类的适配器。适配器分为两类,输入适配器(Input Adaptor)是连接外部存储设备如网络服务器,传感器同StreamInsight引擎的接口。而输出适配器则用于处理CEP引擎输出的结果并可以同时触发一系列的操作。
下图给出了StreamInsight应用的整体结构:
StreamInsight平台提供了一个功能强大的对象模型,它包含了许多有用的特性使得我们能够开发出灵活和功能强大StreamInsight的程序。对于初次使用StreamInsight的开发者来说,参考网上的一些实例能够取得事半功倍的效果。
在我加入微软之前,也曾进行过一段时间的数据流研究,当时的感受是,由于没有很好的数据流开发框架,我需要对于不同的应用开发不同的数据流程序来分析算法的有效性,而随着StreamInsight的推出,不仅能够为企业用户创造很大的价值,普通研究者也能够使用它更有效地开展研究工作。
StreamInsight的相关组件可以在微软网站上直接下载,如果您需要获得更多的信息,请访问微软StreamInsight的相关网站。
软件开发工程师 李人和
Comments
Anonymous
July 28, 2010
能在北京开展一场StreamInsight的培训吗?自己看文档太难了.Anonymous
September 14, 2010
CepStream<TPlayload> ; IInputAdapterFactory<TConfigInfo> TPlayload和TConfigInfo它们之间有什么联系吗?在编写这两种类型的class时需要注意什么? TPlayload是事件负载,TConfigInfo是特定于运行时信息? 能否举个例子说明下它们之间的不同?Anonymous
September 14, 2010
CepStream<TPlayload> ; IInputAdapterFactory<TConfigInfo> TPlayload和TConfigInfo它们之间有什么联系吗?在编写这两种类型的class时需要注意什么? TPlayload是事件负载,TConfigInfo是特定于运行时信息? 能否举个例子说明下它们之间的不同?Anonymous
September 15, 2010
假如说我要实时监测一个 电表 以发现某个时期的用电情况。 那么StreamInsight如何与电表建立连接呢?Anonymous
September 15, 2010
还有个问题: 我是要先编写查询?还是先实现adapter的工厂?Anonymous
October 19, 2010
To mxg: 微软BOL已经提供了相关的资料和教程,如果你需要StreamInsight培训的话,可以咨询微软市场培训的负责人 To MuangCh: 我一般先实现adaptor工厂,然后再编写查询,这样能够更方便测试。 如果需要监测电表的话,你可能首先需要将电表的数据转换成数字信号,并且PC需要能够接受这样的信号。StreamInsight本身并不提供直接连接电表的方法,需要用户来实现相应的接收函数。 如果有更多的问题,可以在微软SQL中国的论坛上进行提问social.microsoft.com/.../threads