Propiedades ACID y gestión de transacciones en bases de datos
Enviado por Programa Chuletas y clasificado en Informática y Telecomunicaciones
Escrito el en
español con un tamaño de 4,49 KB
Integridad de datos y transacciones
Integridad de datos: se refiere a la corrección y completitud de los datos en una base de datos. Cuando los contenidos se modifican con sentencias INSERT, DELETE o UPDATE, la integridad de los datos almacenados puede perderse de muchas maneras diferentes.
Transacción: es una unidad de ejecución que accede y posiblemente actualiza varios elementos de datos. Una transacción se inicia por la ejecución de un programa de usuario escrito en un lenguaje de manipulación de datos de alto nivel o de programación y está delimitada por las instrucciones BEGIN y END TRANSACTION.
Propiedades ACID
Propiedades ACID:
- Atomicidad: O todas las operaciones de la transacción se realizan adecuadamente en la base de datos o ninguna de ellas.
- Consistencia: La ejecución aislada de la transacción (es decir, sin otra transacción que se ejecute concurrentemente) conserva la consistencia de la base de datos.
- Aislamiento: Aunque se ejecuten varias transacciones concurrentemente, el sistema garantiza que, para cada transacción, se ignoran las interferencias del resto de las transacciones del sistema.
- Durabilidad: Tras la finalización con éxito de una transacción, los cambios realizados en la base de datos permanecen, incluso si hay fallos en el sistema.
Ejemplo
Ejemplo: Para comprender mejor las propiedades, considérese un sistema bancario simplificado con un conjunto de transacciones que acceden y actualizan dichas cuentas.
- Leer(X): transfiere el dato X de la base de datos a la memoria intermedia.
- Escribir(X): transfiere el dato X desde la memoria intermedia a la base de datos.
Sea Ti una transacción para transferir $50 de la cuenta A a la cuenta B.
Estado inconsistente
Estado inconsistente: cuando la base de datos deja de reflejar el estado real del mundo que modela.
Responsables de las propiedades ACID
Responsables de ACID:
- Consistencia: Responsable de asegurar la consistencia de una transacción → Programador.
- Atomicidad: Responsable de asegurar la atomicidad de una transacción → SGBD con su componente de gestión de transacciones.
- Durabilidad: Responsable de asegurar la durabilidad de una transacción → SGBD con su componente de gestión de recuperaciones.
- Aislamiento: Responsable de asegurar el aislamiento de una transacción → SGBD con su componente de control de concurrencia.
Estados de una transacción
Estados de una transacción: Los distintos estados que puede adoptar una transacción son:
- Activa: es el estado inicial; la transacción permanece en este estado durante su ejecución.
- Parcialmente comprometida: estado tras ejecutarse la última instrucción pero antes de que todos los cambios sean duraderos.
- Fallida: tras descubrir que no puede continuar la ejecución normal.
- Abortada: cuando la transacción no termina con éxito; en ese caso pasa al estado abortado. Una transacción abortada no debe tener efecto sobre la base de datos.
- Comprometida: una transacción que terminó con éxito se dice que está comprometida (commit). Una transacción se considera terminada si se ha comprometido o se ha abortado.
Opciones cuando una transacción está abortada
Cuando está en estado abortado, tenemos dos opciones:
- Reiniciar: reiniciar la transacción, pero solo si la transacción se ha abortado a causa de algún fallo de hardware o software y no por la lógica interna de la transacción.
- Cancelar la transacción: hacer esto si hay algún error lógico interno que no es corregible automáticamente.
Una vez deshechos los cambios efectuados por una transacción abortada se dice que esta ha sido retrocedida (rollback).