5. Bases de datos distribuidas

Anuncio
5. Bases de datos distribuidas
5.1 Introducción
Un sistema de bases de datos distribuidas se compone de un conjunto de sitios
conectados entre sí mediante algún tipo de red de comunicaciones en el cual:
1. Cada sitio es un sistema de B.D. por sí mismo.
2. Los sitios han convenido en trabajar juntos con el fin de que un usuario de cualquier
sitio pueda obtener acceso a los datos de cualquier punto de la red tal como si todos
los datos estuvieran almacenados en el sitio propio del usuario.
5.2 Definición
Base de Datos Distribuida
DDBMS (Distributed DBMS). Es el software que administra todas las bases de datos de
los sitios y proporciona un mecanismo de acceso que hace
transparente esta distribución a los usuarios.
Esta regla conduce a 12 objetivos o reglas secundarias:
1. Autonomia local.
2. No dependencia de ningun sitio central.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
Operación continua.
Independencia con respectos a la localización (transparencia de localización).
Indepencia con respecto a la fragmentación.
Independencia de réplica.
Optimización en el procesamiento distribuido de consultas.
Manejo de transacciones distribuídas
Independencia con respecto al equipo.
Independencia con respecto al sistema operativo.
Independencia con respecto a la red.
Independencia con respecto al DBMS.
Ventajas de los DDBMS
Autonomia local.
Mejora la confiabilidad / disponibilidad.
Mejora de la eficiciencia.
Expandibilidad.
Economía en cuanto crecimiento incremental.
Compartición de recursos.
Areas problemas de los DDBMS
Diseño de base de datos distribuídas.
Procesamiento de querys distribuídos.
Administración del diccionario de datos.
Control de concurrencia distribuído.
Administración del deadlock distribuído.
Recuperación de transacciones en ambientes distribuídos.
Base de datos heterogeneas (Multibase de datos).
Relación cruzada entre los problemas anteriores.
5.3 Fragmentación
5.3.1 Definición
Fragmentación es la descomposición o partición de una tabla en pedazos llamados
fragmentos.
La fragmentación básicamente se puede hacer de dos formas:
Fragmentación Horizontal. selecciona registros completos de una relación
Fragmentación Vertical. selecciona columnas completas de una relación
5.3.2 Reglas a Cumplir por Fragmentación
Condición de Completés.
Todos los datos de la relación global deberán ser mapeados a algún fragmento.
Condición de Reconstrucción.
Deberá ser siempre posible reconstruir la relación global a partir de sus fragmentos.
Condición de Conjuntos Disjuntos.
Es conveniente que los fragmentos sean disjuntos.
5.3.3 Fragmentación Horizontal
Definir fragmentos horizontales se hace a través del operador de selección del
algebra relacional operando sobre una relación global.
Los predicados que nos permiten definir una fragmentación de una relación son llamados la
calificación de la fragmentación.
En el ejemplo la calificación de la fragmetación hecha a S, son:
q1 : CD = ‘L’
q2 : CD = ‘P’
En general una fragmentación horizontal es correcta, si cumple que:
El conjunto de calificaciones mapea todo el dominio del atributo(s) bajo el cual se hace
la calificación.
Si siempre es posible reconstruir la tabla global por medio del operador UNION del
algebra relaciónal:
R = F1 UNION F2 UNION …UNION Fn
Si todas las calificaciones de los fragmentos son mutuamente exclusivas, es decir, si al
aplicar las calificaciones se producen fragmentos que al intersectarlos generan un
conjunto vacio.
F = F1 INTERSECT F2 INTERSECT ..
INTESECT Fn
5.3.4 Fragmentación Horizontal Derivada
Este tipo de fragmentación particiona una tabla en base a un atributo(s) que esta presente
en otra tabla(s).
Los fragmentos se definirían de la sig. manera:
5.3.5 Fragmentación Vertical
Definir fragmentos verticales se hace a través del operador de proyección del algebra
relacional operando sobre una relación global.
Una característica importante de la fragmentación vertical, es que todos los fragmentos
deben incluir la llave primaria de la relación global.
La razón es que si no incluímos la llave primaria no es posible reconstruir la relación original.
Para reconstruir la relación original debemos realizar un JOIN de todos los fragmentos.
R = F1 JOIN F2 JOIN … JOIN F3
En fragmentación vertical no se cumple que los fragmentos sean disjuntos (la llave está
repetida en todos los fragmentos).
5.3.4 Fragmentación Híbrida
Consiste en aplicar las operaciones de fragmentación vistas anteriormente de
manera recursiva, satisfaciendo las condiciones de correctés cada vez que se realiza la
fragmentación.
La reconstrucción puede ser obtenida aplicando las reglas de reconstrucción en orden
inverso.
De esta forma podemos fragmentar nuestra tabla global en los pedazos que queramos y
como queramos.
Ejemplo: Considere la relación de empleado (E).
Una posible fragmentación híbrida sería:
E1 = Ex[Emp#, Nombre, #Jefe,Dept#] Where Dept# <10
E2 = Ex[Emp#, Nombre, #Jefe,Dept#] Where Dept# >=10
And Dept# <=20
E3 = Ex[Emp#, Nombre, #Jefe,Dept#] Where Dept# >20
E4 = E[Emp#, Salario, Impto]
5.4 Transacciones distribuidas
5.4.1 Definición
Una transacción distribuida es aquella que involucra algún proceso en distintos
sitios de la red. Llamaremos a estos procesos los agentes de la transacción, entonces
una transacción distribuida esta compuesta por varios agentes.
Para llevar a cabo una transacción distribuida los agentes tienen que comunicarse a
través de mensajes en la red y se debe garantizar la atomicidad de la transacción.
Requiere:
1. Existe un agente raíz que inicia toda la transacción, así que cuando el usuario requiere
la ejecución de una aplicación distribuida el agente raíz es iniciado; el sitio del agente
raíz es llamado el sitio origen de la transacción.
2. El agente raíz tiene la responsabilidad de asegurar BEGIN-TRANSACTION, COMMIT O
ROLLBACK de toda la transacción distribuida.
5.4.2 Recuperación de transacciones distribuidas
Para realizar la recuperación de transacción distribuidas se asume que cada sitio tiene
su propio manejador de transacción local (LTM).
Cada agente utiliza de manera local las primitivas asociadas a sus transacciones.
Podemos llamar a los agentes subtransacciones, lo cual origina distinguir las primitivas
BEGIN-TRANSACTION, COMMIT Y ROLLBACK asociado a la transacción distribuida de la
primitivas locales utilizada por
cada agente en LTM; para poder distinguir una de las otras, a las ultimas les
llamaremos:
LOCAL-BEGIN, LOCAL-COMMIT Y LOCALROLLBACK.
Para propósito del manejador de transacciones distribuidas (DTM), requieren que los
LTM se conformen de la siguiente manera:
1. Asegurar la atomicidad de su transacción.
2. Grabar en bitácora por ordenes de la transacción distribuida.
Para asegurar que todas las acciones de una transacción distribuida son
ejecutadas o no ejecutadas dos condiciones son necesarias:
a. En cada sitio todas las acciones son ejecutadas o ninguna es ejecutada.
b. Todos los sitios deberán tomar la misma decisión respecto al COMMIT o
ROLLBACK de la transición global.
5.4.3 Commit de 2 fases
En este protocolo hay un agente que tiene un papel especial, este agente es llamado el
coordinador (el cual es el agente raíz) y todo los demás agentes son llamados
PARTICIPANTES.
El COORDINADOR es el responsable de tomar la decisión de hacer un COMMIT o un
ROLLBACK GLOBAL y cada PARTICIPANTE es responsable de grabar a sus bitácoras y bases
de datos locales.
La idea básica del protocolo en dos fases (2pl, 2 phase locking) es determinar una decisión
única para todos los participantes con respecto a hacer un COMMIT o un ROLLBACK en todas
las subtransacciones locales.
La primera fase de este protocolo tiene como objetivo lograr una decisión común, la meta de
la segunda fase es llevar a cabo esta decisión.
En términos generales el commit de 2 fases en bases de datos distribuidas funciona muy
similar a commit de 2 fases tradicional.
"En toda transacción, todos los locks preceden a todos los unlocks".
Descargar