Einführung in Zeitreihen
Stellen Sie sich vor, Sie wollten wissen, wie sich die Außentemperatur im Laufe des Tages ändert. Einmal pro Stunde würden Sie auf das Thermometer schauen und die Uhrzeit zusammen mit der aktuellen Temperatur notieren. Nach einer Weile hätten Sie dann so etwas wie das hier:
| Time | Value |
|---|---|
| 09:00 | 24°C |
| 10:00 | 26°C |
| 11:00 | 27°C |
Temperaturdaten wie diese sind ein Beispiel für das, was wir eine Zeitreihe nennen - eine Folge von Messungen, die zeitlich geordnet sind. Jede Zeile in der Tabelle repräsentiert eine einzelne Messung zu einem bestimmten Zeitpunkt.
Tabellen sind nützlich, wenn Sie einzelne Messungen identifizieren wollen, aber es ist schwierig, das Gesamtbild zu sehen. Eine gängigere Visualisierung für Zeitreihen ist der Graph, der stattdessen jede Messung entlang einer Zeitachse platziert. Visuelle Darstellungen wie das Diagramm erleichtern die Entdeckung von Mustern und Merkmalen der Daten, die sonst nur schwer zu erkennen wären.
T emperaturdaten, wie im Beispiel, sind bei weitem nicht das einzige Beispiel für eine Zeitreihe. Andere Beispiele für Zeitreihen sind:
- CPU- und Speichernutzung
- Sensor-Daten
- Börsenindex
Während es sich bei jedem dieser Beispiele um Sequenzen von zeitlich geordneten Messungen handelt, haben sie noch andere Eigenschaften gemeinsam:
- Neue Daten werden in regelmäßigen Abständen am Ende angehängt - zum Beispiel stündlich um 09:00, 10:00, 11:00 und so weiter.
- Messungen werden selten aktualisiert, nachdem sie hinzugefügt wurden - zum Beispiel ändert sich die Temperatur von gestern nicht mehr.
Zeitreihen sind leistungsfähig. Sie helfen Ihnen, die Vergangenheit zu verstehen, indem sie Ihnen erlauben, den Zustand des Systems zu jedem beliebigen Zeitpunkt zu analysieren. Zeitreihen könnten Ihnen sagen, dass der Server abgestürzt ist, kurz nachdem der freie Speicherplatz auf Null gesunken ist.
Zeitreihen können Ihnen auch helfen, die Zukunft vorherzusagen, indem sie Trends in Ihren Daten aufdecken. Wenn die Anzahl der registrierten Benutzer in den letzten Monaten monatlich um 4% gestiegen ist, können Sie vorhersagen, wie groß Ihre Benutzerbasis am Ende des Jahres sein wird.
Einige Zeitreihen haben Muster, die sich über einen bekannten Zeitraum wiederholen. Zum Beispiel ist die Temperatur typischerweise tagsüber höher, bevor sie nachts abfällt. Durch die Identifizierung dieser periodischen oder saisonalen Zeitreihen können Sie sichere Vorhersagen für die nächste Periode machen. Wenn wir wissen, dass die Systemlast jeden Tag gegen 18:00 Uhr ihren Höhepunkt erreicht, können wir kurz vorher weitere Maschinen hinzufügen.
Je nachdem, was Sie messen, können die Daten stark variieren. Was wäre, wenn Sie Zeiträume vergleichen wollten, die länger sind als das Intervall zwischen den Messungen? Wenn Sie die Temperatur einmal pro Stunde messen würden, ergäben sich 24 Datenpunkte pro Tag. Um die Temperatur im August über die Jahre hinweg zu vergleichen, müssten Sie die 31 mal 24 Datenpunkte zu einem einzigen kombinieren.
Das Kombinieren einer Sammlung von Messungen wird Aggregation genannt. Es gibt verschiedene Möglichkeiten, Zeitreihendaten zu aggregieren. Hier sind einige gängige:
- Average (Durchschnitt) gibt die Summe aller Werte geteilt durch die Gesamtzahl der Werte zurück.
- Min und Max geben den kleinsten und den größten Wert in der Sammlung zurück.
- Summe gibt die Summe aller Werte in der Sammlung zurück.
- Anzahl gibt die Anzahl der Werte in der Sammlung zurück.
Wenn Sie zum Beispiel die Daten eines Monats aggregieren, können Sie feststellen, dass der August 2017 im Durchschnitt wärmer war als das Jahr zuvor. Um zu sehen, welcher Monat die höchste Temperatur hatte, würden Sie stattdessen die maximale Temperatur für jeden Monat vergleichen.
Wie Sie Ihre Zeitreihendaten aggregieren, ist eine wichtige Entscheidung und hängt von der Geschichte ab, die Sie mit Ihren Daten erzählen möchten. Es ist üblich, verschiedene Aggregationen zu verwenden, um die gleichen Zeitreihendaten auf unterschiedliche Weise zu visualisieren.
In der IT-Branche werden häufig Zeitreihendaten gesammelt, um Dinge wie Infrastruktur, Hardware oder Anwendungsereignisse zu überwachen. Maschinell erzeugte Zeitreihendaten werden typischerweise in kurzen Intervallen erfasst, sodass Sie auf unerwartete Änderungen sofort nach deren Auftreten reagieren können. Infolgedessen sammeln sich die Daten in einem rasanten Tempo an, sodass eine Möglichkeit zur effizienten Speicherung und Abfrage der Daten unerlässlich ist. Infolgedessen haben Datenbanken, die für Zeitreihendaten optimiert sind, in den letzten Jahren eine steigende Popularität erfahren.
Eine Zeitreihendatenbank (TSDB) ist eine Datenbank, die explizit für Zeitreihendaten entwickelt wurde. Es ist zwar möglich, jede normale Datenbank zum Speichern von Messungen zu verwenden, aber eine TSDB bietet einige nützliche Optimierungen.
Moderne Zeitreihendatenbanken machen sich die Tatsache zunutze, dass Messungen immer nur angehängt und selten aktualisiert oder entfernt werden. Zum Beispiel ändern sich die Zeitstempel für jede Messung im Laufe der Zeit nur sehr wenig, was dazu führt, dass redundante Daten gespeichert werden.
Sehen Sie sich diese Folge von Unix-Zeitstempeln an:
1572524345, 1572524375, 1572524404, 1572524434, 1572524464
Wenn man sich diese Zeitstempel ansieht, beginnen sie alle mit “1572524”, was zu einer schlechten Nutzung des Speicherplatzes führt. Stattdessen könnten wir jeden nachfolgenden Zeitstempel als Differenz, oder delta, zum ersten Zeitstempel speichern:
1572524345, +30, +29, +30, +30
Wir könnten sogar noch einen Schritt weiter gehen, indem wir die Deltas dieser Deltas berechnen:
1572524345, +30, -1, +1, +0
Wenn in regelmäßigen Abständen Messungen durchgeführt werden, werden die meisten dieser Delta-of-Deltas 0 sein. Aufgrund solcher Optimierungen verbrauchen TSDBs drastisch weniger Platz als andere Datenbanken.