0Pricing
SQL Academy · Leçon

Politiques de compression et de rétention

Compressez les anciens blocs avec la compression en colonnes de TimescaleDB et supprimez automatiquement les blocs arrivés à expiration.

Politiques de compression et de rétention est une leçon SQL Academy gratuite sur CoddyKit. Ceci est la leçon 3 sur 4. Tu peux lire la leçon complète ci-dessous gratuitement — puis la pratiquer en direct dans le navigateur avec un éditeur de code intégré et un tuteur IA 24/7. Elle fait partie du parcours d'apprentissage SQL Academy, et ta progression se synchronise sur le web et l'application CoddyKit. Le cours SQL Academy comprend 4 leçons au total.

Pourquoi compresser ?

Les données de séries temporelles se compressent très bien. TimescaleDB compresse les blocs au format en colonnes et atteint souvent des taux de compression de 10 à 20 fois.

Compresser une table hyperpartitionnée

Configurez les colonnes qui servent à segmenter et à ordonner les données compressées :

ALTER TABLE metrics SET (
  timescaledb.compress,
  timescaledb.compress_segmentby = 'device_id',
  timescaledb.compress_orderby = 'ts DESC'
);

Politique de compression

Automatisez la compression des anciens blocs :

SELECT add_compression_policy('metrics', INTERVAL '7 days');
-- Chunks older than 7 days get compressed automatically.

Performances des requêtes sur les données compressées

Les lectures sur les blocs compressés restent rapides : TimescaleDB transmet les filtres au stockage en colonnes. Les écritures et mises à jour sur les blocs compressés sont limitées (principalement des ajouts).

Politique de rétention

Supprimez les données plus anciennes que N intervalles — rapidement (suppression du bloc) plutôt que lentement (DELETE) :

SELECT add_retention_policy('metrics', INTERVAL '90 days');
-- Chunks older than 90 days are dropped automatically.

Opérations manuelles sur les blocs

Explorez les blocs :

SELECT * FROM chunks_detailed_size('metrics');
SELECT show_chunks('metrics', older_than => INTERVAL '90 days');
SELECT drop_chunks('metrics', older_than => INTERVAL '90 days');

Hiérarchisation du stockage

Déplacez les anciens blocs vers un disque lent en modifiant l'espace de table de chaque bloc. Associée à la compression, cette méthode permet de conserver plusieurs années de données à faible coût.

Taux de compression en pratique

Taux habituels pour les données de capteurs :

  • Mesures numériques : économie d'espace de 90 à 95 % ou plus
  • Données catégorielles : 70 à 80 %
  • Chaînes/JSON : dépend du contenu

Décompresser pour effectuer des mises à jour

Vous pouvez décompresser un bloc pour mettre à jour d'anciennes données, puis le recompresser :

SELECT decompress_chunk(c) FROM show_chunks('metrics', newer_than => INTERVAL '60 days') c;
-- Update / fix
SELECT compress_chunk(c) FROM show_chunks('metrics', newer_than => INTERVAL '60 days') c;

Équivalents PostgreSQL classiques

Sans TimescaleDB, vous pouvez créer votre propre solution à l'aide de partitions :

DROP TABLE events_2022;            -- retention (fast)
-- No native columnar compression in vanilla Postgres for time-series.

Associer aux agrégats continus

Schéma courant : conserver les données brutes pendant 30 jours, les agrégats horaires pendant 1 an et les agrégats quotidiens indéfiniment. Chaque niveau est compressé ou conservé selon les besoins.

Surveillance

Suivez la taille compressée et le taux de compression :

SELECT * FROM hypertable_compression_stats('metrics');

Récapitulatif

La compression et la rétention transforment PostgreSQL en un système efficace pour les séries temporelles.

  • Compressez les anciens blocs 10 à 20 fois
  • La rétention supprime les blocs instantanément
  • Organisez les données brutes, horaires et quotidiennes selon des durées de conservation différentes
  • Décompressez pour effectuer un remplissage rétroactif si nécessaire

Vérification rapide

Vous souhaitez conserver 7 jours de mesures brutes et supprimer automatiquement tout ce qui est plus ancien. Quelle est la solution TimescaleDB ?

Questions Fréquemment Posées

La leçon « Politiques de compression et de rétention » est-elle gratuite ?

Oui — le texte complet de « Politiques de compression et de rétention » est gratuit à lire ici sur le web. Pour la pratiquer de manière interactive (un éditeur de code intégré et un tuteur IA 24/7) et déverrouiller le reste du cours SQL Academy, passe à CoddyKit PRO. Le cours SQL Academy comprend 4 leçons au total.

Qu'est-ce que j'apprendrai dans « Politiques de compression et de rétention » ?

Compressez les anciens blocs avec la compression en colonnes de TimescaleDB et supprimez automatiquement les blocs arrivés à expiration. Tu pratiques SQL Academy avec du code pratique que tu exécutes directement dans le navigateur, et un tuteur IA 24/7 répond à tes questions au fur et à mesure que tu avances dans la leçon.

Dois-je avoir de l'expérience pour commencer SQL Academy ?

Aucune expérience préalable n'est requise. SQL Academy sur CoddyKit est structuré pour les débutants jusqu'aux apprenants avancés, donc tu peux commencer ici ou depuis le début et avancer à ton rythme. Ceci est la leçon 3 sur 4.

Combien de temps prend la leçon « Politiques de compression et de rétention » ?

La plupart des leçons CoddyKit prennent environ 5–10 minutes. Chacune est courte et interactive, tu progresses régulièrement et tu repiques exactement où tu t'es arrêté sur le web et l'app.

Peux-tu écrire et exécuter du code dans cette leçon SQL Academy ?

Oui. Chaque leçon SQL Academy inclut un éditeur de code intégré, tu écris et exécutes du vrai code directement dans ton navigateur et tu reçois des retours IA instantanés — aucune configuration locale requise.

Toutes les leçons de ce cours

  1. Tables hypertables TimescaleDB
  2. Agrégats continus
  3. Politiques de compression et de rétention
  4. Choisir les index pour les séries temporelles
← Retour à SQL Academy