[TASK] Write introduction into CEP.

This commit is contained in:
Jan Philipp Timme 2016-05-04 16:49:06 +02:00
parent aa8ab697bd
commit e132bac047
1 changed files with 30 additions and 41 deletions

View File

@ -150,61 +150,50 @@ Hannover, den \today \hfill Unterschrift
Diese Arbeit beschäftigt sich mit \enquote{Complex Event Processing} (CEP), also der Verarbeitung komplexer Ereignisse auf Ereignisdatenströmen mit Integration von Hintergrundwissen, und der praktischen Nutzung der CEP-Engine C-SPARQL.
Nach einem kurzen Einstieg in das Thema CEP soll der Leser einen Einblick in die Features von aktuellen CEP-Engines erhalten und am Beispiel der Engine C-SPARQL die Verarbeitung von Ereignisströmen im RDF-Format in Kombination mit Hintergrundwissen im Detail kennenlernen. An einem Beispielszenario soll dann der Praxiseinsatz von C-SPARQL erklärt werden, in dem einige der vorgestellten Features Anwendung finden. Im Abschluss wird ein kurzer Ausblick auf die technischen Möglichkeiten des Reasoning gegeben - eine Technik, die es erlaubt auf den vorhandenen und eingehenden Daten logische Schlussfolgerungen und Operationen durchzuführen um neues Wissen zu erhalten.
Nach einem kurzen Einstieg in das Thema CEP soll der Leser einen Einblick in die Features von aktuellen CEP-Engines erhalten und am Beispiel der Engine C-SPARQL\footnote{Mehr Informationen zu C-SPARQL und Download unter \url{http://streamreasoning.org/download}} die Verarbeitung von Ereignisströmen im RDF-Format in Kombination mit Hintergrundwissen im Detail kennenlernen.
An einem Beispielszenario soll dann der Praxiseinsatz von C-SPARQL erklärt werden, in dem einige der vorgestellten Funktionen Anwendung finden. Im Abschluss wird ein kurzer Ausblick auf die technischen Möglichkeiten des \enquote{Reasoning} gegeben - eine Technik, die es erlaubt auf den vorhandenen und eingehenden Daten logische Operationen und Schlussfolgerungen durchzuführen um daraus neues Wissen abzuleiten.
\todo
\section{Einführung in Complex Event Processing}
Im folgenden Abschnitt wird ein kurzer Überblick über Complex Event Processing (CEP) gegeben. Eine detailreiche Erläuterung von CEP und die Anwendung der Engine Esper in einem Beispielszenario wird in \cite{hsh:cep} beschrieben.
Im folgenden Abschnitt wird ein kurzer Einstieg in das Konzept von Complex Event Processing (CEP) gegeben. Eine detailreiche Erläuterung von CEP und die beispielhafte Anwendung der CEP-Engine \enquote{Esper} wird in \cite{hsh:cep} beschrieben.
Wie der Begriff \enquote{Complex Event Processing} schon andeutet, geht es bei CEP um die Verarbeitung von Ereignissen. Dank der immer weiter fortschreitenden Digitalisierung in unserer Welt steckt in nahezu jedem Gebäude, Auto, Haushaltsgerät oder in fast jeder Hosentasche inzwischen ein - wenn auch kleiner - Computer, der über gewisse Aspekte seiner Umgebung Informationen erhält.
Dies kann durch angeschlossene Sensoren geschehen, Überwachung von vernetzten Komponenten oder durch menschliche Bedienung oder Nutzung.
Beispielsweise erhält der Bordcomputer eines Autos regelmäßig Informationen von im Auto verbauten Komponenten über fehlgeschlagene Zündungen oder die Temperatur des Motors bis hin zum Einschlagswinkel des Lenkrades, falls in dem PKW eine Servolenkung verbaut ist.
Während das Beispiel des PKW in die Kategorie des sogenannten \enquote{Internet der Dinge} fällt, finden sich im Internet auf Webseiten zahlreiche weitere Beispiele für Informationen, die in Form von Ereignissen auftreten.
Ein Beispiel hierfür sind Benutzerinteraktionen: Das Auslösen einer Bestellung in einem Onlineshop, das Ändern eines Passwortes durch einen Benutzer oder das Versenden einer Nachricht an einen anderen Benutzer in einem sozialen Netzwerk sind Ereignisse, die eine Menge an Informationen enthalten.
Ereignisse stellen einen konkreten momentanen Zustand dar, aber sind für sich alleine betrachtet kontextlos; die daraus resultierende Bedeutung fehlt. Weiterhin sind diese Informationen oft nur für einen begrenzten Zeitraum gültig.
Die Erkennung von Mustern in den Ereignissen ist interessant.
Abhängig von der Anzahl aktiver Benutzer auf der Webseite, die als Datenquelle dienen soll, kann die Anzahl der dort ausgelösten Ereignisse so groß werden, dass innerhalb von kleinen Zeiträumen bereits sehr große Datenmengen zusammenkommen.
Eine Speicherung der Ereignisse hat aufgrund der begrenzten Gültigkeitsdauer ihrer Informationen\footnote{Das Ergebnis der Messung der aktuellen Temperatur eines Automotors kann je nach Situation nur wenige Minuten aktuell sein und wird durch das nächste Messergebnis obsolet.}höchstens einen protokollogischen Nutzen. Daher werden die Ereignisse in Form von Datenströmen an die CEP-Engine übermittelt und dort \emph{nur für den Zeitraum der Verarbeitung} im Hauptspeicher vorgehalten.
Die Informationen der Ereignisse stellen den momentanen Zustand dar; allerdings sind sie für sich alleine betrachtet Kontext- und somit Bedeutungslos. Betrachtet man beispielsweise das Ereignis \enquote{Die gemessene Motortemperatur beträgt 40°C.}, so ist daraus nicht zu erkennen, ob das Fahrzeug gerade seit kurzem auf der Straße unterwegs ist oder lediglich im Hochsommer in der Sonne steht. Auch ist nicht zu erkennen, ob es sich bei dem Motor überhaupt um einen Automotor handelt. Dass überhaupt von einer \enquote{Motortemperatur} die Rede sein kann impliziert bereits die Existenz von \emph{Hintergrundwissen} darüber, worauf die gemessene Temperatur sich bezieht.
\section{Ereignisquellen}
\todo Nun kommt der Faktor Zeit ins Spiel!
Ereignisse treten überall auf, wenn man sich darauf einlässt.
Welche Ereignisse kann man sich denn so vorstellen?
Diese hier:
\begin{itemize}
\item Ein Online-Shop meldet eine ausgelöste Bestellung
\item Ein soziales Netzwerk meldet die Interaktion eines Benutzers
\item Die Wetterstation meldet ihre aktuellen Messwerte
\item Windkraftanlagen melden ihre Drehgeschwindigkeit
\item Ein Auto meldet Fehlzündungen im zweiten Zylinder
\item Fabrikmaschinen melden Fehler im Betrieb
\item Rauchmelder melden ihre Auslösung
\item \dots und vieles mehr
\end{itemize}
\section{Ereignisse als Informationsträger}
Alles, was irgendwo passiert liefert Informationen über den Zustand unserer Umgebung.
Jede aktuell gemeldete Information ist ein Ereignis. Eine gerade gemessene Temperatur, eine Fehlermeldung einer Werkzeugmaschine oder das Auslösen eines Rauchmelders sind Ereignisse, die einen aktuellen Zustand unserer Welt repräsentieren.
Für unsere Zwecke können wir das nutzen.
Ereignisse haben einen Zeitstempel [und eine ID]. Der Zeitstempel ist wichtig, die ID auch etwas.
Ein Ereignis kann beispielsweise so strukturiert sein:
\begin{lstlisting}[caption={Beispielhaftes Ereignis dargestellt in JSON}]
{
"ID": "17352",
"Zeitstempel": "Mo 4. Apr 12:38:19 CEST 2016",
"Daten": {
"Temperatur": "19°C",
"Luftfeuchtigkeit": "31%"
}
}
Gegeben sei als Beispiel folgender, fiktiver Ereignisstrom:
\begin{lstlisting}[caption={Exemplarischer Ereignisstrom}]
[T=1] Geschwindigkeitssensor 1: 105km/h
[T=1] Temperatursensor 2: 64°C
[T=1] Flüssigkeitssensor 1: niedrig
[T=2] Geschwindigkeitssensor 1: 79km/h
[T=2] Temperatursensor 2: 83°C
[T=2] Flüssigkeitssensor 1: niedrig
[T=3] Geschwindigkeitssensor 1: 56km/h
[T=3] Temperatursensor 2: 94°C
[T=3] Flüssigkeitssensor 1: niedrig
[T=4] Geschwindigkeitssensor 1: 0km/h
[T=4] Temperatursensor 2: 109°C
[T=4] Flüssigkeitssensor 1: niedrig
\end{lstlisting}
\section{Ereignisströme als Datenquelle}
Zunächst sei unter Verwendung von Hintergrundwissen verraten: Diese Sensoren befinden sich alle in ein und dem selben PKW. Geschwindigkeitssensor 1 misst dessen Momentangeschwindigkeit, Temperatursensor 2 die Temperatur des Motors und Flüssigkeitssensor 1 den Stand des Kühlwassers.
Ja, Ereignisse treten öfters in Rudeln auf. Wenn viele Ereignisse aneinandergereiht werden, spricht man von einem Ereignisstrom.
Anbieter von Daten können anstatt aktueller Messwerte als einzelnes Ereignis natürlich gleich Ereignisströme liefern. Das ist technisch sicherlich auch ganz praktisch, weil Verzicht auf Polling und so Sachen.
\todo
Die Herausforderung bei CEP liegt also darin große Ströme von Ereignissen unter Zuhilfenahme von Hintergrundwissen zu kombinieren, relevante Ereignisse daraus zu selektieren und in diesen bestimmte Muster zu erkennen, um daraus höherwertige, bedeutungsreiche Ereignisse zu konstruieren.
\chapter{Gegenüberstellung existierender CEP-Engines}