Protocolos de bloqueo en bases de datos distribuidas

Anuncio
Protocolos de bloqueo en
bases de datos distribuidas
Elementos de Bases de Datos
Teoría y Diseño de Bases de Datos
Segundo Cuatrimestre de 2004
Departamento de Ciencias
e Ingeniería de la Computación
Universidad Nacional del Sur
Bahía Blanca, Buenos Aires, Argentina
Protocolos de bloqueo centralizados
• Antes de comenzar con el caso de las bases de
datos distribuidas es útil recordar algunos detalles
de los protocolos centralizados.
• Las instrucciones de interés para los protocolos son
las que tienen que ver con los bloqueos para las
lecturas y escrituras de datos.
• Para los ejemplos siguientes asumiremos la
siguiente notación:
– R-Lock(A): Solicitud de bloqueo para lectura del dato A.
– W-Lock(A): Solicitud de bloqueo para escritura del dato A.
Protocolos de bloqueo centralizados
• La compatibilidad entre estas instrucciones es la
siguiente:
R(A) W(A)
R(A)
Si
No
W(A) No
No
• Esto es, el único bloqueo que puede compartirse es
el de lectura, y sólo con otro bloqueo del mismo
tipo.
Protocolos de bloqueo distribuidos
• En el caso distribuido, los datos pueden encontrarse
replicados en copias.
• Cada copia reside en un sitio en particular.
• Las copias reciben el nombre de datos físicos.
• Los datos abstractos, sin considerar las copias, se
denominan datos lógicos.
• Los bloqueos en cada sitio se realizan sobre los
datos físicos.
Protocolos de bloqueo distribuidos
• Para la implementación de bloqueos en bases de
datos distribuidas, existen varios protocolos que
aseguran que los bloqueos físicos implican
bloqueos lógicos.
• Aqui veremos un ejemplo de:
– ROWA (Read One Write All)
– Majority (Mayoría de las copias)
Algunas restricciones
• Para que los ejemplos sean manejables, se
realizarán algunas suposiciones que simplifican el
entorno:
– El tiempo se considera dividido en instantes denominados
unidades.
– Existe una sincronización entre las unidades de tiempo de
un sitio a otro.
– Los mensajes siempre tardarán una unidad de tiempo en
llegar a destino, sin posibilidad de pérdida.
– Las solicitudes de bloqueos al mismo sitio se realizarán
también mediante el envío de mensajes, los cuales llegan
en forma instantánea.
Protocolo ROWA
• El protocolo ROWA (Read One Write All) requiere:
– Un bloqueo de lectura sobre una sola copia para realizar
una lectura (“read one”).
– Bloqueos de escritura sobre todas las copias para realizar
una escritura (“write all”).
• Es fácil de verificar que el protocolo respeta la
compatibilidad mencionada anteriormente.
• También es directo el hecho de que los bloqueos
físicos implican bloqueos lógicos dentro de este
protocolo.
Protocolo Majority
• Este protocolo exige:
– Bloqueos de lectura sobre la mayoría de las copias de los
datos para realizar una lectura.
– Bloqueos de escritura sobre la mayoría de las copias de
los datos para realizar una escritura.
• Para ver que se respeta la compatibilidad,
considerar el caso en el que se mantienen bloqueos
sobre la mayoría de las copias tanto para escritura
como para lectura.
• Como sólo una transacción puede mantener
bloqueos sobre la mayoría de las copias, los
bloqueos físicos implican bloqueos lógicos.
Una generalización
• Los protocolos descriptos anteriormente son casos
particulares del protocolo “k de n”, en el cual:
– Para realizar una escritura, deben mantenerse bloqueos
de escritura sobre k de las copias de los datos.
– Para realizar una lectura, deben mantenerse bloqueos de
lectura sobre n – k + 1 de las copias de los datos.
• ROWA es el caso “n de n”, mientras que Mayority
es “(n + 1) / 2 de n”.
Escenario
• Supongamos:
–
–
–
–
Tres nodos S1, S2, y S3 conectados en red.
El dato A se encuentra replicado en S1, S2, y S3.
El dato B se encuentra replicado en S1 y S3.
Dos transacciones, T1 y T2 comienzan su ejecución en S1
y S2 respectivamente.
– En forma abstracta, cada transacción realiza:
RLOCK(B), WLOCK(A), UNLOCKA), UNLOCK(B);
– En cada unidad de tiempo, un nodo puede leer un
mensaje y enviar un mensaje.
– Cuando se debe desempatar, el sistema elige al nodo con
menor número.
Escenario
• Supongamos (cont.):
– Los mensajes adicionales son encolados para procesarse
en las próximas unidades de tiempo.
• Simularemos a continuación una de las posibles
series de acciones en la red, bajo los protocolos
ROWA y Majority.
ROWA (1)
T\S
“S1” (A,B)
1
snd(S1,RLOCK B)
2
snd(S1,WLOCK A)
rcv(S2,RLOCK B)
snd(S2,grant(RLOCK B))
3
4
5
6
snd(S2,WLOCK A)
rcv(S2,WLOCK A)
snd(S2,deny(WLOCK A))
rcv(S2, grant(WLOCK A))
snd(S3, WLOCK A)
“S2” (A)
snd(S1,RLOCK B)
rcv(S1,grant(RLOCK B))
snd(S1,WLOCK A)
rcv(S1,WLOCK A)
snd(S1,grant(WLOCK A)
rcv(S1,deny(WLOCK A))
7
8
rcv(S3,grant(WLOCK A))
9
snd(S1,UNLOCK A)
10
snd(S2,UNLOCK A)
“S3” (A,B)
rcv(S1,WLOCK A)
snd(S1,grant(WLOCK A))
ROWA (2)
T\S
11
12
13
“S1” (A,B)
snd(S3,UNLOCK A)
rcv(S2,WLOCK A)
snd(S2,grant(WLOCK A))
snd(S1,UNLOCK B)
14
“S2” (A)
rcv(S1,UNLOCK A)
snd(S1, WLOCK A)
rcv(S1, UNLOCK A)
rcv(S1,grant(WLOCK A))
snd(S2,WLOCK A))
snd(S3,WLOCK A)
rcv(S2,WLOCK A)
snd(S2,grant(WLOCK A))
15
16
rcv(S3,grant(WLOCK A))
17
snd(S1,UNLOCK A)
18
rcv(S2, UNLOCK A)
snd(S2,UNLOCK A)
19
snd(S3,UNLOCK A)
20
snd(S1,UNLOCK B)
21
“S3” (A,B)
rcv(S2,UNLOCK B)
rcv(S2,UNLOCK A)
Majority (1)
T\S
1
2
3
“S1” (A,B)
snd(S1,RLOCK B)
rcv(S2,RLOCK B)
snd(S2,grant(RLOCK B))
snd(S3,RLOCK B)
6
rcv(S2,WLOCK A)
snd(S2,grant(WLOCK A))
rcv(S3,grant(RLOCK B)
snd(S2,WLOCK A)
snd(S3, WLOCK A)
7
rcv(S2,deny(WLOCK A))
8
rcv(S3,grant(WLOCK A))
rcv(S2, UNLOCK A)
snd(S1, WLOCK A)
4
5
9
“S2” (A)
“S3” (A,B)
snd(S1,RLOCK B)
snd(S3,RLOCK B)
rcv(S1,grant(RLOCK B))
snd(S1,WLOCK A))
rcv(S3,grant(RLOCK B))
snd(S2,WLOCK A)
rcv(S1,grant(WLOCK A))
rcv(S1,WLOCK A)
snd(S1,deny(WLOCK A))
snd(S1,UNLOCK A)
snd(S2,UNLOCK A)
snd(S1,UNLOCK B)
rcv(S2,RLOCK B)
snd(S2,grant(RLOCK B))
rcv(S1,RLOCK B)
snd(S1,grant(RLOCK B))
rcv(S1,WLOCK A)
snd(S1,grant(WLOCK A))
Majority (2)
T\S
“S1” (A,B)
“S2” (A)
“S3” (A,B)
10
rcv(S2,UNLOCK B)
snd(S1,UNLOCK A)
11
snd(S3,UNLOCK A)
rcv(S2,UNLOCK B)
12
snd(S1, UNLOCK B)
rcv(S1, UNLOCK A)
13
snd(S3,UNLOCK B)
14
snd(S3,UNLOCK B)
rcv(S1,UNLOCK B)
Descargar