Was sind Zeitreihendaten?
- Zeitreihendaten sind eine Sammlung von Datenpunkten, bei denen jeder Datenpunkt mit einem Zeitstempel versehen ist
- Beispiele: Aktienkurse, von Geräten und Sensoren zurückgegebene Temperatur- und Verfügbarkeitsdaten, Traffic-Daten von Websites
- Zeitreihen-Workloads umfassen in der Regel zeitbasierte Filterabfragen und Aggregationsabfragen zur Datenzusammenfassung
Zeitreihen mit PostgreSQL verarbeiten
- PostgreSQL kann dank seiner Erweiterbarkeit und seines Ökosystems alle Daten-Workloads bewältigen
- Tembo hat sich zum Ziel gesetzt, es Nutzern leicht zu machen, das PostgreSQL-Ökosystem zu verwenden
- Die größte Anforderung der Kunden war ein Stack zum Speichern und Verarbeiten von Zeitreihendaten
Komponenten von pg_timeseries
- Anforderungen für die effiziente Speicherung und Abfrage von Zeitreihendaten:
- Zeitreihendaten einfach verwalten
- Hohen Durchsatz bewältigen
- Schnell auf Bereichsabfragen reagieren
- Große Datenmengen effizient speichern
- Komplexe Analysefunktionen ausführen
- Grundlegende Funktionen von PostgreSQL:
- Native Partitionierung, verschiedene Indizes, materialisierte Views, Window-/Analysefunktionen
- Zusätzliche Erweiterungen:
- pg_partman: Partitionsverwaltung
- pg_cron: Job-Scheduling
- columnar: Komprimierung
- pg_ivm: inkrementelle materialisierte Views
- pg_tier: langfristiges Offloading älterer Partitionen
pg_timeseries: Der einfachste Weg, Zeitreihendaten in PostgreSQL zu verwalten
- pg_timeseries kombiniert die Funktionen mehrerer Erweiterungen und bietet eine einheitliche Schnittstelle
- Für den Einstieg wird eine nach einer zeitbezogenen Spalte partitionierte Tabelle benötigt
CREATE TABLE measurements ( metric_name text, metric_value numeric, metric_time timestamptz NOT NULL ) PARTITION BY RANGE (metric_time); SELECT enable_ts_table('measurements'); - Enthält verschiedene Views, die wichtige Informationen bereitstellen:
SELECT table_id, table_size_bytes FROM ts_table_info; SELECT * FROM ts_part_info; - Es lassen sich Richtlinien für Komprimierung und Löschung von Partitionen festlegen:
SELECT set_ts_compression_policy('measurements', '90 days'); SELECT set_ts_retention_policy('measurements', '365 days'); - Zusätzliche Funktionen verfügbar:
SELECT locf(avg(metric_value)) OVER (ORDER BY metric_time) avg_val, last(metric_name, metric_value) highest, metric_time FROM date_bin_table(NULL::measurements, '1 hour', '[2024-05-09,2024-06-07]');
Wir stehen erst am Anfang
- Für den Aufbau einer Zeitreihen-Erweiterung für PostgreSQL werden viele Komponenten benötigt
- Es ist geplant, sie gemeinsam mit der Community offen zu entwickeln
- Aktuelle Roadmap:
- Auslagerung älterer Partitionen in Cold Storage wie S3
- Approximationsfunktionen für effiziente Analysen
- Inkrementelle materialisierte Views
- Rollup und Roll-off älterer Partitionen
- Zusätzliche Analyse-Hilfsfunktionen
- Die vollständige Roadmap steht im GitHub-README, und die Priorisierung der Funktionen erfolgt nach Nutzernachfrage
Meinung von GN⁺
- Bedeutung von Zeitreihendaten: In verschiedenen Bereichen wie IoT, Finanzen und Webanalyse nimmt die Bedeutung von Zeitreihendaten zu. pg_timeseries bietet ein Werkzeug, um diese Daten effizient zu verwalten.
- Erweiterbarkeit von PostgreSQL: Durch die Erweiterungsfunktionen von PostgreSQL lassen sich verschiedenste Daten-Workloads verarbeiten. pg_timeseries integriert diese Erweiterungen und erhöht so den Bedienkomfort für Nutzer.
- Zusammenarbeit mit der Community: Die Entwicklung als Open Source ermöglicht es, Feedback aus der Community einfließen zu lassen. Das hilft erheblich bei Funktionsverbesserungen und Fehlerbehebungen.
- Konkurrenzprodukte: Im Vergleich zu anderen Zeitreihen-Datenbanken wie TimescaleDB bietet es den Vorteil, ohne Lizenzbeschränkungen nutzbar zu sein. Allerdings sind Vergleiche bei Performance und Funktionsumfang erforderlich.
- Aspekte bei der Einführung: Bei der Einführung von pg_timeseries sollten die Kompatibilität mit bestehenden Datenbanken, die Performance und die Wartungskosten berücksichtigt werden. Außerdem ist wegen der Natur von Zeitreihendaten ein geeignetes Storage-Management nötig, da das Datenvolumen stark ansteigen kann.
1 Kommentare
Hacker-News-Diskussion
Zusammenfassung ausgewählter Hacker-News-Kommentare
Inkrementelle materialisierte Views
ivmirgendwann in den PostgreSQL-Core aufgenommen wird.Vergleich mit TimescaleDB
Append-Only-Tabellen
Die Entwicklung von Zeitreihendatenbanken
Die Notwendigkeit von spaltenorientiertem Storage
Nützliche Links
Load-Balancer-Logeinträge
Open-Source-Innovation
PostgreSQL-Lizenz
Website-Design und App-UI