Sie sind auf Seite 1von 38

TRANSACCIONES ATMICAS:

Hilda Castillo Zacatelco Sistemas Operativos Ricardo Hernndez Alvarado

Introduccin a las Transacciones atmicas


Una transaccin atmica (atomic transaction) considera un conjunto de operaciones como una nica operacin que puede prosperar o fracasar. Este conjunto de operaciones estn agrupadas formando el mbito de la transaccin. Si una operacin se ejecuta correctamente, da paso a la operacin siguiente, en caso contrario realiza una operacin de ROLLBACK.

Un proceso controlador se encarga de ejecutar cada uno de los procesos que componen el mbito de la transaccin y de determinar si individualmente han terminado correctamente o no. Al final del mbito, si la ltima operacin ha tenido una ejecucin correcta como el resto de las operaciones anteriores, el proceso controlador realiza un COMMIT que se encarga de persistir los datos modificados por la transaccin.

Definicin
Tal transaccin la llamaremos transaccin atmica, abstraccin o accin atmica. Es un conjunto de rdenes que se ejecutan formando una unidad de trabajo, es decir, en forma indivisible o atmica. La principal propiedad de la transaccin atmica es el todo o nada: (se hace todo lo que se tena que hacer como una unidad o no se hace nada.)

Propiedades de las transacciones (ACID)


En concreto ACID es un acrnimo de Atomicity, Consistency, Isolation and Durability: (Atomicidad, Consistencia, Aislamiento y Durabilidad en espaol). Atomicidad: es la propiedad que asegura que la operacin se ha realizado o no, y por lo tanto ante un fallo del sistema no puede quedar a medias.

Consistencia: Es la propiedad que asegura que slo se empieza aquello que se puede acabar.
Aislamiento: Es la propiedad que asegura que una operacin no puede afectar a otras. Durabilidad: Es la propiedad que asegura que una vez realizada la operacin, sta persistir y no se podr deshacer aunque falle el sistema.

Ejemplos
Esto es un ejemplo de atomicidad.
Cuando realizamos una transaccin bancaria, es decir, en el momento en que estamos cancelando una tarjeta de debito nos descuentan el monto a cancelar y nos reducen el saldo anterior; en el caso que falle la transaccin no se reduce nada de nuestro saldo actual. Por lo tanto aunque se tenga el mismo objetivo no se ejecutara ya que se tiene que cumplir o no se cumple.

Ejemplos
Este es un ejemplo de consistencia. Al desarrollar una aplicacin que transfiere dinero de una cuenta a otra, hay una operacin de debito que ocurre en la cuenta fuente y una operacin de crdito que ocurre en la cuenta destino. La transaccin tiene lo siguiente dos pasos: Paso 1: Debitar de la cuenta fuente. Paso 2: Acreditar a la cuenta destino.

Si la transaccin falla despus de paso 1, una inconsistencia de datos ocurre debido a que la cantidad es debitada de la cuenta fuente, pero no se acredita en la cuenta destino. Para asegurarse de que se mantiene la consistencia de datos, el SGBD cancela la operacin de debito, y se ejecuta una restitucin (ROLLBACK) de la transaccin para obtener el estado consistente inicial.

Ejemplos
Este es un ejemplo de aislamiento.
El sistema del banco realiza distintas operaciones sin que ocurra ningn problema y hace creer tambin al usuario como si fuera la nica operacin de la transaccin que se est ejecutando en el sistema, ya que requiere que cada operacin de la transaccin parezca ser la nica que manipula la base de datos, aunque otras transacciones puedan estar ejecutndose concurrentemente, ya que terceras personas pueden tratar de modificar en el sistema.

Ejemplos

Este es un ejemplo de durabilidad.


En medio de una transaccin de depsito tiene xito, el sistema garantiza que persistan sus actualizaciones, incluso que se valla la luz inmediatamente despus de una ejecucin exitosa deben persistir.

Primitivas de transaccin
BEGIN_TRANSACTION Comienza una transaccin END_TRANSACTION Termina la transaccin y trata de cometer (commit) ABORT_TRANSACTION Mata la transaccin y restaura los valores anteriores READ Lee datos desde un archivo, una tabla, etc WRITE Escribe datos a un archivo, una tabla, etc

Lo que est dentro de BEGIN_TRANSACTION y END_TRANSACTION se debe llevar a cabo todo o nada. La cantidad exacta de instrucciones disponibles para manejar transacciones depende del tipo de objetos y operaciones que deban ser procesadas.

Aplicaciones

Base de datos Base de datos distribuidas Sistema de archivos distribuidos Desarrollo de aplicaciones tolerantes a fallos

Tcnicas de implementacin de una Transaccin


rea de trabajo privada Bitcora de escritura anticipada Protocolo de compromiso de dos fases (two-phase)

rea de trabajo privada:


Consiste en realizar copias de los bloques que sern utilizados dentro de una transaccin de manera que se trabaje con estas copias para realizar todas las modificaciones necesarias. Todo el espacio de trabajo con la informacin que ser utilizada es contenida dentro de estas copias denominado rea de trabajo privada.

Los dems usuarios trabajaran con la copia original de los bloques pero no podrn obtener una segunda copia de los mismos. Al iniciarse la transaccin el proceso obtiene una copia privada de los datos. Lecturas y escrituras sobre la zona privada.

Bitcora de escritura anticipada:


Este mtodo consiste en realizar una copia con todas las transacciones que van siendo ejecutadas hacia un bloque o espacio (LOG) de trabajo que sea estable, esta lista se la conoce como lista de intenciones. Las transacciones sern actualizadas con la informacin una vez que se ha determinado el fin de la transaccin.

Despus de una cada temporal 1. Se debe recorrer el log. 2. Si una transaccin no ha escrito su registro de fin se aborta, si lo ha escrito, se hacen los cambios pendientes. Para evitar recorrer todo el log despus de un fallo temporal de la maquina, se usan generalmente checkpoints.

Protocolo de compromiso de dos fases:


En un sistema distribuido una transaccin puede afectar a varios procesadores lo cual dificulta la atomicidad. La solucin ms tpica es el protocolo de compromiso de dos fases (C2F). En este protocolo existe un coordinador que normalmente es el proceso que inicio la transaccin.

Fase 1: 1. El coordinador escribe en el log almacenado en memoria estable el registro (preparar T). 2. Manda un mensaje con ese contenido a los nodos implicados en la transaccin. 3. Cada proceso implicado decide si esta listo para hacer el compromiso, escribe en su log la decisin (listo T o no listo T) y la manda en un mensaje al coordinador.

Fase 2: Si el coordinador recibe alguna respuesta negativa u obtiene alguna falla de respuesta decide abortar la transaccin. En caso contrario decide realizar el compromiso. 1. El coordinador escribe en el log la decisin y manda un mensaje a los procesos implicados. 2. Cada proceso que recibe el mensaje escribe en su log la decisin del coordinador y realiza la accin correspondiente.

La terminacin de una transaccin se hace mediante la regla del compromiso global. 1. El coordinador aborta una transaccin si y solo si al menos un proceso implicado decide abortar. 2. El coordinador hace un compromiso de la transaccin si y solo si todos los participantes deciden realizar el compromiso.

Comportamiento ante un fallo de un nodo: Esto sucede cuando un nodo N se recupera despus de una cada transitoria y detecta que la transaccin T estaba a medias. 1. Si el log contiene (compromiso T) se realiza la transaccin. 2. Si contiene (abort T) se sale de la transaccin. 3. Si contiene (listo T) debe consultar al coordinador para determinar si se compromete o aborta la transaccin 4. Si no hay mensajes en el log se aborta.

Comportamiento ante fallos del coordinador: Cada nodo implicado N debe decidir sobre la transaccin T. 1. Si el log contiene (compromiso T) se realiza la transaccin. 2. Si contiene (abort T) se aborta, si no contiene (listoT) el coordinador no ha podido decidir el compromiso, por lo tanto, lo mas apropiado es abortar la transaccin. 3. Si todos los nodos tienen (listo T) pero ninguno tiene (compromiso T) o (abort T) no se puede determinar la decisin del coordinador, por lo tanto se debera esperar que se recupere.

Estructura y modelos de las transacciones


La estructura de una transaccin usualmente viene dada segn el modelo de la transaccin, estas pueden ser planas (simples) o anidadas. Transacciones planas: Consisten en una secuencia de operaciones primitivas encerradas entre las palabras clave BEGIN y END. Por ejemplo: BEGIN _TRANSACTION Reservacin .... END.

Transacciones Anidadas : Consiste en tener transacciones que dependen de otras, estas transacciones estn incluidas dentro de otras de un nivel superior y se les conoce como subtransacciones. La transaccin de nivel superior puede producir hijos (subtransacciones) que hagan ms fcil la programacin del sistema y mejoras del desempeo. En las transacciones anidadas las operaciones de una transaccin pueden ser as mismo otras transacciones. Por ejemplo:

BEGIN _TRANSACTION Reservacin .......... BEGIN _TRANSACTION Vuelo ........ END.( Vuelo ) ...... BEGIN _TRANSACTION Hotel ........ END ...... END.

Una transaccin anidada dentro de otra conserva las mismas propiedades que las de su padre, esto implica, que puede contener as mismo transacciones dentro de ella. Existen restricciones obvias en una transaccin anidada: debe empezar despus que su padre y debe terminar antes que el. El compromiso de una subtransaccion es condicional al compromiso de su padre, si el padre de una o varias subtransacciones aborta, las subtransacciones hijas tambin sern abortadas.

Procesamiento de transacciones
Los siguientes son los aspectos ms importantes relacionados con el procesamiento de transacciones: Modelo de estructura de transacciones: Es importante considerar si las transacciones son planas o anidadas. Consistencia de la base de datos interna : Los algoritmos de control de datos tienen que satisfacer las restricciones de integridad cuando una transaccin pretende hacer un compromiso.

Protocolos de confiabilidad: En transacciones distribuidas es necesario introducir medios de comunicacin entre los diferentes nodos de una red para garantizar la atomicidad de las transacciones. Algoritmos de control de concurrencia: Deben sincronizar la ejecucin de transacciones concurrentes bajo el criterio de correctitud. La consistencia entre transacciones se garantiza mediante el aislamiento de las mismas

Protocolos de control de replicas: Se refiere a como garantizar la consistencia mutua de datos replicados.
El procesamiento de transacciones bsicamente consiste en una serie de modificaciones (transacciones) a un determinado recurso del sistema (por ejemplo una base de datos) y en donde se define un punto de inicio y un punto de terminacin que define un bloque entre el conjunto de operaciones que son realizadas.

Dentro de este proceso en bloque los dems usuarios no pueden modificar nada hasta que no se presente un estado estable de los datos, esto ocasiona inconsistencia temporal y conflictos. Para evitar lo anterior se implementan dos maneras diferentes: 1. Ejecucin de transacciones serializadas 2. Ejecucin de transacciones calendarizadas

Ejecutar transacciones serializadas: Es un sistema que permite el procesamiento de transacciones en forma secuencial o serializado dndole una secuencia a cada transaccin, este proceso reduce el rendimiento del sistema, pero tiene como ventaja que el proceso de sincronizacin es ms sencillo.

Ejecutar transacciones calendarizadas: Permite el proceso de transacciones asignndoles tiempos de procesamiento el cual permite incrementar el rendimiento del sistema ya que se ejecuta un mximo de procesos en forma concurrente y no a travs de una serie. La ventaja es que a un mismo tiempo de reloj se pueden hacer dos operaciones, aunque el proceso de sincronizacin es mas complicado.

Condiciones de terminacin de una transaccin


Una transaccin siempre termina, aun en la presencia de fallas. Si una transaccin termina de manera exitosa se dice que la transaccin hace un compromiso. Si la transaccin se detiene sin terminar su tarea, se dice que la transaccin aborta .

Cuando la transaccin es abortada, puede ser por distintas razones relacionadas con la naturaleza de la transaccin misma, o por conflicto con otras transacciones o por fallo de un proceso o computador, entonces su ejecucin es detenida y todas las acciones ejecutadas hasta el momento son deshechas regresando a la base de datos al estado antes de su ejecucin. A esta operacin tambin se la conoce como rollback.

Das könnte Ihnen auch gefallen