StreamInsight 基本概念

微软StreamInsight是开发和部署时空事件流的应用平台。 StreamInSight包含了一个时空数据流模型,统一和查询语言功能进一步丰富,处理在事件传递,并保证输出的一致性。得益于其实时低延时输出,StreamInsight监测,分析和关联来自多个源的数据流提取有意义的规律和趋势。

传统数据库技术发展迅速且得到了广泛应用,但是它不能够处理在诸如网络路由、传感器网络、股票分析等应用中所生成的一种新型数据,即流数据.流数据的特点是数据持续到达,且速度快、规模宏大。传感器数据,信息是以数据序列(流)的形式产生并且需要实时地持续地进行处理,这就需要一种新型的数据流管理系统(Data Stream Management System ,简称DSMS)对这些数据存储、管理和处理.数据流上的应用大多是监控型的,并且这些监控任务一般是简单事件的组合,但简单的数据流管理系统(DSMS)一般只能处理简单事件的过滤和聚合,缺乏复杂事件概念的支持,因此需要构建数据流上的复杂事件处理系统(CEP)来满足这类需求。因为领域实践是在一个特定的业务部门多年来的经验成果,很难指望用一个单流引擎(开箱即用-没有做什么开发)可以解决所有领域的需求。但是,数据流系统可望有一个可扩展机制,无缝集成特定领域的逻辑到查询管道。因此,StreamInsight被设计为一个可扩展的系统,接受并执行定用户自定义模块(UDMs)。

流(Stream)和事件(事件)

      一个物理流是一系列的事件,事件ei = ⟨p; c⟩ 是一个来自于外界的通知,内容包括:(1) 有效负载 p = ⟨p1; : : : ; pk⟩, 和 (2)控制参数 c提供元数据。该控制参数包括一个事件产生的时间,一段时间内影响输出的事件,定义c = ⟨LE; RE⟩, 区间[LE; RE) 的时间内事件的输出,区间的左边端点(LE)称为开始时间(StartTime),是一个事件的发生的时间,也成为事件的时间戳。假设持续时间为x个时间单位,时间的右边端点称为结束时间(EndTime),简单的说就是RE = LE + x。

     Compensations:StreamInsight允许用户对早期的事件进行补偿(或更正),这是通过第三个控制参数REnew,表示右边任意一点发生的事件,删除的事件(成为全收缩),表示为REnew = LE (i.e., zero lifetime)。

     Canonical History Table :Canonical History Table (CHT)是事件流的逻辑表示,每个CHT有一个周期(LE 和RE)和有效负载(payload)组成。所有时间都是应用使用时间,而不是系统时间,因此StreamInsight模型是一个随时间变化的关系数据流。下面是一个CHT的例子,CHT是实际物理事件(无论是新插入还是撤销)和控制参数c = ⟨LE; RE; REnew⟩.

   Detecting Time Progress :我们需要确保一个事件不是随意的序列,这是使用基于时间的标点来实现,一个基于时间的标点表示一个特殊的事件,这些标点符号在StreamInsight里面叫做Current Time Increments (或者CTIs) 。

    流查询和操作

CQ是由一个树形的操作组成,每一个执行都有一个输入流和产生的输出流,在StreamInsight里查询使用LINQ来表示,StreamInsight操作都是功能良好的,并在它们对CHT而言明确语义。这使得相关的时间算子代数确定性,甚至当数据无序到达的。通过输入适配器进入进入系统,通过输出适配器输出系统。

有两个主要的操作:基于跨度和基于窗口。一个跨度为基础的操作接受从一个输入事件,每个事件执行一些计算,并产生该事件输出。以跨度为基础的操作包括filter,project和temporal  join。另一方面,像Count, Top-K, Sum等等,为每一个独立窗口汇报一个结果(或者系列结果),他们就是基于窗口。其结果是所有事件而计算属于该窗口。 StreamInsight支持几种类型窗户:snapshot (sliding), hopping, tumbling, 和count-based windows。 此外,一个流可以输出到多个操作,叫做多播,而多流合并使用UNION运算符。此外,StreamInsight未来支持用户定义的操作表示自定义计算;

http://www.cnblogs.com/StreamInsight/

http://streaminsight.codeplex.com/

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏程序员的碎碎念

数据挖掘敲门砖--Python爬虫入门

? WHAT 数据挖掘是一门综合的技术,随着Ai的兴起,在国内的需求日渐增大。 数据挖掘的职业方向通常有三个,顺便概要地提一下所需的技能(不仅于此) 数据分...

4878
来自专栏开源优测

[大数据测试]ETL测试或数据仓库测试入门

概述 在我们学习ETL测试之前,先了解下business intelligence(即BI)和数据仓库。 什么是BI? BI(Business Intell...

3656
来自专栏喔家ArchiSelf

回顾Bob大叔的简洁架构

Robert Martin 就是我们常说的Bob大叔,是码界的骨灰级人物了,在4年前提出了所谓的简洁架构,值得回顾反思一下,看看是否可以借鉴到微服务中呢?

832
来自专栏我是攻城师

关于Elasticsearch里面聚合group的坑

4476
来自专栏应用案例

独家分享 腾讯大神教你如何学习一门新的编程语言-以Python 为例

学习 Python ,进行 Django 开发也有一年了,小结一下,一年的学习历程。 1. 了解新语言产生的背景 ABC 是专门为非专业程序员设计的一种教学语言...

2136
来自专栏企鹅号快讯

学习Python语言,这些酷毙的工具你知道几个?

工欲善其事必先利其器,一个好的工具能让起到事半功倍的效果,Python社区提供了足够多的优秀工具来帮助开发者更方便的实现某些想法,下面这几个工具给我的工作也带来...

2368
来自专栏机器人网

技术猿 | 机器人编程你需要知道的知识

---- 机器人编程为使机器人完成某种任务而设置的动作顺序描述。机器人运动和作业的指令都是由程序进行控制,常见的编制方法有两种,示教编程方法和离线编程方法。其...

3188
来自专栏狮乐园

RPC vs REST vs GraphQL

最近2周的时间由于工作不忙,一直在看有关GraphQL的东西,前后端均有涉及,由于我之前做过后端开发,当时实现的接口的大体是符合RPC风格的接口。后来转做了前端...

2512
来自专栏机器学习算法与Python学习

Python:10篇不可错过的~热文~》》真的很热》》

以下是精选了“ Python开发者” 5月份的10篇 Python 热文。其中有基础知识,项目实战等。 《Python 爬虫建站入门手记(1):环境搭建》 本文...

3213
来自专栏开源优测

大数据测试之ETL测试入门

概述 在我们学习ETL测试之前,先了解下business intelligence(即BI)和数据仓库。 什么是BI? BI(Business Intell...

6468

扫码关注云+社区