SQL Academy · Oppitunti

TimescaleDB:n hypertaulet

Muunna Postgres-taulu TimescaleDB:n hypertauuluksi, jossa aika osioidaan automaattisesti lohkovälin mukaan.

Oppitunti 1/413 vaihetta

TimescaleDB:n hypertaulet on ilmainen SQL Academy-oppitunti CoddyKitissä. Tämä on oppitunti 1/4. Voit lukea koko oppitunnin alta ilmaiseksi ja harjoitella sen jälkeen käytännössä selaimessa sisäänrakennetulla koodieditorilla ja ympäri vuorokauden käytettävissä olevan tekoälytuutorin avulla. Oppitunti kuuluu SQL Academy-oppimispolkuun, ja edistymisesi synkronoituu verkon ja CoddyKit-sovelluksen välillä. SQL Academy-kurssilla on yhteensä 4 oppituntia.

Mikä on TimescaleDB?

Aikasarjadataa varten rakennettu PostgreSQL-laajennus. Se lisää automaattisen aikaperusteisen osioinnin, pakkauksen, tietojen säilytyksen ja jatkuvat aggregaatit. Sitä käytetään itsenäisesti tai tavallisen Postgresin rinnalla.

Hypertable

Loogisesti yksi taulu, joka on fyysisesti jaettu ajan perusteella "chunkien" osiin:

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.

Chunk-aikaväli

Oletus-chunk on 7 päivää. Säätäkää arvo datan tulonopeuden mukaan (käyttäkää pienempiä chunkeja nopeasti saapuvalle datalle):

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

Datan lisääminen

Käyttäkää tavallista INSERT-lauseetta — TimescaleDB ohjaa rivit oikeaan chunkiin:

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

Hypertable-taulujen kyselyt

Ne näyttävät tavallisilta tauluilta. Kyselysuunnittelija karsii chunkit aikarajatuissa kyselyissä:

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

time_bucket: älykkäämpi date_trunc

TimescaleDB:n ryhmittelyapu:

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;

Monisarakkeinen osiointi

Usean vuokraajan työkuormissa osioikaa myös device_id:n mukaan:

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

Kyselyt molemmilla suodattimilla

Suorituskyky on parhaimmillaan, kun molemmilla osiointidimensioilla suodatetaan:

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

Hypertable-taulujen indeksit

Indeksit luodaan jokaiseen chunkiin:

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

Hypertable-taulujen päivittäminen

UPDATE- ja DELETE-operaatiot toimivat, mutta niiden tulisi olla aikasarjoissa harvinaisia. Vanha data on yleensä vain lisäävää ja muuttumatonta.

Siirtyminen tavallisista tauluista

Olemassa olevat taulut voidaan muuntaa hypertableiksi:

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

Kertaus

Hypertablet = Postgresin automaattinen aikaperusteinen osiointi.

  • Yksi looginen taulu, monta fyysistä chunkia
  • create_hypertable + chunk_time_interval
  • time_bucket ryhmiteltyihin aggregaatteihin
  • Indeksit luodaan kaikkiin chunkeihin

Pikatarkistus

Vastaanotatte IoT-mittareita 100 000 riviä sekunnissa. Miksi taulu kannattaa muuntaa TimescaleDB-hypertableksi?

Aloita maksutta

Opi SQL tekoälytuutorin avulla — ilmaiseksi

Kirjoita ja suorita oikeaa koodia selaimessa, saa välitöntä apua tekoälytuutorilta ympäri vuorokauden ja jatka siitä, mihin jäit, verkossa tai sovelluksessa.

Kurssit
46
Oppitunnit
183

Usein kysytyt kysymykset

Onko oppitunti ”TimescaleDB:n hypertaulet” ilmainen?

Kyllä – oppitunnin ”TimescaleDB:n hypertaulet” koko tekstin voi lukea täällä verkossa ilmaiseksi. Jos haluat harjoitella interaktiivisesti sisäänrakennetulla koodieditorilla ja ympäri vuorokauden käytettävissä olevan tekoälytuutorin avulla sekä avata koko SQL Academy-kurssin, päivitä CoddyKit PROhon. SQL Academy-kurssilla on yhteensä 4 oppituntia.

Mitä opin oppitunnilla ”TimescaleDB:n hypertaulet”?

Muunna Postgres-taulu TimescaleDB:n hypertauuluksi, jossa aika osioidaan automaattisesti lohkovälin mukaan. Harjoittelet SQL Academy-aihetta koodilla, jonka suoritat suoraan selaimessa. Ympäri vuorokauden käytettävissä oleva tekoälytuutori vastaa kysymyksiisi oppitunnin aikana.

Tarvitsenko kokemusta aloittaakseni SQL Academy-opiskelun?

Aiempi kokemus ei ole tarpeen. CoddyKitin SQL Academy-oppimispolku sopii vasta-alkajista edistyneisiin, joten voit aloittaa tästä tai alusta ja edetä omaan tahtiisi. Tämä on oppitunti 1/4.

Kuinka kauan ”TimescaleDB:n hypertaulet”-oppitunnin suorittaminen kestää?

Useimmat CoddyKitin oppitunnit kestävät noin 5–10 minuuttia. Jokainen oppitunti on lyhyt ja interaktiivinen, joten edistyt tasaisesti ja voit jatkaa siitä, mihin jäit – sekä verkossa että sovelluksessa.

Voinko kirjoittaa ja suorittaa koodia tällä SQL Academy-oppitunnilla?

Kyllä. Jokainen SQL Academy-oppitunti sisältää sisäänrakennetun koodieditorin, joten voit kirjoittaa ja suorittaa oikeaa koodia suoraan selaimessa ja saada välitöntä palautetta tekoälyltä – paikallista asennusta ei tarvita.

Kaikki tämän kurssin oppitunnit

  1. TimescaleDB:n hypertaulet
  2. Jatkuvat koostetut näkymät
  3. Pakkaus- ja säilytyskäytännöt
  4. Aikasarjojen indeksivalinnat
← Takaisin: SQL Academy