Précédent Index

3   Concurrence (6 points)

Un programme de réservation de billets de spectacle a la forme simplifiée présentée ci-dessous. Il permet à un client dont on connait le compte bancaire de réserver un nombre de billets désiré. Les identifiants compte et billets sont des enregistrements de la base de données, qui contiennent respectivement le solde du compte bancaire du client et le nombre de billets disponibles.

Réservation (nombre_billets, compte)
  disponible := Read (billets)
  Write (billets, disponible - nombre_billets)
  solde := Read (compte)
  Write (compte, solde - prix * nombre_billets)
fin Réservation

  1. (1,5 pt) Si deux clients différents veulent réserver des billets en même temps, trouvez un entrelacement des opérations des deux transactions qui produise un résultat erroné et justifiez-le par un exemple numérique.

  2. (0,5 pt) Laquelle des trois histoires suivantes est une exécution concurrente de deux réservations de billets par des clients différents? Justifiez votre réponse.
    H: r1[x] w1[x] r2[x] r1[y] w2[x] r2[z] w1[y] c1 w2[z] c2
    H': r1[x] w1[x] r2[x] r1[y] w2[x] r2[y] w1[y] c1 w2[y] c2
    H'': r1[x] r2[x] r1[y] w2[x] w1[x] w2[z] r2[z] w1[y] c1 c2

  3. (2 pt) Montrez que H est sérialisable. Montrez que même si H est déjà sérialisable, le verrouillage à deux phases modifie l'ordre des opérations. Donnez le résultat du verrouillage à deux phases appliqué à H. On considère que le relâchement des verrous d'une transaction se fait au Commit et qu'à ce moment on exécute en priorité les opérations bloquées en attente de verrou.

  4. (1 pt) H est-elle recouvrable? Evite-t-elle les annulations en cascade? Est-elle stricte?

  5. (1 pt) Considerons que H s'exécute telle quelle (sans réordonnancement) et qu'au début il y a 100 billets disponibles. Si chaque client réserve 2 billets et si une panne intervient juste après w2[z], combien de billets seront disponibles après la reprise, c'est-à-dire après que le système ait remis la base de données dans un état cohérent?

Précédent Index