Beruflich Dokumente
Kultur Dokumente
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.)
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
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 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.
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.