Carlos A. Olarte (carlosolarte@puj.edu.co) BDII
Contenido 1 Introducción 2 Fragmentación de Datos 3 Transparencia de Red 4 Transacciones Distribuidas 5 Control de Concurrencia
Introducción Por que distribuir los datos? Ventajas frente a un sistema centralizado Problemas de los datos distribuidos Aplicaciones Ejemplo
Cómo almacenar los datos? Replicación: Copias idénticas de la relación en varios emplazamientos Fragmentación: División de los datos en varios emplazamientos Esquema mixto: Fragmentar las relaciones y crear réplicas de los fragmentos
Replicación Ventajas: Disponibilidad: Tolerancia a fallos Aumento del paralelismo: Cada emplazamiento puede realizar consultas sobre su réplica de datos Desventajas: Sobrecarga en las actualizaciones: Mantenimiento de la consistencia
Fragmentación de Datos Los fragmentos deben poder reunirse para formar la relación original Esquemas de fragmentación: Horizontal Vertical
Fragmentación Horizontal Placa Marca Ciudad ABC123 MAZDA CALI BDE498 MAZDA PALMIRA RTE164 CHEVR. CALI RTW452 RENAULT PALMIRA Placa Marca Ciudad ABC123 MAZDA CALI RTE164 CHEVR. CALI Placa Marca Ciudad BDE498 MAZDA PALMIRA RTW452 RENAULT PALMIRA r i = σ θi (r) r = i r i
Fragmentación Vertical Id Placa Marca Ciudad 1 ABC123 MAZDA CALI 2 BDE498 MAZDA PALMIRA 3 RTE164 CHEVR. CALI 4 RTW452 RENAULT PALMIRA Id Placa Marca 1 ABC123 MAZDA 2 BDE498 MAZDA 3 RTE164 CHEVR. 4 RTW452 RENAULT Id Marca Ciudad 1 ABC123 CALI 2 BDE498 PALMIRA 3 RTE164 CALI 4 RTW452 PALMIRA Sea r(r) una relación. R = i R i r i = π Ri (r) r = r 1 r 2... r n
Esquemas Mixtos Fragmentación Mixta: Aplicación de la fragmentación horizontal y vertical sobre una misma relación Replica y fragmentación: Replicar fragmentos o fragmentar réplicas
Transparencia de Red Los usuarios deben ignorar los detalles de la distribución de los elementos de datos Aspectos a tener en cuenta: Nombrado Réplicas Fragmentación Ubicación de los fragmentos y réplicas
Nombrado de los Elementos Un solo servidor (centralizado) de nombres: Cuello de botella Una caída del servidor afecta todo el sistema Los elementos tienen como prefijos el nombre del emplazamiento Nombres únicos dentro del sistema Creación de alias por facilidad
Problemas de lectura y escritura Lectura: Conocer que réplica o fragmento utilizar (debe ser transparente para el usuario) Actualización: Actualizar los fragmentos apropiados y TODAS las réplicas de los elementos modificados
Procesamiento de Consultas Aspectos a tener en cuenta: Número de accesos a disco Costo de transmisión en la red Procesamiento en paralelo de cada emplazamiento
... un ejemplo Sea r 1 = σ θ1 (r) y r 2 = σ θ2 (r) y se desea calcular σ θ3 (r). y solo se dispone de los fragmentos y no de la relación original: σ θ3 (r) = σ θ3 (r 1 ) σ θ3 (r 2 ) Sea r,t y w relaciones que se almacenan en E 1, E 2 y E 3 respectivamente, como calcular r t w en E 1? cual es el costo de cada alternativa?
Estrategia por semi-reunión Sea r(r) y t(t ) tales que se almacenan en E 1 y E 2 respectivamente. Se puede calcular r s de la siguiente manera: 1 Calcular temp 1 Π R T (r) en E 1 2 Enviar temp 1 a E 2 3 Calcular temp 2 t temp 1 4 Enviar temp 2 a E 1 5 Procesar r temp 2 Ventajas? Desventajas? r temp 2 es equivalente a r s?
Transacciones Distribuidas Transacciones Locales: Solo afectan los elementos del emplazamiento quien inicia la transacción Transacciones Remotas: Utilizan recursos de un emplazamiento remoto Transacciones Distribuidas: Utilizan recursos locales y recursos de emplazamientos remotos
Cómo coordinar las Transacciones Gestor Trans.: Registro histórico, control de concurrencia, etc Coordinador de transacciones: Coordina la ejecución de transacciones globales (distribuidas)
Coordinador de Transacciones El coordinador de transacciones tiene a cargo: Iniciar la ejecución de una transacción Divide la transacción en subtransacciones y envía las instrucciones necesarias a cada emplazamiento Coordina la terminación (compromiso o retroceso) de la transacción
Que puede fallar en una T. Global? Un Emplazamiento: Disco, SO, SGBD Pérdida en los mensajes: Debe apoyarse en los protocolos de red (Normalmente se retransmiten los mensajes) Particionamiento de la red: Un nodo o conjunto de ellos se aislan de la red (fallo en los enlaces de comunicación)
Que hacer en caso de falla? Si el emplazamiento mantiene réplicas actualizar el catalogo para que no las refresque mientras se encuentran offline Abortar las transacciones activas en el emplazamiento que falló para liberar los bloqueos en los otros emplazamientos (si no se encuentran en proceso de compromiso) Si el emplazamiento averiado es el servidor central, elegir otro servidor (alg. elección del coordinador) Cuando el nodo se recupere: Refrescar las réplicas y fragmentos modificados Retroceder las transacciones abortadas Rehacer las transacciones comprometidas
Protocolo de Compromiso de 2 Fases Cada acción debe registrarse en el registro histórico con fines de recuperación O todos los emplazamientos se comprometen o todos se abortan (atomicidad global)
Posibles fallos y soluciones en el PC2F Si el fallo es anterior al mensaje de preparación, se asume un abort Si el fallo es posterior al mensaje de preparación se continua el PC2F Cuando el emplazamiento se recupera debe: Si existe t i comprometida en el R.H, rehacer(t i ) Si existe t i abortada en el R.H, deshacer(t i ) Si existe t i preparada en el R.H, consultar a C i el destino de la transacción. Si C i no responde consultar a los otros emplazamiento y posponer la decisión hasta encontrar una respuesta de algún nodo. Si el registro no contiene las anteriores, debe abortar (nunca hubo respuesta)
Qué pasa si falla el coordinador? Si un emplazamiento contiene t i comprometida o t i abortada se compromete o aborta la transacción Si ningún emplazamiento contiene t i (fallo antes de tomar la decisión) preparada se aborta T Si ningún emplazamiento tiene t i comprometida o t i abortada, t i espera hasta la recuperación de C i y se mantienen los bloqueos hasta que esto suceda
Qué pasa si hay división de la red? Si todos están en la misma partición no hay problema Si pertenecen a dos particiones, los emplazamientos asumirán que los otros han fallado y se ejecuta el PC2F en los nodos posibles y en los otros cuando se restablezca el canal de comunicación
Protocolo de Compromiso de 3 Fases Condiciones: No pueden producirse divisiones en la red Como máximo k emplazamientos pueden fallar Ventajas No bloquea los recursos así falle el coordinador
...continuación
Tratamiento de Fallos con el PC3F En los participantes: Antes de preparar se aborta, de lo contrario se sigue el procedimiento Cuando se recupera si en el R.H hay un t i abortada o t i comprometida se deshace o rehace la transacción Si hay t i preparada se pregunta a C i el estado de t i para precomprometer o abortar Si hay t i precomprometida se consulta a C i el estado de t i para comprometer, abortar o reactivar el 3FC Fallo del coordinador: Si no hay respuesta del coordinador, se ejecuta el protocolo de fallo del coordinador y cuando C i suba, actuará como participante
Protocolo de Fallo del Coordinador Se da por supuesto que no hay fallo de la red, es decir que C i falló 1 Seleccionar un nuevo coordinador 2 C2 (el nuevo coordinador) pregunta a los emplazamientos el estado de t i 3 Cada emplazamiento determina el estado de t i 4 Se decide el estado de T: Si existe un t i comprometida, t i se compromete Si existe un t i abortada,t i se aborta Si existe t i precomprometida,se activa el 3FC De lo contrario se aborta t i
Algoritmos de elección Decide quien es el nuevo coordinador: Copia de Seguridad: Tener un coordinador de backup con toda la información necesaria para suplir las funciones de C i Elección: Enumerar los emplazamientos y tratar de seleccionar el emplazamiento con número mayor Algoritmo luchador: Proponerse como coordinador e informar a los otros
Control de Concurrencia Enfoque de un solo gestor: Un solo emplazamiento concede los bloqueos Implementación sencilla Fácil detección de Dead Locks Cuello de Botella Todo el sistema puede fallar si falle el gestor de bloqueos
...continuación Enfoque de varios gestores: Cada emplazamiento es responsable de un conjunto de datos Se minimiza el cuello de botella Se vuelve complejo el tratamiento de interbloqueos
Protocolo de la mayoría: Cada emplazamiento controla localmente sus datos Para bloquear un dato Q replicado, hay que enviar mensajes a mas de la mitad de las réplicas solicitando el bloqueo. Utiliza el envió de mensajes para conceder los bloqueos Desventaja: El tratamiento de Interbloqueos
Protocolo Sesgado Para los bloqueos compartidos solo solicita el bloqueo a un emplazamiento que contenga una réplica de Q Para los bloqueos exclusivos, se solicita el bloqueo a TODOS los gestores con réplicas de Q
Copia principal: Se selecciona una copia principal de Q Donde reside dicha copia es el emplazamiento principal de Q Dicho emplazamiento es el que concede los bloqueos sobre Q
Tratamiento de Interbloqueos Con la construcción de grafos locales no es suficiente para determinar un interbloqueo. Por ejemplo:
Enfoque Centralizado Construir un grafo centralizado cuando: Se modifique un arco en un grafo local Periódicamente Siempre que se requiere correr el algoritmo de detección
Esquema Distribuido Construcción de grafos parciales en cada emplazamiento Detección de ciclos en los grafos parciales Los grafos locales se van extendiendo a medida que el emplazamiento participa en transacciones globales
Arquitecturas Heterogéneas Reunión de diferentes bases de datos con diferentes arquitecturas, tipos, SW HW, etc Deben presentarse esquemas de traducción entre una instancia y otra Debe existir una capa de SW adicional que integre todas las instancias de manera lógica mas no física