%!TEX root = ../Thesis.tex
\section{Grundlagen}

\gls{TSDB} gehören zu den NoSQL Datenbanken und sind besonders darauf optimiert, mit Time Series Data zu arbeiten. Daruch können die große Mengen an
Time Series Data verarbeiten durchsuchen und Speichern.\footnote{\cite[vgl.][]{ComputerWeekly}} 

\subsection{Time Series Data}

Um \gls{TSDB} zu verstehen, muss als erstes geklärt werden, was Time Series Data überhaupt ist und wie sie sich von anderen Daten unterscheiden.
Wie der Name schon impliziert, ist Time Series Data eine Reihe von Daten die über einen Zeitraum gesammelt worden sind. Es wird also nicht nur der Endwert aufgezeichnet,
sonder die Veränderung über einen Zeitraum. Diese Daten können z.B. Servermetriken, %Anwendungs Leistungsüberwachung, finde ich kein besseres Wort für weglassen
Netzwerkdaten, \gls{IOT} Sensordaten, Ereignisse, Klicks, Marktgeschäfte und viele andere Arten von Daten sein.
Time Series Data können gut daran erkannt werden, dass die Zeit eine wichtige Achse bei der Darstellung der Werte ist.\footnote{\cite[vgl.][1\psqq]{PaulDix}}

Manchmal ist es nicht notwendig, alle Daten zu erfassen. Zum Beispiel wird in vielen Anwendungen nur der letze Login gespeichert. Mehr ist auch für die 
Funktion nicht notwendig. Allerdings können zusätzliche Informationen gewonnen werden, wenn nicht nur die letzen Daten sondern die Veränderung aufgezeichnet wird. 
So kann zum Beispiel festgestellt werden, wie oft und wann sich der Kunde einloggt und ob es dabei ein Muster gibt. Anhand dieser Daten können Kunden 
dann kategorisiert werden.\footnote{\cite[vgl.][]{DataScienceTeam2020}}

Eine Besonderheit von Time Series Data ist, dass sie sich nicht verändert. Wenn die Daten einmal erfasst wurden wird an ihnen nichts mehr verändert.
Es werden nur neue Daten hinzugefügt.\footnote{\cite[vgl.][]{SamFangman2019}} 
%
%\subsection{{Funktionen von Time Series Database}}
%
%Um mit Time Series Data arbeiten zu können sind für eine \gls{TSDB} enige wichtige FUnktionen notwendig. Die wichtigesten Funktionen einer 
%\gls{TSDB} ist es Time Series Data zu speichern. Hier muss
%
%
%hese include time-stamp data storage and compression, data lifecycle management, data summarization, 
%ability to handle large time series dependent scans of many records, and time series aware queries.
%
%Im Aufbau unterscheiden sich \gls{TSDB} vorallendingen darin das sie nur dazu 

\subsection{{Unterschiede zwischen Time Series und relationalen Datenbanken}}

%Umschreiben und andere Quellen verwenden

Um Time Series Data zu speichern, ist es nicht unbedingt erforderlich, eine \gls{TSDB} zu nutzen. Auch relationale Datenbanken können Time Series
Data speichern. Einer der wichtigsten Unterschiede zwischen einer \gls{TSDB} im Gegensatz zu einem \gls{RDBMS} ist es, dass kein Datenbank Schema notwendig ist. 
Wenn Time Series Daten in einer Rationalen Datenbank geschrieben werden sollen, müssen erst entsprechende Tabellen angelegt werden, in denen die Daten immer im 
gleichen Format abgelegt werden müssen. Im Gegensatz dazu können in einer \gls{TSDB} die Daten einfach schemafrei in die Datenbank geschrieben werden. Ein 
weiterer Vorteil ist, dass \gls{TSDB} im Gegensatz zu relationalen Datenbanken besser und einfacher Skaliert werden 
können.\footnote{\cite[vgl.][]{InfluxDataSQL}} 

Aber \gls{TSDB} haben nicht nur Vorteile. Wie in \cref{fig:db-ranking} zu sehen, sind sie viel weniger verbreitet als nicht zeit basierte Datenbank Systeme. Dadurch gibt 
es viel weniger Entwickler die sich mit \gls{TSDB} auskennen und auch das Ökosystem um die Datenbank ist deutlich kleiner. Außerdem sind \gls{RDBMS} 
dadurch, dass es sie viel länger gibt, sehr stabil und sehr gut unterstützt.\footnote{\cite[vgl.][]{InfluxDataSQL}}

\gls{RDBMS} arbeiten nach dem \gls{CRUD} Prinzip, welches für Time Series Data nicht optimal ist. Auf Time Seires Data werden keine Update Befehle durchgeführt, da 
neue Daten immer nur als neuer Datenpunkt angehängt werden. Auch das Löschen von Daten wird nicht sehr häufig durchgeführt und im Gegensatz zu \gls{RDBMS} 
meistens gleichzeitig auf einer großen Menge an Datensätzen. Daher sind \gls{TSDB} besser dafür geeignet, mit Time Series Data zu arbeiten und weisen auch eine 
höhere Performance auf.\footnote{\cite[vgl.][]{InfluxDataSQL}}

\subsection{Verbreitete DBMS}

Aktuell gibt es wie in \cref{fig:db-ranking} zu sehen, einige beliebte Mulit-Model Datenbanken, die als \gls{TSDB} genutzt werden können. 
So können die Datenbanken MongoDB, Redis, Teradata und Couchbase mit Time Series Daten arbeiten. Die erste reine \gls{TSDB} im Ranking ist InfluxDB
auf Platz 29.\footnote{\cite[vgl.][]{dbranking}}

% Wenn ich zu viele Seiten habe kommt das Bild in den Anhang
\begin{figure}[hbt]
\centering
\begin{minipage}[t]{0.9\textwidth} % Breite, z.B. 1\textwidth		
\caption{DB-Engines Ranking} % Überschrift
\includegraphics[width=1\textwidth]{img/DB-Engines-Ranking} % Pfad
\source{https://db-engines.com/de/ranking?msclkid=4f2a29e5d08811ec95ccd74f8f5146ab} % Quelle
\label{fig:db-ranking}
\end{minipage}
\end{figure}

Allerdings haben Datenbanken, die nur auf das verarbeiten von Time Series Data ausgelegt sind, deutliche Performance Vorteile
gegenüber Multi Model Datenbanken. In einem Vergleich von InfluxDB und MongoDB, hat InfluxDB eine 2,4 mal bessere 
Schreibperformance als MongoDB und ist beim Lesen sogar 5,7 mal schneller. InfluxDB benötigt außerdem 20 mal weniger 
Speicherplatz auf der Festplatte, um die gleiche Menge an Daten zu speichern.\footnote{\cite[vgl.][]{InfluxDBvsMongo}}


% Der Teil kommt in die Arbeit wenn ich zu wenig Seiten habe
%Wie in \cref{fig:tsdb-ranking} zu sehen ist influxDB die mit Abstand belibteste \gls{TSDB}. Unter den gezeigten Datenbanken ist Prometheus eine 
%besonderheit denn dieses Datenbanksystem ist d

%\begin{figure}[hbt]
%\centering
%\begin{minipage}[t]{0.9\textwidth} % Breite, z.B. 1\textwidth		
%\caption{TSDB Ranking} % Überschrift
%\includegraphics[width=1\textwidth]{img/TSDB-Engines-Ranking}\\ % Pfad
%\source{https://db-engines.com/de/ranking/time+series+dbms} % Quelle
%\label{fig:tsdb-ranking}
%\end{minipage}
%\end{figure}

\subsection{{Entwicklungsumgebung}}

\subsubsection{{Docker}}

%Docker und Docker Compose 

\subsubsection{{Python und Jupyter Notebooks}}

% Python 
% Jupyter Notebooks

\subsubsection{{InfluxDB Installation}}

