[TASK] Restructure introduction

This commit is contained in:
Jan Philipp Timme 2016-07-11 18:09:01 +02:00
parent b1832959be
commit 3fb92c7af7

View File

@ -159,33 +159,22 @@ An einem Beispielszenario soll dann der Praxiseinsatz von C-SPARQL erklärt werd
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 komplexen Ereignissen.
Dank der immer weiter fortschreitenden Digitalisierung in unserer Welt steckt in nahezu jedem Gebäude, Fahrzeug, Haushaltsgerät bis hin zur Hosentasche inzwischen ein (wenn auch kleiner) Computer, der über seine Umgebung Informationen sammelt.
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 den im Auto verbauten Komponenten über fehlgeschlagene Zündungen, die Temperatur des Motors, oder den Einschlagswinkel des Lenkrades.
All diese Informationen können als Messereignisse betrachtet werden, die dem Bordcomputer von den einzelnen Sensoren und Komponenten übermittelt werden.
Wie der Begriff \enquote{Complex Event Processing} schon andeutet, geht es bei CEP um die Verarbeitung von komplexen Ereignissen - konkret: Die Erkennung und Erfassung von komplexen Ereignissen aus Datenströmen von primitiven Ereignissen. Von Messereignissen aus mit Sensoren ausgestatteten Geräten über Transaktionen im Handel bis hin zu Benutzerinteraktionen auf Webseiten entstehen täglich unzählig viele Ereignisse, die abhängig von ihrem Kontext für einen bestimmten Zeitraum ein Stück der echten Welt korrekt abbilden.
Während das Beispiel des PKW schon bald komplett in die Kategorie des sogenannten \enquote{Internet der Dinge} fallen wird, 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 in einem sozialen Netzwerk sind Ereignisse, die eine Menge an Informationen enthalten.
Die Informationen dieser Ereignisse stellen nur einen momentanen Zustand dar; sie sind für sich alleine betrachtet Kontext- und somit Bedeutungslos. Betrachtet man beispielsweise ein Ereignis \enquote{Die gemessene Temperatur beträgt 42°C.}, so ist zunächst nicht einmal zu erkennen, was es mit dieser Temperatur auf sich hat. Hier kommt das \emph{Hintergrundwissen} ins Spiel, welches uns in diesem Fall verraten kann, dass die Quelle dieses Ereignisses ein Sensor in einem PKW ist und am Motorblock befestigt ist. Dieses Wissen ermöglicht nun eine weitere Interpretation des Ereignisses; allerdings müssen noch weitere Informationen hinzugezogen werden, um ein eindeutiges Bild zu erhalten. Kombiniert man dieses Ereignis mit den Meldungen des im PKW installierten Geschwindigkeitssensors, so kann man herausfinden, ob die gemessene Motortemperatur für den aktuellen Betriebszustand des PKW innerhalb der im Hintergrundwissen hinterlegten Grenzwerten liegt.
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 \emph{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 protokollierenden 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, wo der Temperatursensor platziert ist - und somit, worauf sich die gemessene Temperatur bezieht.
Ein weiterer wichtiger Faktor ist der Zeitraum, in dem Ereignisse auftreten. Um dies näher zu erläutern, betrachten wir beispielhaft den Ereignisstrom aus Listing~\ref{lst:sample_eventstream}.
Ein weiterer, wichtiger Faktor ist der Zeitraum in dem gewisse Ereignisse auftreten. Um dies näher zu erläutern, betrachten wir den gegebenen Ereignisstrom aus Listing~\ref{lst:sample_eventstream}.
\begin{lstlisting}[caption={Exemplarischer Ereignisstrom: Motortemperatur eines PKW},label={lst:sample_eventstream}]
[T=1] Temperatursensor: 40°C
[T=2] Temperatursensor: 48°C
[T=3] Temperatursensor: 61°C
[T=4] Temperatursensor: 84°C
[Event #1] Temperatur: 40°C
[Event #2] Temperatur: 48°C
[Event #3] Temperatur: 61°C
[Event #4] Temperatur: 84°C
\end{lstlisting}
Unter Verwendung von Hintergrundwissen sei nun verraten: Der Temperatursensor befindet sich an dem Motor eines PKW und hat in regelmäßigen Abständen diese vier Messwerte gemeldet. Auf den ersten Blick ist ersichtlich, dass die Messwerte einen sehr starken Temperaturanstieg abbilden, jedoch kann über den nächsten Messwert nur spekuliert werden, da die zeitlichen Abstände zwischen den Messereignissen einen großen Unterschied ausmachen können. Liegen zwischen den Messereignissen beispielsweise etwa 30-60 Minuten, so könnte es sich um einen normalen Betrieb bei hoher Geschwindigkeit handeln. Sollten jedoch nur wenige Minuten zwischen den Messereignissen vergangen sein, so lassen die Messwerte auf einen Defekt im Kühlsystem schließen und ein Motorschaden wäre eine mögliche Folge. Die Zeitachse darf somit bei der Ereignisverarbeitung nicht vernachlässigt werden.
Auf den ersten Blick ist ersichtlich, dass die Messwerte einen sehr starken Temperaturanstieg abbilden, jedoch fehlt eine Angabe darüber, wie viel Zeit zwischen diesen Ereignissen vergangen ist. Dadurch ist die Interpretation dieser Ereignisse nicht mehr eindeutig möglich: Liegen zwischen den Messereignissen beispielsweise etwa 30-60 Minuten, so könnte es sich um einen normalen Betrieb bei hoher Geschwindigkeit handeln. Sollten jedoch nur wenige Minuten zwischen den Messereignissen vergangen sein, so lassen die Messwerte auf einen Defekt schließen und ein Motorschaden wäre eine mögliche Folge. Die Zeitachse darf somit bei der Ereignisverarbeitung nicht vernachlässigt werden.
Ein weiterer wichtiger Gesichtspunkt ist die Kombination von verschiedenen Ereignissen miteinander. Dies kann genutzt werden, um für ein Ereignis weitere Informationen aus dem Kontext zu erhalten oder um ein Ereignis mit Daten aus anderer Quelle abgleichen zu können. So können beispielsweise die Temperaturmessungen aus dem obigen Beispiel mit Informationen über die Geschwindigkeit des PKW in dem Zeitraum abgeglichen werden oder durch den Vergleich mit anderen Temperatursensoren falsche Messergebnisse durch defekte Sensoren erkannt werden.
Darauf aufbauend ist die Mustererkennung ist ein weiteres Kernfeature von CEP-Engines und dient dazu, aus bestimmten primitiven Ereignissen in vorgegebener Abfolge einen höheren Sachverhalt abzuleiten. Treten bei einem PKW beispielsweise nacheinander die Ereignisse \enquote{Motor abgeschaltet}, \enquote{Fahrzeug verriegelt} und \enquote{PKW beschleunigt} auf, so ist ein abgestelltes Fahrzeug losgerollt, und man sollte unverzüglich dessen Besitzer darüber informieren.
Ein weiterer Kernaspekt von CEP ist die Mustererkennung in Ereignissen. Aus bestimmten primitiven Ereignissen, die in einer bestimmten Abfolge auftreten, soll ein konkreter Sachverhalt abgeleitet werden. Treten bei einem PKW beispielsweise in kurzer Zeit nacheinander die Ereignisse \enquote{Motor abgeschaltet}, \enquote{Fahrzeug verriegelt} und \enquote{PKW beschleunigt} auf, so ist daraus zu schließen, dass ein gerade abgestelltes Fahrzeug wahrscheinlich unbeabsichtigt losgerollt ist und es sollte unverzüglich eine Reaktion darauf gestartet werden.
Insgesamt liegt die Herausforderung bei CEP also darin große Ströme von Ereignissen unter Zuhilfenahme von Hintergrundwissen zu kombinieren, relevante Ereignisse daraus zu selektieren und unter diesen Muster zu erkennen, daraus höherwertige und bedeutungsvolle Ereignisse zu konstruieren und möglichst in Echtzeit weiterzugeben.
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.
\section{Complex Event Processing auf RDF-Datenströmen}