14
Transacciones seguras Concurrencia Ing. Yeberth Martinez Programación II

Transacciones seguras Concurrencia Ing. Yeberth Martinez Programación II

Embed Size (px)

Citation preview

Page 1: Transacciones seguras  Concurrencia Ing. Yeberth Martinez Programación II

Transacciones segurasConcurrencia

Ing. Yeberth Martinez

Programación II

Page 2: Transacciones seguras  Concurrencia Ing. Yeberth Martinez Programación II
Page 3: Transacciones seguras  Concurrencia Ing. Yeberth Martinez Programación II

INTRODUCCIÓN

La definición de concurrencia en términos generales es:  Coincidencia de varios sucesos o cosas a un mismo

tiempo

La concurrencia en las bases de datos : Se refiere al hecho de que los Sistemas Administradores

de Base de Datos permiten que muchas transacciones accedan a una misma Base de Datos a la vez.

Cuando existen varios usuarios intentando modificar los datos al mismo tiempo, se necesita establecer algún tipo de control para que dichas modificaciones de un usuario no interfieran en las de los otros, a este sistema se le denomina control de concurrencia.

Los sistemas de control de concurrencia deben garantizar la propiedad de aislamiento de transacciones que se ejecutan de manera concurrente.

Page 4: Transacciones seguras  Concurrencia Ing. Yeberth Martinez Programación II

DEFINICIÓN DE CONCURRENCIA

En el campo informático, el termino concurrencia se refiere a la capacidad de los Sistemas de Administración de Base de Datos (DBMS), de permitir que múltiples procesos sean ejecutados al mismo tiempo, y que también puedan interactuar entre sí.

Los procesos concurrentes pueden ser ejecutados realmente de forma simultánea, sólo cuando cada uno es ejecutado en diferentes procesadores. En cambio, la concurrencia es simulada si sólo existe un procesador encargado de ejecutar todos los procesos, simulando la concurrencia, ocupándose de forma alternada de uno y otro proceso a muy pequeños intervalos de tiempo. De esta manera simula que se están ejecutando a la vez.

Algunos casos de concurrencia La multiprogramación: El procesador es compartido dinámicamente por varios

procesos. Aplicaciones estructuradas: Se implementa como un conjunto de procesos

concurrentes.

También se tiene que la misma estructura recién mencionada es utilizada en el diseño de los sistemas operativos, los cuales se implementan como un conjunto de procesos.

Debido a que los procesos concurrentes en un sistema pueden interactuar entre otros también en ejecución, el número de caminos de ejecución puede ser extremadamente grande, resultando en un comportamiento sumamente complejo. Las dificultades asociadas a la concurrencia han sido pensadas para el desarrollo de lenguajes de programación y conceptos que permitan hacer la concurrencia más manejable.

Page 5: Transacciones seguras  Concurrencia Ing. Yeberth Martinez Programación II

TRANSACCIONES El control de concurrencia permite que sus usuarios asuman

que cada una de sus aplicaciones se ejecuta atómicamente, como si no existieran otras aplicaciones ejecutándose concurrentemente. Esta abstracción de una ejecución atómica y confiable de una aplicación se conoce como una transacción

Informalmente, una transacción es la ejecución de ciertas instrucciones que acceden a una base de datos compartida.

Cada transacción accede a información compartida sin interferir con otras, si una transacción termina normalmente, todos sus efectos son permanentes, en caso contrario no tiene afecto alguno.

Durante una transacción la base de datos pierde su consistencia, la que debe restituirse al momento de finalizar la transacción.

Page 6: Transacciones seguras  Concurrencia Ing. Yeberth Martinez Programación II

PROPIEDADES FUNDAMENTALES DE UNA TRANSACCIÓN

Atomicidad: Se refiere al hecho de que una transacción se trata como una unidad de operación.

Consistencia: La consistencia de una transacción es simplemente su correctitud. las transacciones no violan las restricciones de integridad de una base de datos. Aislamiento: Una transacción en ejecución no puede revelar sus resultados a otras

transacciones concurrentes antes de finalizar. Permanencia: Es la propiedad de las transacciones que asegura que una vez que una

transacción finaliza exitosamente, sus resultados son permanentes y no pueden ser borrados de la base de datos por alguna falla posterior.  

En esencia, lo que se persigue con el procesamiento de transacciones es, por una parte obtener una transparencia adecuada de las acciones concurrentes a una base de datos y por otra, manejar adecuadamente las fallas que se puedan presentar en una base de datos.

El procesamiento de transacciones es una de las tareas más importantes dentro de un sistema de base de datos, pero a la vez, es una de las más difíciles de manejar debido a diversos aspectos, tales como:

Confiabilidad: Puesto que los sistemas de base de datos en línea no pueden fallar. Disponibilidad: Debido a que los sistemas de base de datos en línea deben estar

actualizados correctamente todo el tiempo. Tiempos de Respuesta: el tiempo de respuesta de las transacciones no debe ser mayor a

doce segundos   Throughput: Los sistemas de base de datos en línea requieren procesar miles de

transacciones por segundo.  Atomicidad: en el procesamiento de transacciones: No se aceptan resultados parciales.

Page 7: Transacciones seguras  Concurrencia Ing. Yeberth Martinez Programación II

PROBLEMAS DE CONCURRENCIA

Existen tres formas en las que una transacción, aunque sea correcta por sí misma, puede producir una respuesta incorrecta si alguna otra transacción interfiere con ella en alguna forma.

El problema de la Actualización Perdida El problema de la Dependencia No

Confirmada El problema del Análisis Inconsistente

Page 8: Transacciones seguras  Concurrencia Ing. Yeberth Martinez Programación II

Actualización Perdida

Procedure Depositar(Cuenta, Monto)begin

Start; temp := Leer(Cuentas[Cuenta]); temp := temp + Monto; Escribir(Cuentas[Cuenta],temp); Commit;

End

Leer1(Cuentas[7]) devuelve el valor de $1000

Leer2(Cuentas[7]) devuelve el valor de $1000

Escribir2(Cuentas[7], $101000) Commit2 Escribir1(Cuentas[7], $1100) Commit1

Page 9: Transacciones seguras  Concurrencia Ing. Yeberth Martinez Programación II

Análisis Inconsistente

Procedure ImprimirSuma(Cuenta1, Cuenta2)

beginStart;temp1 := Leer(Cuentas[Cuenta1]);output(temp1); temp2 := Leer(Cuentas[Cuenta2]); output(temp2); temp1 := temp1 $+$ temp2; output(temp1); Commit;

end

• Leer4(Cuentas[8]) devuelve el valor de $200

• Escribir4(Cuentas[8], $100)

• Leer3 (Cuentas[8]) devuelve el valor de $100

• Leer3 (Cuentas[9]) devuelve el valor de $200

• Leer4 (Cuentas[9]) devuelve el valor de $200

• Escribir4 (Cuentas[9], $300)

• Commit4

• Commit3

Page 10: Transacciones seguras  Concurrencia Ing. Yeberth Martinez Programación II

Sincronizador o Serializador

Page 11: Transacciones seguras  Concurrencia Ing. Yeberth Martinez Programación II

Bloqueos

La idea básica de un Bloqueo es que cuando se esta procesando una transacción, inhibe todas las demás transacciones

Page 12: Transacciones seguras  Concurrencia Ing. Yeberth Martinez Programación II

Bloqueos

Transacciones

Base de datos

Bloqueo Exclusivo

DB

Transacción ATransacción A

Transacción BTransacción B

Bloqueo Exclusivo o de Escritura

Tupla

Si la transacción A pone un bloqueo exclusivo (X) sobre una tupla, entonces se rechazará una petición de cualquier otra transacción B para un bloqueo de cualquier tipo sobre la tupia

Si la transacción A pone un bloqueo exclusivo (X) sobre una tupla, entonces se rechazará una petición de cualquier otra transacción B para un bloqueo de cualquier tipo sobre la tupia

Page 13: Transacciones seguras  Concurrencia Ing. Yeberth Martinez Programación II

Bloqueos

Transacciones Base de datos

Tupla

Bloqueo Compartido

DB

Transacción ATransacción A

Transacción BTransacción B

Bloqueo Compartido o de Lectura

Transacción CTransacción C

Bloqueo Exclusivo

Si la transacción A pone un bloqueo compartido (S) sobre la tupla entonces:Se rechazará una petición de cualquier otra transacción B para un bloqueo Exclusivo sobre

la tupla.Se otorgará una petición de cualquier otra transacción B para un bloqueo S sobre la tupla

(esto es, ahora también B tendrá un bloqueo S sobre la tupla

Si la transacción A pone un bloqueo compartido (S) sobre la tupla entonces:Se rechazará una petición de cualquier otra transacción B para un bloqueo Exclusivo sobre

la tupla.Se otorgará una petición de cualquier otra transacción B para un bloqueo S sobre la tupla

(esto es, ahora también B tendrá un bloqueo S sobre la tupla

Page 14: Transacciones seguras  Concurrencia Ing. Yeberth Martinez Programación II

FIN