Una transacción es un
conjunto de órdenes que se ejecutan formando una unidad de trabajo, es decir,
en forma indivisible o atómica.
Slide 3
Se dice transaccional, si la base de datos es capaz de mantener la integridad de los datos, haciendo que estas
transacciones no puedan finalizar en un estado intermedio.
Slide 4
Una transacción debe contar con ACID que
quiere decir Atomicidad, Consistencia, Aislamiento y Durabilidad, por sus
silabas en ingles.
Slide 5
Una transacción
debe ser una unidad atómica de trabajo, tanto si se realizan todas sus
modificaciones en los datos, como si no se realiza ninguna de ellas.
Atomicidad
Slide 6
Cuando finaliza,
una transacción debe dejar todos los datos en un estado coherente. En una base
de datos relacional, se deben aplicar todas las reglas a las modificaciones de
la transacción para mantener la integridad de todos los datos. Todas las
estructuras internas de datos, como índices de árbol b o listas doblemente
vinculadas, deben estar correctas al final de la transacción.
Coherencia
Slide 7
Las modificaciones
realizadas por transacciones simultáneas se deben aislar de las modificaciones
llevadas a cabo por otras transacciones simultáneas. Una transacción reconoce
los datos en el estado en que estaban antes de que otra transacción simultánea
los modificara o después de que la segunda transacción haya concluido, pero no
reconoce un estado intermedio. Esto se conoce como seriabilidad, ya que deriva
en la capacidad de volver a cargar los datos iniciales y reproducir una serie
de transacciones para finalizar con los datos en el mismo estado en que estaban
después de realizar las transacciones originales.
Aislamiento
Slide 8
Una vez concluida
una transacción, sus efectos son permanentes en el sistema. Las modificaciones
persisten aún en el caso de producirse un error del sistema.
Durabilidad
Slide 9
En un sistema ideal, las transacciones deberían
garantizar todas las propiedades ACID; en la práctica, a veces alguna de
estas propiedades se simplifica o debilita con vistas a obtener un mejor
rendimiento.
Slide 10
Es responsabilidad de un sistema de base de datos corporativo, como una
instancia de Motor de base de datos, proporcionar los mecanismos que aseguren
la integridad física de cada transacción. Un buen motor de base de datos
proporciona:
Slide 11
Servicios de bloqueo que
preservan el aislamiento de la transacción.
Servicios de registro que
aseguran la durabilidad de la transacción. Aunque se produzca un error en
el hardware del servidor, el sistema operativo o la instancia de Motor de
base de datos, la instancia utiliza registros de transacciones, al
reiniciar, para revertir automáticamente las transacciones incompletas al
punto en que se produjo el error del sistema.
Características de
administración de transacciones que exigen la atomicidad y coherencia de
la transacción. Una vez iniciada una transacción, debe concluirse
correctamente; en caso contrario, la instancia de Motor de base de datos
deshará todas las modificaciones de datos realizadas desde que se inició
la transacción.
Slide 12
Por regla general en los gestores de
datos relacionales modernos disponemos de tres tipos de transacciones según la
forma de iniciarlas:
Slide 13
· De
confirmación automática:
el gestor de datos inicia una transacción automáticamente por cada operación
que actualice datos. De este modo mantiene siempre la consistencia de la base
de datos, aunque puede generar bloqueos.
Implícitas: cuando el gestor de datos comienza
una transacción automáticamente cada vez que se produce una actualización de
datos, pero el que dicha transacción se confirme o se deshaga, lo debe indicar
el programador.Explícitas: son las que iniciamos nosotros
"a mano" mediante instrucciones SQ. somos nosotros, los
programadores, los que indicamos qué operacio0nes va a abarcar.
Slide 14
Las transacciones en PostgreSQL utilizan las siguientes palabras reservadas:BEGIN: Empieza la transacciónSAVEPOINT [name]: Le dice al DBMS la localización de un punto de retorno en la transacción si una parte de la transacción es cancelada. El DBMS guarda el estado de la transacción hasta este punto.COMMIT: Todos los cambios realizados por las transacciones deben ser permanentes y accesibles a las demás operaciones del DBMS.ROLLBACK [savepoint]: Aborta la actual transacción todos los cambios realizados deben ser revertidos.
Slide 15
Transacciones anidadas. Podemos anidar varias transacciones. Cuando anidamos varias transacciones la instrucción COMMIT afectará a la última transacción abierta, pero ROLLBACK afectará a todas las transacciones abiertas. Un hecho a tener en cuenta, es que, si hacemos ROLLBACK de la transacción superior se desharan también los cambios de todas las transacciones internas, aunque hayamos realizado COMMIT de ellas.