Universidad Nacional Experimental Politcnica De la Fuerza Armada Nacional UNEFA
BACHILLER: Isaac Gil. Amlcar Castillo. Jess Pea. Cesar Jimnez. Eduard Escobar. Jos Silva. Seccin: 8m1IS. Sistemas Avanzados de Base de Datos
Barquisimeto, 25 de Marzo del 2014 Transaccin: Definicin: Una transaccin es un conjunto de operaciones que van a ser tratadas como una nica unidad. Estas transacciones deben cumplir 4 propiedades fundamentales comnmente conocidas como ACID (atomicidad, coherencia, aislamiento y durabilidad). Una transaccin es una unidad de la ejecucin de un Programa que accede y posiblemente actualiza varios elementos de datos. Una transaccin se inicia por la ejecucin de un programa de usuario escrito en un lenguaje de manipulacin de datos de alto nivel o en un lenguaje de programacin (por ejemplo SQL, COBOL, C, C++ o Java), y est delimitado por instrucciones (o llamadas a funcin) de la forma inicio transaccin y fin transaccin. La transaccin consiste en todas las operaciones que se ejecutan entre inicio transaccin y el fin transaccin. La transaccin ms simple en SQL Server es una nica sentencia SQL. Por ejemplo una sentencia como esta: UPDATE Products SET UnitPrice=20 WHERE ProductName =Chai Es una transaccin. Esta es una transaccin autocommit, una transaccin autocompletada. Cuando enviamos esta sentencia al SQL Server se escribe en el fichero de transacciones lo que va a ocurrir y a continuacin realiza los cambios necesarios en la base de datos. Si hay algn tipo de problema al hacer esta operacin el SQL Server puede leer en el fichero de transacciones lo que se estaba haciendo y si es necesario puede devolver la base de datos al estado en el que se encontraba antes de recibir la sentencia. Por supuesto este tipo de transacciones no requieren de nuestra intervencin puesto que el sistema se encarga de todo. Sin embargo si hay que realizar varias operaciones y queremos que sean tratadas como una unidad tenemos que crear esas transacciones de manera explcita. Propiedades de las transacciones 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. Se dice que una operacin es atmica cuando es imposible para otra parte de un sistema encontrar pasos intermedios. Si esta operacin consiste en una serie de pasos, todos ellos ocurren o ninguno. Por ejemplo; Cuando realizamos una transaccin bancaria, es decir, en el momento en que estoy cancelando con mi tarjeta de dbito me descuentan el monto a cancelar y se reduce mi saldo anterior; en el caso que falle la transaccin no se reduce nada de mi saldo actual. Por lo tanto aunque se tenga el mismo objetivo no se ejecutara ya que se tiene que cumplir o no se cumple. Consistencia: Esta propiedad establece que solo los valores o datos vlidos sern escritos en la base de datos; si por algn motivo una transaccin que es ejecutada viola esta propiedad, se aplicar un rollback a toda transaccin dejando a las bases de datos en su estado de consistencia anterior. En caso de que la transaccin sea ejecutada con xito, la base de datos pasar de su estado de consistencia anterior a un nuevo estado de consistencia Por ejemplo; Al desarrollar una aplicacin que transfiere dinero de una cuenta a otra, hay una operacin de dbito 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 SMBD (sistema manejador de base de datos) cancela la operacin de dbito, y se ejecuta una restitucin (ROLLBACK) de la transaccin para obtener el estado consistente inicial. Aislamiento: Es la propiedad que asegura que una operacin no puede afectar a otras. Esto asegura que la realizacin de dos transacciones sobre la misma informacin sean independientes y no generen ningn tipo de error. Esta propiedad define cmo y cundo los cambios producidos por una operacin se hacen visibles para las dems operaciones concurrentes. Por ejemplo; El telfono es un medio de comunicacin que puedes llamar a un apersona y puedes mandar mensajes de texto a una persona. Si llamas no puedes mandar mensajes de texto y si mandas un texto no puedes llamar por lo que logro aislar las dos funciones una de la otra. Durabilidad: Es la propiedad de las transacciones que asegura que una vez finalizada su ejecucin, sus resultados son permanentes a pesar de otras consecuencias, como por ejemplo, si falla el disco duro el sistema an ser capaz de recordar todas las transacciones que han sido realizadas en el sistema. Por ejemplo; 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.
Estados de las transacciones: Una transaccin de este tipo se denomina abortada. Si se pretende asegurar la propiedad de atomicidad, una transaccin abortada no debe tener efecto sobre el estado de la base de datos. As, cualquier cambio que haya hecho la transaccin abortada sobre la base de datos debe deshacerse. Una vez que se han deshecho los cambios efectuados por la transaccin abortada, se dice que la transaccin se ha retrocedido. Parte de la responsabilidad del esquema de recuperaciones es gestionar las transacciones abortadas. Una transaccin que termina con xito se dice que est comprometida (commited), una transaccin que haya sido comprometida llevar a la base de datos a un nuevo estado consistente que debe permanecer incluso si hay un fallo en el sistema. Cuando una transaccin se ha comprometido no se pueden deshacer sus efectos abortndola. La nica forma de deshacer los cambios de una transaccin comprometida es ejecutando una transaccin compensadora. Por ejemplo, si una transaccin aade 20E a una cuenta, la transaccin compensadora debera restar 20E de la cuenta. Sin embargo, no siempre se puede crear dicha transaccin compensadora. Por tanto, se deja al usuario la responsabilidad de crear y ejecutar transacciones compensadoras, y no la gestiona el sistema de base de datos. Es necesario precisar qu se entiende por terminacin con xito de una transaccin. Se establece por tanto un modelo simple abstracto de transaccin. En cualquier momento una transaccin slo puede estar en uno de los siguientes estados. Activa (Active): el estado inicial; la transaccin permanece en este estado durante su ejecucin. Parcialmente comprometida (Uncommited): Despus de ejecutarse la ltima transaccin. Fallida (Failed): tras descubrir que no se puede continuar la ejecucin normal. Abortada (Rolled Back): despus de haber retrocedido la transaccin y restablecido la base de datos a su estado anterior al comienzo de la transaccin. Comprometida (Commited): tras completarse con xito.
Inicio de transaccin Cuando no hay ya una transaccin en progreso, y se ejecuta una sentencia LDD o LMD (interactivamente o dentro de una aplicacin) Cada sentencia LDD es tratada como una transaccin N No existe sentencia de tipo BEGIN TRANSACTION Fin de transaccin COMMIT: Finaliza la transaccin actual y hace permanentes (confirma) los cambios realizados ROLLBACK: Finaliza la transaccin actual y deshace los cambios realizados
Sentencia COMMIT Una sentencia COMMIT marca el final de una transaccin correcta, implcita o definida por el usuario. COMMIT hace que todas las modificaciones efectuadas sobre los datos desde el inicio de la transaccin sean parte permanente de la base de datos, y adems, libera los recursos mantenidos por la conexin. Su sintaxis es la siguiente: COMMIT COMMENT 'mensaje' | FORCE 'texto'] COMMENT sirve para comentar la transaccin en un mximo 255 caracteres. FORCE fuera de modo manual una transaccin dudosa y es de uso exclusivo en sistemas distribuidos de base de datos.
Sentencia SAVEPOINT Esta sentencia permite crear un punto de restauracin dentro de una transaccin, es decir, un punto al que podremos retroceder deshaciendo todo lo hecho deshaciendo todo lo hecho desde l en adelante. Su sintaxis es la siguiente SAVEPOINT nombrePuntoRestauracin; Sentencia ROLLBACK Seala el final sin xito de una transaccin, elimina todas las modificaciones de datos realizadas desde el inicio de la transaccin y tambin libera los recursos que retiene la transaccin. Su sintaxis es la siguiente: ROLLBACK [WORK] [TO SAVEPOINT nombrePuntoRestauracin | FORCE 'texto']; Una transaccin se dice que ha terminado si se ha comprometido o bien se ha abortado. Una transaccin comienza en el estado activa. Cuando acaba su ltima instruccin pasa al estado de parcialmente comprometida. En este punto la transaccin ha terminado su ejecucin, pero es posible que an tenga que ser abortada, puesto que los datos actuals pueden estar todava en la memoria principal y puede producirse un fallo en el hardware antes de que se complete con xito. El sistema de base de datos escribe en disco la informacin suficiente para que, incluso al producirse un fallo, puedan reproducirse los cambios hechos por la transaccin al reiniciar el sistema tras el fallo. Cuando se termina de escribir esta informacin, la transaccin pasa al estado comprometida. Una transaccin llega al estado fallida despus de que el sistema determine que dicha transaccin no puede continuar su ejecucin normal (por ejemplo, a causa de errores de hardware o lgicos). Una transaccin de este tipo se debe retroceder. Despus pasa al estado abortada. En este punto, el sistema tiene dos opciones: Reiniciar la transaccin, pero slo si la transaccin se ha abortado a causa de algn error hardware o software que no lo haya provocado la lgica interna de la transaccin. Una transaccin reiniciada se considera una nueva transaccin. Cancelar la transaccin. Normalmente se hace esto si hay algn error interno lgico que slo se puede corregir escribiendo de nuevo el programa de aplicacin, o debido a una entrada incorrecta o debido a que no se han encontrado los datos deseados en la base de datos.
Bibliografas Transacciones: Propiedades http://csrg.inf.utfsm.cl/~jfuentes/_build/html/lectures/week7/lecture26.html Base de datos propiedades ACID http://www.slideshare.net/jeferp/base-de-datos-propiedades-acid-15202600 Ejemplos ACID http://www.slideshare.net/jeferp/ejemplos-acid Definiciones ACID http://es.wikipedia.org/wiki/ACID Propiedades de la Transaccin http://www.prograweb.com.mx/tallerBD/0502Propiedades.html Transacciones en SQL Server http://www.monografias.com/trabajos16/transacciones/transacciones.shtml