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