ACID est l’acronyme des quatre principales propriétés d’une base de données : atomicité, cohérence, isolation et durabilité. Elle est souvent associée à des bases de données relationnelles, mais une base de données NoSQL (non relationnelle) peut également suivre les règles ACID. Les transactions ACID sont courantes dans de nombreux moteurs de base de données populaires sur le marché, et elles garantissent que les actions de lecture et d’écriture n’interfèrent pas avec l’intégrité de vos données.
Qu’est-ce que l’ACID de base de données ?
Une base de données qui suit les bonnes pratiques ACID présente les caractéristiques suivantes :
- Atomicité : Évitez la perte de données, les enregistrements orphelins et les transactions partielles avec l’atomicité. Une base de données atomique fournit des transactions « tout ou rien » afin que vous ne perdiez pas de données si une partie d’une transaction échoue à mi-chemin.
- Cohérence : Dans les bases de données ACID, les contraintes de table exigent que toutes les transactions stockent les données dans un format cohérent.
- Isolement : Une base de données ACID garantit que les transactions ne renvoient pas de lectures ou d’écritures sales en isolant les données et en effectuant des transactions une par une.
- Durabilité : Une panne du système (p. ex., une panne de courant) peut interférer avec les transactions, de sorte qu’une base de données ACID garantit que le basculement empêche la perte de données en cas d’événement critique.
Atomicité
Les transactions de bases de données modernes comportent plusieurs étapes pour finaliser un enregistrement. Par exemple, un client peut créer une commande, de sorte qu’une procédure stockée utilise une instruction INSERT pour ajouter un enregistrement aux tables orders et products_ordered. Si l’ajout d’un enregistrement à la table de commande échoue, vous ne souhaitez pas ajouter d’enregistrement à la table products_ordered. Cela créerait un dossier orphelin.
Avec l’atomicité, la base de données annule toutes les transactions en cas de défaillance, afin que les données restent cohérentes et évitent la corruption. Les données sont stockées uniquement lorsque toutes les étapes d’une transaction sont terminées avec succès. L’atomicité évite la corruption des données, la perte de données et les enregistrements orphelins.
Cohérence
Les bases de données relationnelles ont des contraintes qui ne permettent de stocker que des types de données spécifiques. Les bases de données NoSQL stockent les données avec leur propre format défini. Par exemple, si vous spécifiez que seul un nombre décimal peut être stocké dans une colonne de total de commande, alors tenter de stocker une chaîne entraînera une défaillance. La cohérence des données apporte aux développeurs une valeur connue lorsqu’ils travaillent avec un ensemble de données.
La cohérence dans une base de données signifie que les données peuvent être prédites, ce qui signifie que vous savez que si vous extrayez des données pour un enregistrement particulier, vous obtiendrez un résultat attendu. Dans l’exemple du tableau de commande, vous savez que vous recevrez une valeur décimale pour toute requête récupérant une valeur de la colonne du total de la commande.
Isolement
Les lectures et les écritures sales se produisent lorsqu’un utilisateur exécute une requête au moment précis où la base de données apporte également des modifications à une valeur. Par exemple, si vous souhaitez connaître le total de toutes les commandes du mois, vous risquez d’obtenir un résultat incorrect si vous lisez les données au moment de la mise à jour du total de la commande. Il en va de même pour les actions d’écriture si les données sont lues avant qu’une instruction de mise à jour précédente ne puisse être exécutée.
Des lectures et des écritures sales peuvent corrompre vos données et détruire leur intégrité. Les transactions isolées exécutent des relevés un par un, de sorte que les données restent cohérentes et non corrompues, même avec des millions de transactions quotidiennes. Les transactions isolées peuvent verrouiller les enregistrements, apporter des modifications, puis publier des enregistrements pour la transaction suivante.
Durabilité
Les bases de données structurées et non structurées doivent stocker les données de manière cohérente et permanente une fois la transaction terminée, même en cas de défaillance du système. Les journaux de transactions et les défaillances de l’infrastructure doivent également être mis en œuvre, mais la base de données elle-même doit être capable de stocker les données de manière cohérente et sans provoquer de corruption des données. Les moteurs de bases de données ont leurs propres stratégies et techniques de basculement, mais les administrateurs doivent pouvoir s’appuyer sur eux pour récupérer les données.
Par exemple, une panne de courant peut interrompre une transaction à mi-chemin. Que l’administrateur doive restaurer les transactions ou les données, la base de données doit être capable de gérer la défaillance. Pour la plupart des administrateurs, le basculement est également géré par des sauvegardes et une redondance. L’ACID peut contribuer à la stratégie de reprise après sinistre d’une organisation.
Conclusion
Les bases de données stratégiques ont besoin de propriétés ACID pour prendre en charge les applications d’entreprise. Les propriétés ACID sont essentielles à l’intégrité des données et garantissent que vos données peuvent être récupérées et utilisées par autant d’applications que vous le souhaitez. Les administrateurs doivent toujours effectuer des sauvegardes et s’assurer que le serveur de base de données fonctionne correctement, mais il est essentiel de disposer de propriétés ACID pour assurer la continuité des opérations.