Alle Originalinhalte werden auf Ukrainisch erstellt. Noch nicht alle Inhalte wurden übersetzt. Einige Beiträge sind möglicherweise nur auf Ukrainisch verfügbar.Mehr erfahren

Was ist eine Zeitreihen-Datenbank?

Beitrags-Cover: Was ist eine Zeitreihen-Datenbank?
InhaltsverzeichnisKlicke auf den Link, um zur gewünschten Stelle zu navigieren
Dieser Inhalt wurde automatisch aus dem Ukrainischen übersetzt.
Zeitreihen Datenbank - ist eine Art von Speicher, der für zeitgebundene Daten optimiert ist. Jeder Eintrag in einem solchen System hat einen Zeitstempel, und die Zeit ist das Hauptmerkmal, nach dem diese Daten gespeichert, gelesen und analysiert werden. Solche Datenbanken sind für große Ereignisströme geschaffen, die kontinuierlich eintreffen und überwiegend nach der Aufzeichnung nicht mehr verändert werden.
Solche Datenbanken werden im Servermonitoring, in Finanzsystemen, in der Webtraffic-Analyse, in IoT-Geräten oder in beliebigen Prozessen eingesetzt, in denen es wichtig ist, die Dynamik von Kennzahlen zu sehen. Zum Beispiel die Veränderungen der CPU-Auslastung in den letzten Stunden, die Temperatur eines Sensors jede Sekunde oder die Schwankungen eines Börsenindex im Laufe des Tages.
Zeitreihen-Datenbanken bieten schnelles Lesen großer Zeiträume, effiziente Aggregationen, Kompression und die Möglichkeit, alte Daten schnell zu löschen, ohne die Leistung zu beeinträchtigen.
Zu den beliebten Implementierungen gehören InfluxDB, TimescaleDB, Prometheus, VictoriaMetrics und sogar Elasticsearch, das häufig für die Zeitreihenanalyse verwendet wird, da es in der Lage ist, Ereignisse schnell zu indizieren und aggregierte Abfragen auszuführen. Dies macht solche Datenbanken unverzichtbar für Monitoring-Systeme, Analysen und die Arbeit mit hochfrequenten Daten, bei denen die Zeit ein entscheidender Faktor ist.
MySQL und PostgreSQL können für Zeitreihen verwendet werden, aber sie skalieren schlecht unter solchen Lasten. Der Grund liegt nicht darin, dass sie "schlecht" sind, sondern darin, dass ihre Architektur nicht für sehr häufige Einfügungen und riesige Datenmengen, die genau nach Zeit organisiert sind, ausgelegt ist.

Warum MySQL und PostgreSQL nicht für Zeitreihen geeignet sind

In klassischen relationalen Datenbanken werden Einträge in Tabellen gespeichert, und Indizes in B-Bäumen (B-tree). Wenn Daten kontinuierlich über die Zeit hinzugefügt werden (jede Sekunde oder sogar jede Millisekunde), beginnt der Index schnell "aufzublähen", die Speichersegmente fragmentieren, und häufige INSERTs erzeugen eine Belastung für die Seitenverriegelung und das Transaktionsprotokoll. Infolgedessen beginnt die Datenbank langsamer zu werden, insbesondere wenn die Daten nicht mehr in Millionen, sondern in Hunderten Millionen oder Milliarden von Zeilen gemessen werden.
Ein zweiter Nachteil sind Aggregationen über große Zeiträume. Zum Beispiel die "Durchschnittstemperatur über drei Monate" in MySQL oder PostgreSQL zu erhalten, ist ein langsames Scannen durch eine riesige Tabelle. In Zeitreihen-Datenbanken werden diese Operationen sofort ausgeführt, da sie sofort für Bereichsanfragen optimiert sind und die Daten in einem leicht aggregierbaren Format speichern.
Ein weiteres Problem ist das Löschen alter Daten. In PostgreSQL verursacht dies massives Bloat und erfordert VACUUM, das das System ständig überlastet. In MySQL ist die Situation nicht besser: Wenn eine große Anzahl alter Einträge gelöscht wird, werden Tabellen und Indizes fragmentiert, und die Leistung sinkt. In Zeitreihen-Datenbanken ist dies architektonisch gelöst: Alte Daten werden in separaten "Stücken" gespeichert und einfach in ganzen Blöcken ohne Belastung verworfen.
Außerdem gibt es in herkömmlichen SQL-Datenbanken keine effiziente Datenkompression, die speziell für Zeitwertfolgen optimiert ist. In Zeitreihen-Speichern (InfluxDB, VictoriaMetrics, Prometheus) ermöglicht die Kompression, dieselben Daten 5–20 Mal kompakter zu speichern.
Zusammenfassend lässt sich sagen: MySQL/PostgreSQL funktionieren hervorragend mit klassischen Transaktionsdaten, aber bei großen Strömen von Telemetrie, Protokollen oder Sensordaten sinkt ihre Leistung schnell. Zeitreihen-Datenbanken sind speziell für solche Lasten geschaffen: Sie optimieren das Schreiben, Speichern, Lesen und Löschen von zeitgebundenen Daten.

Dieser Beitrag hat noch keine Ergänzungen vom Autor.

&& vs and — der Unterschied in Ruby, der Ihren Code brechen kann
30. Okt, 20:23 Uhr

&& vs and — der Unterschied in Ruby, der Ihren Code brechen kann

Нотатки про Ruby та RoR
Нотатки про Ruby та RoR@kovbaska
Variablen in Ruby: @, @@ und Klasseninstanzvariablen
30. Okt, 20:54 Uhr

Variablen in Ruby: @, @@ und Klasseninstanzvariablen

Нотатки про Ruby та RoR
Нотатки про Ruby та RoR@kovbaska
Der Unterschied zwischen blank?, present?, empty? und nil? in Ruby
30. Okt, 21:06 Uhr

Der Unterschied zwischen blank?, present?, empty? und nil? in Ruby

Нотатки про Ruby та RoR
Нотатки про Ruby та RoR@kovbaska
Was ist Middleware in Ruby on Rails und wann wird sie verwendet?
04. Nov, 10:39 Uhr

Was ist Middleware in Ruby on Rails und wann wird sie verwendet?

Нотатки про Ruby та RoR
Нотатки про Ruby та RoR@kovbaska
Was ist der Vanilla Rails-Ansatz?
14. Nov, 16:48 Uhr

Was ist der Vanilla Rails-Ansatz?

Нотатки про Ruby та RoR
Нотатки про Ruby та RoR@kovbaska
Was ist Elasticsearch und wie funktioniert es?
22. Nov, 12:35 Uhr

Was ist Elasticsearch und wie funktioniert es?

Нотатки про Ruby та RoR
Нотатки про Ruby та RoR@kovbaska
22. Nov, 12:49 Uhr

Was ist VACUUM in PostgreSQL?

Нотатки про Ruby та RoR
Нотатки про Ruby та RoR@kovbaska
Was ist ein B-Baum (ausgeglichener Baum)?
22. Nov, 12:58 Uhr

Was ist ein B-Baum (ausgeglichener Baum)?

Нотатки про Ruby та RoR
Нотатки про Ruby та RoR@kovbaska
Fix des Problems bei der Installation von Ruby 3.4.3 (und nicht nur) über RVM auf macOS (Apple Silicon)
30. Dez, 14:05 Uhr

Fix des Problems bei der Installation von Ruby 3.4.3 (und nicht nur) über RVM auf macOS (Apple Silicon)

Нотатки про Ruby та RoR
Нотатки про Ruby та RoR@kovbaska
Thundering Herd Problem: was ist das und warum bricht es die Produktion
15. Jan, 10:14 Uhr

Thundering Herd Problem: was ist das und warum bricht es die Produktion

Нотатки про Ruby та RoR
Нотатки про Ruby та RoR@kovbaska
Was ist Exponential Backoff und Random Jitter?
15. Jan, 15:24 Uhr

Was ist Exponential Backoff und Random Jitter?

Нотатки про Ruby та RoR
Нотатки про Ruby та RoR@kovbaska
Anbindung des Elasticsearch-Dienstes an die Rails-Anwendung (Coolify in der Cloud, Server bei Hetzner).
15. Feb, 13:45 Uhr

Anbindung des Elasticsearch-Dienstes an die Rails-Anwendung (Coolify in der Cloud, Server bei Hetzner).

Нотатки про Ruby та RoR
Нотатки про Ruby та RoR@kovbaska