SQL Academy · leksjon

TimescaleDB-hypertabeller

Konverter en Postgres-tabell til en TimescaleDB-hypertabell, med automatisk tidsbasert partisjonering etter delingsintervall.

Leksjon 1 av 413 trinn

TimescaleDB-hypertabeller er en gratis leksjon i SQL Academy på CoddyKit. Dette er leksjon 1 av 4. Du kan lese hele leksjonen gratis nedenfor – og deretter øve praktisk i nettleseren med en innebygd kodeeditor og en AI-veileder som er tilgjengelig døgnet rundt. Den er en del av læringsløpet i SQL Academy, og fremdriften din synkroniseres mellom nettet og CoddyKit-appen. Kurset i SQL Academy inneholder totalt 4 leksjoner.

Hva er TimescaleDB?

En PostgreSQL-utvidelse utviklet for tidsseriedata. Den legger til automatisk tidsbasert partisjonering, komprimering, oppbevaring og kontinuerlige aggregater. Den brukes alene eller sammen med vanlig Postgres.

Hypertabell

Én logisk tabell som fysisk er delt opp i «chunks» etter tid:

CREATE EXTENSION IF NOT EXISTS timescaledb;

CREATE TABLE metrics (
  ts TIMESTAMPTZ NOT NULL,
  device_id BIGINT NOT NULL,
  value DOUBLE PRECISION
);

SELECT create_hypertable('metrics', 'ts');
-- metrics is now a hypertable, chunks created automatically.

Tidsintervall for chunks

Standardstørrelsen for en chunk er 7 dager. Tilpass den til datatempoet (mindre chunks for data med høy hastighet):

SELECT create_hypertable('metrics', 'ts', chunk_time_interval => INTERVAL '1 day');
-- One chunk per day, smaller and faster to drop.

Sette inn data

Bruk bare en vanlig INSERT — TimescaleDB ruter radene til riktig chunk:

INSERT INTO metrics (ts, device_id, value)
VALUES (NOW(), 1, 42.5);

Spørre mot hypertabeller

Ser ut som en vanlig tabell. Planleggeren fjerner chunks fra planen for spørringer med tidsbegrensning:

SELECT * FROM metrics
WHERE ts >= NOW() - INTERVAL '7 days'
ORDER BY ts DESC LIMIT 100;
-- Only the relevant chunks are read.

time_bucket: smartere date_trunc

TimescaleDBs hjelpefunksjon for gruppering:

SELECT time_bucket('1 hour', ts) AS hour,
       AVG(value) AS avg_value
FROM metrics
WHERE device_id = 42
  AND ts >= NOW() - INTERVAL '24 hours'
GROUP BY hour
ORDER BY hour;

Partisjonering etter flere kolonner

For arbeidsbelastninger med flere leietakere kan De også partisjonere etter device_id:

SELECT create_hypertable('metrics', 'ts', 'device_id', 4);
-- Hash-partitions device_id into 4 space partitions per time chunk.

Spørre med begge filtrene

Ytelsen er best når begge partisjoneringsdimensjonene filtreres:

SELECT * FROM metrics
WHERE device_id = 42
  AND ts >= NOW() - INTERVAL '7 days';
-- Prunes by both time and space.

Indekser på hypertabeller

Indekser videreføres til hver chunk:

CREATE INDEX metrics_device_idx ON metrics (device_id, ts DESC);
-- Composite index ideal for 'recent data for one device' queries.

Oppdatere hypertabeller

UPDATEs og DELETEs fungerer, men bør være sjeldne for tidsseriedata. Gamle data er vanligvis skrivebeskyttede data som bare utvides.

Migrere fra vanlige tabeller

Eksisterende tabeller kan konverteres til hypertabeller:

SELECT create_hypertable('metrics', 'ts', migrate_data => true);

Oppsummering

Hypertabeller = automatisk tidsbasert partisjonering for Postgres.

  • Én logisk tabell, mange fysiske chunks
  • create_hypertable + chunk_time_interval
  • time_bucket for aggregeringer i intervaller
  • Indekser videreføres til alle chunks

Hurtigsjekk

De tar inn IoT-målinger med 100k rader per sekund. Hvorfor bør tabellen konverteres til en TimescaleDB-hypertabell?

Gratis å komme i gang

Lær deg SQL med en AI-veileder – gratis

Skriv og kjør ekte kode i nettleseren, få umiddelbar hjelp fra en AI-veileder som er tilgjengelig døgnet rundt, og fortsett der du slapp – på nettet eller i appen.

Kurs
46
Leksjoner
183

Ofte stilte spørsmål

Er leksjonen «TimescaleDB-hypertabeller» gratis?

Ja – hele teksten i «TimescaleDB-hypertabeller» er gratis å lese her på nettet. For å øve interaktivt med en innebygd kodeeditor og en AI-veileder som er tilgjengelig døgnet rundt, og for å låse opp resten av SQL Academy-kurset, kan du oppgradere til CoddyKit PRO. Kurset i SQL Academy inneholder totalt 4 leksjoner.

Hva lærer jeg i «TimescaleDB-hypertabeller»?

Konverter en Postgres-tabell til en TimescaleDB-hypertabell, med automatisk tidsbasert partisjonering etter delingsintervall. Du øver på SQL Academy med praktisk kode som du kjører direkte i nettleseren, mens en AI-veileder som er tilgjengelig døgnet rundt, svarer på spørsmålene dine mens du jobber deg gjennom leksjonen.

Trenger jeg erfaring for å begynne med SQL Academy?

Ingen tidligere erfaring er nødvendig. SQL Academy på CoddyKit er lagt opp for både nybegynnere og viderekomne, så De kan begynne her eller helt fra start og lære i Deres eget tempo. Dette er leksjon 1 av 4.

Hvor lang tid tar leksjonen «TimescaleDB-hypertabeller»?

De fleste CoddyKit-leksjoner tar omtrent 5–10 minutter. Hver leksjon er kort og interaktiv, slik at De gjør jevne fremskritt og kan fortsette akkurat der De slapp – både på nettet og i appen.

Kan jeg skrive og kjøre kode i denne SQL Academy-leksjonen?

Ja. Alle SQL Academy-leksjoner har en innebygd kodeeditor, slik at De kan skrive og kjøre ekte kode direkte i nettleseren og få umiddelbar tilbakemelding fra AI – uten lokal konfigurering.

Alle leksjonene i dette kurset

  1. TimescaleDB-hypertabeller
  2. Kontinuerlige aggregater
  3. Komprimerings- og oppbevaringspolicyer
  4. Indeksvalg for tidsserier
← Tilbake til SQL Academy