Agregaty ciągłe
Wykonywać wstępną agregację danych szeregu czasowego za pomocą zmaterializowanych widoków CONTINUOUS AGGREGATE i odświeżania przyrostowego
Agregaty ciągłe to bezpłatna lekcja SQL Academy na CoddyKit. To lekcja 2 z 4. Możesz przeczytać całą lekcję poniżej za darmo — a potem ćwiczyć ją interaktywnie w przeglądarce z wbudowanym edytorem kodu i tutorem AI dostępnym 24/7. To część ścieżki edukacyjnej SQL Academy, a Twój postęp synchronizuje się między webem a aplikacją CoddyKit. Kurs SQL Academy zawiera 4 lekcji w sumie.
Czym jest agregat ciągły?
Wstępnie obliczany i odświeżany przyrostowo agregat na hypertable — podobny do widoku zmaterializowanego, który inteligentnie aktualizuje się wraz z napływem nowych danych.
Tworzenie agregatu
Średnie godzinowe dla urządzeń:
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;Zasada odświeżania
TimescaleDB automatycznie odświeża dane:
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.Odpytywanie
Wystarczy SELECT — TimescaleDB łączy zmaterializowane dane z surowymi danymi za najnowszy niezmaterializowany okres:
SELECT * FROM metrics_hourly
WHERE device_id = 42
AND hour >= NOW() - INTERVAL '7 days'
ORDER BY hour;Agregacja w czasie rzeczywistym
Domyślnie agregaty ciągłe pokazują dane wstępnie obliczone ORAZ surowe dane z niezmaterializowanego końcowego okresu. Zawsze widzą Państwo najnowsze wartości, kosztem obliczania tego końcowego okresu w locie.
Tryb tylko zmaterializowanych danych
Aby uzyskać w pełni wstępnie obliczane pulpity bez obliczeń w locie, należy wyłączyć agregację w czasie rzeczywistym:
ALTER MATERIALIZED VIEW metrics_hourly
SET (timescaledb.materialized_only = true);Agregacja wielopoziomowa
Budowanie poziomów godzinowych → dziennych → miesięcznych:
-- 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;Kompresja hypertable nie blokuje agregacji
Można kompresować bazową hypertable; agregaty ciągłe nadal będą działać.
Kiedy agregaty ciągłe są lepsze od widoków zmaterializowanych
- Dane szeregów czasowych: wbudowana obsługa czasu
- Odświeżanie przyrostowe — bez ponownego skanowania całej historii
- Integracja końcowych danych czasu rzeczywistego
- Agregacje wielopoziomowe
Zgodność
Agregaty ciągłe działają na hypertables TimescaleDB. W przypadku PostgreSQL bez TS trzeba samodzielnie zbudować widok zmaterializowany i logikę jego odświeżania.
Uzupełnianie danych historycznych
Jeśli zmienią Państwo definicję agregatu, dane historyczne należy odświeżyć ręcznie:
CALL refresh_continuous_aggregate('metrics_hourly',
NULL, NOW());
-- Recompute from the beginning of time.Podsumowanie
Agregaty ciągłe to zmaterializowane widoki dla szeregów czasowych.
- Definiowane za pomocą WITH (timescaledb.continuous)
- Automatyczna zasada odświeżania
- Połączenie danych czasu rzeczywistego i zmaterializowanych
- Budowanie agregatów dziennych/tygodniowych na podstawie godzinowych
Szybkie sprawdzenie
Co sprawia, że odświeżanie agregatu ciągłego TimescaleDB jest wydajniejsze niż REFRESH MATERIALIZED VIEW?
Często zadawane pytania
Czy lekcja „Agregaty ciągłe” jest bezpłatna?
Tak — pełny tekst „Agregaty ciągłe” jest dostępny za darmo tutaj w sieci. Aby ćwiczyć ją interaktywnie (wbudowany edytor kodu i tutor AI dostępny 24/7) i odblokować resztę kursu SQL Academy, przejdź na CoddyKit PRO. Kurs SQL Academy zawiera 4 lekcji w sumie.
Co nauczysz się w „Agregaty ciągłe”?
Wykonywać wstępną agregację danych szeregu czasowego za pomocą zmaterializowanych widoków CONTINUOUS AGGREGATE i odświeżania przyrostowego Ćwiczysz SQL Academy z praktycznym kodem, który uruchamiasz bezpośrednio w przeglądarce, a tutor AI dostępny 24/7 odpowiada na Twoje pytania podczas pracy nad lekcją.
Czy potrzebuję doświadczenia, aby zacząć SQL Academy?
Nie wymagamy żadnego doświadczenia. SQL Academy w CoddyKit jest strukturyzowany dla początkujących i zaawansowanych użytkowników, więc możesz zacząć tutaj lub od początku i uczyć się w swoim tempie. To lekcja 2 z 4.
Ile czasu zajmuje lekcja „Agregaty ciągłe”?
Większość lekcji CoddyKit trwa około 5–10 minut. Każda lekcja to mały, interaktywny krok, dzięki czemu robisz systematyczne postępy i zawsze wracasz dokładnie do tego samego miejsca — na webie i w aplikacji.
Czy mogę pisać i uruchamiać kod w tej lekcji SQL Academy?
Tak. Każda lekcja SQL Academy zawiera wbudowany edytor kodu, więc piszesz i uruchamiasz prawdziwy kod bezpośrednio w przeglądarce i od razu otrzymujesz sprzężenie zwrotne od AI — bez konfiguracji na komputerze.
Wszystkie lekcje w tym kursie
- Hypertabele TimescaleDB
- Agregaty ciągłe
- Zasady kompresji i retencji
- Dobór indeksów dla szeregów czasowych