[TASK] Generic commit.

This commit is contained in:
Jan Philipp Timme 2016-09-14 14:36:44 +02:00
parent 699cf84db6
commit 5a6b308f16

View File

@ -16,6 +16,7 @@
\usepackage{scrhack} % Hack for lstlisting i suspect :-/
\usepackage{xcolor}
\usepackage{float}
\usepackage{soul}
\usepackage{verbatim} % für comment-environment
% Setup für Codeblocks
\lstset{
@ -386,31 +387,34 @@ Wie in Listing~\ref{lst:sample_sparql_construct} gezeigt, können einfache Opera
\section{Einführung in Complex Event Processing}\label{cpt:cep_intro}
Von Transaktionen im Handel über Messereignisse von Sensoren bis hin zu Benutzerinteraktionen auf Webseiten entstehen täglich eine Vielzahl von Ereignisdaten, die für einen begrenzten Zeitraum einen Teil der echten Welt abbilden. Um aus diesen großen Datenmengen durch Erkennung von Mustern oder Aggregation von Daten schnellstmöglich höherwertige Informationen gewinnen zu können, ist Complex Event Processing (CEP) das Mittel der Wahl. Wie der Begriff CEP bereits andeutet, geht es dabei um die Verarbeitung von komplexen Ereignissen. Im folgenden Abschnitt wird hierfür ein kurzer Einstieg in die Grundlagen von CEP gegeben. Für eine detailreiche Erläuterung und die beispielhafte Anwendung der CEP-Engine \enquote{Esper} sei auf \cite{hsh:cep} verwiesen.
\paragraph{CEP Regeln}
Eine CEP Regel definiert Bedingungen, die in einem Ereignisdatenstrom gesucht werden sollen, gefolgt von Aktionen, die bei zutreffenden Bedingungen ausgeführt werden sollen. Passen Ereignisse aus dem Datenstrom auf die Bedingungen, so matcht die Regel. Die in der Regel definierten Aktionen werden dann ausgeführt --- die Regel feuert.
\paragraph{Ereignisse}
Ein Ereignis trägt neben inhaltlichen Informationen über die Situation in der es ausgelöst wurde auch eine eindeutige ID sowie einen Zeitstempel mit sich. Während der Zeitstempel den Zeitpunkt angibt, zu dem das Ereignis ausgelöst wurde, dient die ID zur eindeutigen Abgrenzung von anderen Ereignisssen. Da es bedingt durch Latenz in der Übertragung und technische Randbedingungen möglich ist, dass die Ereignisdaten zeitverzögert bei der CEP-Engine ankommen, wird der Zeitstempel benötigt.
Da sich Ereignisse immer auf eine konkrete Situation beziehen, enthalten sie nicht mehr Daten als zur Beschreibung der Situation nötig sind. Dafür treten sie häufig mit einer sehr hohen Frequenz auf, da ein Vorgang viele primitive Ereignisse auslösen kann. Betrachtet man beispielsweise einen PKW, der aus dem Stand anfährt und auf 30km/h beschleunigt, so erhält man zusätzlich zu den periodisch gemeldeten Messwerten aus dem Motorraum und einer Hand voll Ereignisse durch Hochschalten des Ganges eine Flut von Informationen darüber, wie die Pedale durch den Fahrer bedient wurden oder der Einschlagwinkel des Lenkrades verändert wurde.
Natürlich können nicht nur externe Komponenten als Quelle von Ereignissen dienen. Viele CEP-Engines unterstützen die Generation von Ereignisdaten und deren Injektion in die eigene Ereignisverarbeitung. So können gewonnene Erkenntnisse direkt Einfluss auf die weitere Verarbeitung geben.
Natürlich können nicht nur externe Komponenten als Quelle von Ereignissen dienen. Viele CEP-Engines unterstützen die Erzeugung von Ereignisdaten und deren Injektion in die eigene Ereignisverarbeitung. So können CEP-Regeln mit gewonnenen Erkenntnissen direkt Einfluss auf die weitere Verarbeitung nehmen, indem sie neue Ereignisse erzeugen.
\paragraph{CEP-Regeln}
Eine CEP Regel definiert Bedingungen, die in einem Ereignisdatenstrom gesucht werden sollen, gefolgt von Aktionen, die bei zutreffenden Bedingungen ausgeführt werden sollen. Passen Ereignisse aus dem Datenstrom auf die Bedingungen, so matcht die Regel. Die in der Regel definierten Aktionen werden dann ausgeführt --- die Regel feuert.
\paragraph{Sliding Windows und Tumbling Windows}
Um die großen Mengen von Ereignisdaten aus einem Datenstrom effizient verarbeiten zu können, werden sie in einem Fenster fester Größe betrachtet. Die Größe eines solchen Fensters wird häufig in Sekunden angegeben. Sehr selten wird die Größe durch eine maximale Anzahl von Ereignissen angegeben, die das Fenster enthalten kann.
Um die großen Mengen von Ereignisdaten aus einem Datenstrom effizient verarbeiten zu können, werden sie in einem Fenster fester Größe betrachtet. Die Größe eines solchen Fensters wird häufig in Sekunden angegeben; sehr selten wird die Größe durch eine maximale Anzahl von Ereignissen angegeben, die das Fenster enthalten kann.
Ein \emph{Sliding Window} wird in regelmäßigen Intervallen um eine festgelegte Strecke weitergeschoben, um aktuellere Ereignisse zu betrachten, wobei die ältesten Ereignisse aus dem Fenster herausfallen. Ein \emph{Tumbling Window} hingegen wird \enquote{umgeklappt}, sodass alle zuvor in ihm enthaltenen Ereignisse herausfallen und aktuellere Ereignisse in das nun leere Fenster gefüttert werden.
Ein \emph{Sliding Window} wird in regelmäßigen Intervallen um eine festgelegten Größe verschoben, um aktuellere Ereignisse zu betrachten, wobei die älteren Ereignisse zugunsten der neuen Ereignisse aus dem Fenster herausfallen. Ein \emph{Tumbling Window} hingegen wird nicht verschoben sondern \enquote{umgeklappt}, sodass alle zuvor in ihm enthaltenen Ereignisse herausfallen und aktuellere Ereignisse in das nun leere Fenster gefüttert werden.
\todo{GRAFIK: Sliding Window vs Tumbling Window}
\paragraph{Aggregation von Ereignissen}
Eine einfache Möglichkeit um primitive Ereignisse auszuwerten ist die Aggregation von Ereignissen. Hierbei werden alle Ereignisse gleichen Typs in einem Zeitfenster betrachtet und beispielsweise über eine Summen- oder Differenzbildung, einen Mittelwert oder durch simples Zählen aggregiert. Dadurch können erste Kennzahlen und Trends gewonnen werden, die dabei helfen können, die Entwicklung der Situation in diesem Zeitfenster besser nachzuvollziehen.
Eine einfache Möglichkeit um primitive Ereignisse auszuwerten ist die Aggregation von Ereignissen zu höherwertigeren Ereignissen. Hierbei werden alle Ereignisse gleichen Typs in einem Zeitfenster betrachtet und beispielsweise über eine Summen- oder Differenzbildung, einen Mittelwert oder durch simples Zählen aggregiert. Dadurch können erste Kennzahlen und Trends gewonnen werden, die dabei helfen können, die Entwicklung der Situation in diesem Zeitfenster besser nachzuvollziehen.
\paragraph{Mustererkennung}
\todo{zeitliche Beziehungen}
\enquote{bedeutungsvolle Ereignismuster}
Komplexere Sachverhalte kann man häufig über ihre Ereignismuster erkennen. Hierbei spielen die Ereignissequenzen und die zeitlichen Beziehungen zwischen Ereignissen eine Rolle. Um ein \enquote{bedeutungsvolles Ereignismuster} zu erkennen, wird eine CEP-Regel definiert, die dieses Muster beschreibt.
Ein Beispiel für ein Ereignismuster, welches unsachgemäß abgestellte PKW erkennen kann, sieht so aus:
\begin{itemize}
\item Ereignis: Motor wurde abgeschaltet
\item \st{Ereignis: Handbremse wurde angezogen}
\item Ereignis: PKW wurde verriegelt
\end{itemize}
\paragraph{Integration von Domänenwissen}
Hat man aus in der Verarbeitung der Ereignisse selbst alle Register gezogen, so kommt die Integration des Domänenwissens ins Spiel. Alle Fakten, die über die auszuwertenden Ereignisse bekannt sind, liegen hier vor. Beispiele dafür wären:
@ -422,9 +426,6 @@ Hat man aus in der Verarbeitung der Ereignisse selbst alle Register gezogen, so
Das Domänenwissen kann somit dazu verwendet werden, um einer durch Ereignisdaten beschriebenen Situation einen eindeutigen Kontext zuzuordnen und somit die Interpretation stark zu erleichtern. Hat die Ereignisverarbeitung beispielsweise festgestellt, dass die durchschnittliche Drehzahl eines Motors bei 4230 Umdrehungen pro Minute liegt, so kann über das Domänenwissen nachgeschlagen werden, ob diese Drehzahl für das Fahrzeug zulässig ist, welches diese Daten gemeldet hat.
\paragraph{Auslösen von Aktionen (Feuern von eigenen Events auf Basis vorhandener Events)}
\todo{Mal sehen, ob das hier unten bleibt oder schon früher genannt wird - jedenfalls können die Ergebnisse der Ereignisverarbeit in neuen, höherwertigeren Ereignissen münden, die dann wieder in die Verarbeitung mit hineingeworfen werden.}
Insgesamt liegt die Herausforderung von CEP darin, in kürzester Zeit große Datenströme von Ereignissen mit Hintergrundwissen anzureichern, diese zu höherwertigen Ereignissen zu kombinieren und bestimmte Muster zu finden, sowie die Ergebnisse mit möglichst geringer Verzögerung in Echtzeit ausgeben zu können oder Reaktionen einzuleiten.