[TASK] Generic commit.

This commit is contained in:
Jan Philipp Timme 2016-09-27 15:18:33 +02:00
parent dffc74c4c8
commit 717c96b7c4
1 changed files with 24 additions and 20 deletions

View File

@ -383,11 +383,22 @@ Von Transaktionen im Handel über Messereignisse von Sensoren bis hin zu Benutze
\paragraph{CEP-Engine} \paragraph{CEP-Engine}
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 diese 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\footnote{Dieser Parameter hängt meist von der Größe der verwendeten Sliding Windows ab.} im Speicher gehalten und nicht persistiert. 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 diese 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\footnote{Dieser Parameter hängt meist von der Größe der verwendeten Sliding Windows ab.} im Speicher gehalten und nicht persistiert.
\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 Ereignistyp 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 abhängig von seinem Ereignistypen 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 komplexer Vorgang während seiner Durchführung eine Vielzahl von Ereignissen auslösen kann. Beobachtet 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 von Sensoren 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{CEP-Regeln} \paragraph{CEP-Regeln}
Zur Erläuterung von CEP-Regeln und der Vereinfachung des Übergangs zu C-SPARQL wird für CEP-Regeln eine abstrakte Sprache eingeführt, anhand derer die einzelnen Konstrukte von CEP-Regeln erläutert werden sollen. Zur Erläuterung von CEP-Regeln wird für diese hier eine abstrakte Sprache eingeführt, anhand derer die einzelnen Sprachkonstrukte von CEP-Regeln erläutert werden sollen.
Eine CEP-Regel besteht aus zwei Teilen: Zuerst definiert der \texttt{CONDITION}-Teil Ereignismuster, die in dem Ereignisdatenstrom gesucht werden sollen, sowie spezifische Bedingungen, die für auf das Muster passende Ereignisse erfüllt sein müssen. Eine CEP-Regel besteht zunächst aus zwei Teilen: Zuerst definiert der \texttt{CONDITION}-Teil Ereignismuster, die in dem Ereignisdatenstrom gesucht werden sollen, sowie spezifische Bedingungen, die für auf das Muster passende Ereignisse erfüllt sein müssen.
\begin{lstlisting}[mathescape=true,label={},caption={}] \begin{lstlisting}[mathescape=true,label={},caption={}]
CONDITION (Ereignismuster) CONDITION (... Ereignismuster ...)
... weitere Bedingungen ... ... weitere Bedingungen ...
\end{lstlisting} \end{lstlisting}
Sind alle Bedingungen im \texttt{CONDITION}-Teil erfüllt, so \enquote{matcht} die Regel\cite{hsh:cep}. Im darauffolgenden \texttt{ACTION}-Teil wird eine Reihe von Aktionen definiert, die ausgeführt werden sollen, sobald die Bedingungen der Regel eintreffen. Dies kann beispielsweise die Erzeugung eines neuen Ereignisses oder das Anstoßen eines Dienstes sein. Da die Daten der Ereignisse, auf die der \texttt{CONDITION}-Teil gepasst hat, für die weitere Verarbeitung von Interesse ist, stehen sie im \texttt{ACTION}-Teil zur Verfügung. Sind alle Bedingungen im \texttt{CONDITION}-Teil erfüllt, so \enquote{matcht} die Regel\cite{hsh:cep}. Im darauffolgenden \texttt{ACTION}-Teil wird eine Reihe von Aktionen definiert, die ausgeführt werden sollen, sobald die Bedingungen der Regel eintreffen. Dies kann beispielsweise die Erzeugung eines neuen Ereignisses oder das Anstoßen eines Dienstes sein. Da die Daten der Ereignisse, auf die der \texttt{CONDITION}-Teil gepasst hat, für die weitere Verarbeitung von Interesse ist, stehen sie im \texttt{ACTION}-Teil zur Verfügung.
@ -397,21 +408,12 @@ ACTION
\end{lstlisting} \end{lstlisting}
Matcht eine Regel, so werden die in ihr definierten Aktionen ausgeführt --- die Regel feuert\cite{hsh:cep}. Zusammengefasst sieht eine CEP-Regel wie folgt aus: Matcht eine Regel, so werden die in ihr definierten Aktionen ausgeführt --- die Regel feuert\cite{hsh:cep}. Zusammengefasst sieht eine CEP-Regel wie folgt aus:
\begin{lstlisting}[mathescape=true,label={lst:abstract_cep_rule_basics},caption={Grundgerüst einer CEP-Regel}] \begin{lstlisting}[mathescape=true,label={lst:abstract_cep_rule_basics},caption={Grundgerüst einer CEP-Regel}]
CONDITION (Ereignismuster) CONDITION (... Ereignismuster ...)
... weitere Bedingungen ... ... weitere Bedingungen ...
ACTION ACTION
... auszulösende Aktionen ... ... auszulösende Aktionen ...
\end{lstlisting} \end{lstlisting}
\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 Ereignistyp 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 abhängig von seinem Ereignistypen 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{Mustererkennung} \paragraph{Mustererkennung}
\todo{Mehr! Mustererkennung!} \todo{Mehr! Mustererkennung!}
Komplexe Vorgänge kann man häufig über Muster aus den Ereignissen erkennen, die sie auslösen. Hierbei spielen Ereignissequenzen und die zeitlichen Beziehungen zwischen Ereignissen eine Rolle. Um ein \enquote{bedeutungsvolles Ereignismuster} zu erkennen, wird eine CEP-Regel definiert, die dieses Muster in ihrem \texttt{CONDITION}-Teil beschreibt. Komplexe Vorgänge kann man häufig über Muster aus den Ereignissen erkennen, die sie auslösen. Hierbei spielen Ereignissequenzen und die zeitlichen Beziehungen zwischen Ereignissen eine Rolle. Um ein \enquote{bedeutungsvolles Ereignismuster} zu erkennen, wird eine CEP-Regel definiert, die dieses Muster in ihrem \texttt{CONDITION}-Teil beschreibt.
@ -425,7 +427,7 @@ Ein Beispiel für ein Ereignismuster, welches unsachgemäß abgestellte PKW erke
Um nun eine CEP-Regel zu 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, müssen zunächst weitere Sprachkonstrukte für CEP-Regeln vorgestellt werden. Um nun eine CEP-Regel zu 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, müssen zunächst weitere Sprachkonstrukte für CEP-Regeln vorgestellt werden.
\begin{lstlisting}[mathescape=true,label={lst:abstract_cep_rule_two},caption={CEP-Regel mit Definition eines Ereignisfensters}] \begin{lstlisting}[mathescape=true,label={lst:abstract_cep_rule_two},caption={CEP-Regel mit Definition eines Ereignisfensters}]
CONDITION (Ereignismuster)[WindowSize:15min,StepSize:10s] CONDITION (... Ereignismuster ...)[WindowSize:15min,StepSize:10s]
... weitere Bedingungen ... ... weitere Bedingungen ...
ACTION ACTION
... auszulösende Aktionen ... ... auszulösende Aktionen ...
@ -696,7 +698,7 @@ Im Folgenden wird auf die praktische Anwendung der C-SPARQL-Engine in einem Java
Vielleicht geht das mit dem Reasoning später ja noch besser --- aktueller Stand ist noch limitiert, aber es wird fleißig daran geforscht \dots Vielleicht geht das mit dem Reasoning später ja noch besser --- aktueller Stand ist noch limitiert, aber es wird fleißig daran geforscht \dots
\begin{comment}
\chapter*{Dummy-Kapitel für Tests und Notizen} \chapter*{Dummy-Kapitel für Tests und Notizen}
\textcolor{red}{Dieses Kapitel fliegt am Ende natürlich raus.} \textcolor{red}{Dieses Kapitel fliegt am Ende natürlich raus.}
@ -720,28 +722,30 @@ Quellenreferenzen
\item \cite{hsh:cep}[Einstieg in CEP mit Beispielen aus Esper-Welt] \item \cite{hsh:cep}[Einstieg in CEP mit Beispielen aus Esper-Welt]
\item \cite{hsh:integrating}[Esper vs C-SPARQL CEP ohne Reasoning] \item \cite{hsh:integrating}[Esper vs C-SPARQL CEP ohne Reasoning]
\item \cite{barbieri:reasoning}[Ansatz für Reasoning auf RDF-Strömen mit C-SPARQL] \item \cite{barbieri:reasoning}[Ansatz für Reasoning auf RDF-Strömen mit C-SPARQL]
\item \cite{barbieri:querying}[Grundlagen C-SPARQL für CEP] \item \cite{barbieri:querying}[Grundlagen C-SPARQL für CEP] <--- NOT CITED YET
\item \cite{cqels:stream}[CQELS-Paper] \item \cite{cqels:stream}[CQELS-Paper]
\item \cite{ep:etalis}[ETALIS-Paper] \item \cite{ep:etalis}[ETALIS-Paper]
\item \cite{ep:unified}[EP-SPARQL-Paper] \item \cite{ep:unified}[EP-SPARQL-Paper]
\item \cite{man:owl}[Owl Reasoning Examples] \item \cite{man:owl}[Owl Reasoning Examples]
\item \cite{w3c:sparql}[W3C zu SPARQL] \item \cite{w3c:sparql}[W3C zu SPARQL]
\item \cite{iao:esper}[Marktübersicht Real-Time Monitoring Software] \item \cite{iao:esper}[Marktübersicht Real-Time Monitoring Software] <--- NOT CITED YET
\item \cite{w3c:turtle}[Die Turtle-Notation] \item \cite{w3c:turtle}[Die Turtle-Notation]
\item \cite{hitzler:semanticweb}[Grundlagen Semantic Web] \item \cite{hitzler:semanticweb}[Grundlagen Semantic Web]
\item \cite{cqels:native}[Mehr CQELS] \item \cite{cqels:native}[Mehr CQELS]
\item \cite{barbieri:csparql}[Erstes C-SPARQL Proposal] \item \cite{barbieri:csparql}[Erstes C-SPARQL Proposal]
\end{itemize} \end{itemize}
\end{comment}
%%% Ende inhaltlicher Inhalt! %%% %%% Ende inhaltlicher Inhalt! %%%
% Literaturverzeichnis % Literaturverzeichnis
\addcontentsline{toc}{chapter}{Literaturverweise} \clearpage
% Schlüssel als Buchstaben % Schlüssel als Buchstaben
\bibliographystyle{alpha} \bibliographystyle{alpha}
\bibliography{Literaturverweise} \bibliography{Literaturverweise}
% Und JETZT zum Inhaltsverzeichnis hinzufügen. Geil!
\addcontentsline{toc}{chapter}{Literaturverweise}
\end{document} \end{document}
% Nothing beyond this line! % Nothing beyond this line!