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)