added Entwicklungsumgebung

This commit is contained in:
Henrik Mertens 2022-06-02 15:20:27 +02:00
parent 90c37a2b16
commit 6bf5c657c4
6 changed files with 58 additions and 16 deletions

Binary file not shown.

View file

@ -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.

View file

@ -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}}

View file

@ -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.
\subsubsection{{Wetterdaten Verarbeiten}}

Binary file not shown.

View file

@ -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}},