SQL Academy · Lektion

TimescaleDB-hypertabeller

Omdan en Postgres-tabel til en TimescaleDB-hypertabel med automatisk tidsbaseret partitionering efter chunk-interval.

Lektion 1 af 413 trin

TimescaleDB-hypertabeller er en gratis SQL Academy-lektion på CoddyKit. Dette er lektion 1 af 4. Du kan læse hele lektionen gratis nedenfor — og derefter øve dig praktisk i browseren med en indbygget kodeeditor og en AI-vejleder, der er tilgængelig døgnet rundt. Den er en del af læringsforløbet i SQL Academy, og dine fremskridt synkroniseres på tværs af nettet og CoddyKit-appen. SQL Academy-kurset indeholder 4 lektioner i alt.

Hvad er TimescaleDB?

En PostgreSQL-udvidelse, der er udviklet til tidsseriedata. Den tilføjer automatisk tids-partitionering, komprimering, opbevaring og kontinuerlige aggregater. Den kan bruges selvstændigt eller sammen med almindelig Postgres.

Hypertabel

En logisk enkelt tabel, der fysisk er opdelt i "chunks" efter 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.

Tidsinterval for chunks

Et chunk er som standard 7 dage. Justér det efter dataenes hastighed (mindre chunks til data med høj hastighed):

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

Indsættelse af data

Brug bare en normal INSERT — TimescaleDB dirigerer rækkerne til det rigtige chunk:

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

Forespørgsler på hypertabeller

Det ligner en normal tabel. Planlæggeren frasorterer chunks for forespørgsler med tidsbegrænsninger:

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

TimescaleDB's hjælpefunktion til 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;

Partitionering efter flere kolonner

For arbejdsbelastninger med flere lejere kan du også partitionere efter device_id:

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

Forespørgsler med begge filtre

Du får den bedste ydeevne, når begge partitioneringsdimensioner filtreres:

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

Indeks på hypertabeller

Indeks videreføres til hvert chunk:

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

Opdatering af hypertabeller

UPDATE- og DELETE-operationer fungerer, men bør være sjældne på tidsseriedata. Gamle data tilføjes normalt kun og er uforanderlige.

Migrering fra almindelige tabeller

Eksisterende tabeller kan konverteres til hypertabeller:

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

Opsummering

Hypertabeller = automatisk tids-partitionering til Postgres.

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

Hurtigt tjek

Du indlæser IoT-målinger med 100.000 rækker/sek. Hvorfor konvertere tabellen til en TimescaleDB-hypertabel?

Gratis at komme i gang

Lær SQL med en AI-underviser — gratis

Skriv og kør rigtig kode i din browser, få øjeblikkelig hjælp fra en AI-underviser døgnet rundt, og fortsæt, hvor du slap, på web eller i appen.

Kurser
46
Lektioner
183

Ofte stillede spørgsmål

Er lektionen “TimescaleDB-hypertabeller” gratis?

Ja — hele teksten til “TimescaleDB-hypertabeller” kan læses gratis her på nettet. Hvis du vil øve dig interaktivt med en indbygget kodeeditor og en AI-vejleder døgnet rundt og få adgang til resten af SQL Academy-kurset, skal du opgradere til CoddyKit PRO. SQL Academy-kurset indeholder 4 lektioner i alt.

Hvad lærer jeg i “TimescaleDB-hypertabeller”?

Omdan en Postgres-tabel til en TimescaleDB-hypertabel med automatisk tidsbaseret partitionering efter chunk-interval. Du øver dig i SQL Academy med praktisk kode, som du kører direkte i browseren, og en AI-vejleder døgnet rundt besvarer dine spørgsmål, mens du arbejder dig gennem lektionen.

Skal jeg have erfaring for at begynde på SQL Academy?

Der kræves ingen tidligere erfaring. SQL Academy på CoddyKit er tilrettelagt for både begyndere og øvede, så du kan starte her eller fra begyndelsen og lære i dit eget tempo. Dette er lektion 1 af 4.

Hvor lang tid tager lektionen “TimescaleDB-hypertabeller”?

De fleste CoddyKit-lektioner tager cirka 5–10 minutter. Hver lektion er kort og interaktiv, så du gør løbende fremskridt og kan fortsætte, hvor du slap – på både web og app.

Kan jeg skrive og køre kode i denne SQL Academy-lektion?

Ja. Alle SQL Academy-lektioner har en indbygget kodeeditor, så du kan skrive og køre rigtig kode direkte i din browser og få øjeblikkelig feedback fra AI – uden lokal opsætning.

Alle lektioner i dette kursus

  1. TimescaleDB-hypertabeller
  2. Kontinuerlige aggregeringer
  3. Komprimerings- og opbevaringspolitikker
  4. Valg af indekser til tidsserier
← Tilbage til SQL Academy