Share via


Concepts de StreamInsight

 

Cette rubrique décrit la manière dont les données sont représentées et traitées dans un programme Microsoft StreamInsight. Elle est conçue pour vous permettre de vous familiariser avec les concepts de base associés au traitement des événements complexes dans StreamInsight. La rubrique commence par décrire des structures de données, puis décrit les entités de StreamInsight qui agissent sur les données ou les traitent.

Séquences de données

StreamInsight fonctionne avec trois types différents de séquences de données :

  • pull : Une séquence de données pull est une liste triée d'objets de même type, implémentée via l'interface IEnumerable<>. Un consommateur de cette séquence peut y accéder de manière itérative en utilisant l'infrastructure LINQ-to-Objects. Pour plus d'informations, consultez LINQ to Objects.

  • push : Une séquence de données push est une liste triée d'objets de même type, implémentée via l'interface IObservable<>. La source de données envoie la séquence à un ou plusieurs consommateurs de données qui accèdent à ces dernières en utilisant le dialecte LINQ Reactive Framework. Pour plus d'informations, voir Extensions réactives.

  • flux temporel : Un flux temporel est une séquence d'événements qui possède un jeu de caractéristiques unique. Un flux temporel est implémenté via l'interface IStreamable<> et peut être traité à l'aide de StreamInsight LINQ.

Flux temporels

Un flux temporel est un type spécifique de flux de données reconnu par StreamInsight. Il s'agit d'une séquence potentiellement infinie de données dans laquelle chaque événement consiste en une charge utile et un composant heure qui identifie les heures de début et de fin de l'événement. Les exemples comprennent un flux de données de codes de titres boursiers qui fournit le cours des différentes actions échangées en bourse au fur et à mesure qu'il change, ou un flux de données de capteur de température qui fournit des valeurs de température signalées au fil du temps par le capteur.

Un flux temporel présente les caractéristiques uniques suivantes :

  1. Chaque événement du flux a un horodateur.

  2. Le flux contient des événements spéciaux appelés événements CTI (Current Time Increment) qui indiquent l'achèvement des événements existants dans le flux jusqu'à ce stade.

  3. Les événements du flux observent le modèle CTI. Autrement dit, lorsqu'un événement CTI apparaît dans le flux temporel, aucun autre événement du flux n'aura d'horodateur antérieur à celui de l'événement CTI.

Événements

Les données sous-jacentes représentées dans un flux temporel sont empaquetées dans des événements. Un événement est l'unité de données de base traitée par StreamInsight. Chaque événement est composé d'un en-tête et d'une charge utile. Un en-tête d'événement contient des métadonnées qui définissent le genre d'événement et un ou plusieurs horodateurs qui spécifient l'intervalle de temps pour l'événement. La charge utile est une structure de données .NET qui conserve les données associées à l'événement. Les champs définis dans la charge utile sont définis par l'utilisateur et leurs types sont basés sur le système de type .NET.

StreamInsight prend en charge deux genres d'événement : INSERT et CTI (incrément de temps réel). Le genre d'événement INSERT ajoute un événement avec sa charge utile dans le flux d'événements, ainsi que les heures de début et de fin de l'événement. Le genre d'événement CTI est un événement de ponctuation spécial avec un champ unique qui fournit un horodateur actuel. L'événement CTI indique l'achèvement des événements existant dans le flux jusqu'à ce stade. Il permet en outre à une requête d'accepter et de traiter des événements dont les horodateurs d'application ne correspondent pas à leur ordre d'arrivée dans la requête.

Pour plus d'informations sur les événements StreamInsight, et la manière dont les événements CTI sont utilisés, consultez Structure d'événement.

Entités StreamInsight

Un programme StreamInsight crée et utilise cinq types d'entités de base : Source, Récepteur, Objet, Liaison et Processus.

Source

Une Source est un générateur de données.

Pour prendre en charge la composition des requêtes LINQ sur les séquences et les flux temporels, StreamInsight expose des implémentations des spécialisations IQueryable, IQbservable et IQStreamable des types de source. Ces interfaces sont définies dans les espaces de noms System.Linq, System.Reactive.Linq et Microsoft.ComplexEventProcessing.Linq respectivement (pour plus d'informations, consultez IQueryable, IQbservable et IQStreamable).

Récepteur

Un Récepteur est un consommateur de données. Un récepteur peut être un observateur d'une source IObservable/IStreamable ou un IStreamableSink d'une source IStreamable.

Notes


En raison de la nature du contrat IEnumerable, dans lequel un consommateur (énumérateur) est obtenu directement à partir des éléments énumérables, le concept de récepteur Enumerator n'existe pas.

Objet

Un Objet est à la fois un producteur et un consommateur de données. Il permet également le partage du calcul et l'état entre plusieurs producteurs et consommateurs. Un objet implémente les interfaces IObservable et IObserver, ce qui leur permet de s'abonner aux sources observables et d'accepter les abonnements d'observateur.

Notes


Les objets ne prennent pas directement en charge les interfaces IStreamable.

Liaison

Une Liaison est une composition exécutable sur les sources, récepteurs ou objets. Il s'agit de la logique utilisée pour connecter les sources aux récepteurs.

Processus

Un Processus est une exécution nommée d'une liaison.

Voir aussi

Déploiement des entités StreamInsight sur un serveur StreamInsight
Planification et architecture (StreamInsight)