Quand précalculer les agrégats
Choisissez entre l’agrégation en temps réel, les vues matérialisées et OLAP en aval, selon la fraîcheur des données et le coût.
Quand précalculer les agrégats est une leçon SQL Academy gratuite sur CoddyKit. Ceci est la leçon 4 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.
Trois stratégies pour les requêtes d’agrégation
- À la volée — recalculer à chaque fois
- Matérialisée — stocker et actualiser périodiquement
- Déclenchée/incrémentielle — mettre à jour progressivement à chaque modification
Agrégation à la volée
Simple et toujours à jour :
SELECT user_id, COUNT(*) FROM orders WHERE status = 'paid' GROUP BY user_id;Quand l’exécution à la volée convient
La requête est suffisamment rapide (bons index, petit résultat, appels peu fréquents). Privilégiez l’exécution à la volée — n’optimisez que lorsque vous mesurez un problème.
Agrégation matérialisée
Pour les rapports coûteux qui peuvent être « suffisamment à jour » :
CREATE MATERIALIZED VIEW user_revenue_30d AS
SELECT user_id, SUM(total) AS revenue
FROM orders
WHERE created_at >= NOW() - INTERVAL '30 days'
GROUP BY user_id;
-- Refresh nightly:
REFRESH MATERIALIZED VIEW CONCURRENTLY user_revenue_30d;Agrégation déclenchée / incrémentielle
Pour les tableaux de bord en temps réel, entretenez une table récapitulative avec des déclencheurs :
CREATE TABLE user_summary (
user_id BIGINT PRIMARY KEY,
order_count INT NOT NULL DEFAULT 0,
revenue NUMERIC(12,2) NOT NULL DEFAULT 0
);
CREATE FUNCTION incr_summary() RETURNS TRIGGER AS $$
BEGIN
INSERT INTO user_summary (user_id, order_count, revenue)
VALUES (NEW.user_id, 1, NEW.total)
ON CONFLICT (user_id) DO UPDATE
SET order_count = user_summary.order_count + 1,
revenue = user_summary.revenue + EXCLUDED.revenue;
RETURN NEW;
END;
$$ LANGUAGE plpgsql;
CREATE TRIGGER trg_summary AFTER INSERT ON orders
FOR EACH ROW EXECUTE FUNCTION incr_summary();Compromis
| Stratégie | Fraîcheur | Coût d’écriture | Coût de lecture |
|---|---|---|---|
| À la volée | Instantanée | Aucun | Élevé |
| Matérialisée | Obsolète | Lot d’actualisation | Faible |
| Déclenchée | Instantanée | Par écriture | Faible |
Choisir selon le ratio lectures/écritures
- Beaucoup d’écritures, lectures occasionnelles → à la volée (ou vue matérialisée actualisée par lots)
- Beaucoup de lectures, écritures modérées → vue matérialisée
- Beaucoup de lectures ET d’écritures, fraîcheur essentielle → récapitulatif déclenché
Pré-agrégation externe
Pour les analyses à l’échelle d’un entrepôt de données, déplacez l’agrégation vers :
- Des bases de données OLAP (ClickHouse, Druid)
- Des modèles dbt dans un entrepôt distinct
- Les agrégations continues de TimescaleDB (extension PostgreSQL)
Tables récapitulatives ou vue matérialisée
Les tables récapitulatives personnalisées permettent une mise à jour incrémentielle ; les vues matérialisées imposent une actualisation complète. Mettez en balance l’effort de développement et la simplicité opérationnelle.
Éviter les déclencheurs sur les tables très sollicitées
Les récapitulatifs fondés sur des déclencheurs ajoutent une latence d’écriture à chaque opération. Pour les tables à haute fréquence (événements, métriques), préférez une actualisation par lots de la vue matérialisée.
Méfiez-vous de l’invalidation du cache
« Il n’y a que deux choses difficiles en CS. » Les récapitulatifs déclenchés constituent un cache. Les bogues qui s’y trouvent se manifestent par des chiffres erronés dans le tableau de bord. Ajoutez une tâche quotidienne de rapprochement qui recalcule les résultats depuis la source.
Matérialiser des chaînes de traitement à plusieurs étapes
Chaînez les vues matérialisées : l’étape 1 agrège les événements, l’étape 2 agrège l’étape 1. Actualisez-les dans l’ordre.
Récapitulatif
Pré-agrégez lorsque les lectures représentent l’essentiel du coût.
- À la volée → le plus simple, toujours à jour
- Vue matérialisée → requête coûteuse, obsolescence acceptable
- Récapitulatif déclenché → toujours à jour, mais coûteux en écritures
- Choisissez selon votre profil de lectures et d’écritures
Vérification rapide
Vous disposez d’un tableau de bord en temps réel qui doit afficher les revenus des utilisateurs à la seconde près. Quelle stratégie convient le mieux ?
Questions Fréquemment Posées
La leçon « Quand précalculer les agrégats » est-elle gratuite ?
Oui — le texte complet de « Quand précalculer les agrégats » 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 « Quand précalculer les agrégats » ?
Choisissez entre l’agrégation en temps réel, les vues matérialisées et OLAP en aval, selon la fraîcheur des données et le coût. 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 4 sur 4.
Combien de temps prend la leçon « Quand précalculer les agrégats » ?
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
- Vues simples : réutilisation logique
- Vues modifiables et déclencheurs INSTEAD OF
- Vues matérialisées et stratégies de REFRESH
- Quand précalculer les agrégats