¿Cuál es la relación entre ACID y la transacción de la base de datos?
¿ACID da transacción de base de datos o es lo mismo?
¿Podría alguien aclarar este tema?
fuente
¿Cuál es la relación entre ACID y la transacción de la base de datos?
¿ACID da transacción de base de datos o es lo mismo?
¿Podría alguien aclarar este tema?
ACID es un conjunto de propiedades que le gustaría aplicar al modificar una base de datos.
Una transacción es un conjunto de cambios relacionados que se utiliza para lograr algunas de las propiedades de ACID. Las transacciones son herramientas para lograr las propiedades ACID.
Atomicidad significa que puede garantizar que todas las transacciones sucedan, o ninguna de ellas sucede; puede realizar operaciones complejas como una sola unidad, todo o nada, y un bloqueo, falla de energía, error o cualquier otra cosa no le permitirá estar en un estado en el que solo se hayan producido algunos de los cambios relacionados.
La coherencia significa que usted garantiza que sus datos serán consistentes; Ninguna de las restricciones que tiene sobre los datos relacionados será violada.
El aislamiento significa que una transacción no puede leer datos de otra transacción que aún no se ha completado. Si dos transacciones se ejecutan simultáneamente, cada una verá el mundo como si se ejecutara secuencialmente, y si una necesita leer datos escritos por otra, tendrá que esperar hasta que la otra termine.
La durabilidad significa que una vez que se completa una transacción, se garantiza que todos los cambios se hayan registrado en un medio duradero (como un disco duro), y el hecho de que la transacción se haya completado también se registra.
Entonces, las transacciones son un mecanismo para garantizar estas propiedades; son una forma de agrupar acciones relacionadas de manera tal que, en conjunto, un grupo de operaciones puede ser atómico, producir resultados consistentes, aislarse de otras operaciones y registrarse de forma duradera.
ACID son propiedades deseables de cualquier motor de procesamiento de transacciones.
Un DBMS es (si es bueno) un tipo particular de motor de procesamiento de transacciones que expone, generalmente en gran medida, pero no del todo, esas propiedades.
Pero existen otros motores que también pueden exponer esas propiedades. El tipo de software que solía llamarse "monitores TP" es un ejemplo (hoy en día el equivalente es principalmente servidores web).
Dichos monitores TP pueden acceder a recursos que no sean un DBMS (por ejemplo, una impresora), y aún así garantizan ACID a sus usuarios. Como ejemplo de lo que podría significar ACID cuando una impresora está involucrada en una transacción:
fuente
Modifiqué ligeramente el ejemplo de la impresora para hacerlo más explicable
1 documento que tenía 2 páginas de contenido fue enviado a la impresora
Transacción : documento enviado a la impresora
Espero que esto ayude a alguien a entender el concepto de ACID
fuente
En una base de datos relacional, cada instrucción SQL debe ejecutarse en el ámbito de una transacción.
Sin definir los límites de la transacción explícitamente, la base de datos utilizará una transacción implícita que se ajusta a cada declaración individual.
La transacción implícita comienza antes de que se ejecute la declaración y finaliza (confirmación o reversión) después de que se ejecuta la declaración. El modo de transacción implícita se conoce comúnmente como confirmación automática.
Como se explica en este artículo , una transacción es una colección de operaciones de lectura / escritura que tienen éxito solo si todas las operaciones contenidas tienen éxito.
Inherentemente, una transacción se caracteriza por cuatro propiedades (comúnmente conocidas como ACID):
Para un sistema de base de datos relacional, esto es cierto porque el Estándar SQL especifica que una transacción debe proporcionar las garantías ACID:
Atomicidad
Atomicity toma operaciones individuales y las convierte en una unidad de trabajo de todo o nada, teniendo éxito si y solo si todas las operaciones contenidas tienen éxito.
Una transacción puede encapsular un cambio de estado (a menos que sea de solo lectura). Una transacción siempre debe dejar el sistema en un estado coherente, sin importar cuántas transacciones concurrentes se intercalen en un momento dado.
Consistencia
La coherencia significa que se aplican restricciones para cada transacción comprometida. Eso implica que todas las claves, tipos de datos, comprobaciones y disparadores son exitosos y no se activa ninguna violación de restricción.
Aislamiento
Las transacciones requieren mecanismos de control de concurrencia y garantizan la corrección incluso cuando se intercalan. El aislamiento nos brinda el beneficio de ocultar los cambios de estado no comprometidos del mundo exterior, ya que las transacciones fallidas nunca deberían corromper el estado del sistema. El aislamiento se logra mediante el control de concurrencia utilizando mecanismos de bloqueo pesimistas u optimistas.
Durabilidad
Una transacción exitosa debe cambiar permanentemente el estado de un sistema y, antes de finalizarlo, los cambios de estado se registran en un registro de transacciones persistentes. Si nuestro sistema se ve afectado repentinamente por un bloqueo del sistema o un corte de energía, entonces todas las transacciones confirmadas no finalizadas se pueden volver a reproducir.
Para obtener más detalles sobre la durabilidad y el registro de rehacer, consulte este artículo .
fuente
Las propiedades de ACID son conceptos muy antiguos e importantes de la teoría de bases de datos. Sé que puedes encontrar muchas publicaciones sobre este tema, pero aún así me gustaría comenzar a compartir respuestas sobre esto porque este es un tema muy importante de RDBMS.
El Sistema de base de datos juega con muchos tipos diferentes de transacciones donde todas las transacciones tienen ciertas características. Esta característica se conoce con propiedades ACID. Las propiedades de ACID se benefician de todas las transacciones de la base de datos para realizar todas las tareas.
Atomicidad: cometer todo o nada.
Consistencia: haga un registro consistente en términos de validar todas las reglas y restricciones de la transacción.
Aislamiento: asegúrese de que dos transacciones no sean conscientes entre sí.
Durabilidad: datos comprometidos almacenados para siempre. Referencia tomada de este artículo:
fuente
Para citar Wikipedia :
Un DBMS que admita transacciones se esforzará por admitir todas estas propiedades: cualquier DBMS comercial (así como varios DBMS de código abierto) brindan 'soporte' completo de ACID, aunque a menudo es posible (por ejemplo, con niveles de aislamiento variables en MSSQL) para disminuir la ACIDness, perdiendo así la garantía de un comportamiento completamente transaccional.
fuente
[Gray] introdujo las propiedades ACD para una transacción en 1981. En 1983 [Haerder] agregó la propiedad Isolation. En mi opinión, las propiedades de ACD tendrían un conjunto de propiedades más útil para discutir. Una interpretación de Atomicity (que la transacción debe ser atómica como se ve desde cualquier cliente en cualquier momento) implicaría la propiedad de aislamiento. La propiedad "aislamiento" es útil cuando la transacción no está aislada; cuando la propiedad de aislamiento es relajada. En ANSI SQL hablar: si el nivel de aislamiento es más débil, SERIALIZABLE. Pero cuando el nivel de aislamiento es SERIALIZABLE, la propiedad de aislamiento no es realmente de interés.
He escrito más sobre esto en una publicación de blog: "ACID no tiene sentido".
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] Principios de recuperación de bases de datos orientados a transacciones, Haerder y Reuter, 1983. http://www.stanford.edu/class/cs340v/papers/recovery.pdf
fuente
La transacción se puede definir como una colección de tareas que se consideran como unidad mínima de procesamiento. Cada unidad de procesamiento mínima no se puede dividir más.
Todas las transacciones deben contener cuatro propiedades que comúnmente se conocen como propiedades ACID. es decir, ACID son el grupo de propiedades de cualquier transacción.
fuente