Retour à la leçon
Mission

Mission : mettre à jour un champ de tracking sans tout réécrire

Construire une mise à jour JSONB ciblée avec jsonb_set et choisir la bonne stratégie d'index pour les requêtes du service de tracking.

Contexte

Le service de tracking stocke des événements dans une colonne payload (JSONB) de la table evenements, avec un champ imbriqué utilisateur.derniere_connexion. Un développeur a codé la mise à jour de ce champ en récupérant tout le document côté application, en modifiant le champ, puis en le renvoyant intégralement en SQL. Sous forte charge, deux mises à jour concurrentes sur le même événement se sont déjà écrasées l'une l'autre, perdant des données. Il faut aussi choisir un index adapté sachant que les requêtes filtrent presque toujours avec payload->>'type' = 'clic'.