Zeitreihendatenbank (Time Series Database, TSDB)
Eine Zeitreihendatenbank (Englisch: Time Series Database – TSDB) ist ein Softwaresystem, das für die Sortierung und Organisation von zeitlich gemessenen Informationen optimiert ist. Eine Zeitreihe ist eine Sammlung von Datenpunkten, die in aufeinanderfolgenden Intervallen gesammelt und in zeitlicher Reihenfolge aufgezeichnet werden. Einige Beispiele für Zeitreihendaten (Time Series Data – TSD) sind Änderungen von Trades auf einem Finanzmarkt, Statistiken, die von Microservices gesammelt werden, Speicherwarnungen, Status, Ereignisdaten und dynamische Assets.
Zeitreihendatenbanken sind besonders nützlich, um Zugriffsmetriken, Fehlermetriken, Prozessverhalten und Arbeitslastüberwachung zu überwachen. Diese Datenbanken können große und komplexe Datenmengen sortieren und machen die Informationen besser zugänglich, als wenn sie in einer herkömmlichen Datenbank gespeichert wären.
Was sind Zeitreihendaten?
Es gibt mehrere Unterschiede zwischen Zeitreihendaten und normalen Daten, die ein Zeitfeld enthalten. Zum Beispiel werden in Zeitreihendaten Änderungen eingefügt und nicht überschrieben, was eine Historie der Informationen zeigt. Außerdem können Benutzer mit Zeitreihendaten tiefer gehende Analysen durchführen. Außerdem bieten die Echtzeitanalysefunktionen von Zeitreihendaten einen Vorteil gegenüber statischeren Daten. Zeitreihendaten zeigen auch ein vollständiges Bild eines Systems im Laufe der Zeit und ermöglichen die Analyse von historischen Trends.
Gemeinsame Merkmale von Zeitreihendaten sind:
- Zeitreihendaten werden immer über einen bestimmten Zeitraum erfasst.
- Daten von Workloads sind neu und werden als Inserts geschrieben und nicht aktualisiert, um die bereits vorhandenen Daten zu ersetzen.
- Wenn Daten geschrieben werden, werden sie automatisch dem neuesten Zeitintervall zugewiesen.
Weitere Beispiele für Zeitreihendaten sind:
- Servermetriken
- Application Performance Monitoring
- Sensordaten
- Netzwerkdaten
- Klickraten
Zeitreihendaten können auch als Traces, Trends, Profile oder Kurven bezeichnet werden.
Gründe für eine Zeitreihendatenbank
Zeitreihendatenbanken können Unternehmen helfen, Informationen in Echtzeit zu überwachen und Probleme anzugehen, sobald sie auftreten. Sie können auch verwendet werden, um zukünftige Probleme vorherzusagen und sie zu verhindern, bevor sie auftreten.
Zeitreihendatenbanken sind benutzerfreundlicher und bieten trotz der großen Datenmengen, die sie organisieren, bessere Schreibraten und eine höhere Abfrageleistung. In gewisser Weise erfüllen Zeitreihendatenbanken die gleichen Funktionen wie normale Datenbanken. Der Versuch, eine relationale oder NoSQL-Datenbank für Zeitreihendaten zu verwenden, würde jedoch zu einer viel langsameren und weniger effizienten Leistung führen.
Die aktuelle Technologie erfordert zunehmend die Abfrage, das Streaming und die Analyse von Informationen in Echtzeit. Dies umfasst einen Bedarf an höheren Volumina, höheren Geschwindigkeiten und höherer Spezifität bei der Suche nach Daten. In den letzten Jahren haben diese Anforderungen zu einem starken und stetigen Anstieg des Einsatzes von Zeitreihendatenbanken geführt.
Die Abfrage in einer Zeitreihendatenbank ähnelt der in anderen Arten von Datenbanken, aber anstatt nach Werten zu suchen, können Entwickler, die eine solche Datenbank verwenden, nach einer abgelaufenen Zeitspanne, einem Datumsbereich oder einem bestimmten Zeitpunkt, an dem ein Ereignis stattgefunden hat, suchen.
Einige Vorteile der Verwendung einer Zeitreihendatenbank sind:
- Die Möglichkeit, extrem große Datenmengen auf einmal zu durchsuchen.
- Wenn Daten im Millisekundentakt erfasst werden, kann die Datenbank diese auf eine Minute oder noch kürzere Intervalle komprimieren.
- Sie verwenden schreibbare APIs.
Anwendungsfälle und Beispiele
Eine Zeitreihendatenbank unterteilt typischerweise in feste und dynamische Datenpunkte. Ein Beispiel hierfür ist die Messung der CPU-Auslastung, um die Leistung zu verfolgen. Zu den festen Merkmalen, die verfolgt werden, könnten Name, Datenbereich, Zeitbereich und Maßeinheiten gehören.
Die dynamischen Metriken können alles von Zeitstempeln über die prozentuale CPU-Auslastung bis hin zu Effizienzmetriken umfassen, da sich diese Datenpunkte während der Verfolgung ändern. Die Trennung von festen und dynamischen Daten erleichtert der Zeitreihendatenbank die Suche und das schnelle Auffinden bestimmter Datenpunkte.
Wenn ein Unternehmen beispielsweise eine Beschwerde erhält, dass ein Versandcontainer zu einem bestimmten Datum das falsche Produkt an einen Kunden geschickt hat, können Zeitreihendatensätze Informationen darüber liefern, welches Produkt sich zum Zeitpunkt des Versands in dem Container befand. Von hier aus kann das Unternehmen beginnen, den Fehler zu verstehen und zu korrigieren.
Beliebte Datenbanken
Beispiele für Zeitreihendatenbanken sind InfluxDB, KairosDB, Prometheus und ClickHouse. Diese Beispiele sind Open Source, dass heißt jeder kann auf den ursprünglichen Quellcode zugreifen und ihn bearbeiten.
Andere beliebte TSDBs sind:
- TimescaleDB,
- OpenTSDB
- Graphite
Zeitreihendatenbanken sind in der Regel eine Erweiterung von PostgreSQL-Datenbanken, und sie haben ähnliche Funktionen. Wie eine Datenbank verwendet werden kann, hängt stark von ihren Funktionen ab, aber die meisten können Zeit-Werte-Paare (Time-Value Pair) und ihre zugehörigen Punkte erstellen, lesen, aktualisieren und löschen. Einige Zeitreihendatenbanken führen auch Berechnungen, Interpolationen, Filterungen und Analysen durch.
Zu den Schwierigkeiten bei Zeitreihendatenbanken gehört der massive Umfang der gesammelten Daten. Es wird eine erhebliche Menge an Speicherplatz benötigt, da große Datenmengen mit jeder gespeicherten Instanz indiziert werden müssen. Die meisten Unternehmen sollten eine praktische Aufbewahrungsrichtlinie entwickeln, um Informationen, die nicht mehr relevant sind, automatisch zu löschen. So wird sichergestellt, dass genügend Platz für neue Informationen vorhanden ist. Außerdem erfordern diese Datenbanken oft eine größere Menge an Code sowie komplexeren Code in den Anwendungen, die für den Zugriff auf sie verwendet werden.