StreamInsight 概念
本主題描述 Microsoft StreamInsight 程式中呈現及處理資料的方式。 其設計目的是要讓您熟悉與 StreamInsight 中的複雜事件處理相關聯的基本概念。 本主題一開始會描述資料結構,然後描述操作或處理資料的 StreamInsight 實體。
資料序列
StreamInsight 可和三種不同類型的資料序列搭配使用:
提取 -「提取」(Pull) 資料序列是相同類型物件的已排序清單,經由
IEnumerable<>
介面實作。 這種序列的取用者可以使用 LINQ-to-Objects 架構反覆地存取它。 如需詳細資訊,請參閱 LINQ to Objects。發送 -「發送」(Push) 資料序列是相同類型物件的已排序清單,經由
IObservable<>
介面實作。 資料來源會將此序列發送給使用 Reactive Framework LINQ 方言存取資料的一個或多個資料取用者。 如需詳細資訊,請參閱 Reactive Extensions。暫時資料流:「暫時資料流」(Temporal Stream) 是具有一組獨特特性的事件的序列。 暫時資料流是經由
IStreamable<>
介面實作,並且可以使用 StreamInsight LINQ 來處理。
暫時資料流
暫時資料流是特定類型的資料流,由 StreamInsight 所辨識。 它是可能無盡的資料序列,其中每一個事件都包含裝載以及會識別事件的開始與結束時間的時間元件。 範例包括:股票即時看板資料流,它會提供交易內隨著時間變更的不同股價;或溫度感應器資料流,它會提供感應器在一段時間所報告的溫度值。
暫時資料流具有下列獨特的特性:
資料流中的每一個事件都具有時間戳記。
資料流含有稱為「目前時間累加 (CTI)」事件的特殊事件,這種事件會指出直到該時間點資料流中事件的完整性。
資料流中的事件會觀察 CTI 模型。 也就是說,當暫時資料流中出現 CTI 時,資料流中不再有任何事件會具有比 CTI 時間戳記還要早的時間戳記。
事件
暫時資料流中表示的基礎資料會封裝到事件中。 事件是 StreamInsight 所處理的基本資料單位。 每一個事件都是由*「標頭」(Header) 和「裝載」*(Payload) 所組成。 事件標頭包含可定義事件種類的中繼資料以及可定義事件之時間間隔的一個或多個時間戳記。 裝載是會保存與事件相關聯之資料的 .NET 資料結構。 裝載中所定義的欄位為使用者所定義,而其類型則是根據 .NET 類型系統。
StreamInsight 可支援兩種事件種類:INSERT 和 CTI (目前時間累加)。 INSERT 事件種類會以其裝載將事件加入至事件資料流 (連同事件的開始和結束時間)。 CTI 事件種類是一種特殊的標點符號事件,它含有會提供目前時間戳記的單一欄位。 CTI 事件會指出直到該時間點資料流中現有事件的完整性,此外,它會讓查詢接受及處理事件,這些事件的應用程式時間戳記不會對應到事件抵達查詢的順序。
如需有關 StreamInsight 事件以及 CTI 事件使用方式的詳細資訊,請參閱<事件結構>。
StreamInsight 實體
StreamInsight 程式會建立及使用五種基本類型的實體:來源、接收、主旨、繫結和處理序。
來源
「來源」(Source) 是資料產生者。
為了支援透過序列和暫時資料流的 LINQ 查詢的撰寫,StreamInsight 公開來源類型的 IQueryable
、IQbservable
和 IQStreamable
特製化實作。 這些介面分別定義於 System.Linq
、System.Reactive.Linq
和 Microsoft.ComplexEventProcessing.Linq
命名空間中 (如需詳細資訊,請參閱 IQueryable、IQbservable 和 IQStreamable)。
接收
「接收」(Sink) 是資料取用者。 接收可能是 IObservable
/IStreamable
來源的觀察器,或者可能是 IStreamable
來源的 IStreamableSink
。
注意事項 |
---|
|
主旨
「主旨」(Subject) 是資料生產者也是取用者。 它還有一個用途,就是在多個生產者和取用者之間共用計算與狀態。 主旨會實作 IObservable
和 IObserver
介面,讓它能夠訂閱可觀察來源以及接受觀察器訂閱。
注意事項 |
---|
|
繫結
「繫結」(Binding) 是透過來源、接收或主旨的可執行檔撰寫。 它是用來將來源連接至接收的邏輯。
處理序
「處理序」(Process) 是繫結的具名執行。
請參閱
將 StreamInsight 實體部署至 StreamInsight 伺服器
規劃和架構 (StreamInsight)