transaciones de programacion

Upload: jesus

Post on 20-Feb-2018

219 views

Category:

Documents


0 download

TRANSCRIPT

  • 7/24/2019 transaciones de programacion

    1/47

    TransaccionesUnidad 5

    INSTITUTOTECNOLGICODE

    CIUDADMADERO

    Dase de Datos

  • 7/24/2019 transaciones de programacion

    2/47

    EQUIPO 4Integrantes:

    Gema Patricia Galicia Santos

    Daniel Antonio Cruz

    Manuel Cruz Daz

  • 7/24/2019 transaciones de programacion

    3/47

    5.1 CONCEPTOS BSICOS

    Transaccin

    La transaccin en un Sistema de Gestin de Bases de

    Datos (SGBD), es un conjunto de rdenes que se ejecutan

    formando una unidad de trabajo, es decir, en formaindivisible o atmica.

  • 7/24/2019 transaciones de programacion

    4/47

    TRANSACCIN

    Una transaccin es un conjunto de acciones llevadas a

    cabo por un usuario o un programa de aplicacin, que

    acceden o cambian el contenido de la base de datos.

  • 7/24/2019 transaciones de programacion

    5/47

    TransaccinLas transacciones representan eventos del mundo real,

    como:

    Ejemplo

  • 7/24/2019 transaciones de programacion

    6/47

    1. Datos que utiliza la transaccin.

    2. Caractersticas funcionales de la transaccin.

    3. Salida de la transaccin.

    4. Importancia para los usuarios.

    5. Frecuencia de utilizacin.

    Las caractersticas que se debe recoger de cada

    transaccin son las siguientes:

  • 7/24/2019 transaciones de programacion

    7/47

    Hay tres tipos de transacciones:

    1. En las transacciones de recuperacin se accede a los datospara visualizarlos en la pantalla a modo de informe.

    2. En las transacciones de actualizacin se insertan, borran o

    actualizan datos de la base de datos.

    3. En las transacciones mixtas se mezclan operaciones derecuperacin de datos y de actualizacin.

  • 7/24/2019 transaciones de programacion

    8/47

    5.2 PROPIEDADES DE LASTRANSACCIONES

    Las transacciones deben cumplir cuatro propiedades ACID:

    1. Atomicidad (Atomicity)2. Consistencia (Consistency)3. Aislamiento (Isolation)4. Permanencia (Durability):

  • 7/24/2019 transaciones de programacion

    9/47

    1. Atomicidad (Atomicity): es la propiedad que asegura que laoperacin se ha realizado o no, y por lo tanto ante un fallo delsistema no puede quedar a medias.

    2. Consistencia (Consistency): es la propiedad que asegura que

    slo se empieza aquello que se puede acabar. Por lo tanto, seejecutan aquellas operaciones que no van a romper la reglas y

    directrices de integridad de la base de datos.

    Propiedades de las Transacciones

  • 7/24/2019 transaciones de programacion

    10/47

    3. Aislamiento (Isolation): es la propiedad que asegura que unaoperacin no puede afectar a otras. Esto asegura que la

    realizacin de dos transacciones sobre la misma informacin

    nunca generar ningn tipo de error.

    4. Permanencia (Durability): es la propiedad que asegura queuna vez realizada la operacin, sta persistir y no se podr

    deshacer aunque falle el sistema.

    Nota: Si la transaccin no se puede finalizar por cualquier motivo, el SGBD

    garantiza que los cambios realizados por esta transaccin son deshechos

    Propiedades de las Transacciones

  • 7/24/2019 transaciones de programacion

    11/47

    En cualquier momento una transaccin slo puede estar en uno de

    los siguientes estados.

    1. Activa (Active): el estado inicial; la transaccin permanece eneste estado durante su ejecucin.

    2. Parcialmente comprometida (Uncommited): Despus deejecutarse la ultima transaccin.

    3. Fallida (Failed): tras descubrir que no se puede continuar laejecucin normal.

    4. Abortada (Rolled Back): despus de haber retrocedido la

    transaccin y restablecido la base de datos a su estado anterioral comienzo de la transaccin.

    5. Comprometida (Commited): tras completarse con xito.

    ESTADOS DE UNA TRANSACCIN

  • 7/24/2019 transaciones de programacion

    12/47

    Diagrama de estados de una transaccin:

  • 7/24/2019 transaciones de programacion

    13/47

    5.3 GRADOS DE

    CONSISTENCIA

    Consistencia es un trmino ms amplio que el de integridad. Podra

    definirse como la coherencia entre todos los datos de la base de

    datos.

    Cuando se pierde la integridad tambin se pierde la consistencia.Pero la consistencia tambin puede perderse por razones de

    funcionamiento.

  • 7/24/2019 transaciones de programacion

    14/47

    Una transaccin mantendr la consistencia de la base de datos.Esto es, si la base de datos se encuentra en un estado consistente

    antes de ejecutar la transaccin, una vez que sta termine la

    consistencia de la base de datos deber conservarse. Por

    consistente se debe entender, internamente consistente.

    Consistencia de datos: Eliminando o controlando lasredundancias de datos se reduce en gran medida el riesgo de que

    haya inconsistencias. Si un dato est almacenado una sola vez,

    cualquier actualizacin se debe realizar slo una vez, y est

    disponible para todos los usuarios inmediatamente. Si un dato

    est duplicado y el sistema conoce esta redundancia, el propio

    sistema puede encargarse de garantizar que todas las copias se

    mantienen consistentes.

    5.3 GRADOS DE CONSISTENCIA

  • 7/24/2019 transaciones de programacion

    15/47

    En trminos de base de datos esto significa que se satisfacen todas

    las restricciones en cuanto a su integridad que incluyen: Todos los valores de la llave primaria son nicos.

    La base de datos mantiene integridad referencial lo que significa

    que los registros solo referencian informacin que existe.

    Ciertos predicados se mantienen. Por ejemplo, la suma de los

    gastos es menor o igual al presupuesto. A diferencia de la atomicidad, el aislamiento y la durabilidad, la

    consistencia es una prctica de programacin. La atomicidad, el

    aislamiento y la durabilidad estn aseguradas estn o no

    programadas para preservar la consistencia. Es responsabilidad

    del desarrollador de la aplicacin asegurar que su programapreserva la consistencia.

    5.3 GRADOS DE CONSISTENCIA

  • 7/24/2019 transaciones de programacion

    16/47

    Una transaccin finalizada (conf irmada parcialmente) puede no

    confirmarse definitivamente (consistencia).

    Si se confirma definitivamente el sistema asegura la persistencia

    de los cambios que ha efectuado en la base de datos.

    Si se anula los cambios que ha efectuado son deshechos.

    La ejecucin de una transaccin debe conducir a un estado de la

    base de datos consistente (que cumple todas las restricciones deintegridad definidas).

    Si se confirma definitivamente el sistema asegura lapersistencia de los cambios que ha efectuado en la base de

    datos.

    Si se anula los cambios que ha efectuado son deshechos.

    5.3 GRADOS DE CONSISTENCIA

  • 7/24/2019 transaciones de programacion

    17/47

    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 permanecerincluso si hay un fallo en el sistema

  • 7/24/2019 transaciones de programacion

    18/47

    5.4 Niveles deAislamiento

  • 7/24/2019 transaciones de programacion

    19/47

    Qu es Aislamiento?

    En bases de datos, el aislamientoes una propiedad que

    define cmo y cundo los cambios producidos por unaoperacin se hacen visibles para las dems operaciones

    concurrentes. Aislamiento es una de las 4 propiedades

    ACID (Atomicidad, Consistencia, Aislamiento,

    Durabilidad) aplicables a una base de datos

    transaccional.

  • 7/24/2019 transaciones de programacion

    20/47

    Niveles de Aislamiento De las cuatro propiedades ACID de un Sistema de gestin

    de bases de datos relacionales (SGBDR) la de aislamiento

    es la que ms frecuentemente se relaja. Para obtener el

    mayor nivel de aislamiento, un SGBDR generalmentehace un bloqueo de los datos o implementa un Control de

    concurrencia mediante versiones mltiples (MVCC), lo

    que puede resultar en una prdida de concurrencia. Por

    ello se necesita aadir lgica adicional al programa queaccede a los datos para su funcionamiento correcto

  • 7/24/2019 transaciones de programacion

    21/47

    SERIALIZABLE

    Este es el nivel de aislamiento ms alto. Especifica que

    todas las transacciones ocurran de modo aislado, o

    dicho de otro modo, como si todas las transacciones seejecutaran de modo serie (una tras otra). La sensacin

    de ejecucin simultnea de dos o ms transacciones que

    perciben los usuarios sera una ilusin producida por el

    SGBD.

    LECTURAS COMPROMETIDAS

  • 7/24/2019 transaciones de programacion

    22/47

    LECTURAS COMPROMETIDAS(READ COMMITTED)

    En este nivel de aislamiento, un SGBDR que implemente

    el control de concurrencia basado en bloqueos mantiene

    los bloqueos de escritura -de los datos seleccionados -

    hasta el final de la transaccin, mientras que los bloqueos

    de lectura se cancelan tan pronto como acaba la operacin

    de SELECT (por lo que el efecto de las lecturas no

    repetiblespuede ocurrir, como se explica ms abajo). Al

    igual ocurra en el nivel anterior, no se gestionanlos bloqueos de rango.

  • 7/24/2019 transaciones de programacion

    23/47

    LECTURAS NOCOMPROMETIDAS (READUNCOMMITTED)

    Este es el menor nivel de aislamiento. En l se permiten

    las lecturas sucias(ver ms abajo), por lo que una

    transaccin pude ver cambios no cometidos an por otra

    transaccin.

    Ni l d i l i

  • 7/24/2019 transaciones de programacion

    24/47

    Nivel de aislamiento pordefecto

    El nivel de aislamiento por defecto de distintos SGBDR

    vara ampliamente. La mayora de bases de datos que

    gestionan transacciones permiten al usuario establecer

    cualquier nivel de aislamiento. Algunos SGBDR

    requieren sintaxis especial cuando se realiza una

    operacin SELECT que efecta bloqueos (e.g.SELECT ...

    FOR UPDATEpara bloquear para escritura aqullas filasaccedidas)

  • 7/24/2019 transaciones de programacion

    25/47

    5.5 Commit y

    Rollback

  • 7/24/2019 transaciones de programacion

    26/47

    Qu es commit?

    En el contexto de la Ciencia de la computacin y

    la gestin de datos, commit(accin de comprometer) serefiere a la idea de consignar un conjunto de cambios

    "tentativos, o no permanentes". Un uso popular es al

    final de una transaccin de base de datos.

  • 7/24/2019 transaciones de programacion

    27/47

    En SQL finaliza una transaccin de base de datos dentro de

    un sistema gestor de base de datos relacional (RDBMS) y

    pone visibles todos los cambios a otros usuarios. El formato

    general es emitir una sentencia BEGIN WORK, una o ms

    sentencias SQL, y entonces la sentencia COMMIT.Alternativamente, una sentencia ROLLBACK se puede

    emitir, la cual deshace todo el trabajo realizado desde que se

    emiti BEGIN WORK. Una sentencia COMMIT publicar

    cualquiera de los savepoints (puntos de recuperacin)

    existentes que puedan estar en uso.

    Una sentencia COMMIT

    http://es.wikipedia.org/wiki/Savepointhttp://es.wikipedia.org/wiki/Savepoint
  • 7/24/2019 transaciones de programacion

    28/47

    En trminos de transacciones, lo opuesto de commit

    para descartar los cambios "en tentativa" de una

    transaccin, es un rollback.

    Nota:

    http://es.wikipedia.org/wiki/Rollbackhttp://es.wikipedia.org/wiki/Rollback
  • 7/24/2019 transaciones de programacion

    29/47

    Qu es rollback? En tecnologas de base de datos, un rollbackes una operacin

    que devuelve a la base de datos a algn estado previo. LosRollbacks son importantes para la integridad de la base dedatos, a causa de que significan que la base de datos puede ser

    restaurada a una copia limpia incluso despus de que se hanrealizado operaciones errneas.

    Son cruciales para la recuperacin de crashes de un servidorde base de datos; realizando rollback(devuelto) cualquiertransaccin que estuviera activa en el tiempo del crash, la basede datos es restaurada a un estado consistente.

  • 7/24/2019 transaciones de programacion

    30/47

    En SQL, ROLLBACK es un comando que causa que

    todos los cambios de datos desde la ltimasentencia BEGIN WORK, o START

    TRANSACTION sean descartados por el sistema de

    gestin de base de datos relacional (RDBMS), para que el

    estado de los datos sea "rolled back"(devuelto) a la forma

    en que estaba antes de que aquellos cambios tuvieran

    lugar.

  • 7/24/2019 transaciones de programacion

    31/47

    Ejemplo:

    Transacciones

  • 7/24/2019 transaciones de programacion

    32/47

    5.5 COMMIT Y ROLLBACK

    COMMITEsta instruccin de SQL se utiliza para confirmar como permanentes las

    modificaciones realizadas en una transaccin.

    Begin tranInsert into Mvtos Values (0150, Dep, 1500, 08-10-2008)Insert into Mvtos Values (7120, Ret, 1500, 08-10-2008)Update Cuentas Set Saldo = Saldo + 1 where Numero = 0150Update Cuentas Set Saldo = Saldo1 Where Numero = 7120

    Commit tran

    Con la instruccin commit tran se pone una marca para saber hasta que punto sehizo la transaccin.

  • 7/24/2019 transaciones de programacion

    33/47

    Por defecto, MySQL se ejecuta con el modo autocommit activado. Esto significa que encuanto ejecute un comando que actualice (modifique) una tabla, MySQL almacena laactualizacin en disco.

    Desactiva el comando autocommit SET AUTOCOMMIT=0;

    Tras deshabilitar el modo autocommit debe usar COMMIT para almacenar los cambios endisco o ROLLBACK si quiere ignorar los cambios hechos desde el comienzo de latransaccin.

    Si quiere deshabilitar el modo autocommit para una serie nica de comandos, puede usar el

    comando START TRANSACTION: START TRANSACTION;

    SELECT @A:=SUM(salary)

    FROM table1

    WHERE type=1;

    UPDATE table2 SET summary=@A WHERE type=1;

    COMMIT;

    Con START TRANSACTION, autocommit permanece deshabilitado hasta el final de latransaccin con COMMIT o ROLLBACK. El modo autocommit vuelve a su estado previo.

  • 7/24/2019 transaciones de programacion

    34/47

    Veremos un ejemplo completo, donde utilizaremos START TRANSACTION (no es necesarioAUTOCOMMIT en 0)

    CREATE TABLE `departamentos` (

    `CODIGO` INTEGER(11) NOT NULL DEFAULT 0,`NOMBRE` VARCHAR(100),`PRESUPUESTO` INTEGER(11) DEFAULT NULL,PRIMARY KEY (`CODIGO`))ENGINE=InnoDB

    Ahora, insertaremos registros de la tabla departamentos_externos a departamentos mediante unatransaccin:

    START TRANSACTION;SELECT @A := presupuesto

    FROM departamentos_externosWHERE cdigo =11;INSERT INTO departamentos( cdigo, nombre, presupuesto )VALUES ( 11, Department test, @A );COMMIT; // para aceptar la transaccionROLLBACK;//si quieres cancelar la transaccion

    En el ejemplo anterior se guardo el presupuesto del departamento externo 11 en la variable @A y luego fueasignado al presupuesto en la tabla departamentos.

    Al realizar una transaccin SQL hay que tener en cuenta que apenas se realice un INSERT, UPDATE oDELETE se genera un bloqueo sobre la tabla y que otros clientes no pueden acceder para escribir esta tabla.Otros clientes podrn realizar SELECTs sobre la tabla, pero no podrn ver los datos del primer cliente hastaque los mismos sean confirmados.

  • 7/24/2019 transaciones de programacion

    35/47

    ROLLBACK Esta funcin del SQL se utiliza para deshacer todas las

    modificaciones realizadas desde la ltima confirmacin.

    EjemploBegin tran

    Save tran Puntoseg

    If @@ERROR 0Rollback tran Puntoseg (cancela todo desde aqu hasta el punto deguardado)

    ElseCommit tran

  • 7/24/2019 transaciones de programacion

    36/47

    Veamos un ejemplo.

    Disponemos de la tabla EMPLE, que est formada por los

    campos que se muestran en la imagen.

  • 7/24/2019 transaciones de programacion

    37/47

    A continuacin comenzamos una

    transaccin con START

    TRANSACTION.

    Modificamos el salario de todos los empleados de la tabla EMPLE,

    con la siguiente sentencia SQL.

    update emple set salario=1000;

  • 7/24/2019 transaciones de programacion

    38/47

    Y comprobamos a continuacin que la tabla vuelve a su estado original.

    Si queremos validar los cambios en la base de datos, completaremos la transaccin

    con el uso de la sentencia COMMIT. Si ejecutamos ROLLBACK justo despus de

    hacer el COMMIT, los cambios realizados sobre la base de datos permanecern,

    debido a que anteriormente se valid la transaccin, as que una ves utilizada la

    sentencia COMMIT ya no puedes usar ROLLBACK.

  • 7/24/2019 transaciones de programacion

    39/47

    Observamos a continuacin

    que se ha modificado el

    salario de todos losempleados

    Deshacemos el trabajo ya que nos

    hemos equivocado. Para ello

    utilizamos la sentencia ROLLBACK.

  • 7/24/2019 transaciones de programacion

    40/47

    Comandos Utilizados

  • 7/24/2019 transaciones de programacion

    41/47

    Comandos Utilizados

  • 7/24/2019 transaciones de programacion

    42/47

    Comandos Utilizados

  • 7/24/2019 transaciones de programacion

    43/47

    Comandos Utilizados

  • 7/24/2019 transaciones de programacion

    44/47

    Comandos Utilizados

  • 7/24/2019 transaciones de programacion

    45/47

    Comandos Utilizados

  • 7/24/2019 transaciones de programacion

    46/47

    Comandos Utilizados

  • 7/24/2019 transaciones de programacion

    47/47

    Bibliografa: http://es.wikipedia.org/wiki/ACID

    http://es.wikipedia.org/wiki/Transacci%C3%B3n_(base_de_datos)

    http://www.fdi.ucm.es/profesor/fernan/dbd/apuntestema07.pdf

    http://www.paginasprodigy.com.mx/evaristopacheco/taller/GradosConsistencia.html

    http://es.wikipedia.org/wiki/Rollback

    http://www.slideshare.net/nicola51980/postgresql-leccin-8-manipulando-datos-y-transacciones

    http://es.wikipedia.org/wiki/ACIDhttp://es.wikipedia.org/wiki/Transacci%C3%B3n_(base_de_datos)http://www.fdi.ucm.es/profesor/fernan/dbd/apuntestema07.pdfhttp://www.paginasprodigy.com.mx/evaristopacheco/taller/GradosConsistencia.htmlhttp://www.paginasprodigy.com.mx/evaristopacheco/taller/GradosConsistencia.htmlhttp://es.wikipedia.org/wiki/Rollbackhttp://www.slideshare.net/nicola51980/postgresql-leccin-8-manipulando-datos-y-transaccioneshttp://www.slideshare.net/nicola51980/postgresql-leccin-8-manipulando-datos-y-transaccioneshttp://www.slideshare.net/nicola51980/postgresql-leccin-8-manipulando-datos-y-transaccioneshttp://www.slideshare.net/nicola51980/postgresql-leccin-8-manipulando-datos-y-transaccioneshttp://www.slideshare.net/nicola51980/postgresql-leccin-8-manipulando-datos-y-transaccioneshttp://www.slideshare.net/nicola51980/postgresql-leccin-8-manipulando-datos-y-transaccioneshttp://www.slideshare.net/nicola51980/postgresql-leccin-8-manipulando-datos-y-transaccioneshttp://www.slideshare.net/nicola51980/postgresql-leccin-8-manipulando-datos-y-transaccioneshttp://www.slideshare.net/nicola51980/postgresql-leccin-8-manipulando-datos-y-transaccioneshttp://www.slideshare.net/nicola51980/postgresql-leccin-8-manipulando-datos-y-transaccioneshttp://www.slideshare.net/nicola51980/postgresql-leccin-8-manipulando-datos-y-transaccioneshttp://www.slideshare.net/nicola51980/postgresql-leccin-8-manipulando-datos-y-transaccioneshttp://www.slideshare.net/nicola51980/postgresql-leccin-8-manipulando-datos-y-transaccioneshttp://www.slideshare.net/nicola51980/postgresql-leccin-8-manipulando-datos-y-transaccioneshttp://www.slideshare.net/nicola51980/postgresql-leccin-8-manipulando-datos-y-transaccioneshttp://es.wikipedia.org/wiki/Rollbackhttp://es.wikipedia.org/wiki/Rollbackhttp://www.paginasprodigy.com.mx/evaristopacheco/taller/GradosConsistencia.htmlhttp://www.paginasprodigy.com.mx/evaristopacheco/taller/GradosConsistencia.htmlhttp://www.paginasprodigy.com.mx/evaristopacheco/taller/GradosConsistencia.htmlhttp://www.fdi.ucm.es/profesor/fernan/dbd/apuntestema07.pdfhttp://www.fdi.ucm.es/profesor/fernan/dbd/apuntestema07.pdfhttp://es.wikipedia.org/wiki/Transacci%C3%B3n_(base_de_datos)http://es.wikipedia.org/wiki/Transacci%C3%B3n_(base_de_datos)http://es.wikipedia.org/wiki/ACIDhttp://es.wikipedia.org/wiki/ACID