Aller au contenu
Apprendre.
  • M1 · toutes les matières15 matières : Préparation de données, API & sécurité, CI/CD, Docker, Merise, Dataviz, KNIME, ML appliqué : projet LoL, SQL & UML, SQL avancé, Machine Learning, Git, IA frugale & responsable, Qualité des données, MathématiquesAnnée
  • M2 · toutes les matières4 matières : Deep Learning, AI Act, Comex & Fundraising, Gouvernance & DataMeshAnnée
  • Deep LearningM2 · 4 modules · Réseaux de neurones, CNN, texte, modèles génératifs.Matière
  • Préparation de donnéesM1 · 3 modules · Nettoyer, transformer et fusionner des données avec Python.Matière
  • API & sécuritéM1 · 2 modules · Consommer, concevoir et sécuriser des API.Matière
  • CI/CDM1 · 1 module · Intégration et livraison continues.Matière
  • DockerM1 · 3 modules · Conteneurs, images, volumes, réseaux, Compose.Matière
  • MeriseM1 · 2 modules · Modéliser une base : MCD, MLD, MPD.Matière
  • DatavizM1 · 2 modules · Visualiser pour comprendre et décider.Matière
  • KNIMEM1 · 1 module · Explorer et nettoyer des données en workflow.Matière
  • ML appliqué : projet LoLM1 · 2 modules · Du besoin métier au POC de vision par ordinateur.Matière
  • SQL & UMLM1 · 3 modules · Modèles UML et requêtes SQL.Matière
  • SQL avancéM1 · 3 modules · Jointures, fenêtres, CTE, optimisation.Matière
  • Machine LearningM1 · 3 modules · Régression, classification, segmentation, projet.Matière

↑↓ naviguer↵ ouvre le résultat en surbrillanceesc fermer

Partie 4 · Fiabilité

Transactions et gestion d'erreur

Le système traite des insertions unitaires et des traitements en lot. Il faut donc prévoir des scénarios transactionnels réalistes :

  • définir au moins un scénario nécessitant un COMMIT / ROLLBACK ;
  • décrire un cas d'échec qui doit annuler tout le lot ;
  • préciser la journalisation attendue en cas de succès et d'erreur ;
  • expliquer l'intérêt métier d'une gestion transactionnelle correcte.

Critères d'évaluation : utilisation de BEGIN / COMMIT / ROLLBACK, cohérence des scénarios, gestion des erreurs.

BEGIN→N insertionstout OK→COMMITerreur→ROLLBACK

Un lot est tout ou rien

Exemple (exemple ajouté) : un lot de 3 annonces dont la 2e a un budget négatif. Sans transaction, la 1re annonce est déjà écrite et la 3e ne l'est pas : la base contient un lot à moitié traité. Avec transaction, l'échec annule tout le lot. L'intérêt métier : pas d'état incohérent, retraitement du lot possible, une panne ou une erreur de manipulation ne fait pas perdre ni corrompre les données.

Journalisation : un log métier/technique de succès (lot validé) et un log d'erreur (cause, lot concerné). Point d'attention : le log d'erreur doit être écrit après le ROLLBACK, sinon il serait annulé avec le reste (notion générale, hors cours).

À toi de coder

Un lot atomique : COMMIT ou ROLLBACK

Un traitement en lot doit être tout ou rien : si une annonce du lot est invalide, tout le lot est annulé. Le journal technique doit garder la trace de l'erreur : on l'écrit après le ROLLBACK, sinon l'écriture du log serait elle aussi annulée.

Complète traiter_lot : BEGIN au départ, COMMIT si tout passe, ROLLBACK en cas d'erreur (la table a une contrainte CHECK (budget >= 0)). La fonction renvoie True si le lot est validé.

Ctrl/⌘+Entrée

Vérifie que tu as compris

Dans un lot de 3 insertions dont la 2e échoue, que garantit une transaction avec ROLLBACK ?