diff --git a/arbeit/Thesis.pdf b/arbeit/Thesis.pdf index 8979b07..07dff7e 100644 Binary files a/arbeit/Thesis.pdf and b/arbeit/Thesis.pdf differ diff --git a/arbeit/chapter/Einleitung.tex b/arbeit/chapter/Einleitung.tex index a53c225..82b9734 100644 --- a/arbeit/chapter/Einleitung.tex +++ b/arbeit/chapter/Einleitung.tex @@ -5,11 +5,11 @@ Das Ziel dieser Arbeit ist es eine Einführung in die Funktion von \gls{TSDB} zu geben. Außerdem soll beispielhaft an InfluxDB gezeigt werden, wie mit einer \gls{TSDB} gearbeitet wird. -Dazu werden die Wetterdaten des \gls{DWD} importiert und ausgewertet. +Dazu werden die Wetterdaten des \gls{DWD} in InfluxDB importiert und ausgewertet. \subsection{Aufbau und Vorgehensweise} Im ersten Teil dieser Arbeit werden die Grundlagen von \gls{TSDB} erklärt und Besonderheiten beschreiben. Im darauf folgenden Kapitel wird dann exemplarisch an InfluxDB gezeigt, wie mit einer \gls{TSDB} gearbeitet wird. Im -letzen Kapitel werden die Inhalte dieser Arbeit zusammengefasst. +letzten Kapitel werden die Inhalte dieser Arbeit zusammengefasst. diff --git a/arbeit/chapter/Grundlagen.tex b/arbeit/chapter/Grundlagen.tex index 094bb83..79e577d 100644 --- a/arbeit/chapter/Grundlagen.tex +++ b/arbeit/chapter/Grundlagen.tex @@ -90,14 +90,34 @@ Speicherplatz auf der Festplatte, um die gleiche Menge an Daten zu speichern.\fo \subsection{{Entwicklungsumgebung}} -\subsubsection{{Docker}} +Um mit InfluxDB zu arbeiten wird eine Umgebung zum ausführen von Docker Containern benötigen, in welchen wir InfluxDB und Jupyter Notebooks betreiben. +Der eigentliche Code wird dann in Jupyter Notebooks mit Python entwickelt. Die Grundlagen über die Eingesetzen Tool und Techniken finde sich in diesem Kapitel. -%Docker und Docker Compose +\subsubsection{{Docker und Docker-Compose}} +%Docker +Docker ist eine Software für das erstellen und verwalten von Containern. Mit Docker ist es möglich Anwendungen samt ihrer Umgebung in einer Einheit +zusammenzufassen, so das diese einfach auf anderen System ausgeführt werden können. Dabei hat jeder Container ein eigenes Dateisystem und ein eigens +Betriebssystem. Allerdings teilen sich Container und Hostsystem den Kernel des Hostsystems. Dadurch hat diese Art der Virtualisierung deutlich +weniger Overhead als andere Virtualisierungstechniken. Zusätzlich wird das Betriebssystem innerhalb des Containers maximal reduziert so das nur +noch benötigte Komponenten vorhanden sind. Wichtig ist es das immer nur möglichst eine Anwendung in einem Container zu finden ist. +Durch die Virtualisierung sind die einzelnen Container voneinander getrennt.\footnote{\cite[vgl.][54\psqq]{DanielStender2020}} + +%Docker Compose +Allerdings bestehen einige Anwendungen aus mehreren Komponenten, diese können durch mehrere Docker Container abgebildet werden. Um die Verwaltung von +mehreren Container zu erleichtern kann Docker-Compose genutzt werden. Mithilfe von Docker Compose können größere Umgebungen in einem Compose File +verwaltete werden. Hier werden die Umgebungsvariablen, Container Image oder Dockerfiles, Ports, Storage und weiteres in einer Datei definiert. +Mithilfe dieser definition kann Docker Compose eine komplexe Umgebung mit nur einem Befehl initialisieren.\footnote{\cite[vgl.][151\psqq]{DanielStender2020}} \subsubsection{{Python und Jupyter Notebooks}} +%Python +Python ist eine universelle Prozedurale und Imperative Programmiersprache die 1994 in der ersten Version veröffentlicht wurde. Der Name ist eine Huldigung an Monty Python und +wurde nicht nach einer Schlange benannt, auch wenn das Logo eine Schlange ist. Python ist unter der freien PFS Lizenz lizenziert wodurch es auch in +kommerziellen Anwendung genutzt werden kann. Python ist eine Interpretierte Sprache. Das heißt das sie nicht zu einer ausführbaren Datei kompiliert wird +sondern von einem Interpreter interpretiert wird. Außerdem ist Python eine unter Programmieranfängern sehr beliebte Sprache die auch sehr viel in den +Bereichen DataSience, DeepLerning, Naturwissenschaften und Linux Systemprogrammierung eingesetzt wird.\footnote{\cite[vgl.][66\psqq]{DanielStender2020}} -% Python % Jupyter Notebooks - -\subsubsection{{InfluxDB Installation}} - +Jupyter Notebooks ist eine Webbasierte Open-Source Anwendung mit dem Ziel Code in den Sprachen Python, R, und Julia einfach zu schreiben, bearbeiten, +auszuführen und einfach zu teilen. Ein Notebook besteht immer aus Zellen. Eine Zelle kann Code oder Markdown Formatierten Text anzeigen. Jede Zelle +kann einzeln ausgeführt werden. Dadurch kann ein Programm sehr einfach und verständlich dargestellt und erklärt werden. Es ist auch möglich neue Notebooks +und Dateien im Webinterface von Jupyter Notebooks selbst anzulegen.\footnote{\cite[vgl.][91\psqq]{NikitaSilaparasetty2020}} \ No newline at end of file diff --git a/arbeit/chapter/InfluxDB.tex b/arbeit/chapter/InfluxDB.tex index 406f721..43d8c20 100644 --- a/arbeit/chapter/InfluxDB.tex +++ b/arbeit/chapter/InfluxDB.tex @@ -5,6 +5,13 @@ Im weiterem verlauf dieses Kapitels wird am Beispiel von Wetterdaten gezeigt, wi eigene Anwendungen ein \gls{HTTP} \gls{API} zur Verfügung, für die es in vielen Programmiersprachen Client Librarys gibt. Außerdem wird ein Webinterface und ein \gls{CLI} bereitgestellt. \footnote{\cite[vgl.][]{InfluxAPI}} + +\subsection{{InfluxDB Installation}} + + + + + % % Bis hierhin korrigiert! % @@ -55,10 +62,6 @@ Dabei kann zwischen einem All-Access token und einem Read/Write token ausgewähl Mit einem Read/Write Token kann wie in \cref{fig:load-data-add-token} zu sehen, ausgewählt werden, auf welchen Bucket geschrieben oder gelesen werden kann. \footnote{\cite[vgl.][]{InfluxDBToken}} - - - - %https://docs.influxdata.com/influxdb/cloud/security/tokens/#all-access-token \subsection{{Daten abrufen}} @@ -145,7 +148,7 @@ Spalten der Tabelle sind in der \cref{tab:file-stations} beschreiben. \begin{table}[hbt] \centering \begin{minipage}[t]{1\textwidth} % Breite, z.B. 1\textwidth - \caption{Bedeutung Stationstabelle} % Überschrift + \caption{Bedeutung Stationstabellen Felder} % Überschrift \begin{tabularx}{\columnwidth}{rXrr} \toprule Feld Name & Bedeutung \\ @@ -173,9 +176,10 @@ Um die Daten auswerten zu können müssen diese als erstes heruntergeladen und e des \gls{DWD} für jede Datei eine URL ausgelesen. Die so gewonnen URLs können dann mithilfe einer Schleife heruntergeladen werden. Um den Messwerten eine Station zuzuordnen zu können wird als erstes die Datei mit den Station verarbeitet. Für jede Station wird Objekt erstellt und in ein dictionary gespeichert. Dadurch kann in im dictionary einfach über die STATIONS\_ID die passende Station gefunden werden. Weil diese Datei allerdings nicht -CSV formatiert ist musst die Datei auf eine andere Art ausgewertete werden. Um die einzelnen Felder aus einer Zeile zu bekommen wird also immer so lange +CSV formatiert ist musst die Datei auf eine andere Art ausgewertete werden. Um die einzelnen Felder aus einer Zeile zu bekommen wird immer so lange gelesen bis wieder ein bestimmte Anzahl von Leerzeichen hintereinander erkannt worden ist. Die Zeichen zwischen den Leerzeichen sind dann ein ausgelesenes Feld. -Nachdem die Stationsdatei ausgewertet word ist werden die CSV Datein in einer Schleife entpackt und mithilfe der Bibliothek Pandas in ein Dataframe +Nachdem die Stationsdaten ausgewertet worden sind, werden die CSV Datein in einer Schleife entpackt und mithilfe der Bibliothek Pandas in ein Dataframe umgewandelt. Das so erzeugte Dataframe wir im letzten Schritt mit den Daten der Stations zusammengeführt und als Datenpunkt in InfluxDB geschrieben. +Weitere Erklärungen und der Code selbst kann im angehängten Jupyter notebook eingesehen und ausgeführt werden. -Weitere Erklärungen und der Code selbst kann im angehängten Jupyter notebook eingesehen und ausgeführt werden. \ No newline at end of file +\subsubsection{{Wetterdaten Verarbeiten}} \ No newline at end of file diff --git a/arbeit/library/Introduction to Jupyter Notebook.pdf b/arbeit/library/Introduction to Jupyter Notebook.pdf new file mode 100644 index 0000000..c7142b0 Binary files /dev/null and b/arbeit/library/Introduction to Jupyter Notebook.pdf differ diff --git a/arbeit/library/library.bib b/arbeit/library/library.bib index cb61db1..5e55f73 100644 --- a/arbeit/library/library.bib +++ b/arbeit/library/library.bib @@ -40,6 +40,24 @@ keywords = {web} %%%% Quellen +@book{NikitaSilaparasetty2020, +author = {Nikita Silaparasetty}, +pages = {91--118}, +publisher = {Apress Berkeley CA}, +title = {{Machine Learning Concepts with Python and the Jupyter Notebook Environment}}, +year = {2020}, +keywords = {mono} +} + +@book{DanielStender2020, +author = {Daniel Stender}, +pages = {54--68}, +publisher = {Rheinwerk Computing}, +title = {{Cloud-Infrastrukturen: Infrastructure as a Service – So geht moderne IT-Infrastruktur. Das Handbuch für DevOps-Teams und Administratoren}}, +year = {2020}, +keywords = {mono} +} + @misc{InfluxAPI, author = {Influxdata}, title = {{API Quick Start}},