BDAV2

Page complémentaire de l'EC bases de données avancées 2 en L3 UNC édition 2022

Gare au vérrou

Q1 - Démonstration de deadlocks

  • Démonstration du cas de verrou
  • Donner le message d’erreur et la documentation de PostgreSQL

Réponse Q1

Création de monnaie par race condition entre transferts

Q2 - Attaque par race condition

  • Montrer qu’il est possible de créer 1000€

Réponse Q2

Q3 - Solution par augmentation du niveau d’isolation

  • Montrer que ce problème disparait avec le niveau d’isolation REPEATABLE READ

Réponse Q3

Q4 - Solution par verrou explicite

  • Montrer que ce problème disparait avec le niveau d’isolation FOR UPDATE
  • Expliquer sur quels tuples portent les vérrous et READ COMMITTED et en SELECT ...FOR UPDATE

Réponse Q4

Création de monnaie par race condition entre vérification et exécution

Q5 - Attaque ACIDRain manuelle

  • Montrer qu’il est possible pour alice d’avoir un solde négatif

Réponse Q5

Q6 - Transactions concurrentes automatisées

  • Montrer qu’il est possible pour alice d’avoir un solde négatif de 1000*(n-1) en lancant n transaction concurrentes (renvoyer vers l’annexe pour le code)
  • Expliquez la correction apportée pour gérer les exception

Réponse Q6

Nécessité du niveau SERIALIZABLE

Q7 - Démonstration

  • Fonctionnement de la procédure smooth(v_total integer, v_name text)
  • Montrer qu’on peut atteindre un état incohérent avec 2 tâches asynchrones, aux niveaux read_committed mais aussi repeatable_read.
  • Justification de l’impossibilité de l’action sur un même compte
  • Vérification du niveau SERIALIZABLE

Réponses Q7

Annexes