Diseño+de+interfaz+de+usuario.

Los sistemas distribuidos son muy confiables debido a la posibilidad de brindar redundancia y autonomía de recursos en diferentes nodos, esto posibilita detectar y localizar fallas, sin embargo tenemos varios aspectos que representan problemas para la integridad de los recursos y que a su vez motivan el uso de transacciones

 **// **// **//APLICACIONES DE TRANSACIONES **// **// DEFINICIÓN DE TRANSACIONES //Las transacciones fueron originalmente desarrolladas para ser utilizadas dentro de los sistemas de base de datos, donde se usaba para ayudar en el mantenimiento de los datos de las aplicaciones y que dependían de la consistencia de la informacion almacenada.

Las transacciones son mecanismos que ayudan a simplificar la construcción de sistemas confiables mediante procesos que proporcionan soporte uniforme para invocar y sincronizar operaciones como:

 **// **// **// **//<Recuperación de fallas//**

<span style="font-family: Arial,sans-serif; font-size: 10pt;">La palabra transacción describe una secuencia de operaciones con uno o más recursos que transforman su estado actual en un nuevo estado de consistencia. Es un conjunto de operaciones sobre datos que son tratadas como una unidad. Una transacción puede terminar, haciendo sus cambios persistentes, o abortar voluntaria o involuntariamente.

<span style="font-family: Arial,sans-serif; font-size: 10pt;">Dentro del área de los sistemas computacionales el concepto de transacciones fue inicialmente utilizado para definir la consistencia entre múltiples usuarios en una base de datos. Una transacción es una colección de operaciones que hacen transformaciones consistentes de los estados de un sistema conservando la consistencia del sistema. Una base de datos esta en estado consistente si cumple todas las restricciones de integridad definidas sobre ella. Los cambios de estado se dan debido a actualización, inserción y eliminación de la informacion. Se quiere asegurar que la base de datos no entre en un estado de inconsistencia, pero durante la ejecución de una transacción, la base de datos puede estar temporalmente en un estado inconsistente. Lo importante aquí es asegurar que la base de datos vuelva aun estado consistente al concluir la ejecución de una transacción (Figura A)


 * <span style="font-family: 'Times New Roman',serif; font-size: 10pt;">[[image:http://lopezbonilla.wikispaces.com/site/embedthumbnail/placeholder?w=377&h=183 width="377" height="183" caption="external image image002.gif"]]  ||
 * <span style="font-family: 'Times New Roman',serif; font-size: 10pt;">external image image002.gif  ||
 * //__<span style="font-family: Arial,sans-serif; font-size: 10pt;">Figura A . Un modelo de transacción. __//**

<span style="font-family: Arial,sans-serif; font-size: 10pt;">Lo que se persigue con el uso de transacciones es por un lado contar con una transparencia adecuada de las acciones concurrentes a una base de datos y por el otro tener una transparencia adecuada en el manejo de las fallas que se pueden presentar en una base de datos.

//<span style="font-family: Arial,sans-serif; font-size: 10pt;">Comentario sobre el modelo //

<span style="font-family: Arial,sans-serif; font-size: 10pt;">< //Transparencia de concurrencia//
 * <span style="font-family: Arial,sans-serif;">Una transacción es una acción atómica, siendo una unidad de control de concurrencia y de recuperación. Las transacciones se mantienen consistentes solo si se efectúa a partir de un estado consistente. Las transacciones simplifican el modelo computacional dado que proveen: **

//<span style="font-family: Arial,sans-serif; font-size: 10pt;">< Transparencia de fallos //

<span style="color: blue; font-family: Arial,sans-serif; font-size: 10pt;">PROPIEDEADES DE LAS TRANSACCIONES

> <span style="font-family: Arial,sans-serif; font-size: 10pt;">Una transacción es tratada como una unidad de operación. Por lo tanto todas las acciones de la transacción se llevan a cabo o ninguna de ellas se realiza .La atomicidad requiere que si una transacción se interrumpe por una falla, sus resultados parciales deben ser deshechos. Se efectúan todas las transacciones, pero en caso de fallas no se realiza ninguna. Una transacción debe concluir comprometida o abortada. En el caso del compromiso se instalan todas las actualizaciones y en el aborto se descartan todas las actualizaciones. <span style="font-family: Arial,sans-serif; font-size: 10pt;">Una transacción es un programa correcto que lleva la base de datos de un estado consistente a otro con la misma característica. Gracias a esto, las transacciones no violan las reglas de integridad de una base de datos. <span style="font-family: Arial,sans-serif; font-size: 10pt;">Durante la ejecución de una transacción, esta no debe revelar sus resultados a otras transacciones concurrentes antes de su compromiso. Si varias transacciones se ejecutan concurrentemente, los resultados deben ser los mismos que si ellas se hubieran ejecutado en forma secuencial (Seriabilidad). La seriabilidad consiste en asegurarse que los cambios siguen un orden adecuado. <span style="font-family: Arial,sans-serif; font-size: 10pt;">Es la propiedad de las transacciones que asegura que una vez que una transacción realiza su compromiso, sus resultados son permanentes y no pueden ser borrados de la base de datos, se asegura que los resultados de una transacción sobrevivirán a fallas del sistema.
 * //<span style="font-family: Arial,sans-serif; font-size: 10pt;">Atomicidad //<span style="font-family: Arial,sans-serif; font-size: 10pt;">:
 * **//__<span style="font-family: Arial,sans-serif; font-size: 10pt;">Consistencia __//****//<span style="font-family: Arial,sans-serif; font-size: 10pt;"> : //**
 * **//__<span style="font-family: Arial,sans-serif; font-size: 10pt;">Aislamiento : __//**
 * **//__<span style="font-family: Arial,sans-serif; font-size: 10pt;">Durabilidad : __//**

<span style="font-family: Arial,sans-serif; font-size: 10pt;">Las transacciones brindan una ejecución atómica y confiable en presencia de fallas, una ejecución correcta en presencia de accesos de usuario múltiples y un manejo correcto de replicas (en el caso que se soporten).

__<span style="color: blue; font-family: Arial,sans-serif; font-size: 10pt;">INSTRUCCIONES PARA EL USO DE TRANSACIONES __

<span style="font-family: Arial,sans-serif; font-size: 10pt;">La programación con uso de transacciones requiere de instrucciones especiales, las cuales deben ser proporcionadas por el sistema operativo, por el compilador del lenguaje o por el manejador de la base de datos, algunos son:

<span style="font-family: Arial,sans-serif; font-size: 10pt;">BEGIN _TRANSACCIÓN: Los comandos siguientes forman una transacción

<span style="font-family: Arial,sans-serif; font-size: 10pt;">END _ TRANSACCIÓN: Termina la transacción y se intenta un compromiso

<span style="font-family: Arial,sans-serif; font-size: 10pt;">ABORT_ TRANSACCIÓN: Se elimina la transacción, se recuperan los valores anteriores

<span style="font-family: Arial,sans-serif; font-size: 10pt;">READ: Se leen datos de un archivo

<span style="font-family: Arial,sans-serif; font-size: 10pt;">WRITE: Se escriben datos en un archivo

<span style="font-family: Arial,sans-serif; font-size: 10pt;">Las operaciones entre BEGIN y END forman el cuerpo de la transacción y deben ejecutarse todas o ninguna de ellas. La cantidad exacta de instrucciones disponibles para manejar transacciones depende del tipo de objetos y operaciones que deban ser procesadas.

__<span style="color: blue; font-family: Arial,sans-serif; font-size: 10pt;">TÉCNICAS DE IMPLANTACIÓN DE TRANSACCIONES __
 * <span style="font-family: 'Times New Roman',serif; font-size: 10pt;">[[image:http://lopezbonilla.wikispaces.com/site/embedthumbnail/placeholder?w=200&h=94 width="200" height="94" caption="external image image003.gif"]]  ||
 * <span style="font-family: 'Times New Roman',serif; font-size: 10pt;">external image image003.gif  ||

<span style="font-family: Arial,sans-serif; font-size: 10pt;"> __> Área de trabajo privada__

<span style="font-family: Arial,sans-serif; font-size: 10pt;"> __> Bitácora de escritura anticipada__

<span style="font-family: Arial,sans-serif; font-size: 10pt;"> __> Protocolo de compromiso de dos fases (two-phase)__

<span style="font-family: Arial,sans-serif; font-size: 10pt;">1. __Área de trabajo privada__:

<span style="font-family: Arial,sans-serif; font-size: 10pt;">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 informacion 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.

<span style="font-family: Arial,sans-serif; font-size: 10pt;">Al iniciarse la transacción el proceso obtiene una copia privada de los datos.Lecturas y escrituras sobre la zona privada. Para optimizar solo se crean copias privadas de los datos modificados. Una segunda optimización para los datos que están organizados en bloques apuntados desde un índice, como los ficheros, es crear copias solo de los fragmentos modificados.

<span style="font-family: Arial,sans-serif; font-size: 10pt;">2. __Bitácora de escritura anticipada:__

<span style="font-family: Arial,sans-serif; font-size: 10pt;">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.

<span style="font-family: Arial,sans-serif; font-size: 10pt;">Las transacciones serán actualizadas con la informacion una vez que se ha determinado el fin de la transacción.

<span style="font-family: Arial,sans-serif; font-size: 10pt;">Se modifican los datos pero antes se escribe en un log sobre memoria estable la descripción de la operación. En el log también se escriben registros para indicar el inicio y fin de la transacción, cuando se aborta la transacción se recorre el log para deshacer los cambios. Después de una caída temporal, se debe recorrer el log. 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.

<span style="font-family: Arial,sans-serif; font-size: 10pt;">3. __Protocolo de compromiso de dos fases:__

<span style="font-family: Arial,sans-serif; font-size: 10pt;">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.

<span style="font-family: Arial,sans-serif; font-size: 10pt;"> __Fase 1:__ El coordinador escribe en el log almacenado en memoria estable el registro (preparar T). Manda un mensaje con ese contenido a los nodos implicados en la transacción. 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.

<span style="font-family: Arial,sans-serif; font-size: 10pt;"> __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.

<span style="font-family: Arial,sans-serif; font-size: 10pt;">El coordinador escribe en el log la decisión y manda un mensaje a los procesos implicados. Cada proceso que recibe el mensaje escribe en su log la decisión del coordinador y realiza la acción correspondiente.

<span style="font-family: Arial,sans-serif; font-size: 10pt;">La terminación de una transacción se hace mediante la regla del compromiso global. El coordinador aborta una transacción si y solo si al menos un proceso implicado decide abortar. El coordinador hace un compromiso de la transacción si y solo si todos los participantes deciden realizar el compromiso.

<span style="font-family: Arial,sans-serif; font-size: 10pt;"> __Comportamiento ante un fallo de un nodo:__El nodo N se recupera después de una caída transitoria y detecta que la transacción T estaba a medias. Si el log contiene (compromiso T) se realiza la transacción. Si contiene (abort T) se aborta la transacción, si contiene (listo T) debe consultar al coordinador para determinar si se compromete o aborta la transacción, si no hay mensajes en el log se aborta.

<span style="font-family: Arial,sans-serif; font-size: 10pt;"> __Comportamiento ante fallos del coordinador__: Cada nodo implicado N debe decidir sobre la transacción T. Si el log contiene (compromiso T) se realiza la transacción. 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. Si todos los nodos tienen (listo T) pero ninguno tiene (compromiso T) o (abort T) no se puede determinar la decisión del coordinador. Se debería esperar que se recuperase.

__<span style="color: blue; font-family: Arial,sans-serif; font-size: 10pt;">ESTRUCTURA DE LAS TRANSACCIONES __

<span style="font-family: Arial,sans-serif; font-size: 10pt;">La estructura de una transacción usualmente viene dada según el modelo de la transacción, estas pueden ser planas (simples) o anidadas.
 * __<span style="font-family: Arial,sans-serif; font-size: 10pt;">Transacciones planas: __

<span style="font-family: Arial,sans-serif; font-size: 10pt;">Consisten en una secuencia de operaciones primitivas encerradas entre las palabras clave BEGIN y END. Por ejemplo:

<span style="font-family: Arial,sans-serif; font-size: 10pt;">BEGIN _TRANSACTION Reservación

<span style="font-family: Arial,sans-serif; font-size: 10pt;">....

<span style="font-family: Arial,sans-serif; font-size: 10pt;">END.

<span style="font-family: Arial,sans-serif; font-size: 10pt;">Consiste en tener transacciones que dependen de otras, estas transacciones están incluidas dentro de otras de un nivel superior y se las 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.
 * __<span style="font-family: Arial,sans-serif; font-size: 10pt;">Transacciones Anidadas : __

<span style="font-family: Arial,sans-serif; font-size: 10pt;">En las transacciones anidadas las operaciones de una transacción pueden ser así mismo otras transacciones. Por ejemplo:

<span style="font-family: Arial,sans-serif; font-size: 10pt;">BEGIN _TRANSACTION Reservación

<span style="font-family: Arial,sans-serif; font-size: 10pt;">..........

<span style="font-family: Arial,sans-serif; font-size: 10pt;">BEGIN _TRANSACTION Vuelo

<span style="font-family: Arial,sans-serif; font-size: 10pt;">........

<span style="font-family: Arial,sans-serif; font-size: 10pt;">END.( Vuelo ) ......

<span style="font-family: Arial,sans-serif; font-size: 10pt;">BEGIN _TRANSACTION Hotel

<span style="font-family: Arial,sans-serif; font-size: 10pt;">........

<span style="font-family: Arial,sans-serif; font-size: 10pt;">END

<span style="font-family: Arial,sans-serif; font-size: 10pt;">......

<span style="font-family: Arial,sans-serif; font-size: 10pt;">END.

<span style="font-family: Arial,sans-serif; font-size: 10pt;">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. Las transacciones anidadas brindan un nivel mas alto de concurrencia entre transacciones. Ya que una transacción consiste de varias transacciones es posible tener mayor concurrencia dentro de una sola transacción.

<span style="font-family: Arial,sans-serif; font-size: 10pt;">Así también, es posible recuperarse de de fallas de forma independiente de cada subtransaccion. Esto limita el daño a una parte mas pequeña de la transacción, haciendo que el costo de la recuperación sea el menor.

<span style="font-family: Arial,sans-serif; font-size: 10pt;">También se deben considerar el orden de las lecturas y escrituras. Si las acciones de lectura y escritura pueden ser mezcladas sin ninguna restricción, entonces, a este tipo de transacciones se les conoce como Generales .Por el contrario, si se restringe o impone que un dato debe ser leído antes de que pueda ser escrito entonces se tendrán transacciones Restringidas. Si las transacciones son restringidas a que todas las acciones de lectura se realicen antes de las acciones de escritura entonces se les conoce como de Dos Pasos. Finalmente existe un modelo de acción para transacciones restringidas en donde se aplica aun más la restricción de que cada par < read, write > tiene que ser ejecutado de manera atómica.

__<span style="color: blue; font-family: Arial,sans-serif; font-size: 10pt;">PROCESAMIENTO DE TRANSACCIONES __

<span style="font-family: Arial,sans-serif; font-size: 10pt;">Los siguientes son los aspectos más importantes relacionados con el procesamiento de transacciones: <span style="font-family: Arial,sans-serif; font-size: 10pt;">Es importante considerar si las transacciones son planas o anidadas. <span style="font-family: Arial,sans-serif; font-size: 10pt;">Los algoritmos de control de datos tienen que satisfacer las restricciones de integridad cuando una transacción pretende hacer un compromiso. <span style="font-family: Arial,sans-serif; font-size: 10pt;">En transacciones distribuidas es necesario introducir medios de comunicación entre los diferentes nodos de una red para garantizar la atomicidad de las transacciones. <span style="font-family: Arial,sans-serif; font-size: 10pt;">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. <span style="font-family: Arial,sans-serif; font-size: 10pt;">Se refiere a como garantizar la consistencia mutua de datos replicados.
 * __<span style="font-family: Arial,sans-serif; font-size: 10pt;">Modelo de estructura de transacciones __
 * __<span style="font-family: Arial,sans-serif; font-size: 10pt;">Consistencia de la base de datos interna __
 * __<span style="font-family: Arial,sans-serif; font-size: 10pt;">Protocolos de confiabilidad __
 * __<span style="font-family: Arial,sans-serif; font-size: 10pt;">Algoritmos de control de concurrencia __
 * __<span style="font-family: Arial,sans-serif; font-size: 10pt;">Protocolos de control de replicas __

<span style="font-family: Arial,sans-serif; font-size: 10pt;">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.

<span style="font-family: Arial,sans-serif; font-size: 10pt;">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:

<span style="font-family: Arial,sans-serif; font-size: 10pt;"><Ejecución de transacciones serializadas

<span style="font-family: Arial,sans-serif; font-size: 10pt;">< Ejecución de transacciones calendarizadas

<span style="font-family: Arial,sans-serif; font-size: 10pt;">1- __Ejecutar transacciones serializadas:__

<span style="font-family: Arial,sans-serif; font-size: 10pt;">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.

<span style="font-family: Arial,sans-serif; font-size: 10pt;"> __2- Ejecutar transacciones calendarizadas__:

<span style="font-family: Arial,sans-serif; font-size: 10pt;">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.

<span style="font-family: Arial,sans-serif; font-size: 10pt;">Un aspecto muy importante en el manejo de transacciones es el de mantener y aplicar algoritmos de control sobre los datos o recursos; para ese control también se utilizan protocolos que proporcionen confiabilidad como lo siguientes:

<span style="font-family: Arial,sans-serif; font-size: 10pt;">< Atomicidad

<span style="font-family: Arial,sans-serif; font-size: 10pt;">< Protocolos de recuperación total

<span style="font-family: Arial,sans-serif; font-size: 10pt;">< Protocolos de compromiso global

<span style="font-family: Arial,sans-serif; font-size: 10pt;">El control de las transacciones también requiere de controlar la concurrencia del acceso y uso hacia el recurso que se esta manipulando, ese control de concurrencia tiene dos objetivos:

<span style="font-family: Arial,sans-serif; font-size: 10pt;">< Como sincronizar la ejecución concurrente de transacciones

<span style="font-family: Arial,sans-serif; font-size: 10pt;">< Consistencia intra transacción (Aislamiento)

<span style="font-family: Arial,sans-serif; font-size: 10pt;">Para llevar a cabo el control de concurrencia dentro de un proceso de transacciones se manejan dos modos:

<span style="font-family: Arial,sans-serif; font-size: 10pt;">< Ejecución centralizada de transacciones (Figura B)

<span style="font-family: Arial,sans-serif; font-size: 10pt;">< Ejecución distribuida de transacciones (Figura C)
 * <span style="font-family: 'Times New Roman',serif; font-size: 10pt;">[[image:http://lopezbonilla.wikispaces.com/site/embedthumbnail/placeholder?w=351&h=288 width="351" height="288" caption="external image image004.gif"]]  ||
 * <span style="font-family: 'Times New Roman',serif; font-size: 10pt;">external image image004.gif  ||
 * //__<span style="font-family: Arial,sans-serif; font-size: 10pt;">Figura B. Ejecución centralizada de transacciones __//**<span style="font-family: Arial,sans-serif; font-size: 10pt;">.
 * <span style="font-family: 'Times New Roman',serif; font-size: 10pt;">[[image:http://lopezbonilla.wikispaces.com/site/embedthumbnail/placeholder?w=391&h=246 width="391" height="246" caption="external image image005.gif"]]  ||
 * <span style="font-family: 'Times New Roman',serif; font-size: 10pt;">external image image005.gif  ||
 * //__<span style="font-family: Arial,sans-serif; font-size: 10pt;">Figura C. Ejecución distribuida de transacciones __//**<span style="font-family: Arial,sans-serif; font-size: 10pt;">.

__<span style="color: blue; font-family: Arial,sans-serif; font-size: 10pt;">CONDICIONES DE TERMINACION DE UNA TRANSACCION __

<span style="font-family: Arial,sans-serif; font-size: 10pt;">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.


 * //__<span style="color: blue; font-family: Arial,sans-serif; font-size: 10pt;">TRANSACCIONES EN LOS SISTEMAS DE ARCHIVOS DISTRIBUIDOS __//**

<span style="font-family: Arial,sans-serif; font-size: 10pt;">Como alternativa a tener clientes que instalen bloqueos individuales, algunos servidores de archivos soportan acciones atómicas, a menudo llamadas transacciones. Cuando esta disponible esta facilidad, un cliente puede indicarle al servidor que comience una transacción, seguida por cualquier numero de aperturas y operaciones de archivos, y finalizar con un comando para terminar la transacción. El servidor debe ser capaz de llevar a cabo todos los pedidos efectuados de forma atómica (indivisible) sin interferencia de otros pedidos de clientes. Si el cliente decide abortar la transacción o finalizan sus temporizadores, todos los archivos son restaurados al estado anterior al comienzo de la transacción. Una transacción es cualquier operación de E/S sobre un archivo que modifica el contenido de un archivo existente del mismo. Esto incluye el agregar datos, cambiar el tamaño y sobrescribir datos existentes.

<span style="font-family: Arial,sans-serif; font-size: 10pt;">En una implementación, junto al archivo de datos existe el denominado **//transaction log file//** que mantiene la descripción de las modificaciones hechas sobre el archivo de datos y el mantenimiento de este archivo se llama **//transaction tracking.//** La operación denominada **//transaction rollback//** es aquella por la cual las alteraciones indicadas en el log se deshacen retornando los datos al estado previo (estado inicial), que se supone consistente.

<span style="font-family: Arial,sans-serif; font-size: 10pt;"> **//__Dentro de los objetivos de diseño de un sistema de transacciones se tienen__//**:

<span style="font-family: Arial,sans-serif; font-size: 10pt;"> **//< Minimizar la sobrecarga de los sistemas de archivos, < Identificar automáticamente las inconsistencias de datos. Una vez identificados debe producirse una operación rollback sin la intervención del usuario. Obviamente mientras se produce esta operación, debe negarse el acceso a los archivos potencialmente corruptos. < maximizar la portabilidad//**.

<span style="font-family: Arial,sans-serif; font-size: 10pt;"> **//La clave esta en la posibilidad de volver al punto de partida y, si corresponde, rehacer las operaciones.//**

<span style="font-family: Arial,sans-serif; font-size: 10pt;"> **//__Para ello debe disponerse de la siguiente informacion:__//**

<span style="font-family: Arial,sans-serif; font-size: 10pt;"> **//< Identificación completa y univoca del archivo de datos.//**

<span style="font-family: Arial,sans-serif; font-size: 10pt;"> **//< El modo y los permisos utilizados al abrir el archivo.//**

<span style="font-family: Arial,sans-serif; font-size: 10pt;"> **//< La ubicación de los datos modificados.//**

<span style="font-family: Arial,sans-serif; font-size: 10pt;"> **//< Una copia de los datos originales.//**

<span style="font-family: Arial,sans-serif; font-size: 10pt;"> **//< La descripción de la alteración que tuvo lugar.//**

<span style="font-family: Arial,sans-serif; font-size: 10pt;"> **//< Los datos con que se llevo a cabo tal modificación.//**