TRANSACCIÓNES ATÓMICAS

TRANSACCIONES ATÓMICAS: Hilda Castillo Zacatelco Sistemas Operativos Ricardo Hernández Alvarado Introducción a las Tra

Views 91 Downloads 0 File size 388KB

Report DMCA / Copyright

DOWNLOAD FILE

Citation preview

TRANSACCIONES ATÓMICAS: Hilda Castillo Zacatelco Sistemas Operativos Ricardo Hernández Alvarado

Introducción a las Transacciones atómicas  Una transacción atómica (atomic transaction) considera un conjunto de operaciones como una única operación que puede prosperar o fracasar. Este conjunto de operaciones están agrupadas formando el ámbito de la transacción. Si una operación se ejecuta correctamente, da paso a la operación siguiente, en caso contrario realiza una operación de ROLLBACK.

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

Definición  Tal transacción la llamaremos transacción atómica, abstracción o acción atómica.  Es un conjunto de órdenes que se ejecutan formando una unidad de trabajo, es decir, en forma indivisible o atómica.  La principal propiedad de la transacción atómica es el “todo o nada”: (se hace todo lo que se tenía que hacer como una unidad o no se hace nada.)

Propiedades de las transacciones (ACID)  En concreto ACID es un acrónimo de Atomicity, Consistency, Isolation and Durability: (Atomicidad, Consistencia, Aislamiento y Durabilidad en español).  Atomicidad: es la propiedad que asegura que la operación 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 sólo se empieza aquello que se puede acabar.  Aislamiento: Es la propiedad que asegura que una operación no puede afectar a otras.  Durabilidad: Es la propiedad que asegura que una vez realizada la operación, ésta persistirá y no se podrá deshacer aunque falle el sistema.

Ejemplos  Esto es un ejemplo de atomicidad. Cuando realizamos una transacción 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 transacción 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 aplicación que transfiere dinero de una cuenta a otra, hay una operación de debito que ocurre en la cuenta fuente y una operación de crédito que ocurre en la cuenta destino. La transacción tiene lo siguiente dos pasos: Paso 1: Debitar de la cuenta fuente. Paso 2: Acreditar a la cuenta destino.

Si la transacción falla después 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 operación de debito, y se ejecuta una restitución (ROLLBACK) de la transacción para obtener el estado consistente inicial.

Ejemplos Este es un ejemplo de aislamiento. El sistema del banco realiza distintas operaciones sin que ocurra ningún problema y hace creer también al usuario como si fuera la única operación de la transacción que se está ejecutando en el sistema, ya que requiere que cada operación de la transacción parezca ser la única que manipula la base de datos, aunque otras transacciones puedan estar ejecutándose concurrentemente, ya que terceras personas pueden tratar de modificar en el sistema.

Ejemplos

Este es un ejemplo de durabilidad. En medio de una transacción de depósito tiene éxito, el sistema garantiza que persistan sus actualizaciones, incluso que se valla la luz inmediatamente después de una ejecución exitosa deben persistir.

Primitivas de transacción  BEGIN_TRANSACTION Comienza una transacción  END_TRANSACTION Termina la transacción y trata de cometer (commit)  ABORT_TRANSACTION Mata la transacción 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

Técnicas de implementación de una Transacción  Área de trabajo privada  Bitácora de escritura anticipada  Protocolo de compromiso de dos fases (two-phase)

Área de trabajo privada:  Consiste en realizar copias de los bloques que serán utilizados dentro de una transacción de manera que se trabaje con estas copias para realizar todas las modificaciones necesarias.  Todo el espacio de trabajo con la información que será utilizada es contenida dentro de estas copias denominado área de trabajo privada.

 Los demás usuarios trabajaran con la copia original de los bloques pero no podrán obtener una segunda copia de los mismos.  Al iniciarse la transacción el proceso obtiene una copia privada de los datos. Lecturas y escrituras sobre la zona privada.

Bitácora de escritura anticipada:  Este método 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 serán actualizadas con la información una vez que se ha determinado el fin de la transacción.

 Después de una caída temporal 1. Se debe recorrer el log. 2. Si una transacción no ha escrito su registro de fin se aborta, si lo ha escrito, se hacen los cambios pendientes.  Para evitar recorrer todo el log después de un fallo temporal de la maquina, se usan generalmente checkpoints.

Protocolo de compromiso de dos fases:  En un sistema distribuido una transacción puede afectar a varios procesadores lo cual dificulta la atomicidad. La solución más típica es el protocolo de compromiso de dos fases (C2F). En este protocolo existe un coordinador que normalmente es el proceso que inicio la transacción.

 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 transacción. 3. Cada proceso implicado decide si esta listo para hacer el compromiso, escribe en su log la decisión (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 transacción. En caso contrario decide realizar el compromiso. 1. El coordinador escribe en el log la decisión y manda un mensaje a los procesos implicados. 2. Cada proceso que recibe el mensaje escribe en su log la decisión del coordinador y realiza la acción correspondiente.

 La terminación de una transacción se hace mediante la regla del compromiso global. 1. El coordinador aborta una transacción si y solo si al menos un proceso implicado decide abortar. 2. El coordinador hace un compromiso de la transacción 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 después de una caída transitoria y detecta que la transacción T estaba a medias. 1. Si el log contiene (compromiso T) se realiza la transacción. 2. Si contiene (abort T) se sale de la transacción. 3. Si contiene (listo T) debe consultar al coordinador para determinar si se compromete o aborta la transacción 4. Si no hay mensajes en el log se aborta.

 Comportamiento ante fallos del coordinador: Cada nodo implicado N debe decidir sobre la transacción T. 1. Si el log contiene (compromiso T) se realiza la transacción. 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 transacción. 3. Si todos los nodos tienen (listo T) pero ninguno tiene (compromiso T) o (abort T) no se puede determinar la decisión del coordinador, por lo tanto se debera esperar que se recupere.

Estructura y modelos de las transacciones  La estructura de una transacción usualmente viene dada según el modelo de la transacción, 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 Reservación .... END.

 Transacciones Anidadas : Consiste en tener transacciones que dependen de otras, estas transacciones están incluidas dentro de otras de un nivel superior y se les conoce como subtransacciones. La transacción de nivel superior puede producir hijos (subtransacciones) que hagan más fácil la programación del sistema y mejoras del desempeño. En las transacciones anidadas las operaciones de una transacción pueden ser así mismo otras transacciones. Por ejemplo:

BEGIN _TRANSACTION Reservación .......... BEGIN _TRANSACTION Vuelo ........ END.( Vuelo ) ...... BEGIN _TRANSACTION Hotel ........ END ...... END.

 Una transacción 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 transacción anidada: debe empezar después 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 también serán abortadas.

Procesamiento de transacciones  Los siguientes son los aspectos más 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 transacción pretende hacer un compromiso.

 Protocolos de confiabilidad: En transacciones distribuidas es necesario introducir medios de comunicación entre los diferentes nodos de una red para garantizar la atomicidad de las transacciones.  Algoritmos de control de concurrencia: Deben sincronizar la ejecución 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 básicamente 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 terminación que define un bloque entre el conjunto de operaciones que son realizadas.

 Dentro de este proceso en bloque los demás 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. Ejecución de transacciones serializadas 2. Ejecución de transacciones calendarizadas

 Ejecutar transacciones serializadas: Es un sistema que permite el procesamiento de transacciones en forma secuencial o serializado dándole una secuencia a cada transacción, este proceso reduce el rendimiento del sistema, pero tiene como ventaja que el proceso de sincronización es más sencillo.

 Ejecutar transacciones calendarizadas: Permite el proceso de transacciones asignándoles tiempos de procesamiento el cual permite incrementar el rendimiento del sistema ya que se ejecuta un máximo de procesos en forma concurrente y no a través de una serie. La ventaja es que a un mismo tiempo de reloj se pueden hacer dos operaciones, aunque el proceso de sincronización es mas complicado.

Condiciones de terminación de una transacción  Una transacción siempre termina, aun en la presencia de fallas.  Si una transacción termina de manera exitosa se dice que la transacción hace un compromiso.  Si la transacción se detiene sin terminar su tarea, se dice que la transacción aborta .

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