Quelle est la relation entre ACID et la transaction de base de données?
ACID donne-t-il une transaction de base de données ou est-ce la même chose?
Quelqu'un pourrait-il éclairer ce sujet.
Quelle est la relation entre ACID et la transaction de base de données?
ACID donne-t-il une transaction de base de données ou est-ce la même chose?
Quelqu'un pourrait-il éclairer ce sujet.
Réponses:
ACID 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 associées qui est utilisé pour obtenir certaines des propriétés ACID. Les transactions sont des outils pour atteindre les propriétés ACID.
L'atomicité signifie que vous pouvez garantir que toute une transaction se produit, ou rien de tout cela; vous pouvez effectuer des opérations complexes comme une seule unité, tout ou rien, et une panne, une panne de courant, une erreur ou quoi que ce soit d'autre ne vous permettra pas d'être dans un état dans lequel seuls certains des changements associés se sont produits.
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.
L'isolement 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 verra le monde comme si elles s'exécutaient séquentiellement, et si l'une a besoin de lire des données écrites par une autre, elle devra attendre que l'autre soit terminée.
La durabilité signifie qu'une fois qu'une transaction est 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é achevée est également enregistré.
Ainsi, les transactions sont un mécanisme pour garantir ces propriétés; ils sont une manière de regrouper les actions associées de telle sorte que dans son ensemble, un groupe d'opérations puisse être atomique, produire des résultats cohérents, être isolé des autres opérations et être enregistré durablement.
ACID sont des propriétés souhaitables de tout moteur de traitement de transaction.
Un SGBD est (s'il est bon) un type particulier de moteur de traitement des transactions qui expose, généralement dans une très large mesure mais pas tout à fait entièrement, ces propriétés.
Mais il existe d'autres moteurs qui peuvent également exposer ces propriétés. Le type de logiciel qui était autrefois appelé "moniteurs TP" en est un bon exemple (l'équivalent actuel étant principalement des serveurs Web).
De tels moniteurs TP peuvent accéder à des ressources autres qu'un SGBD (par exemple une imprimante), tout en garantissant l'ACID envers leurs utilisateurs. À titre d'exemple de ce que peut signifier ACID 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 a été envoyé à l'imprimante
Transaction - document envoyé à l'imprimante
J'espère que cela aidera quelqu'un à comprendre le concept d'ACID
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 s'exécuter dans le cadre d'une transaction.
Sans définir explicitement les limites des transactions, la base de données va utiliser une transaction implicite qui entoure chaque instruction individuelle.
La transaction implicite commence avant l'exécution de l'instruction et se termine (validation ou annulation) après l'exécution de l'instruction. Le mode de transaction implicite est généralement appelé autocommit.
Comme expliqué dans cet article , une transaction est une collection d'opérations de lecture / écriture réussissant uniquement si toutes les opérations contenues réussissent.
Une transaction est intrinsèquement caractérisée par quatre propriétés (communément appelées ACID):
ACID donne-t-il une transaction de base de données ou est-ce la même chose?
Pour un système de base de données relationnelle, cela est vrai car le SQL Standard spécifie qu'une transaction doit fournir les garanties ACID:
L'atomicité prend des opérations individuelles et les transforme en une unité de travail tout ou rien, réussissant si et seulement si toutes les opérations contenues réussissent.
Une transaction peut encapsuler un changement d'état (sauf s'il s'agit d'une transaction 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 les 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 sont réussis et qu'aucune violation de contrainte n'est déclenchée.
Les transactions nécessitent des mécanismes de contrôle d'accès concurrentiel et garantissent l'exactitude même lorsqu'elles sont entrelacées. L'isolement nous apporte l'avantage de cacher les changements d'état non validés au monde extérieur, car les transactions échouées ne devraient jamais corrompre l'état du système. L'isolement est obtenu grâce au contrôle de la concurrence à l'aide de mécanismes de verrouillage pessimistes ou optimistes.
Une transaction réussie doit changer de façon permanente l'état d'un système et avant de le terminer, les changements d'état sont enregistrés dans un journal des transactions persistant. 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 la durabilité et le journal de rétablissement, consultez cet article .
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 j'aimerais tout de même commencer à partager des réponses à ce sujet car c'est un sujet très important du SGBDR.
Le système de base de données joue avec de nombreux types de transactions où toutes les transactions ont certaines caractéristiques. Cette caractéristique est connue des propriétés ACID. ACID Properties prend bénéficiaire pour toutes les transactions de base de données pour accomplir toutes les tâches.
Atomicité: soit commettre tout ou rien.
Cohérence: faites un enregistrement cohérent en termes de validation de toutes les règles et contraintes de transaction.
Isolation: assurez-vous que deux transactions ne sont pas conscientes l'une de l'autre.
Durabilité: des données validées stockées pour toujours. Référence tirée de cet article:
Pour citer Wikipedia :
ACID (atomicité, cohérence, isolation, durabilité) est un ensemble de propriétés qui garantissent que les transactions de base de données sont traitées de manière fiable.
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 open-source) fournissent un `` support '' ACID complet - bien qu'il soit souvent possible (par exemple, avec des niveaux d'isolement variables dans MSSQL) de diminuer l'ACIDité - 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 ACD auraient un ensemble de propriétés plus utile à discuter. Une interprétation d'Atomicity (que la transaction devrait être atomique comme vue de n'importe quel client à tout moment) impliquerait en fait la propriété d'isolation. La propriété "isolation" est utile lorsque la transaction n'est pas isolée; lorsque la propriété d'isolation est assouplie. En 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: "L'ACID n'a pas de sens".
http://blog.franslundberg.com/2013/12/acid-does-not-make-sense.html
[Gray] The Transaction Concept, Jim Gray, 1981. http://research.microsoft.com/en-us/um/people/gray/papers/theTransactionConcept.pdf
[Haerder] Principles of Transaction-Oriented Database Recovery, 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 une unité de traitement minimale. Chaque unité de traitement minimale ne peut pas être divisée davantage.
Toute transaction doit contenir quatre propriétés communément appelées propriétés ACID. c.-à-d. ACID sont le groupe de propriétés de toute transaction.