3. Control de concurrencia
Exclusión mutua distribuida
Bloqueos
Control optimista de concurrencia
Ordenación por marcas de tiempo (MVCC)
4. Exclusión Mutua Distribuida
Coordinación de procesos para compartir recursos.
Los procesos ejecutan el siguiente fragmento de
código
◦ entrada()
◦ SECCIÓN CRÍTICA
◦ salida()
Solución centralizada
◦ Un proceso funciona como coordinador de bloqueos (lock
master), y concede bloqueos de acceso a secciones críticas.
◦ Factible hasta cierta cantidad de procesos.
5. Exclusión Mutua Distribuida
Solución distribuida
◦ No siempre es posible designar un lock master
◦ Ejemplo: Redes ethernet o wifi 'ad-hoc': solo un nodo debe
transmitir a través del medio
◦ Tres algoritmos
◦ Ring-based
◦ Ricart-Agrawala (1981)
◦ Maekawa (1985).
6. Servidor Central
Un proceso es el encargado de conceder permiso para
entrar en la sección crítica.
• Para tolerar fallos es necesario implementar también un
algoritmo de elección de líder.
• El servidor se convierte en un cuello de botella.
• Número de mensajes:
– Uno para la petición request.
– Uno para la concesión grant.
– Uno para liberar la exclusión mutua release.
7. Servidor Central
Master recibe solicitudes de acceso y responde en orden FIFO
◦ La respuesta es un token de acceso
◦ El proceso que sale de su sección crítica debe devolver el token
Mientras alguien tenga el token, procesos son encolados
8. Anillo: Ring based
• Los procesos se organizan en un anillo lógico. Un testigo
circula a través de éste.
• El proceso en posesión del testigo puede entrar en la
sección crítica.
• Para tolerar fallos es necesario implementar un
algoritmo para detectar pérdidas del testigo y
regenerarlo.
• Latencia: entre 0 y n (acaba de pasar el testigo)
• Los procesos están enviando mensajes aunque no
quieran entrar en la sección crítica.
9. Anillo: Ring based
Procesos organizados en un anillo lógico
◦ pi solo puede enviar mensajes a p(i+1) mod N
Cuando pi recibe el token
◦ Si no lo necesita, lo reenvía a p(i+1) mod N
◦ Si lo necesita, lo conserva. Al liberarlo, lo reenva a p(i+1) mod N
10. Comunicación Multicast
Las primitivas de comunicación básicas soportan la
comunicación uno a uno.
◦ Broadcast: el emisor envía un mensaje a todos los nodos
del sistema.
◦ Multicast: el emisor envía un mensaje a un subconjunto de
todos los nodos.
◦ Estas operaciones se emplean normalmente mediante
operaciones punto a punto
11. Ricart y Agrawala
Requiere la existencia un orden total de todos los mensajes en
el sistema
Procesos hacen multicast a los demás
Cada proceso pi mantiene un reloj logico Li
Mensajes de entrada incluyen <Li, pi>
Procesos poseen un estado:
◦ RELEASED. Se encuentra fuera de sección crítica
◦ WANTED. Desea entrar a sección critica
◦ HELD. Se encuentra dentro de sección crítica
12. Ricart y Agrawala
Un proceso para entrar en la región crítica actualiza su estado
a wanted y envía a los demás un mensaje muticast de petición
de entrada.
Cuando el proceso reciba permiso de todos los demás
procesos (el estado es released en todos los procesos) podrá
entrar en la región crítica.
Si un proceso, p, solicita entrar en la región crítica y ningún
otro la está ocupando, todos los procesos le darán permiso
para que entre.
13. Ricart y Agrawala
Si un proceso, q, está dentro de la exclusión mutua, no
contestará. Cuando la libere concederá permiso a p y éste
podrá entrar en la región crítica.
Si dos o más procesos solicitan la exclusión mutua
concurrentemente, el que tenga menor timestamp podrá
entrar en la región crítica,
A igualdad de timestamps, se le concederá la entrada al de
menor identificador de proceso. El otro proceso solicitante
concederá permiso al comparar los timestamps.
14. Ejemplo
a) Dos procesos (P0, P2) quieren entrar en la región al
mismo tiempo
b) El proceso 0 tiene la marca de tiempo más baja, entra
él.
c) Cuando el proceso 0 acaba, envía un OK, de esa forma
el proceso 2 entra
.
15. Algoritmo de Maekawa
Observacion: ¿se debe pedir acceso a todos?
¿Qué pasa si hay particiones?
Es posible pedir acceso solo a un subconjunto
◦ Siempre que los subconjuntos se traslapen
Proceso se convierten en candidatos que recolectan
votos
◦ Procesos en la intersección de los subconjuntos ayudan a
discriminar
16. Algoritmo de Maekawa
Cada proceso tiene un voting set Vi ⊆ 𝑝1, 𝑝2, … , 𝑝 𝑛
construidos de manera que:
◦ pi ⊆ Vi
◦ Vi ∩ Vj ≠ ∅
◦ 𝑉𝑖 = K
Cada proceso pi pertenece a M conjuntos Vi
Solución optima se obtiene con 𝐾~ 𝑁 y M = K
17. Algoritmo de Maekawa
Inicialmente: ∀𝑖 ; Spi = RELEASED; votedi = FALSE
Cuando pi quiere entrar a la sección crítica:
◦ Spi = WANTED
◦ Enva multicast a Vi
◦ Espera hasta recibir K respuestas
◦ Entra, y Spi = HELD
Cuando pj recibe una solicitud de pi
◦ IF (Spj == HELD) OR votedj = TRUE)
◦ Encolar solicitud de pi y no responder
◦ ELSE
◦ Responder a pi autorizando acceso
◦ votedi = TRUE
18. Algoritmo de Maekawa
Cuando pi sale de la sección crítica
◦ Spi = RELEASED
◦ Envía mensaje release a todos los miembros de Vi
Cuando pjrecibe un mensaje de release desde pi
◦ IF hay mensajes encolados
◦ pk= dequeue()
◦ Responder a pk
◦ voted = TRUE
◦ ELSE
◦ voted = FALSE
19. Control de concurrencia
Cuando se trabaja con bases de datos
◦ Se tienen transacciones que requieren operaciones de lectura y
escritura
◦ Se requiere que las transacciones sean serializables
Las BD Nosql por lo general usan transacciones a ítems
únicos de datos, sin embargo cada vez hay mas sistemas
que soportan transacciones con varias operaciones
Y cuales son las operaciones conflictivas?
◦ lectura vs escritura
◦ escritura vs escritura
◦ escritura vs lectura
20. Control de concurrencia
Bloqueos (en ambientes distribuidos)
◦ Exclusivos
◦ Compartidos
◦ De actualización
◦ Bloqueos a dos fases
◦ Estos se usan en los SBDD relacionales
21. Control de concurrencia
Enfoque de gestor único de bloqueos
◦ El gestor reside en un nodo único escogido Ni
◦ Todas las solicitudes de bloqueos y desbloqueos se realizan
en Ni.
◦ Basado en el algoritmo de Servidor Central.
◦ Maneja distintos niveles de bloqueos (X, S, U) y compatibilidad entre
bloqueos
◦ Tiene las mismas ventajas y desventajas de este algoritmo
22. Control de concurrencia
Gestor distribuido de bloqueos
◦ La función de bloqueos está distribuida
◦ Cada nodo mantiene un gestor de bloqueo local que
administra las solicitudes sobre los datos de ese nodo
23. Control de concurrencia con
réplicas
Copia principal
◦ Se escoge una réplica como Copia Principal que reside en el
nodo principal de ese dato.
◦ Se solicita un bloqueo a la copia principal.
Protocolo de mayoría
◦ Si un elemento de datos Q se replica en n sitios, se envía la
solicitud de bloqueo a más del 50% de los sitios.
◦ La transacción requiere que se bloquee la mayoría de las
réplicas.
◦ Se requieren 2(n/2 +1) mensajes para solicitudes de
bloqueo y (n/2 +1) para liberación
24. Control de concurrencia con
réplicas
Protocolo de consenso o quórum
◦ Se asigna a las operaciones de lectura y escritura dos
enteros: Qr: quorum de lectura y Qw: quorum de escritura
◦ Sea n el número de réplicas, entonces
◦ Qr + Qw > n y 2*Qw >n
◦ Para leer se deben bloqueas tantas replicas tal que >=Qr
◦ Para escribir se deben bloqueas tantas replicas tal que
>=Qw
◦ Puede reducir el coste de bloqueos de lectura y escritura
mediante la adecuada definición de los quórum Qr y Qw
25. Control de concurrencia
Ordenación con marcas de tiempo
◦ Cada operación se valida cuando se lleva a cabo
◦ Si la operación no es válida la transacción es abortada.
◦ Cada transacción se le asigna una marca de tiempo única
cuando comienza
◦ Las solicitudes de una transacción pueden ser ordenadas
totalmente de acuerdo a sus marcas de tiempo (hapens-
before)
26. Control de concurrencia
Reglas: dada una solicitud s de una transacción sobre
un objeto de dato D
◦ Si s=lectura(D), s es válida, sólo si D fue leído y escrito por
última vez por transacciones anteriores.
◦ Si s=escritura(D), s es válida sólo si d fue escrito por última
vez por una transacción anterior
Esto supone que solo existe una versión del dato y
restringe el acceso de la transacción en cada
solicitud.
27. Conflictos de operaciones con
ordenación por marcas de tiempo
Regla Ti Tj conflicto
1 Escritura Lectura Ti no debe escribir un objeto que haya sido leído
por cualquier Tj donde Tj>Ti, esto requiere que
Ti >= la mayor marca de tiempo de lectura del
objeto
2 Escritura Escritura Ti no debe escribir un objeto que haya sido
escrito por cualquier Tj donde Tj>Ti, esto
requiere que Ti >= la mayor marca de tiempo de
escritura del objeto
3 Lectura Escritura Ti no debe leer un objeto que haya sido escrito
por cualquier Tj donde Tj>Ti, esto requiere que
Ti >= la mayor marca de tiempo de escritura del
objeto
28. Técnicas de control de
concurrencia
Sean Ti y Tj dos transacciones (i ≠ j) y D un recurso
compartido
a) Si Ti ejecuta LEER(D)
Si MT(Ti) < MT_escritura(D)
Ti retrocede.
Else
MT_lectura(D) :=max(MT_lectura(D), MT(Ti))
b) Si Ti ejecuta ESCRIBIR(D)
Si MT(Ti) < MT_lectura(D) O Si MT(Ti) < MT_escritura(D)
Ti retrocede.
Else
MT_escritura (D) :=max(MT_escritura(D), MT(Ti))
Marzo 2012 ADMINISTRACIÓN DE BASE DE DATOS 28
29. Ordenación con marcas de tiempo
multiversión MVCC Reed (1983)
Se mantiene una lista de versiones antiguas:
◦ Versiones tentativas: registradas por las operaciones de
escritura y son invisibles para las demás transacciones.
◦ Versiones consumadas: cuando la transacción que creó la
versión termina exitosamente.
Esta lista representa la historia de los valores del objeto
Cada versión tiene:
◦ Una marca de tiempo de lectura: la mayor marca de tiempo de
las transacciones que han leído el objeto
◦ Una marca de tiempo de escritura: La marca de tiempo de la
transacción que creó la versión del objeto
30. Ordenación con marcas de tiempo
multiversión MVCC Reed (1983)
Si se realiza una operación de lectura por Ti sobre D
◦ Se lee la versión consumada con MT_escritura(D) mas
grande menor que MT(Ti).
◦ Se actualiza la MT_lectura(D) al máximo entre ella y la
MT(Ti).
Cuando una operación de lectura llega tarde se le
permite leer de una versión antigua ya consumada,
por lo que no se rechaza.
31. Ordenación con marcas de tiempo
multiversión MVCC Reed (1983)
Si se realiza una operación de escritura sobre D por
Ti
◦ Se dirige a la versión consumada más reciente del objeto D
◦ Si MT_lectura(D) < MT(Ti)
◦ Realiza la operación de escritura de una versión tentativa de D con la
MT_escritura(D)=MT(Ti)=MT_Lectura(D)
◦ Si no
◦ Se rechaza la operación y se cancela la transacción Ti.
Si una transacción se aborta todas las versiones que
creó se eliminan.
32. Ordenación con marcas de tiempo
multiversión MVCC Reed (1983)
Cuando una transacción termina exitosamente todas
sus versiones se mantienen, pero de cuando en
cuando se deben borrar las versiones antiguas.
Solo se replica la ultima versión del objeto
33. Ordenación con marcas de tiempo
multiversión MVCC Reed (1983)
Nodo del dato
A
Versión Valor MT
lectura
MT
escritura
1 3 1 2
Leer(A),3
Leer(A),4
Leer(A),2
Escribir(A=8),6 Escribir(A=10),5
34. Ordenación con marcas de tiempo
multiversión MVCC Reed (1983)
Nodo del dato
A
Versión Valor MT
lectura
MT
escritura
1 3 1, 3 2
2 8 6 6
Leer(A),3
Leer(A),7
Leer(A),2
Escribir(A=8),6 Escribir(A=10),5
La
MT_lectura
es mayor
35. Elección
Algoritmos en que un proceso cumple un rol particular.
Caída del proceso coordinador
◦ Cualquier otro par podría tomar su rol
◦ Pero todos deben estar de acuerdo
◦ La selección del proceso elegido debe ser única
Cualquier proceso pi que detecte la desaparición del
coordinador puede iniciar la elección
◦ Podrá haber N elecciones simultaneas
◦ pi tiene una variable: participante o no-participante
◦ pii tiene una variable: electedi, con el líder elegido por pi, o el
valor null
36. Elección Basado en Anillo
Cualquier proceso puede comenzar la elección y envía un mensaje de
elección a su vecino con su identificador y se marca como participante
Cuando un proceso recibe un mensaje de elección compara el
identificador del mensaje con el suyo:
◦ Si es mayor reenvía el mensaje al siguiente
◦ Si es menor y no es un participante sustituye el identificador del mensaje por el suyo y lo
reenvía.
◦ Si es menor y es un participante no lo reenvía
◦ Cuando se reenvía un mensaje, el proceso se marca como participante
Cuando un proceso recibe un identificador con su número y es el mayor se
elige como coordinador
El coordinador notifica al resto
37. Elección Anillo
Inicialmente, ∀𝑖; 𝑝𝑎𝑟𝑡𝑖𝑐𝑖𝑝𝑎𝑛𝑡𝑖 = 𝐹𝐴𝐿𝑆𝐸
Cuando pi inicia una elección
◦ 𝑝𝑎𝑟𝑡𝑖𝑐𝑖𝑝𝑎𝑛𝑡𝑖 = 𝑇𝑅𝑈𝐸
◦ Agrega id i a un mensaje elección, y lo envía a VECINO(P)
Cuando pj recibe un mensaje election con id k
◦ IF id j > id k
◦ IF 𝑝𝑎𝑟𝑡𝑖𝑐𝑖𝑝𝑎𝑛𝑡𝑗 = 𝐹𝐴𝐿𝑆𝐸
◦ Reenvía mensaje election, pero con id j
◦ 𝑝𝑎𝑟𝑡𝑖𝑐𝑖𝑝𝑎𝑛𝑡𝑗 = 𝑇𝑅𝑈𝐸
◦ ELSE
◦ Reemplaza idk por idj , pero no reenvía
◦ ELSE IF id j < id k
◦ Reenvía mensaje election
◦ 𝑝𝑎𝑟𝑡𝑖𝑐𝑖𝑝𝑎𝑛𝑡𝑗 = 𝑇𝑅𝑈𝐸
◦ ELSE (id j == idk )
◦ Envía mensaje elected con id j
◦ 𝑝𝑎𝑟𝑡𝑖𝑐𝑖𝑝𝑎𝑛𝑡𝑗 = 𝐹𝐴𝐿𝑆𝐸
◦ electedj = id j
39. Consenso
Objetivo: que un conjunto de procesos se pongan de
acuerdo en una determinada acción o valor.
Un servicio de consenso consta de
◦ Un conjunto de N procesos que deben tener una visión
consensuada de un determinado objeto, valor o acción
◦ Clientes que envían peticiones a los procesos para proponer un
valor
Un protocolo de consenso es correcto sii:
◦ Todos los nodos deciden el mismo valor (seguridad)
◦ El valor decidido debe haber sido propuesto por algún nodo
◦ Todos los nodos deciden el valor en el algún momento
(terminación)
41. Próxima clase
Técnicas de particionamiento y replicación
Investigar (auto-sharding vr sharding manual)
42. Tipos de multicast
Multicast no fiable: no hay garantía de que el mensaje se
entregue a todos los nodos.
Multicast fiable: el mensaje es recibido por todos los nodos en
funcionamiento.
Multicast atómico: el protocolo asegura que todos los
miembros del grupo recibirán los mensajes de diferentes nodos
en el mismo orden.
Multicast causal: asegura que los mensaje se entregan de
acuerdo con las relaciones de causalidad.