Gestion des transactions dans un SGBD : que sont les propriétés ACID ?

Qu'est-ce qu'une transaction de base de données ?

A Transaction de base de données est une unité logique de traitement dans un SGBD qui implique une ou plusieurs opérations d'accès à la base de données. En un mot, les transactions de bases de données représentent les événements du monde réel de toute entreprise.

Tous les types d'opérations d'accès à la base de données détenus entre les instructions de début et de fin de transaction sont considérés comme une seule transaction logique dans le SGBD. Pendant la transaction, la base de données est incohérente. Ce n'est qu'une fois la base de données validée que l'état passe d'un état cohérent à un autre.

Transaction de base de données
Transaction de base de données

Faits sur les transactions de base de données

  • Une transaction est une unité de programme dont l'exécution peut ou non modifier le contenu d'une base de données.
  • Le concept de transaction dans le SGBD est exécuté comme une seule unité.
  • Si les opérations de base de données ne mettent pas à jour la base de données mais récupèrent uniquement des données, ce type de transaction est appelé transaction en lecture seule.
  • Une transaction réussie peut faire passer la base de données d'un ÉTAT CONSISTANT à un autre
  • Les transactions SGBD doivent être atomiques, cohérentes, isolées et durables
  • Si la base de données était dans un état incohérent avant une transaction, elle le resterait après la transaction.

Pourquoi avez-vous besoin de concurrence dans les transactions ?

Une base de données est une ressource partagée accessible. Il est utilisé simultanément par de nombreux utilisateurs et processus. Par exemple, le système bancaire, les systèmes de réservation ferroviaire et aérienne, la surveillance des marchés boursiers, les stocks et les caisses des supermarchés, etc.

Ne pas gérer les accès simultanés peut créer des problèmes tels que :

  • Panne matérielle et pannes du système
  • Exécution simultanée de la même transaction, impasse, ou des performances lentes

États des transactions

Les différents états d'un concept de transaction dans un SGBD sont répertoriés ci-dessous :

État Types de transactions
État actif Une transaction entre dans un état actif lorsque le processus d'exécution commence. Pendant cet état, des opérations de lecture ou d'écriture peuvent être effectuées.
Partiellement engagé Une transaction passe à l’état partiellement validé après la fin d’une transaction.
Etat engagé Lorsque la transaction est validée, son exécution est déjà terminée avec succès. De plus, toutes ses modifications sont enregistrées de manière permanente dans la base de données.
État défaillant Une transaction est considérée comme ayant échoué lorsque l'une des vérifications échoue ou si la transaction est abandonnée alors qu'elle est à l'état actif.
État terminé L'état de la transaction atteint l'état terminé lorsque certaines transactions qui quittent le système ne peuvent pas être redémarrées.
Diagramme de transition d'état
Diagramme de transition d'état pour une transaction de base de données

Étudions un diagramme de transition d'état qui met en évidence la façon dont une transaction se déplace entre ces différents états.

  1. Une fois qu’une transaction déclare son exécution, elle devient active. Il peut émettre une opération READ ou WRITE.
  2. Une fois les opérations READ et WRITE terminées, les transactions deviennent partiellement validées.
  3. Ensuite, certains protocoles de récupération doivent garantir qu'une défaillance du système n'entraînera pas une incapacité à enregistrer de manière permanente les modifications apportées à la transaction. Si cette vérification réussit, la transaction est validée et entre dans l'état validé.
  4. Si la vérification échoue, la transaction passe à l’état Échec.
  5. Si la transaction est abandonnée alors qu’elle est à l’état actif, elle passe à l’état d’échec. La transaction doit être annulée pour annuler l'effet de ses opérations d'écriture sur la base de données.
  6. L'état terminé fait référence à la transaction qui quitte le système.

Que sont les propriétés ACIDE ?

Propriétés ACIDES sont utilisés pour maintenir l’intégrité de la base de données pendant le traitement des transactions. ACID dans le SGBD signifie Atomicité, Cconstance, Ile réconfort, et Durabilité.

  • Atomicité : Une transaction est une unité d’opération unique. Soit vous l’exécutez entièrement, soit vous ne l’exécutez pas du tout. Il ne peut y avoir d’exécution partielle.
  • Cohérence: Une fois la transaction exécutée, elle doit passer d’un état cohérent à un autre.
  • Isolement: La transaction doit être exécutée indépendamment des autres transactions (pas de verrous). Lors de l'exécution simultanée d'une transaction, les résultats intermédiaires des transactions exécutées simultanément ne doivent pas être mis à la disposition des autres. (Niveau 0,1,2,3)
  • Durabilité:· Une fois une transaction réussie, les modifications apportées à la base de données doivent persister. Même en cas de panne du système.

Propriété ACID dans le SGBD avec exemple

Vous trouverez ci-dessous un exemple de propriété ACID dans un SGBD :

Transaction 1: Begin X=X+50, Y = Y-50 END
Transaction 2: Begin X=1.1*X, Y=1.1*Y END

La transaction 1 transfère 50 $ du compte X vers le compte Y.

La transaction 2 crédite chaque compte d'un paiement d'intérêt de 10 %.

Si les deux transactions sont soumises ensemble, rien ne garantit que la transaction 1 sera exécutée avant la transaction 2 ou vice versa. Quel que soit l'ordre, le résultat doit être comme si les transactions s'effectuaient en série les unes après les autres.

Types d'opérations

Basé sur les domaines d'application

  • Non distribué vs distribué
  • Opérations compensatoires
  • Calendrier des transactions
  • En ligne ou par lots

Basé sur les actions

  • Deux étapes
  • Limité
  • Modèle d'action

Basé sur la structure

  • Transactions plates ou simples : elles consistent en une séquence d'opérations primitives exécutées entre une opération de début et une opération de fin.
  • Transactions imbriquées : une transaction qui contient d'autres transactions.
  • Workflow

Qu'est-ce qu'un horaire ?

Une planification est un processus créant un groupe unique de plusieurs transactions parallèles et les exécutant une par une. Il doit conserver l'ordre dans lequel les instructions apparaissent dans chaque transaction. Si deux transactions sont exécutées en même temps, le résultat d’une transaction peut affecter le résultat de l’autre.

Exemple

Initial Product Quantity is 10
Transaction 1: Update Product Quantity to 50
Transaction 2: Read Product Quantity

Si la transaction 2 est exécutée avant la transaction 1, des informations obsolètes sur la quantité de produit seront lues. Des horaires sont donc nécessaires.

L'exécution parallèle dans une base de données est inévitable. Mais l'exécution parallèle est autorisée lorsqu'il existe une relation d'équivalence entre les transactions exécutées simultanément. Cette équivalence est de 3 Types.

ÉQUIVALENCE DES RÉSULTATS :

Si deux plannings affichent le même résultat après exécution, on parle de planning équivalent à résultat. Ils peuvent offrir le même résultat pour certaines valeurs et des résultats différents pour un autre ensemble de valeurs. Par exemple, une transaction met à jour la quantité du produit, tandis qu'une autre met à jour les détails du client.

Voir l'équivalence

L'équivalence de vue se produit lorsque la transaction dans les deux calendriers effectue une action similaire. Par exemple, une transaction insère les détails du produit dans la table des produits, tandis qu'une autre transaction insère les détails du produit dans la table d'archive. La transaction est la même, mais les tables sont différentes.

Équivalence CONFLIT

Dans ce cas, deux transactions mettent à jour/affichent le même ensemble de données. Il existe un conflit entre les transactions car l'ordre d'exécution affectera le résultat.

Qu’est-ce que la sérialisabilité ?

La sérialisabilité est le processus de recherche d'un planning concurrent dont la sortie est égale à un planning série où les transactions sont exécutées les unes après les autres. Selon le type de plannings, il existe deux types de sérialisabilité :

  • Conflit
  • Découvrir

Résumé

  • La gestion des transactions est une unité logique de traitement dans un SGBD qui implique une ou plusieurs opérations d'accès à la base de données.
  • C'est une transaction, c'est une unité de programme dont l'exécution peut ou non modifier le contenu d'une base de données.
  • Ne pas gérer les accès simultanés peut créer des problèmes tels qu'une panne matérielle et des pannes du système.
  • Actif, Partiellement Engagé, Engagé, Échec et Terminé sont des états de transaction importants.
  • La forme complète des propriétés ACID dans SGBD is Atomicité, cohérence, isolement et durabilité
  • Trois types de transactions SGBD sont basées sur les domaines d'application, l'action et la structure.
  • Une planification est un processus créant un groupe unique de plusieurs transactions parallèles et les exécutant une par une.
  • La sérialisabilité est le processus de recherche d'un planning concurrent dont le résultat est égal à un planning série où les transactions sont exécutées les unes après les autres.