Hypertable di TimescaleDB
Converta una tabella Postgres in una hypertable TimescaleDB, con partizionamento temporale automatico basato sull’intervallo dei chunk.
Hypertable di TimescaleDB è una lezione SQL Academy gratuita su CoddyKit. Questa è la lezione 1 di 4. Puoi leggere la lezione completa qui gratuitamente — poi esercitati direttamente nel browser con un editor di codice integrato e un tutor IA disponibile 24/7. Fa parte del percorso di apprendimento SQL Academy, e i tuoi progressi si sincronizzano tra il web e l'app CoddyKit. Il corso SQL Academy include 4 lezioni in totale.
Che cos'è TimescaleDB?
Un'estensione di PostgreSQL progettata per i dati di serie temporali. Aggiunge il partizionamento temporale automatico, la compressione, la conservazione e le aggregazioni continue. Può essere utilizzata autonomamente o insieme a Postgres standard.
Hypertable
Una singola tabella logica divisa fisicamente in «chunk» in base al tempo:
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.Intervallo temporale dei chunk
Il chunk predefinito dura 7 giorni. Lo ottimizzi in base alla velocità di acquisizione dei dati (chunk più piccoli per dati ad alta velocità):
SELECT create_hypertable('metrics', 'ts', chunk_time_interval => INTERVAL '1 day');
-- One chunk per day, smaller and faster to drop.Inserimento dei dati
È sufficiente un normale INSERT: TimescaleDB instrada le righe nel chunk corretto:
INSERT INTO metrics (ts, device_id, value)
VALUES (NOW(), 1, 42.5);Interrogazione delle hypertable
Si comportano come normali tabelle. Il planner esclude i chunk per le query con limiti temporali:
SELECT * FROM metrics
WHERE ts >= NOW() - INTERVAL '7 days'
ORDER BY ts DESC LIMIT 100;
-- Only the relevant chunks are read.time_bucket: date_trunc più intelligente
La funzione di raggruppamento di TimescaleDB:
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;Partizionamento su più colonne
Per i carichi di lavoro multi-tenant, esegua il partizionamento anche in base a device_id:
SELECT create_hypertable('metrics', 'ts', 'device_id', 4);
-- Hash-partitions device_id into 4 space partitions per time chunk.Query con entrambi i filtri
Le prestazioni migliori si ottengono quando vengono filtrate entrambe le dimensioni del partizionamento:
SELECT * FROM metrics
WHERE device_id = 42
AND ts >= NOW() - INTERVAL '7 days';
-- Prunes by both time and space.Indici sulle hypertable
Gli indici vengono propagati a ogni chunk:
CREATE INDEX metrics_device_idx ON metrics (device_id, ts DESC);
-- Composite index ideal for 'recent data for one device' queries.Aggiornamento delle hypertable
UPDATE e DELETE funzionano, ma dovrebbero essere rari sulle serie temporali. I dati meno recenti sono in genere aggiunti in coda e immutabili.
Migrazione dalle tabelle standard
Le tabelle esistenti possono essere convertite in hypertable:
SELECT create_hypertable('metrics', 'ts', migrate_data => true);Riepilogo
Le hypertable forniscono il partizionamento temporale automatico per Postgres.
- Una tabella logica, molti chunk fisici
- create_hypertable + chunk_time_interval
- time_bucket per le aggregazioni a intervalli
- Gli indici vengono propagati a tutti i chunk
Verifica rapida
Sta acquisendo metriche IoT a 100.000 righe al secondo. Perché convertire la tabella in una hypertable TimescaleDB?
Domande Frequenti
La lezione «Hypertable di TimescaleDB» è gratuita?
Sì — il testo completo di «Hypertable di TimescaleDB» è gratuito qui sul web. Per esercitarvi in modo interattivo (un editor di codice integrato e un tutor IA 24/7) e sbloccare il resto del corso SQL Academy, passa a CoddyKit PRO. Il corso SQL Academy include 4 lezioni in totale.
Cosa imparerò in «Hypertable di TimescaleDB»?
Converta una tabella Postgres in una hypertable TimescaleDB, con partizionamento temporale automatico basato sull’intervallo dei chunk. Eserciti SQL Academy con codice pratico che esegui direttamente nel browser, e un tutor IA 24/7 risponde alle tue domande mentre lavori sulla lezione.
Ho bisogno di esperienza per iniziare SQL Academy?
Non è richiesta alcuna esperienza precedente. SQL Academy su CoddyKit è strutturato per principianti e studenti avanzati, quindi puoi iniziare da qui o dall'inizio e procedere al tuo ritmo. Questa è la lezione 1 di 4.
Quanto tempo richiede la lezione «Hypertable di TimescaleDB»?
La maggior parte delle lezioni CoddyKit richiede circa 5–10 minuti. Ogni lezione è breve e interattiva, quindi fai progressi costanti e riprendi esattamente da dove hai lasciato su web e app.
Posso scrivere ed eseguire codice in questa lezione SQL Academy?
Sì. Ogni lezione SQL Academy include un editor di codice integrato, quindi scrivi ed esegui codice reale direttamente nel tuo browser e ricevi feedback istantaneo dall'IA — nessuna configurazione locale necessaria.
Tutte le lezioni di questo corso
- Hypertable di TimescaleDB
- Aggregati continui
- Criteri di compressione e conservazione
- Scelta degli indici per le serie temporali