Professional Documents
Culture Documents
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 abstraccin la llamaremos transaccin atmica, transaccin 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.)
Ejemplo: o Un cliente llama al Banco para: o La operacin tiene dos etapas. o Si la conexin telefnica falla luego de la primer etapa pero antes de la segunda:
Habr un retiro pero no un depsito. Retirar dinero de una cuenta. Depositar el dinero en otra cuenta.
Consistencia: Integridad. 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.
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
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.
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.
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.
Transacciones Anidadas : Consiste en tener transacciones que dependen de otras, estas transacciones estn incluidas dentro de otras de un nivel superior y se las 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.
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.