Title: Seguridad F
1Concurrencia
2INTRODUCCIÓ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.
3DEFINICIÓ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.
4TRANSACCIONES
- 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.
5PROPIEDADES 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.
6PROBLEMAS 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
7Actualización Perdida
- Procedure Depositar(Cuenta, Monto)
- begin
- Start
- temp Leer(CuentasCuenta)
- temp temp Monto
- Escribir(CuentasCuenta,temp)
- Commit
- End
- Leer1(Cuentas7) devuelve el valor de 1000
- Leer2(Cuentas7) devuelve el valor de 1000
- Escribir2(Cuentas7, 101000)
- Commit2
- Escribir1(Cuentas7, 1100)
- Commit1
8Análisis Inconsistente
- Leer4(Cuentas8) devuelve el valor de 200
- Escribir4(Cuentas8, 100)
- Leer3 (Cuentas8) devuelve el valor de 100
- Leer3 (Cuentas9) devuelve el valor de 200
- Leer4 (Cuentas9) devuelve el valor de 200
- Escribir4 (Cuentas9, 300)
- Commit4
- Commit3
- Procedure ImprimirSuma(Cuenta1, Cuenta2)
- begin
- Start
- temp1 Leer(CuentasCuenta1)
- output(temp1)
- temp2 Leer(CuentasCuenta2)
- output(temp2)
- temp1 temp1 temp2
- output(temp1)
- Commit
- end
9Sincronizador o Serializador
10Bloqueos
- La idea básica de un Bloqueo es que cuando se
esta procesando una transacción, inhibe todas las
demás transacciones
11Bloqueos
Bloqueo Exclusivo o de Escritura
Transacciones
Base de datos
Transacción A
Tupla
Bloqueo Exclusivo
Transacción B
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
12Bloqueos
Bloqueo Compartido o de Lectura
Transacciones
Base de datos
Tupla
Transacción A
Bloqueo Compartido
Transacción B
Transacció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
13Bloqueos
Matriz de Compatibilidad
Si
X Bloqueo Exclusivo S Bloqueo Compartido