Concepto de Transacción

Concepto  de Transacción
Se llama Transacción a una colección de operaciones que forman una unidad lógica de trabajo en una BD realizada por una o más sentencias SQL estrechamente relacionadas.
Una transacción es una unidad de la ejecución de un programa que lee y escribe datos a y desde la Base de Datos. Puede consistir en varias operaciones de acceso a la base de datos. Una Transacción está delimitada por instrucciones de inicio transacción y fin transacción (la transacción consiste en todas las operaciones que se ejecutan entre inicio transacción y fin transacción).
El concepto de transacción se desarrolló para atender los casos en los que el estado resultante de la base de datos depende del éxito completo en una serie de operaciones. Este concepto vio la luz debido a que varias operaciones sucesivas pueden modificar el resultado de operaciones anteriores. En esos casos, si alguna operación produce un error, el estado resultante puede ser indeterminado.
Para solucionar este problema, las transacciones agrupan una serie de operaciones de manera que es posible garantizar la integridad del resultado final. O todas las operaciones se ejecutan con éxito y se confirman (se escriben en la base de datos), o toda la transacción se considera no realizada. La acción de cancelar una transacción se denomina deshacer la transacción. Deshacer una transacción permite anular los cambios y recuperar el estado de la base de datos previo a la transacción.

Tipos de transacciones
Con el tiempo, se han propuesto muchos modelos de transacciones. Sin embargo uno de los principales problemas es el cumplimiento de las cuatro propiedades anteriormente mencionadas. En algunos de los casos, la solución ha sido la “relajación” sobre alguno de los puntos, evitando así algunos problemas, pero por tanto dando lugar a otros nuevos.

Las transacciones han sido clasificadas de acuerdo a diferentes criterios:
v  Duración:
1.    On-line: caracterizadas por un tiempo de respuesta y ejecución muy corto y por un acceso a una pequeña porción de la base de datos. Este tipo de transacción cubre la mayoría de las transacciones de los programas actuales.

2.    Batch: caracterizadas por un gran tiempo de ejecución (del orden de los minutos, horas o días) y por acceder a grandes volúmenes de datos.

v  Organización de Lectura/Escritura:
1.    General: las lecturas y escrituras se realizan sin orden determinado.
2.    Dos-pasos (two-step): si todas las lecturas son realizadas antes de las escrituras.
3.    Restringida (restricted o read-before-write): si la transacción está restringida de forma que un dato debe ser leído antes de poder ser actualizado (escrito).
4.    Restringida de dos pasos (restricted two-step): si es cumple las dos anteriores.
5.    Acción: consistente en la ejecución de parejas de operaciones atómicas <lectura,escritura>.


v  Estructura:
1.    Transacción plana (flat transaction): aquella transacción que tiene un único punto de inicio y un único punto de terminación.

2.    Transacciones anidadas (nested transaction): permite que una transacción incluya otras transacciones con sus propios puntos de inicio y fin, que suelen recibir el nombre de subtransacciones.

Comentarios