From d5c2d8fe013560dd022e5c5f4dba92916d846db4 Mon Sep 17 00:00:00 2001 From: Jan Philipp Timme Date: Tue, 27 Sep 2016 17:47:12 +0200 Subject: [PATCH] [TASK] Generic commit. --- Bachelorarbeit.tex | 22 +++++++++++----------- 1 file changed, 11 insertions(+), 11 deletions(-) diff --git a/Bachelorarbeit.tex b/Bachelorarbeit.tex index 24aae34..5ef4285 100644 --- a/Bachelorarbeit.tex +++ b/Bachelorarbeit.tex @@ -384,9 +384,9 @@ Von Transaktionen im Handel über Messereignisse von Sensoren bis hin zu Benutze 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} -Im Rahmen von Complex Event Processing werden Ereignisdaten als Instanzen von Ereignistypen betrachtet. Während ein Ereignistyp für eine bestimmte Klasse von Vorkommnissen grundlegende Eigenschaften und Attribute definiert, repräsentiert eine Ereignisinstanz ein konkretes Ereignis dieses Ereignistypen\cite{hsh:cep}. Diese trägt neben inhaltlichen Informationen über den Vorgang durch den sie 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. +Im Rahmen von Complex Event Processing werden Ereignisdaten als Instanzen von Ereignistypen betrachtet. Während ein Ereignistyp für eine bestimmte Klasse von Vorkommnissen grundlegende Eigenschaften und Attribute definiert, repräsentiert eine Ereignisinstanz ein konkretes Ereignis dieses Ereignistypen\cite{hsh:cep}. Diese trägt neben inhaltlichen Informationen über den Vorgang durch den sie 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 Ereignissen, 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. Listing~\ref{lst:sample_abstract_car_status_event} zeigt beispielhaft ein primitives CarStatusEvent. +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. Listing~\ref{lst:sample_abstract_car_status_event} zeigt beispielhaft eine primitive Instanz des Ereignistypen \texttt{CarStatusEvent}. \begin{lstlisting}[caption={Exemplarische Statusmeldung eines PKW in abstrakter Notation},label={lst:sample_abstract_car_status_event}] CarStatusEvent(ID=2342, timestamp=1344829400, relatedCarNumber=11, speed=63) @@ -397,9 +397,7 @@ Dafür treten diese primitiven Ereignisse häufig mit einer sehr hohen Frequenz 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{Ereignisfolgen und Ereignisalgebra} -Eine Ereignisfolge bezeichnet eine Sequenz von Ereignistypen und kann nach dem Schema $a_1b_1a_2c_1$ notiert werden. Dabei bezeichnet $a_i$ die $i$-te eine Instanz des Ereignistypen A\cite{hsh:cep}. - -\todo{!} Ich möchte hier klarstellen, wie man mit Operatoren der Ereignisalgebra umgeht, damit ich diese im Paragraphen Ereignismuster nutzen kann, um zu erklären, wie man in CEP-Regeln die Ereignismuster formuliert, die gematcht werden sollen. +Ereignisdatenströme liefern eine theoretisch unendliche Ereignisfolge. Eine Ereignisfolge ist eine Sequenz von Ereignistypen und kann nach dem Schema $a_1b_1a_2c_1$ notiert werden, wobei $a_i$ die $i$-te Instanz des Ereignistypen A bezeichnet\cite{hsh:cep}. Zur Unterscheidung von Ereignistypen und Instanzen werden für Instanzen kleine Buchstaben, für Ereignistypen hingegen große Buchstaben verwendet. \paragraph{CEP-Regeln} @@ -422,18 +420,20 @@ ACTION ... auszulösende Aktionen ... \end{lstlisting} -\paragraph{Mustererkennung} +\paragraph{Erkennung von Ereignismustern} \todo{MEHR!} 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. Ein Beispiel für ein Ereignismuster, welches unsachgemäß abgestellte PKW erkennen kann, könnte so aussehen: \begin{itemize} -\item Ereignis: Motor wurde abgeschaltet -\item \st{Ereignis: Handbremse wurde angezogen} (\textbf{nicht} passiert!) -\item Ereignis: PKW wurde verriegelt +\item Ereignis A: Motor wurde abgeschaltet +\item \st{Ereignis B: Handbremse wurde angezogen} (\textbf{nicht} passiert!) +\item Ereignis C: PKW wurde verriegelt \end{itemize} 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. + + \todo{Ich möchte hier klarstellen, wie Muster in der abstrakten CEP-Regelsprache mit Operatoren der Ereignisalgebra definiert werden können.} \begin{lstlisting}[mathescape=true,label={lst:abstract_cep_rule_two},caption={CEP-Regel mit Definition eines Ereignisfensters}] @@ -578,7 +578,7 @@ ACTION \end{lstlisting} -\subsection{C-SPARQL als Sprache für CEP-Regeln} +\section{C-SPARQL als Sprache für CEP-Regeln} \begin{lstlisting}[label={},caption={}] CONDITION @@ -621,7 +621,7 @@ Mögliche Aggregationsfunktionen laut \cite{barbieri:csparql} sind: \paragraph{Mustererkennung} \todo{\dots} Ereignismuster lassen sich durch Sequenzen von auftretenden bzw. nicht auftretenden Ereignissen definieren. Um diese zu finden, müssen Tripel selektiert werden, die zu den benötigten Ereignistypen korrespondieren, wobei diese später über \texttt{FILTER}-Anweisungen in ihrer Reihenfolge festgelegt werden. Über Differenzen der durch \texttt{f:timestamp(?s,?p,?o)} angegebenen Zeitstempel von gegebenen Tripeln lassen sich auch zeitliche Beziehungen eingrenzen und festlegen. -\subsection{Auslösen von Aktionen} +\section{Auslösen von Aktionen} Erzeugen von Ereignissen innerhalb von C-SPARQL-Queries (durch Registrierung der C-SPARQL-Queries als neue Ereignisströme an der Engine). Hinweise auf Möglichkeit der Auslösung von Reaktionen beim Beobachten der Abfrageergebnisse.