【翻譯】StreamInsight視窗:基礎知識

來源:互聯網
上載者:User

原文連結:http://blogs.msdn.com/b/streaminsight/archive/2010/11/23/windows-part-1-the-basics.aspx

原文作者:Roman Schindlauer——StreamInsight小組資深程式經理,他的老闆就是前面博文中提到的Torsten Grabs。

如果你開始學習怎樣編寫StreamInsight查詢,那麼最可能碰到的首個概念就是視窗(windows)。在這篇博文中,我們將介紹視窗的使用方法,希望能夠協助讀者更好地瞭解使用視窗的一些好處和限制。哈哈,這裡的視窗不是Microsoft Windows哦。

在事件處理的世界裡,視窗被用來定義集合,而這些集合會成為一些集合操作的對象。這些操作可能是:

  • 計算單一結果的彙總操作,如sum, count, min, max或者使用者自訂的彙總操作;
  • 返回基於表單的多個操作結果,如TopK或者使用者自訂的操作符。

StreamInsight視窗將時間軸切分為了有窮的片段。

StreamInsight視窗的長度可以是一個固定的時間跨度(跳動視窗HoppingWindow和筋鬥視窗TumblingWindow),也可以由事件本身來決定(計數視窗CountingWindow和快照集視窗SnapshotWindow)。是一個“筋鬥視窗”的樣本,其中“sum”合計用在了某些負載域上:

視窗和集合操作常常需要放在一起來進行操作,整合了集合操作的視窗可以看作StreamInsight查詢中的一個“積木”。下面是使用LINQ構造帶有集合操作和視窗的一個查詢:

var result = from window in input                 .TumblingWindow(TimeSpan.FromMinutes(5),                                 HoppingWindowOutputPolicy.ClipToWindowEnd)             select new { sum = window.Sum(e => e.Value) };

此類結合視窗和集合操作的組件之上便是接受CepStream和產生CepStream。首先由視窗擴充函數返回CepWindowStream,接下去在其上應用集合操作。後面我們將撰寫另一篇博文來討論這些特定的視窗類別型。

有的時候一想到視窗僅僅是“記憶體中的一些事件集合”,大家就會問到關於如何“訪問”視窗的不同方法。的確,視窗是StreamInsight可控記憶體中的事件集合,並且可以用編程的方式訪問:使用使用者自訂的彙總操作(user-defined aggregates,簡稱UDAs)或使用者自訂動作符(user-defined operators,簡稱UDOs)。這些擴充介面能夠讓你編寫C#的代碼對視窗內的事件進行操作,如產生單個的彙總結果(使用UDA)或產生1個到多個的完整事件(使用UDO)。這些都在StreamInsight APi中作為子類型提供給大家使用。這些介面最好的地方在於,雖然它們在StreamInsight事件處理流中引入了命令式編程,但是同時也支援聲明式模型:接受事件集(視窗)並對應地輸出一些結果。在這個過程中使用者並不需要擔心UDA或者UDO會以怎樣的順序在運行時被調用。此外由於這個介面中傳入的事件集是IEnumerable,我們還可以在其上編寫LINQ to Objects哦!

對於那些還沒有玩過進階聲明式編程模型(如使用LINQ編寫UDA/UDO)的開發人員來說,這聽起來也許很誘惑,但是我建議大家先使用StreamInsight內建的操作符來編寫一些查詢,以熟悉一下StreamInsight的運行時。

 

此致,

Roman

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.