[TASK] Generic commit.

This commit is contained in:
Jan Philipp Timme 2016-09-14 14:14:35 +02:00
parent d51067a751
commit 699cf84db6

View File

@ -384,14 +384,18 @@ 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 in diesen großen Datenmengen innerhalb kürzester Zeit Muster erkennen zu können und daraus höherwertige Informationen zu aggregieren, ist Complex Event Processing (CEP) ein geeignetes Werkzeug. Wie der Begriff \enquote{Complex Event Processing} schon andeutet, geht es bei CEP um die Verarbeitung von komplexen Ereignissen. Hierbei werden primitive Ereignisse aggregiert oder auf vorgegebene Muster überprüft, um aus den Ergebnissen dann höherwertige Informationen zu gewinnen. Im folgenden Abschnitt wird hierfür ein kurzer Einstieg in das Konzept von CEP gegeben. Für eine detailreiche Erläuterung von CEP 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 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} \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. 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. 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.
\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.
@ -400,17 +404,23 @@ Ein \emph{Sliding Window} wird in regelmäßigen Intervallen um eine festgelegte
\todo{GRAFIK: Sliding Window vs Tumbling Window} \todo{GRAFIK: Sliding Window vs Tumbling Window}
\paragraph{Aggregation von Ereignissen} \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.
\paragraph{Mustererkennung} \paragraph{Mustererkennung}
\todo{zeitliche Beziehungen} \todo{zeitliche Beziehungen}
\enquote{bedeutungsvolle Ereignismuster} \enquote{bedeutungsvolle Ereignismuster}
\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:
\begin{itemize}
\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 Wer ein überwachtes Fahrzeug gerade verwendet
\end{itemize}
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)} \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.} \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.}