CAPITULO 6 Control de Concurrencia y Recuperación 6.1

Anuncio
ESCUELA DE CIENCIAS BÁSICAS TECNOLOGÍA E INGENIERÍA
Bases de Datos Distribuidas
CAPITULO 6
Control de Concurrencia y Recuperación
6.1 Protocolos de Bloqueo
Un protocolo de bloqueo nace de la necesidad creada cuando una transacción solicita un bloqueo de un modo
particular sobre un elemento de datos y ninguna otra transacción posee un bloqueo sobre el mismo elemento de
datos en un modo conflictivo, se puede conceder el bloqueo. Sin embargo, hay que tener cuidado para evitar la
siguiente situación: suponemos que la transacción T2 posee un bloqueo en modo compartido sobre un
elemento de datos y que la transacción T1 solicita un bloqueo en modo exclusivo sobre dicho elemento de datos.
Obviamente T1 debe esperar a que T2 libere el bloqueo en modo compartido. Mientras tanto, la transacción T3
puede solicitar un bloqueo en modo compartido sobre el mismo elemento de datos. La petición de bloqueo es
compatible con el bloqueo que se ha concedido a T2, por tanto se puede conceder a T3 el bloqueo en
modo compartido. En este punto T2 puede liberar el bloqueo, pero T1 debe seguir esperando hasta que
T3 termine. Pero de nuevo puede haber una nueva transacción T4 que solicite un bloqueo en modo
compartido sobre el mismo elemento de datos y a la cual se conceda el bloqueo antes de que T3 lo libere. De
hecho es posible que haya una secuencia de transacciones que soliciten un bloqueo en modo compartido
sobre el elemento de datos, y que cada una de ellas libere el bloqueo un poco después de que sea concedido, de
forma que T1 nunca obtenga el bloqueo en modo exclusivo sobre el elemento de datos. La transacción T1 nunca
progresa y se dice que tiene inanición.
Se puede evitar la inanición de las transacciones al conceder los bloqueos de la siguiente manera: cuando una
transacción Ti solicita un bloqueo sobre un elemento de datos Q en un modo particular M, el gestor de control
de concurrencia concede el bloqueo siempre que:
1
ESCUELA DE CIENCIAS BÁSICAS TECNOLOGÍA E INGENIERÍA
Bases de Datos Distribuidas
 No exista otra transacción que posea un bloqueo sobre Q en un modo que esté en conflicto con M.

No exista otra transacción que esté esperando un bloqueo sobre Q y que lo
haya solicitado antes que Ti.
De este modo, una petición de bloqueo nunca se quedará bloqueada por otra petición de bloqueo solicitada más
tarde.
Existen diferentes protocolos de bloqueo que se pueden utilizar en entornos distribuidos, entre los que se
encuentran el protocolo de bloqueo de dos fases, protocolos basados en grafos, entre otros. La única
modificación que hay que incorporar es el modo en que el gestor de bloqueos trata los datos replicados. Se
presentan varios esquemas posibles que son aplicables a entornos en que los datos puedan replicarse en varios
sitios. Esta situación se presenta en los modos de bloqueo compartido y exclusivo.
En el enfoque de gestor único de bloqueos el sistema mantiene un único gestor de bloqueos que reside en un sitio
único escogido. Todas las solicitudes de bloqueo y de desbloqueo se realizan en el sitio. Cuando una transacción
necesita bloquear un elemento de datos envía una solicitud de bloqueo al sitio. El gestor de bloqueos determina si
se puede conceder el bloqueo de manera inmediata. Si se puede conceder el bloqueo, el gestor de bloqueos
envía un mensaje con ese objeto al sitio en el que se inició la solicitud de bloqueo. En caso contrario, la
solicitud se retrasa hasta que puede concederse, en cuyo momento se envía un mensaje al sitio en el que se
inició la solicitud de bloqueo. La transacción puede leer el elemento de datos de cualquiera de los sitios en
los que residen las réplicas del elemento de datos. En caso de una operación de escritura deben implicarse en la
2
ESCUELA DE CIENCIAS BÁSICAS TECNOLOGÍA E INGENIERÍA
Bases de Datos Distribuidas
escritura todos los sitios en los que residen réplicas del elemento de datos.
El esquema tiene las siguientes ventajas:
Implementación sencilla. Este esquema necesita dos mensajes para tratar
sólo uno para las de desbloqueo.
las solicitudes de bloqueo y
Tratamiento sencillo de los interbloqueos. Dado que todas las solicitudes de
bloqueo y de desbloqueo
se realizan en un solo sitio, se pueden aplicar
directamente a este entorno algoritmos de tratamiento
de los interbloqueos.
Los inconvenientes del esquema son:
Cuello de botella. El sitio se transforma en un cuello de botella, dado que
procesarse allí.
todas las solicitudes deben
Vulnerabilidad. Si el sitio falla se pierde el controlador de la concurrencia.
Se
debe
detener
el
procesamiento o utilizar un esquema de recuperación
de modo que pueda asumir la administración de
los bloqueos un sitio de respaldo.
6.2 Marcas Temporales
Otro método para determinar el orden de secuencialidad en la ejecución de bloqueo de datos es seleccionar
previamente un orden entre las transacciones en el método más común para hacer esto es utilizar un esquema de
ordenación por marcas temporales
3
ESCUELA DE CIENCIAS BÁSICAS TECNOLOGÍA E INGENIERÍA
Bases de Datos Distribuidas
El protocolo de ordenación por marcas temporales asegura que todas las operaciones leer y escribir
conflictivas se ejecutan en el orden de las marcas temporales.
El protocolo de ordenación por marcas temporales asegura la secuencialidad en cuanto a conflictos. Esta
afirmación se deduce del hecho de que las operaciones conflictivas se procesan durante la ordenación de las
marcas temporales. El protocolo asegura la ausencia de interbloqueos, ya que ninguna transacción tiene que
esperar. El protocolo puede generar planificaciones no recuperables; sin embargo se puede extender para
producir planificaciones sin cascada.
Otro esquema utilizado es el mecanismo de marcas de tiempo, este supone que existe una única versión de los
datos; por lo que sólo una transacción puede acceder a los mismos. Se puede relajar esta restricción
permitiendo que varias transacciones lean y escriban diferentes versiones del mismo dato siempre que cada
transacción vea un conjunto consistente de versiones de todos los datos a los que accede.
El problema con las técnicas de bloqueo es que puede producirse un interbloqueo (llamado deadlock), que es
una situación que se da cuando dos o más transacciones están esperando cada una de ellas que otra
libere algún objeto antes de seguir. Este problema, que ha sido estudiado en profundidad en los sistemas
operativos, puede tener dos soluciones:
 Prevenir el interbloqueo, obligando a que las transacciones bloqueen todos
adelantado.
los elementos que necesitan por
 Detectar el interbloqueo, controlando de forma periódica si se ha producido, para lo que suele construirse un
grafo de espera. Si existe un ciclo en el grafo se tiene un interbloqueo. Cada SGBD tiene su propia política
para escoger las transacciones bloqueadas, aunque suelen ser las transacciones más recientes.
6.3 Tratamiento de los Interbloqueos
4
ESCUELA DE CIENCIAS BÁSICAS TECNOLOGÍA E INGENIERÍA
Bases de Datos Distribuidas
Un sistema está en estado de interbloqueo si existe un conjunto de transacciones tal que toda transacción del
conjunto está esperando a otra transacción del conjunto. En tal situación ninguna de las transacciones puede
progresar.
El único remedio a esta situación no deseada es que el sistema invoque alguna acción drástica, como retroceder
alguna de las transacciones involucradas en el interbloqueo. El retroceso de una transacción puede ser parcial:
esto es, se puede retroceder una transacción hasta el punto donde obtuvo un bloqueo cuya liberación
resuelve el interbloqueo.
Existen dos métodos principales para tratar el problema de los interbloqueos. Se puede utilizar un protocolo de
prevención de interbloqueos para asegurar que el sistema nunca llega a un estado de interbloqueo. De forma
alternativa se puede permitir que el sistema llegue a un estado de interbloqueo, y tratar de recuperarse después a
través de un esquema de detección y recuperación de interbloqueos.
Estos algoritmos de prevención y de detección de interbloqueos pueden utilizarse en los sistemas distribuidos,
siempre que se realicen modificaciones. Por ejemplo, se puede utilizar el enfoque de ordenación por marcas
temporales puede aplicarse de manera directa en entornos distribuidos.
La prevención de interbloqueos puede dar lugar a esperas y retrocesos innecesarios. Además,
puede que algunas técnicas de prevención de interbloqueos necesiten que se impliquen en la ejecución de
una transacción más sitios que los que serían necesarios de otro modo.
6.4 Disponibilidad
Para garantizar que una aplicación distribuida sea altamente disponible (es decir, que pueda estar en servicio de
manera continua) se deben instanciar múltiples réplicas de esta en distintos equipos de cómputo. Según el
tipo de fallo que se quiera soportar (cortes de energía eléctrica, averías, desconexiones) se debe conseguir
que cada uno de las computadoras que mantenga una réplica de la BDD sea independiente del resto ante
5
ESCUELA DE CIENCIAS BÁSICAS TECNOLOGÍA E INGENIERÍA
Bases de Datos Distribuidas
la ocurrencia de tales fallos. Así, por ejemplo, si queremos proteger a la aplicación ante cortes de
alimentación, cada equipo de computo donde se ejecute una réplica debería disponer de su propio sistema de
protección, por ejemplo una UPS de alto rendimiento.
El hecho de disponer de múltiples replicas permitirá que la capacidad de servicio de la aplicación también
mejore. Así, aquellas peticiones de los usuarios del sistema que sólo impliquen una consulta de datos,
podrán ser atendidas por diferentes replicas simultáneamente. Con ello, el tiempo de respuesta percibido por los
usuarios disminuirá.
Por tanto, con la replicación se pueden llegar a obtener dos mejoras importantes:
 Por un lado, se garantiza que el servicio ofrecido por la aplicación, no se vea interrumpido en caso de que
se dé un fallo en alguna de las réplicas.
Observemos que tal fallo habría dejado inutilizable a la aplicación en caso de no haber empleado replicación.
Además, el tiempo necesario para restablecer el servicio en la aplicación podría llegar a ser grande en algunos
tipos de fallo. Por ejemplo, si se llegara a estropear el disco duro en el que se mantienen parte de los datos de
la aplicación: habría que parar la máquina, sustituir el disco, restaurar su contenido a partir de alguna copia de
seguridad, re arrancar la máquina y reiniciar la aplicación. Además, todas las peticiones en curso en el
momento de fallo se habrían perdido. Afortunadamente, un RAID evitaría esta situación.
 Por otra parte, la capacidad de servicio se ve incrementada cuando las peticiones
clientes únicamente implican consultas.
efectuadas
por
los
6.5 Replica con Grado de Consistencia Bajo
En general, el sistema de réplica de la BDD hace que las consultas sean más eficientes, pero complica las
6
ESCUELA DE CIENCIAS BÁSICAS TECNOLOGÍA E INGENIERÍA
Bases de Datos Distribuidas
actualizaciones debido al problema de la redundancia de datos y el mantenimiento de la consistencia de los
datos. Normalmente, se elige una de las réplicas como copia principal para simplificar la administración, esta
situación garantiza que no exista el problema de que exista la réplica con un grado de consistencia bajo, que sería
una réplica que se generó con pérdida de información.
Si queremos garantizar una consistencia fuerte entre las réplicas habría que solicitar una entrega en orden
total. Es decir, todos los mensajes deben entregarse en idéntico orden en todos los procesos del grupo. No
obstante, ciertos tipos de aplicación sólo requieren el uso de orden causal (esto es, bastarla con ordenar
aquellos mensajes con relación “causa-efecto” entre ellos) que permite una entrega más rápida.
7
Descargar