[TASK] Generic commit.

This commit is contained in:
Jan Philipp Timme 2016-09-15 15:12:20 +02:00
parent 2a484de1e0
commit bac34b2da5
1 changed files with 18 additions and 10 deletions

View File

@ -385,18 +385,23 @@ Wie in Listing~\ref{lst:sample_sparql_construct} gezeigt, können einfache Opera
\section{Einführung in Complex Event Processing}\label{cpt:cep_intro} \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. 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 durch 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{Ereignisse} \paragraph{CEP-Engine}
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. Um Complex Event Processing durchführen zu können, wird eine CEP-Engine benötigt. Eine CEP-Engine ist eine Software, welche Ereignisdatenströme konsumiert und durch die Auswertung benutzerdefinierter CEP-Regeln verarbeitet. Aufgrund der großen Datenvolumen, die eine CEP-Engine verarbeiten muss, werden Ereignisse nur für die Dauer der Verarbeitung im Speicher gehalten\footnote{Dieser Parameter hängt meist von der Größe der verwendeten Sliding Windows ab.} und nicht persistiert.
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 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} \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. 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 den Vorgang durch den es ausgelöst wurde auch eine eindeutige ID sowie einen Zeitstempel mit sich. Während der Zeitstempel den Zeitpunkt der Ereignisauslösung angibt, dient die ID zur eindeutigen Abgrenzung von anderen Ereignisssen, die vom selben Typ sind oder zum selben Zeitpunkt entstanden sind. Da es bedingt durch Übertragunglatenz und weitere technische Randbedingungen möglich ist, dass die Ereignisdaten zeitverzögert bei der CEP-Engine ankommen, wird der Zeitstempel ebenfalls benötigt, um die zeitlichen Beziehungen zwischen den Ereignissen zu erhalten.
Jedes Ereignis trägt eine geringe Menge von Daten mit sich, die für das Ereignis spezifische Informationen enthalten. Dies können beispielsweise Daten von Sensoren, Angaben über eine Benutzersitzung oder Statusdaten eines Systems sein. Diese Daten sind jedoch nur \emph{Momentaufnahmen} und verlieren mit fortschreitender Zeit meist an Gültigkeit.
Dafür treten diese primitiven Ereignisse häufig mit einer sehr hohen Frequenz auf, da ein Vorgang bei seiner Durchführung eine Vielzahl von Ereignissen auslösen kann. Betrachtet man beispielsweise einen aus dem Stand anfahrenden PKW bis zu seiner Erreichung von 30km/h, so würde man zusätzlich zu periodisch gemeldeten Messwerten aus dem Motorraum und Informationen über Gangwechsel des Getriebes eine Flut von Informationen darüber erhalten, wie die Pedale durch den Fahrer bedient wurden oder wie das Lenkrades eingeschlagen wurde.
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 durch CEP-Regeln gewonnene Erkenntnisse direkt Einfluss auf die weitere Verarbeitung nehmen, indem sie als neue Ereignisse in die Verarbeitung aufgenommen werden.
\paragraph{Sliding Windows und Tumbling Windows} \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.
@ -407,6 +412,8 @@ Ein \emph{Sliding Window} wird in regelmäßigen Intervallen um eine festgelegte
\paragraph{Aggregation von Ereignissen} \paragraph{Aggregation von Ereignissen}
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. 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.
\todo{GRAFIK: Aggregation grob zeigen?}
\paragraph{Mustererkennung} \paragraph{Mustererkennung}
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. 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: Ein Beispiel für ein Ereignismuster, welches unsachgemäß abgestellte PKW erkennen kann, sieht so aus:
@ -418,15 +425,16 @@ Ein Beispiel für ein Ereignismuster, welches unsachgemäß abgestellte PKW erke
Man könnte nun eine CEP-Regel definieren, die für jeweils \emph{den selben} PKW nach den Ereignissen \enquote{Motor wurde abgeschaltet} und \enquote{PKW wurde verriegelt} sucht und zwischen diesen Ereignissen kein Ereignis \enquote{Handbremse wurde angezogen} erwartet. Matcht diese Regel, so könnte man darauf basierend ein neues Ereignis erzeugen, welches auf diesen Umstand hinweist --- oder direkt einen Alarm auslösen und beispielsweise den Fahrer benachrichtigen. Man könnte nun eine CEP-Regel definieren, die für jeweils \emph{den selben} PKW nach den Ereignissen \enquote{Motor wurde abgeschaltet} und \enquote{PKW wurde verriegelt} sucht und zwischen diesen Ereignissen kein Ereignis \enquote{Handbremse wurde angezogen} erwartet. Matcht diese Regel, so könnte man darauf basierend ein neues Ereignis erzeugen, welches auf diesen Umstand hinweist --- oder direkt einen Alarm auslösen und beispielsweise den Fahrer benachrichtigen.
\todo{GRAFIK: Mustererkennung grob zeigen?}
\paragraph{Integration von Domänenwissen} \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: Hat man in der Verarbeitung der Ereignisse durch CEP-Regeln 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:
\begin{itemize} \begin{itemize}
\item Wo ein Sensor positioniert ist und was er misst \item Wo ein Sensor positioniert ist und was er misst
\item Von welchem Modell ein zu überwachendes Fahrzeug ist und welche bekannten Grenzwerte für den Betrieb eingehalten werden müssen \item Von welchem Modell ein zu überwachendes Fahrzeug ist und welche bekannten Grenzwerte für den Betrieb eingehalten werden müssen
\item Wer ein überwachtes Fahrzeug gerade verwendet \item Wer ein überwachtes Fahrzeug gerade verwendet
\end{itemize} \end{itemize}
Das Domänenwissen kann somit verwendet werden, um einer durch Ereignisdaten beschriebenen Situation einen eindeutigen Kontext zuzuordnen und somit die Interpretation der Daten stark zu erleichtern. Hat die Ereignisverarbeitung beispielsweise festgestellt, dass die durchschnittliche Drehzahl eines Motors bei 4200 Umdrehungen pro Minute liegt, so kann über das Domänenwissen nachgeschlagen werden, in welchem Fahrzeug der betroffene Motor montiert ist, von welchem Typen das Fahrezug ist, und ob die Motordrehzahl für diesen Fahrzeugtypen zulässig ist.
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.
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. 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.