Share via


StreamInsight-Konzepte

 

In diesem Thema wird beschrieben, wie Daten in einem Microsoft StreamInsight-Programm dargestellt und verarbeitet werden. Nach Abschluss dieses Themas sollten Sie mit den grundlegenden Konzepten der komplexen Ereignisverarbeitung in StreamInsight vertraut sein. Zunächst werden Datenstrukturen und anschließend die StreamInsight-Entitäten beschrieben, die auf die Daten reagieren oder diese verarbeiten.

Datensequenzen

StreamInsight arbeitet mit drei verschiedenen Typen von Datensequenzen zusammen:

  • Pull: Eine Pull-Datensequenz ist eine geordnete Liste von Objekten desselben Typs, die über die IEnumerable<>-Schnittstelle implementiert werden. Ein Consumer dieser Sequenz ist in der Lage, über das "LINQ to Objects"-Framework iterativ auf diese Sequenz zuzugreifen. Weitere Informationen finden Sie unter LINQ to Objects.

  • Push: Eine Push-Datensequenz ist eine geordnete Liste von Objekten desselben Typs, die über die IObservable<>-Schnittstelle implementiert werden. Die Datenquelle überträgt die Sequenz an mindestens einen Datenconsumer, der über den Reactive Framework LINQ-Dialekt auf die Daten zugreift. Weitere Informationen finden Sie unter Reaktive Erweiterungen.

  • Zeitlicher Datenstrom: Ein zeitlicher Datenstrom ist eine Sequenz von Ereignissen, die über eine spezifische Reihe von Merkmalen verfügen. Ein zeitlicher Datenstrom wird über die IStreamable<>-Schnittstelle implementiert und kann über StreamInsight LINQ verarbeitet werden.

Zeitliche Datenströme

Ein zeitlicher Datenstrom ist ein bestimmter Datenstromtyp, der von StreamInsight erkannt wird. Es handelt sich um eine potenziell unendliche Sequenz von Daten, bei denen jedes Ereignis aus einer Nutzlast zuzüglich einer Zeitkomponente besteht, durch die die Start- und Endzeit des Ereignisses identifiziert wird. Beispiele sind ein Börsentickerdatenstrom mit Kursen verschiedener Aktien, die an einer Börse gehandelt werden und sich im Laufe der Zeit ändern, oder ein Temperatursensordatenstrom, der vom Sensor gemeldete Temperaturwerte bereitstellt, die sich im Laufe der Zeit ändern.

Ein zeitlicher Datenstrom weist die folgenden eindeutigen Merkmale auf:

  1. Jedes Ereignis im Datenstrom verfügt über einen Zeitstempel.

  2. Der Datenstrom enthält bestimmte Ereignisse mit der Bezeichnung aktuelle Zeitinkrement-Ereignisse (CTI, Current Time Increment), die die Vollständigkeit der bis zu diesem Zeitpunkt im Datenstrom vorhandenen Ereignisse angeben.

  3. Das CTI-Modell wird von Ereignissen im Datenstrom beobachtet. Wenn ein CTI im zeitlichen Datenstrom enthalten ist, weisen folglich keine weiteren Ereignisse im Datenstrom einen Zeitstempel auf, der vor dem CTI-Zeitstempel liegt.

Ereignisse

Die zugrunde liegenden, in einem zeitlichen Datenstrom dargestellten Daten werden in Ereignisse gepackt. Ein Ereignis ist die grundlegende Einheit von Daten, die von StreamInsight verarbeitet werden. Jedes Ereignis besteht aus einem Header und einer Nutzlast. Ein Ereignisheader enthält Metadaten, die die Ereignisart und einen oder mehrere Zeitstempel definieren, die das Zeitintervall für das Ereignis definieren. Die Nutzlast ist eine .NET-Datenstruktur, die die dem Ereignis zugeordneten Daten enthält. Die in der Nutzlast definierten Felder sind benutzerdefiniert, und ihre Typen basieren auf dem .NET-Typsystem.

StreamInsight unterstützt zwei Ereignisarten: INSERT und CTI (aktuelles Zeitinkrement). Bei der INSERT-Ereignisart wird ein Ereignis dem Ereignisdatenstrom mit seiner Nutzlast sowie der Start- und Endzeit des Ereignisses hinzugefügt. Die CTI-Ereignisart ist ein spezielles Interpunktionsereignis mit einem einzelnen Feld, das einen aktuellen Zeitstempel bereitstellt. Das CTI-Ereignis gibt die Vollständigkeit der im Datenstrom enthaltenen Ereignisse bis zu diesem Zeitpunkt an und ermöglicht einer Abfrage die Annahme und Verarbeitung von Ereignissen, deren Anwendungszeitstempel der Reihenfolge des Eingangs in die Abfrage entsprechen.

Weitere Informationen zu StreamInsight-Ereignissen und der Verwendung von CTI-Ereignissen finden Sie unter Ereignisstruktur.

StreamInsight-Entitäten

Ein StreamInsight-Programm erstellt und verwendet fünf Grundtypen von Entitäten: Quelle, Senke, Subjekt, Bindung und Prozess.

Quelle

Eine Quelle ist ein Daten-Generator.

Um die Zusammenstellung von LINQ-Abfragen über Sequenzen und zeitliche Datenströme zu unterstützen, macht StreamInsight Implementierungen der Quelltypspezialisierungen IQueryable, IQbservable und IQStreamable verfügbar. Diese Schnittstellen sind in den Namespaces System.Linq, System.Reactive.Linq und Microsoft.ComplexEventProcessing.Linq definiert (weitere Informationen finden Sie unter IQueryable, IQbservable und IQStreamable).

Senke

Eine Senke ist ein Datenconsumer. Eine Senke kann als Beobachter einer IObservable/IStreamable-Quelle auftreten oder eine IStreamableSink einer IStreamable-Quelle darstellen.

System_CAPS_ICON_note.jpg Hinweis


Aufgrund einer Eigenheit des IEnumerable-Vertrags, nach der ein Consumer (Enumerator) direkt aus dem Enumerable-Datenstrom entnommen wird, gibt es keine Enumerator-Senke.

Subjekt

Ein Subjekt fungiert sowohl als Datenproducer als auch als Datenconsumer. Es erfüllt außerdem den Zweck, Berechnungen und Zustandsinformationen an mehrere Producer und Consumer zu verteilen. Ein Subjekt implementiert sowohl die IObservable-Schnittstelle als auch die IObserver-Schnittstelle, wodurch es sowohl Observable-Quellen abonnieren als auch Observer-Abonnements akzeptieren kann.

System_CAPS_ICON_note.jpg Hinweis


Die IStreamable-Schnittstelle bietet keine direkte Unterstützung für Subjekte.

Bindung

Eine Bindung ist eine Executable-Komposition über Quellen, Senken oder Subjekte hinweg. Sie stellt die Logik dar, über die Quellen mit Senken verbunden werden.

Prozess

Ein Prozess ist eine benannte Ausführung einer Bindung.

Siehe auch

Bereitstellen von StreamInsight-Entitäten auf einem StreamInsight-Server
Planung und Architektur (StreamInsight)