Kontinuierliche Aggregationen
Aggregieren Sie Zeitreihendaten vorab mit materialisierten Views vom Typ CONTINUOUS AGGREGATE und inkrementeller Aktualisierung.
Kontinuierliche Aggregationen ist eine kostenlose SQL Academy-Lektion auf CoddyKit. Dies ist Lektion 2 von 4. Du kannst die komplette Lektion unten kostenlos lesen – dann übst du sie direkt im Browser mit einem integrierten Code-Editor und einem KI-Tutor rund um die Uhr. Sie ist Teil des SQL Academy-Lernpfads, und dein Fortschritt wird über Web und CoddyKit-App synchronisiert. Der SQL Academy-Kurs umfasst insgesamt 4 Lektionen.
Was ist ein kontinuierliches Aggregat?
Ein vorberechnetes, inkrementell aktualisiertes Aggregat über einer Hypertable — ähnlich wie eine materialisierte Sicht, die bei neu eintreffenden Daten intelligent aktualisiert wird.
Ein kontinuierliches Aggregat erstellen
Stündliche Geräte-Durchschnittswerte:
CREATE MATERIALIZED VIEW metrics_hourly
WITH (timescaledb.continuous) AS
SELECT device_id,
time_bucket('1 hour', ts) AS hour,
AVG(value) AS avg_value,
COUNT(*) AS samples
FROM metrics
GROUP BY device_id, hour;Aktualisierungsrichtlinie
TimescaleDB aktualisiert automatisch:
SELECT add_continuous_aggregate_policy('metrics_hourly',
start_offset => INTERVAL '1 day',
end_offset => INTERVAL '1 hour',
schedule_interval => INTERVAL '15 minutes');
-- Every 15 minutes, refresh the window from 1 day ago to 1 hour ago.Abfragen
Verwenden Sie einfach SELECT — TimescaleDB verbindet materialisierte Daten mit Rohdaten für den aktuellsten noch nicht materialisierten Zeitraum:
SELECT * FROM metrics_hourly
WHERE device_id = 42
AND hour >= NOW() - INTERVAL '7 days'
ORDER BY hour;Echtzeit-Aggregation
Standardmäßig zeigen kontinuierliche Aggregate vorberechnete Daten PLUS Rohdaten für den noch nicht materialisierten Teil. Sie sehen immer die neuesten Werte, allerdings wird dieser Teil bei jeder Abfrage dynamisch berechnet.
Modus nur mit materialisierten Daten
Für vollständig vorberechnete Dashboards ohne dynamische Berechnung deaktivieren Sie die Echtzeit-Aggregation:
ALTER MATERIALIZED VIEW metrics_hourly
SET (timescaledb.materialized_only = true);Mehrstufige Aggregation
Erstellen Sie stündliche → tägliche → monatliche Aggregate:
-- daily aggregate from the hourly cagg
CREATE MATERIALIZED VIEW metrics_daily
WITH (timescaledb.continuous) AS
SELECT device_id, time_bucket('1 day', hour) AS day,
AVG(avg_value) AS avg_value
FROM metrics_hourly
GROUP BY device_id, day;Die Komprimierung der Hypertable blockiert die Aggregation nicht
Sie können die zugrunde liegende Hypertable komprimieren; kontinuierliche Aggregate funktionieren weiterhin.
Wann kontinuierliche Aggregate materialisierte Sichten übertreffen
- Zeitreihendaten: integrierte Zeitsemantik
- Inkrementelle Aktualisierung — die gesamte Historie muss nie erneut eingelesen werden
- Integration des Echtzeitanteils
- Mehrstufige Rollups
Kompatibilität
Kontinuierliche Aggregate funktionieren mit TimescaleDB-Hypertables. Für nicht auf TS basierendes Postgres müssen Sie Ihre eigene materialisierte Sicht mit eigener Aktualisierungslogik erstellen.
Historische Daten nachladen
Aktualisieren Sie historische Daten manuell, wenn Sie die Definition des Aggregats ändern:
CALL refresh_continuous_aggregate('metrics_hourly',
NULL, NOW());
-- Recompute from the beginning of time.Zusammenfassung
Kontinuierliche Aggregate sind materialisierte Sichten für Zeitreihen.
- Definiert mit WITH (timescaledb.continuous)
- Richtlinie zur automatischen Aktualisierung
- Kombination aus Echtzeit- und materialisierten Daten
- Tägliche oder wöchentliche Aggregate auf stündlichen Aggregaten aufbauen
Kurzer Check
Warum wird ein kontinuierliches TimescaleDB-Aggregat effizienter aktualisiert als mit REFRESH MATERIALIZED VIEW?
Häufig gestellte Fragen
Ist die Lektion „Kontinuierliche Aggregationen“ kostenlos?
Ja — der vollständige Text von „Kontinuierliche Aggregationen“ ist hier im Web kostenlos zu lesen. Um sie interaktiv zu üben (integrierter Code-Editor und 24/7 KI-Tutor) und den Rest des SQL Academy-Kurses freizuschalten, upgrade auf CoddyKit PRO. Der SQL Academy-Kurs umfasst insgesamt 4 Lektionen.
Was lerne ich in „Kontinuierliche Aggregationen“?
Aggregieren Sie Zeitreihendaten vorab mit materialisierten Views vom Typ CONTINUOUS AGGREGATE und inkrementeller Aktualisierung. Du übst SQL Academy mit praktischem Code, den du direkt im Browser ausführst, und ein 24/7 KI-Tutor beantwortet deine Fragen während du die Lektion bearbeitest.
Brauche ich Erfahrung, um SQL Academy zu starten?
Keine Vorkenntnisse erforderlich. SQL Academy auf CoddyKit ist für Anfänger bis fortgeschrittene Lernende strukturiert, sodass du hier starten oder von Anfang an beginnen und in deinem eigenen Tempo voranschreiten kannst. Dies ist Lektion 2 von 4.
Wie lange dauert die Lektion „Kontinuierliche Aggregationen“?
Die meisten CoddyKit-Lektionen dauern etwa 5–10 Minuten. Jede ist kompakt und interaktiv, sodass du stetig Fortschritte machst und genau dort weitermachst, wo du aufgehört hast – im Web und in der App.
Kann ich in dieser SQL Academy-Lektion Code schreiben und ausführen?
Ja. Jede SQL Academy-Lektion enthält einen integrierten Code-Editor, sodass du echten Code direkt in deinem Browser schreibst und ausführst und sofort KI-Feedback erhältst — ohne lokale Einrichtung erforderlich.
Alle Lektionen in diesem Kurs
- TimescaleDB-Hypertables
- Kontinuierliche Aggregationen
- Komprimierungs- und Aufbewahrungsrichtlinien
- Indexauswahl für Zeitreihen