This repository has been archived on 2024-09-20. You can view files and clone it, but cannot push or open issues or pull requests.
wdk/arbeit/chapter/InfluxDB.tex
Henrik Mertens 0f36c31593 neue Gliederung
Daten einfügen geschrieben
2022-05-29 09:51:12 +02:00

148 lines
8 KiB
TeX

\section{{InfluxDB}}
InfluxDB ist eine in Go geschreiben open source \gls{TSDB} die darauf ausgelegt ist mit großen Menge an Time Series Data zu arbeiten.\footnote{\cite[vgl.][]{dbranking}}
In Kapitel 4 dieser Arbeit wird am Beispeil von Wetterdaten gezeigt wie mit InfluxDB gearbeitet wird. InfluxDB stellt für die integration in 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{{Installation}}
%\subsection{InfluxDB Webinterface}
%InfluxDB stellt für die einfache Verwaltung ein Web \gls{UI} zur verfügung. In diesem Interface ist es möglich
\subsection{{Daten einfügen}}
In InfluxDB werden Daten immer in Buckets gespeichert. Um Daten hochzuladen muss zunächst erst einmal ein Bucket angelegt werden. Dazu gibt es zwei
Möglichkeiten. Die einfachste ist es über das Web \gls{UI} von InfluxDB einen neuen Bucket anzulegen. Dazu muss nach dem Login der Navigationspunkt Data
und der Reiter Buckets ausgewählt werden. Hier kann dann mit dem Button Create Bucket ein neuer Bucket angelegt werden. Bein anlegen kann noch eine
Lebensdauer für die Daten ausgewählt werden nach welcher die jeweiligen Datenpunkte gelöscht werden.
%Quelle selbst im Webinterface ausprobiert.
Daten werden immer nach dem InfluxDB Line Protokoll formatiert an die Datenbank gesendet. Das Protokoll ist wie in Listing~\ref{list:lineproto}
dargestellt aufgebaut. Im ersten Teil des Line Protokolls wird der Name der Messreihe angegeben. Das kann zum Beispiel der Name des Sensors sein oder
der Ort an dem der Messwert genommen wurde. Wichtig ist, dass groß und Kleinschreibung beachtete werden muss und Unterstriche nicht
genutzt werden dürfen. Sonderzeichen müssen mit einem \textbackslash maskiert werden. Nach dem Namen kommen getrennt durch ein Komma die Tags der Messung.
Tags werden indexiert und dazu genutzt um Messwerte zu durchsuchen. Tags werden als Key Value Paar angegeben. Hier sollen Metadaten wie
zum Beispiel der Standort des Sensors oder der Name des Servers einzutragen werden zu dem die Datenpunkt/e gehören. Die eigentlichen Werte sind mit einem
Leerzeichen von den Tags abgegrenzt und bestehen aus durch Kommas getrennte Key Value Feldern. Der letzte Wert einer Zeile ist der Unix Timestamp in Millisekunden.
In einer Datei oder anfrage kann es mehrere Zeilen mit Daten geben.
%Quelle https://docs.influxdata.com/influxdb/v2.2/reference/syntax/line-protocol/
%https://docs.influxdata.com/influxdb/v2.2/reference/syntax/line-protocol/#naming-restrictions
\begin{figure}[bht]
\begin{lstlisting}[caption=InfluxDB Line Protokoll, label=list:lineproto]
measurementName,tagKey=tagValue fieldKey="fieldValue" 1465839830100400200
--------------- --------------- --------------------- -------------------
| | | |
Measurement Tag set Field set Timestamp
\end{lstlisting}
\end{figure}
%Quelle https://docs.influxdata.com/influxdb/v2.2/reference/syntax/line-protocol/
%https://docs.influxdata.com/influxdb/v2.2/reference/syntax/line-protocol/#naming-restrictions
\subsection{{Daten abrufen}}
%InfluxDB QUerrys
\subsection{{Daten verarbeiten und Visualisieren}}
%InfluxDB Tasks
% InfluxDB Graphen
\subsection{{weitere InfluxDB-Funktionen}}
% Monitoring und Alamierung mit InfluxDB
% InfluxDB Notebooks
\subsection{{Wetterdaten}}
\subsubsection{{Wetterdaten Aufbau}}
Die Wetterdaten des DWD können über den CDC OpenData Bereich heruntergeladen werden. Hier werden die Wetterdaten über FTP und HTTPS zum Download angeboten.
Unter der URL \url{https://www.dwd.de/DE/leistungen/cdc/cdc_ueberblick-klimadaten.html} wird eine gute übersicht über die zum Download angeboten Daten geboten.
Die Werte für die aktuelle Lufttemperatur können über \url{https://opendata.dwd.de/climate_environment/CDC/observations_germany/climate/10_minutes/air_temperature/now/}
abgerufen werden. Historische Daten können über \url{https://opendata.dwd.de/climate_environment/CDC/observations_germany/climate/10_minutes/air_temperature/now/}
abgerufen werden.
Aktuell werden auf der Webseite für die aktuelle Lufttemperatur ca 480 Datein zum Download angeboten. Die meisten dieser Datein entspricht einer Messstatione
und je nach Tageszeit kann deswegen die Menge der Daten varieiren, weil immer um 00:00 eine neue Datei angefangen wird. In den Zip Dateinen finden sich außerdem
Metadaten über die Messtationen. Die eigentlichen Daten sind als CSV formatiert und sehen aus wie in Listing~\ref{list:wetter_csv} dargestellt
\begin{figure}[bht]
\begin{lstlisting}[caption=Wetterdaten CSV, label=list:wetter_csv]
STATIONS_ID;MESS_DATUM; QN;PP_10;TT_10;TM5_10;RF_10;TD_10;eor
73;202205120000; 2; -999; 12.9; 11.2; 84.2; 10.3;eor
73;202205120010; 2; -999; 12.7; 11.2; 84.9; 10.2;eor
73;202205120020; 2; -999; 12.9; 11.4; 83.0; 10.1;eor
73;202205120030; 2; -999; 12.4; 10.7; 86.9; 10.3;eor
73;202205120040; 2; -999; 12.4; 10.5; 86.2; 10.2;eor
73;202205120050; 2; -999; 12.3; 10.3; 85.5; 9.9;eor
73;202205120100; 2; -999; 12.1; 10.1; 88.1; 10.2;eor
73;202205120110; 2; -999; 11.7; 9.9; 90.1; 10.1;eor
73;202205120120; 2; -999; 11.7; 10.0; 89.0; 10.0;eor
73;202205120130; 2; -999; 11.9; 10.2; 86.3; 9.7;eor
73;202205120140; 2; -999; 12.3; 10.6; 83.5; 9.6;eor
73;202205120150; 2; -999; 12.4; 10.9; 83.3; 9.7;eor
73;202205120200; 2; -999; 11.7; 9.8; 86.2; 9.5;eor
73;202205120210; 2; -999; 11.6; 9.6; 88.5; 9.8;eor
73;202205120220; 2; -999; 11.4; 9.4; 88.6; 9.6;eor
73;202205120230; 2; -999; 11.8; 9.9; 88.7; 10.0;eor
73;202205120240; 2; -999; 11.4; 9.9; 88.7; 9.6;eor
73;202205120250; 2; -999; 11.5; 9.7; 89.5; 9.8;eor
73;202205120300; 2; -999; 11.6; 10.0; 88.4; 9.8;eor
73;202205120310; 2; -999; 11.4; 10.3; 87.5; 9.4;eor
73;202205120320; 2; -999; 11.6; 9.9; 89.0; 9.9;eor
73;202205120330; 2; -999; 12.1; 10.4; 87.3; 10.1;eor
73;202205120340; 2; -999; 12.1; 10.6; 87.2; 10.0;eor
73;202205120350; 2; -999; 11.9; 10.2; 87.2; 9.8;eor
...
\end{lstlisting}
\end{figure}
In der CSV Datei gibt es 9 Felder.
%Quelle einfügen
\begin{tabular}{l|p{13.0cm}}
STATION\_ID & Gibt an von welcher Station die Werte stammen \\ \hline
MESS\_DATUM & Gibt an wann gemessen wurde im Format "\%Y\%m\%d\%H\%M" Also Jahr Monat Tag Stunde Minute als eine zusammengeschriebene Zahl. \\ \hline
QN & Gibt die Qualität der Messwerte an. Hier gibt es die Werte 1 bis 3
\begin{compactenum}
\item nur formale Kontrolle bei Dekodierung und Import
\item Kontrolle mit individuell festgelegten Kriterien
\item ROUTINE automatische Kontrolle und Korrektur mit QUALIMET
\end{compactenum} \\ \hline
PP\_10 & Luftdruck auf Stationshöhe \\ \hline
TT\_10 & Lufttemperatur auf 2 Meter höhe \\ \hline
TM5\_10 & Lufttemperatur auf 5cm höhe \\ \hline
TD\_10 & relative Luftfeuchtigkeit auf 2m höhe \\ \hline
eor & END OF RECORD kann ignriert werden.
\end{tabular}
In dieser CSV Datei sind die Daten mit einem Semikoln voneinander getrennt. Der erste Wert in der CSV Datei ist die STATIONS\_ID auf die später noch weiter eingegangen wird.
Danach folgt das Feld Mess\_Datum Formatiert nach dem
\subsubsection{{Wetterdaten abrufen}}
Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua.
At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet.
Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat,
sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet.
\subsubsection{{Wetterdaten verarbeiten}}