0Pricing
SQL Academy · Lekcja

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

  1. Hypertabele TimescaleDB
  2. Agregaty ciągłe
  3. Zasady kompresji i retencji
  4. Dobór indeksów dla szeregów czasowych
← Powrót do SQL Academy