Quelle est la relation entre ACID et la transaction de base de données?
Est-ce que ACID donne une transaction de base de données ou est-ce la même chose?
Quelqu'un pourrait-il éclairer ce sujet?.
ACIDE est un ensemble de propriétés que vous souhaitez appliquer lors de la modification d'une base de données.
Une transaction est un ensemble de modifications connexes utilisées pour obtenir certaines des propriétés ACID. Les transactions sont des outils pour atteindre les propriétés ACID.
Atomicité signifie que vous pouvez garantir que toutes les transactions ont lieu ou ne se produisent jamais. vous pouvez effectuer des opérations complexes comme une seule unité, tout ou rien, et un crash, une panne de courant, une erreur ou toute autre chose ne vous permettra pas de rester dans un état dans lequel seuls quelques-uns des changements associés ont eu lieu.
La cohérence signifie que vous garantissez que vos données seront cohérentes; Aucune des contraintes que vous avez sur les données associées ne sera jamais violée.
Isolation signifie qu'une transaction ne peut pas lire les données d'une autre transaction qui n'est pas encore terminée. Si deux transactions s'exécutent simultanément, chacune d'elles verra le monde comme si elles s'exécutaient de manière séquentielle, et si l'une doit lire des données écrites par une autre, elle devra attendre que l'autre soit terminée.
La durabilité signifie qu'une fois la transaction terminée, il est garanti que toutes les modifications ont été enregistrées sur un support durable (tel qu'un disque dur) et le fait que la transaction a été complétée est également enregistré.
Les transactions sont donc un mécanisme permettant de garantir ces propriétés; elles constituent un moyen de regrouper des actions connexes de manière à ce qu’ensemble, un groupe d’opérations puisse être atomique, produire des résultats cohérents, être isolé des autres opérations et être enregistré de manière durable.
Les ACID sont des propriétés souhaitables de tout moteur de traitement de transaction.
Un SGBD est (s’il s’agit d’un bien) un type particulier de moteur de traitement des transactions qui expose, généralement dans une très large mesure mais pas tout à fait, ces propriétés.
Mais il existe d’autres moteurs pouvant également exposer ces propriétés. Le type de logiciel qui s’appelait jadis "moniteur TP" en est un exemple typique (l’équivalent actuel étant essentiellement des serveurs Web).
Ces moniteurs TP peuvent accéder à des ressources autres qu’un SGBD (une imprimante, par exemple) tout en garantissant un ACID à leurs utilisateurs. Voici un exemple de ce que ACID pourrait signifier lorsqu'une imprimante est impliquée dans une transaction:
J'ai légèrement modifié l'exemple d'imprimante pour le rendre plus explicable
1 document contenant 2 pages de contenu a été envoyé à l'imprimante
Transaction - document envoyé à l'imprimante
J'espère que cela aidera quelqu'un à comprendre le concept d'ACID
Les propriétés ACID sont un concept très ancien et important de la théorie des bases de données. Je sais que vous pouvez trouver de nombreux articles sur ce sujet, mais je voudrais tout de même commencer à donner une réponse partagée à ce sujet, car il s'agit d'un sujet très important concernant le SGBDR.
Le système de base de données joue avec beaucoup de types différents de transactions où chaque transaction a certaines caractéristiques. Cette caractéristique est connue sous le nom Propriétés ACID. Les propriétés ACID acceptent toutes les transactions de base de données pour accomplir toutes les tâches.
Atomicité: soit commettre tout ou rien.
Cohérence: Créez un enregistrement cohérent en termes de validation de toutes les règles et contraintes de la transaction.
Isolement: Assurez-vous que deux transactions ne se connaissent pas.
Durabilité: données engagées stockées pour toujours. Référence tirée de cet article:
Quelle est la relation entre ACID et la transaction de base de données?
Dans une base de données relationnelle, chaque instruction SQL doit être exécutée dans le cadre d'une transaction.
Sans définir explicitement les limites des transactions, la base de données utilisera une transaction implicite qui enveloppe chaque instruction.
La transaction implicite commence avant l'exécution de l'instruction et se termine (validation ou annulation) après son exécution. Le mode de transaction implicite est communément appelé autocommit.
Comme expliqué dans cet article , une transaction est un ensemble d'opérations de lecture/écriture ne réussissant que si toutes les opérations contenues aboutissent.
De manière inhérente, une transaction est caractérisée par quatre propriétés (communément appelées ACID):
Est-ce que ACID donne une transaction de base de données ou est-ce la même chose?
Ceci est vrai pour un système de base de données relationnelle car SQL Standard spécifie qu'une transaction doit fournir les garanties ACID suivantes:
Atomicity prend des opérations individuelles et les transforme en une unité de travail tout ou rien, ne réussissant que si et seulement si toutes les opérations contenues aboutissent.
Une transaction peut encapsuler un changement d'état (sauf s'il s'agit d'un changement en lecture seule). Une transaction doit toujours laisser le système dans un état cohérent, quel que soit le nombre de transactions simultanées entrelacées à un moment donné.
La cohérence signifie que des contraintes sont appliquées pour chaque transaction validée. Cela implique que toutes les clés, types de données, vérifications et déclencheurs réussissent et qu'aucune violation de contrainte n'est déclenchée.
Les transactions nécessitent des mécanismes de contrôle de la simultanéité et garantissent leur exactitude même lors de l’entrelacement. L’isolement nous procure l’avantage de cacher les changements d’état non engagés du monde extérieur, car les transactions en échec ne devraient jamais corrompre l’état du système. L'isolement est obtenu par le contrôle de la concurrence utilisant des mécanismes de verrouillage pessimistes ou optimistes.
Une transaction réussie doit modifier en permanence l'état d'un système et, avant de le terminer, les changements d'état sont enregistrés dans un journal de transactions conservé. Si notre système est soudainement affecté par une panne système ou une panne de courant, toutes les transactions validées non terminées peuvent être rejouées.
Pour plus de détails sur Durability et le Redo Log, consultez cet article .
Pour citer Wikipedia :
ACID (atomicité, cohérence, isolation, durabilité) est un ensemble de propriétés garantissant le traitement fiable des transactions de base de données.
Un SGBD prenant en charge les transactions s'efforcera de prendre en charge toutes ces propriétés - tout SGBD commercial (ainsi que plusieurs SGBD à code source ouvert) fournit une "prise en charge" ACID complète - bien qu'il soit souvent possible (par exemple, avec des niveaux d'isolation variables dans MSSQL) réduire le ACIDness - perdant ainsi la garantie d'un comportement entièrement transactionnel.
[Gray] a introduit les propriétés ACD pour une transaction en 1981. En 1983, [Haerder] a ajouté la propriété Isolation. À mon avis, les propriétés de l'ACD auraient un ensemble de propriétés plus utile à discuter. Une interprétation d'Atomicity (que la transaction devrait être atomique telle que vue par un client à tout moment) impliquerait en réalité la propriété d'isolation. La propriété "isolation" est utile lorsque la transaction est non isolée; lorsque la propriété d'isolement est relâchée. En langage ANSI SQL, parlez: si le niveau d’isolement est plus faible, SERIALIZABLE. Mais lorsque le niveau d'isolement est SERIALIZABLE, la propriété d'isolation n'est pas vraiment intéressante.
J'ai écrit plus à ce sujet dans un article de blog: "ACID n'a pas de sens".
http://blog.franslundberg.com/2013/12/acid-does-not-make-sense.html
[Gray] Le concept de transaction, Jim Gray, 1981. http://research.Microsoft.com/en-us/um/people/gray/papers/theTransactionConcept.pdf
[Haerder] Principes de la récupération de base de données axée sur les transactions, Haerder et Reuter, 1983. http://www.stanford.edu/class/cs340v/papers/recovery.pdf
La transaction peut être définie comme un ensemble de tâches considérées comme unité de traitement minimale. Chaque unité de traitement minimale ne peut pas être divisée davantage.
Toutes les transactions doivent contenir quatre propriétés communément appelées propriétés ACID. i.e ACID sont le groupe de propriétés de toute transaction.