INVESTIGACIÓN: UNIDAD 5 - TRANSACCIONES

March 29, 2018 | Author: César Manuel | Category: Databases, Technology, Computing, Data Management, Software


Comments



Description

INSTITUTO TECNOLÓGICO SUPERIOR DETAMAZUNCHALE CARRERA: INGENIERÍA EN SISTEMAS COMPUTACIONALES MATERIA: TALLER DE BASE DE DATOS UNIDAD V TEMA: INVESTIGACIÓN: UNIDAD 5 - TRANSACCIONES ALUMNO: CÉSAR MANUEL REYES 12ISC062 CATEDRÁTICO: ING. BRAULIO BAUTISTA LÓPEZ GRUPO: M1 SEMESTRE: FECHA DE ENTREGA: PERIODO: 5° TURNO: MATUTINO 28 DE NOVIEMBRE DEL 2014 AGOSTO 2014 – ENERO 2015 ...........................................................CONTENIDO INTRODUCCIÓN ........................................................ 3 5......4 NIVELES DE AISLAMIENTO ........................................................................ 19 ......................... 6 5......................................................................................................................................... 18 BIBLIOGRAFÍA ................................................................................................................2 PROPIEDADES DE LA TRANSACCIÓN ................................................... 9 5................................................................................. 4 5............................................................................. 7 5............................ .... 5 CONTROL DE TRANSACCIONES EN ORACLE ...................................3 GRADOS DE CONSISTENCIA ..1 CONCEPTOS BÁSICOS ....................................... 11 TRANSACCIONES EN SQL SERVER ......................................................................................................... 16 CONCLUSIONES ...................5 COMMIT Y ROLLBACK ................................ ........................................................................... 16 EJEMPLOS DONDE SE APLICAN..................................... 13 RECOMENDACIONES.............................................. es un conjunto de órdenes que se ejecutan formando una unidad para de esta manera poder trabajar. Dentro de esta investigación podremos ver con claridad que es y en que consiste este tema. El ejemplo más claro sobre el tema es la transferencia de cuentas bancarias. De igual manera se presentara unos ejemplos en código para ser comprendido de mejor manera.INTRODUCCIÓN En esta unidad cinto estaremos viendo el tema de transiciones en la materia de base de datos. porque se realizan de manera distinta porque en una aumenta y en la otra cuenta disminuye. . de una forma generalizada se puede decir que una transición es un conjunto de operaciones que se ejecutan como único bloque. o bien. el lenguaje de consulta de datos SQL (Structured Query Language). Cuando por alguna causa el sistema debe cancelar la transacción. es un conjunto de órdenes que se ejecutan formando una unidad de trabajo. El concepto de transacción se desarrolló para atender los casos en los que el estado resultante de la base de datos depende del éxito completo en una serie de operaciones. empieza a deshacer las órdenes ejecutadas hasta dejar la base de datos en su estado inicial (llamado punto de integridad). una transferencia de fondos en un banco). Para esto. haciendo que estas transacciones no puedan finalizar en un estado intermedio.5.  BEGIN TRAN: Especifica que va a empezar una transacción. Un SGBD se dice transaccional. Una transacción debe contar con ACID (un acrónimo inglés) que quiere decir: Atomicidad. debe cumplir con estos criterios (ACID). quitar fondos de una cuenta y añadírselos a otra) Una transacción en un Sistema de Gestión de Bases de Datos (SGBD). como si la orden de la transacción nunca se hubiese realizado. Consistencia. es decir. provee los mecanismos para especificar que un conjunto de acciones deben constituir una transacción. si es capaz de mantener la integridad de los datos. Desde el punto de vista de la base de datos estas operaciones pueden estar formadas por varias operaciones elementales (por ejemplo.  ROLLBACK TRAN: Indica que se ha alcanzado un fallo y que debe restablecer la base al punto de integridad.1 CONCEPTOS BÁSICOS Desde el punto de vista del usuario la interacción con la base de datos se lleva a cabo mediante operaciones con significado en el modelo semántico (por ejemplo. Entonces para que un Sistema de Gestión de Bases de Datos sea considerado Transaccional.  COMMIT TRAN: Le indica al motor que puede considerar la transacción completada con éxito. en forma indivisible o atómica. Aislamiento y Durabilidad. Este concepto vio la luz debido a que varias operaciones sucesivas pueden modificar el resultado . O todas las operaciones se ejecutan con éxito y se confirman (se escriben en la base de datos).2 PROPIEDADES DE LA TRANSACCIÓN Una unidad lógica de trabajo debe exhibir cuatro propiedades. 5. devuelve la BD a su estado anterior a empezar esa Tx rollback).etc.Programa . Begin Transaction . el estado resultante puede ser indeterminado. las transacciones agrupan una serie de operaciones de manera que es posible garantizar la integridad del resultado final.  Coherencia: Asegura que los datos que observamos no cambian (por otros usuarios) hasta que acabemos la Transacción.End Transaction Responsable: El método de recuperación.  Atomicity: Una Transacción (Tx) se ejecuta completamente ó de otra manera se eliminan los cambios parciales realizados. si un banco transfiere dinero desde la cuenta A a la cuenta B. Deshacer una transacción permite anular los cambios y recuperar el estado de la base de datos previo a la transacción. si alguna operación produce un error. Responsable: los programadores mediante la definición adecuada de la integridad referencial: check. conocidas como propiedades ACID (atomicidad. en una transacción bancaria automatizada.de operaciones anteriores. triggers. para ser calificada como transacción. de lo contrario la transacción entera debe cancelarse. foreign key. Después de terminar una Transacción la Base de datos no viola ninguna de sus reglas: valores obligatorios. la retirada de fondos de A y el depósito en B deben producirse con éxito para procesar los fondos correctamente. o toda la transacción se considera no realizada. Esquematizando el proceso de transacciones tenemos: O se ejecutan todas las operaciones que componen la transacción. coherencia. aislamiento y durabilidad). o no se realiza ninguna.… . de no completar todas las operaciones. La acción de cancelar una transacción se denomina deshacer la transacción. En esos casos. primary key. claves únicas. Para solucionar este problema. Por ejemplo. implícita o definida por el usuario. reglas. libera los recursos mantenidos por la conexión. los resultados deben ser los mismos que si ellas se hubieran ejecutado secuencialmente. COMMIT hace que todas las modificaciones efectuadas sobre los datos desde el inicio de la transacción sean parte permanente de la base de datos. Esto se conoce como seriabilidad debido a que su resultado es la capacidad de volver a cargar los datos iniciales y reproducir una serie de transacciones para finalizar con los datos en el mismo estado en que estaban después de realizar transacciones originales. si varias transacciones. protocolos  Durabilidad: Si el sistema falla no debe permitir que se pierdan las operaciones realizadas por Tx ya confirmadas. Su sintaxis es la siguiente: COMMIT COMMENT 'mensaje' | FORCE 'texto'] . se ejecutan concurrentemente. Responsable: el método o gestor de recuperación. Más aun. Aislamiento: Los efectos de una Tx no son visibles a otros usuarios mientras no se confirmen. CONTROL DE TRANSACCIONES EN ORACLE Inicio de transacción Cuando no hay ya una transacción en progreso. Responsable: el método de concurrencia: mecanismos. Una Transacción en ejecución no puede revelar sus resultados a otras transacciones concurrentes antes de finalizar. ROLLBACK: Finaliza la transacción actual y deshace los cambios realizados Sentencia COMMIT Una sentencia COMMIT marca el final de una transacción correcta. y además. y se ejecuta una sentencia LDD o LMD (interactivamente o dentro de una aplicación) Cada sentencia LDD es tratada como una transacción N No existe sentencia de tipo BEGIN TRANSACTION Fin de transacción COMMIT: Finaliza la transacción actual y hace permanentes (confirma) los cambios realizados. Pero la consistencia también puede perderse por razones de funcionamiento. FORCE fuera de modo manual una transacción dudosa y es de uso exclusivo en sistemas distribuidos de base de datos. Una transacción finalizada (confirmada parcialmente) puede no confirmarse definitivamente (consistencia). Su sintaxis es la siguiente SAVEPOINT nombrePuntoRestauración. Cuando se pierde la integridad también se pierde la consistencia.  Si se confirma definitivamente el sistema asegura la persistencia de los cambios que ha efectuado en la base de datos. un punto al que podremos retroceder deshaciendo todo lo hecho deshaciendo todo lo hecho desde él en adelante.COMMENT sirve para comentar la transacción en un máximo 255 caracteres.  Si se anula los cambios que ha efectuado son deshechos. La ejecución de una transacción debe conducir a un estado de la base de datos consistente (que cumple todas las restricciones de integridad definidas). Sentencia ROLLBACK Señala el final sin éxito de una transacción. elimina todas las modificaciones de datos realizadas desde el inicio de la transacción y también libera los recursos que retiene la transacción. es decir. Sentencia SAVEPOINT Esta sentencia permite crear un punto de restauración dentro de una transacción. Su sintaxis es la siguiente: ROLLBACK [WORK] [TO SAVEPOINT nombrePuntoRestauración | FORCE 'texto']. .3 GRADOS DE CONSISTENCIA Consistencia es un término más amplio que el de integridad. Podría definirse como la coherencia entre todos los datos de la base de datos. 5.  Si se confirma definitivamente el sistema asegura la persistencia de los cambios que ha efectuado en la base de datos.  Abortada (Rolled Back): después de haber retrocedido la transacción y restablecido la base de datos a su estado anterior al comienzo de la transacción. Una transacción que termina con éxito se dice que está comprometida (commited).  Algoritmos de control de concurrencia. la transacción permanece en este estado durante su ejecución.  Comprometida (Commited): tras completarse con éxito. Los algoritmos de control de datos semántico tienen que satisfacer siempre las restricciones de integridad cuando una transacción pretende hacer un commit.  Consistencia de la base de datos interna. Es importante considerar si las transacciones son planas o pueden estar anidadas. En transacciones distribuidas es necesario introducir medios de comunicación entre los diferentes nodos de una red para garantizar la atomicidad y durabilidad de las transacciones. Si se anula los cambios que ha efectuado son deshechos.  Protocolos de confiabilidad.  Activa (Active): el estado inicial. En cualquier momento una transacción sólo puede estar en uno de los siguientes estados.  Fallida (Failed): tras descubrir que no se puede continuar la ejecución normal. se requieren protocolos para la recuperación local y para efectuar los compromisos (commit) globales. Los algoritmos de control de concurrencia deben sincronizar la ejecución de transacciones concurrentes bajo el criterio de .  Parcialmente comprometida (Uncommited): Después de ejecutarse la última transacción. una transacción 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. Aspectos relacionados al procesamiento de transacciones Los siguientes son los aspectos más importantes relacionados con el procesamiento de transacciones:  Modelo de estructura de transacciones. Así también. 4 NIVELES DE AISLAMIENTO Las transacciones especifican un nivel de aislamiento que define el grado en que se debe aislar una transacción de las modificaciones de recursos o datos realizadas por otras transacciones. como las lecturas de datos sucios o las lecturas fantasmas Los niveles de aislamiento de las transacciones controlan lo siguiente:  Si se realizan bloqueos cuando se leen los datos y qué tipos de bloqueos se solicitan. independientemente del nivel de aislamiento seleccionado para la misma.  Protocolos de control de réplicas. o Lee la modificación de los datos no confirmada. 5.  Si una operación de lectura que hace referencia a filas modificadas por otra transacción: o Se bloquea hasta que se libera el bloqueo exclusivo de la fila. En el caso de las operaciones de lectura. El control de réplicas se refiere a cómo garantizar la consistencia mutua de datos replicados. Por ejemplo se puede seguir la estrategia read-one-write-all (ROWA).  Duración de los bloqueos de lectura. o Recupera la versión confirmada de la fila que existía en el momento en el que se inició la instrucción o la transacción. Siempre se obtiene un bloqueo exclusivo en los datos modificados de una transacción. bloqueo que se mantiene hasta que se completa la transacción. La selección de un nivel de aislamiento de transacción no afecta a los bloqueos adquiridos para proteger las modificaciones de datos. Los niveles de aislamiento se describen en función de los efectos secundarios de la simultaneidad que se permiten. La consistencia entre transacciones se garantiza mediante el aislamiento de las mismas. los niveles de aislamiento de transacción definen básicamente el nivel de protección contra los efectos de las modificaciones que realizan otras transacciones.correctitud. . En este nivel se pueden producir todos los efectos secundarios de simultaneidad. Para utilizar el nuevo nivel de aislamiento de instantánea de SQL Server 2005. puede utilizar el método de setTransactionIsolation de la clase SQLServerConnection. Si las dos transacciones actualizan las filas con una única instrucción UPDATE y no basan la actualización en los valores recuperados previamente. pero requiere más recursos del sistema y aumenta las posibilidades de que una transacción bloquee a otra.setTransactionIsolation(Connection.Las transacciones se deben ejecutar en un nivel de aislamiento de lectura repetible. y a continuación la actualizan según los valores recuperados originalmente. Por el contrario. El nivel de aislamiento apropiado depende del equilibrio entre los requisitos de integridad de los datos de la aplicación y la sobrecarga de cada nivel de aislamiento. con. que es serializable. Este método acepta un valor int como argumento. . Para establecer el nivel de aislamiento para una transacción. El nivel de aislamiento superior. según se muestra a continuación: Un nivel de aislamiento menor significa que los usuarios tienen un mayor acceso a los datos simultáneamente.TRANSACTION_SNAPSHOT). El nivel de aislamiento menor. según se muestra a continuación: con. aunque para ello aplicará un nivel de bloqueo que puede afectar a los demás usuarios en los sistemas multiusuario. un nivel de aislamiento mayor reduce los tipos de efectos de simultaneidad. pero no hay bloqueos ni versiones de lectura. que se basa en una de las constantes de conexión.setTransactionIsolation(SQLServerConnection. como las lecturas de datos sucios o la pérdida de actualizaciones. la pérdida de las actualizaciones no puede producirse en el nivel de aislamiento predeterminado de lectura confirmada. puede utilizar una de las constantes SQLServerConnection. al menos. puede recuperar datos que otras transacciones han modificado pero no confirmado. con lo que aumentan los efectos de la simultaneidad que pueden experimentar. para evitar las pérdidas de actualizaciones que pueden producirse cuando dos transacciones recuperan la misma fila.TRANSACTION_READ_COMMITTED). por lo que la sobrecarga se reduce. de lectura sin confirmar. garantiza que una transacción recuperará exactamente los mismos datos cada vez que repita una operación de lectura. Las filas afectadas por las operaciones de un usuario ( INSERT. sólo el usuario que está realizando las modificaciones podrá ver el efecto que están surtiendo sobre las tablas afectadas. el resto de los usuarios verán la información antigua ( la existente en el segmento de Rollback ). MySQL almacena la actualización en disco. Tras deshabilitar el modo autocommit poniendo la variable AUTOCOMMIT a cero. COMMIT: Hasta que no se realiza un COMMIT.5 COMMIT Y ROLLBACK MySQL se ejecuta con el modo autocommit activado. Si usa tablas transaccionales (como InnoDB o BDB).TRANSACTION_READ_COMMITTED + 4094).o podemos utilizar: con. UPDATE. Esto ofrece una gran ventaja cuando se usan estructuras lógicas del tipo if-then- . 5. puede desactivar el modo autocommit con el siguiente comando: SET AUTOCOMMIT=0.setTransactionIsolation(Connection. El COMMIT afecta sólo a la transacción del usuario que ejecuta el COMMIT ( no afecta a transacciones de otros usuarios ). Esto significa que encuanto ejecute un comando que actualice (modifique) una tabla. DELETE ) son bloqueadas. Otros usuarios no pueden acceder a dichas filas hasta que no finalice la transacción. ROLLBACK: Una sentencia ROLLBAC (al igual que un COMMIT) puede ser usado en un subprograma PL / SQL. debe usar COMMIT para almacenar los cambios en disco o ROLLBACK si quiere ignorar los cambios hechos desde el comienzo de la transacción. El modo autocommit vuelve a su estado previo. Ejemplos: START TRANSACTION: START TRANSACTION. autocommit permanece deshabilitado hasta el final de la transaccióncon COMMIT o ROLLBACK. puesto que permiten modificar y borrar información de forma condicional en base a condiciones en tiempo de ejecución.else. SELECT @A:=SUM(salary) FROM table1 WHERE type=1. COMMIT Con START TRANSACTION. . UPDATE table2 SET summary=@A WHEREtype=1. Si no somos capaces de abonar el dinero en la cuenta de destino. SQL Server funciona por defecto con Transacciones de confirmación automática. Sobre el ejemplo anterior de la transferencia bancaria. no debemos quitarlo de la cuenta de origen. en la que quitamos saldo a una cuenta y lo añadimos en otra.TRANSACCIONES EN SQL SERVER El ejemplo clásico de transacción es una transferencia bancaria.2).@importe . cada instrucción individual es una transacción y se confirma automáticamente. es decir. un script debería realizar algo parecido al siguiente: DECLARE @importe DECIMAL(18. @CuentaDestino VARCHAR(12) /* Asignamos el importe de la transferencia * y las cuentas de origen y destino */ SET @importe = 50 SET @CuentaOrigen = '200700000001' SET @CuentaDestino = '200700000002' /* Descontamos el importe de la cuenta origen */ UPDATE CUENTAS SET SALDO = SALDO . @CuentaOrigen VARCHAR(12). SALDO. SALDO_ANTERIOR. SALDO + @importe. FXMOVIMIENTO) SELECT . SALDO_POSTERIOR. FXMOVIMIENTO) SELECT IDCUENTA. @importe. getdate() FROM CUENTAS WHERE NUMCUENTA = @CuentaOrigen /* Incrementamos el importe de la cuenta destino */ UPDATE CUENTAS SET SALDO = SALDO + @importe WHERE NUMCUENTA = @CuentaDestino /* Registramos el movimiento */ INSERT INTO MOVIMIENTOS (IDCUENTA. SALDO_ANTERIOR. IMPORTE. IMPORTE. SALDO_POSTERIOR.WHERE NUMCUENTA = @CuentaOrigen /* Registramos el movimiento */ INSERT INTO MOVIMIENTOS (IDCUENTA. ya que cada instrucción se ejecutaría y confirmaría de forma independiente. getdate() FROM CUENTAS WHERE NUMCUENTA = @CuentaDestino Esta forma de actuar seria errónea. --Activamos el modo de transacciones implicitas SET IMPLICIT_TRANSACTIONS ON --Desactivamos el modo de transacciones implicitas SET IMPLICIT_TRANSACTIONS OFF .@importe. por lo que un error dejaría los datos erróneos en la base de datos ( ¡y ese es el peor error que nos podemos encontrar! ) Transacciones implícitas y explicitas Para agrupar varias sentencias Transact SQL en una única transacción. Para activar-desactivar el modo de transacciones implícitas debemos ejecutar la siguiente instrucción.IDCUENTA. SALDO. pero cada transacción se completa explícitamente con una instrucción COMMIT o ROLLBACK. disponemos de los siguientes métodos:  Transacciones explícitas: Cada transacción se inicia explícitamente con la instrucción BEGIN TRANSACTION y se termina explícitamente con una instrucción COMMIT o ROLLBACK.  Transacciones implícitas: Se inicia automátivamente una nueva transacción cuando se ejecuta una instrucción que realiza modificaciones en los datos. SALDO . @importe. Pueden ser utilizadas con más frecuencia en bancos.RECOMENDACIONES. y que los cambios sean realizados hasta que escribamos la sentencia que mencionamos. SQL SERVER y ORACLE entre otros. esta la gran opción de usar MY SQL que es libre y muy fácil de usar para todo aquel que desea manejar información. El concepto de transacción va enfocado a que al ejecutar dicha sentencia no suceda nada. es sinónimo de ser confiable al trabajar en nuestra base de datos. Un ejemplo . la esencia de las consultas y las sintaxis que son usadas pueden aplicar en cualquiera de estas. En cuanto a SQL SERVER es un entorno muy particular de Microsoft. la idea es que usar alguna sentencia sin afectar nada sino hasta que nosotros lo indiquemos con la sentencia COMMIT. una de las complicaciones que podemos tener quizá sea el entorno de trabajo ya que hace se realizan otros pasión pero la lógica de las consultas son las mismas y por otro lado seria la compatibilidad. Hemos visto ya muchas explicaciones acerca de lo que son las transacciones y concepto aplicado en base de datos. En cuanto a los manejadores de base de datos tenemos MY SQL. Actualmente ORACLE es uno de los gestores de base de datos con mucho renombre que posee una gran seguridad y una amplia gama de información y soporte de parte de sus desarrolladores ya que es de paga. sin duda. solo es cuestión de saber en cuál de ellos nos podemos acoplar y trabajar libremente. En todos estas opciones que puedo presentar se puede aplicar lo de transacciones. asegurando que un conjunto de sentencias se ejecuten correctamente. o no se ejecuten. EJEMPLOS DONDE SE APLICAN. Las transacciones sirven para asegurar la consistencia de la información. si deseamos trabajar sin complicaciones de licencias y todo ello. en vez de quedar con el mismo saldo. ya que el usuario 2 actualiza el registro con información vieja..usuario 1 UPDATE cuentas SET balance=(bal2-10) WHERE cuenta=X -.Supongamos que un sitio web bancario tiene 2 usuarios. la cuenta termina perdiendo 10. Al final. . por ejemplo) El programador del sistema no puede decidir el orden en el que se ejecutarán las consultas. Supongamos que ambas necesitan actualizar el valor en la base de datos: UPDATE cuentas SET balance=(bal1+10) WHERE cuenta=X -.usuario 1 bal2 := ... mientras que el usuario 2 pide disminuirlo (a través de un formulario. por lo que el resultado final es como si la consulta del usuario 1 no se hubiera ejecutado nunca. SELECT balance FROM cuentas WHERE cuenta=X -. ambos trabajando sobre la misma cuenta.usuario 2 El resultado es que ambas copias del programa ejecutaron sus consultas con la información de balance que tenían. así que bien podría suceder lo siguiente: bal1 := .usuario 2 En este punto. SELECT balance FROM cuentas WHERE cuenta=X -.. existen dos copias de la aplicación que contienen una variable $balance cada una. El usuario 1 pide incrementar su saldo en 10. CONCLUSIONES Después de toda esta información obtenida podemos hacer un énfasis un tanto clara de lo que es las transacciones. basándonos en consultas simples o de un grado que presente complejidad. logrando operaciones como el ingreso. actualización y visualizar. que podemos denominar ya como un conjunto do ordenes que se ejecuten para de esta manera formar una unidad de trabajo. . borrado. En otras palabras también podemos definir a la transacción como un conjunto de acciones que se llevan a cabo por algún usuario o algún programa de aplicación que pueden acceder al contenido de la base de datos. Con esto se puede realizar cualquier tipo de operaciones en una base de datos. Podemos tener beneficios en lograr acciones sobre la base de datos en la que deseamos aplicar. blogspot.BIBLIOGRAFÍA http://es.com/es-es/library/aa833147%28v=vs.desarrolloweb.microsoft.90%29.net/Thekavenet/transacciones-en-mysql http://www.wordpress.com/contenidos/articulos/292/Transacciones-en-Transact-SQL.microsoft.com/articulos/control-transacciones-oracle.com/2008/01/10/transacciones-en-mysql/ .devjoker.com/en-us/server-cloud/products/sql-server/ http://mauricio-iso20000.slideshare.mx/p/unidad-4-manejo-de-transacciones.blogspot.html http://msdn.html http://lopez-garcia-victor.mx/2012/10/unidad-v-transacciones.pdf http://es.mx/recursositics/4semestre/tallerdebasededatos/Unidad%20V.net/dantoniocruz/transacciones-27511077 http://www.wikipedia.aspx http://mundobyte.aspx http://dsc.org/wiki/Transacci%C3%B3n_%28base_de_datos%29 http://www.html http://es.aspx http://www.com/contenidos/articulos/292/Transacciones-en-Transact-SQL.slideshare.itpn.devjoker.
Copyright © 2024 DOKUMEN.SITE Inc.