Sei sulla pagina 1di 11

Base de Datos Distribuidas Prof.

Sergio Ortiz Gama

BASES DE DATOS DISTRIBUIDAS (BDD)

Fragmentacin
Fragmentacin es la descomposicin o particin de una tabla en pedazos llamados fragmentos. La fragmentacin bsicamente se puede hacer de dos formas: Fragmentacin Horizontal. Selecciona registros completos de una relacin Fragmentacin Vertical. Selecciona columnas completas de una relacin

Reglas a Cumplir por Fragmentacin


Condicin de Completes o Todos los datos de la relacin global debern ser mapeados a algn fragmento Condicin de Reconstruccin. o Deber ser siempre posible reconstruir la relacin global a partir de sus fragmentos. Condicin de Conjuntos Disjuntos. o Es conveniente que los fragmentos sean disjuntos.

Fragmentacin Horizontal
Definir fragmentos horizontales se hace a travs del operador de seleccin del algebra relacional operando sobre una relacin global.
Supplier SNUM S1 S2 S3 S4 S5 NOM X Y Z A B CD L L P P L Una posible fragmentacin horizontal de esta tabla sera: FH1 = P WHERE CD=L FH2 = P WHERE CD=P
FH1 FH2

SNUM S1 S2 S5

NOM X Y B

CD L L L

SNUM NOM CD S3 Z P S4 A P

Los predicados que permiten definir una fragmentacin de una relacin son llamados la calificacin de la fragmentacin. En el ejemplo la calificacin de la fragmentacin hecha a Supplier, son: q1 : CD = L q2 : CD = P En general una fragmentacin horizontal es correcta, si cumple que: El conjunto de calificaciones mapea todo el dominio del atributo(s) bajo el cual se hace la calificacin. Si siempre es posible reconstruir la tabla global por medio del operador UNION del algebra relacinal: R = F1 UNION F2 UNION UNION Fn Ejemplo > Create table emp_f select * from empleado where sexo="f"; > Create table emp_m select * from empleado where sexo="m"; > select * from emp_f union select * from emp_m; Si todas las calificaciones de los fragmentos son mutuamente exclusivas, es decir, si al aplicar las calificaciones se producen fragmentos que al intersecarse generan un conjunto vacio.

Base de Datos Distribuidas Prof. Sergio Ortiz Gama

0 = F1 INTERSECT F2 INTERSECT .. INTESECT Fn > select * from emp_f a,emp_m b where a.id_emp=b.id_emp; Empty set (0.00 sec)

Fragmentacin Horizontal Derivada Este tipo de fragmentacin particiona una tabla en base a un atributo(s) que esta presente en otra tabla(s).
SP

Id_S Id_P Id_DEPT CANT

Ejemplo: Fragmentar a SP de acuerdo a la ciudad del proveedor Pero ciudad no est en SP, como le hacemos ? Debemos hacer un JOIN de SP y Supplier y proceder a realizar la fragmentacin horizontal. Los fragmentos se definirn de la sig. manera: FDH1 = ((Supplier JOIN SP) Where CD = L) FDH2 = ((Supplier JOIN SP) Where CD = P)
SP
Id_S S1 S1 S2 S2 S3 S4 S4 S4 Id_P P1 P3 P1 P2 P3 P4 P5 P6 Id_DEPT D1 D1 D2 D2 D1 D2 D3 D1 CANT 100 100 50 200 100 50 100 50

Supplier
Id_s S1 S2 S3 S4 S5 NOMBRE X Y Z A B CD L L P P L

FDH1
Id_S S1 S1 S2 S2 Id_P P1 P3 P1 P2 Id_DEPT D1 D1 D2 D2 CANT 100 100 50 200

FDH2
Id_S S3 S4 S4 S4 Id_P P3 P4 P5 P6 Id_DEPT D1 D2 D3 D1 CANT 100 50 100 50

Fragmentacin Vertical Definir fragmentos verticales se hace a travs del operador de proyeccin del algebra relacional operando sobre una relacin global.
E ID_EMP E1 E2 E3 E4 E5 NOMBRE X Y Z A B SALARIO 1000 1500 500 4000 2000 IMPTO 100 300 20 1000 350 ND D1 D1 D2 D3 D2 FV1 = E [ID_EMP, NOMBRE, ND] ID_EMP E1 E2 E3 E4 E5 NOMBRE X Y Z A B DEPT# D1 D1 D2 D3 D2 FV2 = E [ID_EMP, SALARIO, IMPTO] ID_EMP E1 E2 E3 E4 E5 SALARIO 1000 1500 500 4000 2000 IMPTO 100 300 20 1000 350

Una caracterstica importante de la fragmentacin vertical, es que todos los fragmentos deben incluir la llave primaria de la relacin global. La razn es que si no incluimos la llave primaria no es posible reconstruir la relacin original. Para reconstruir la relacin original debemos realizar un JOIN de todos los fragmentos. R = F1 JOIN F2 JOIN JOIN F3

Base de Datos Distribuidas Prof. Sergio Ortiz Gama

En la fragmentacin vertical no se cumple que los fragmentos sean disjuntos (la llave est repetida en todos los fragmentos). Ejemplo > Create table emp_v_sal select id_emp, nombre, apellido,sal from empleado; > Create table emp_v_nd select id_emp, nombre, apellido,nd from empleado; > select a.id_emp,a.nombre,a.apellido,a.sal,b.nd from emp_v_sal a, emp_v_nd b where a.id_emp=b.id_emp; Fragmentacin Hbrida Consiste en aplicar las operaciones de fragmentacin vistas anteriormente de manera recursiva, satisfaciendo las condiciones de correctes cada vez que se realiza la fragmentacin. La reconstruccin puede ser obtenida aplicando las reglas de reconstruccin en orden inverso. De esta forma podemos fragmentar nuestra tabla global en los pedazos que queramos y como queramos. Ejemplo: Considere la relacin de empleado (E). Una posible fragmentacin hbrida sera:
E E E4

E1

E2

E3

E1 = E[id_emp, Nombre, nd] Where nd <10 E2 = E[id_emp, Nombre, nd] Where nd >=10 And nd<=20 E3 = E[id_emp, Nombre,nd] Where nd >20 E4 = E[id_emp, Salario, Impto

> Create table emp_v_nd select id_emp, nombre, apellido,nd from empleado; > Create table emp_v_nd_rango select id_emp, nombre, apellido,nd from empleado where id_emp >200;

Base de Datos Distribuidas Prof. Sergio Ortiz Gama

Replicacin de datos
Se refiere al almacenamiento de copias de datos en sitios mltiples servidos por una red de computadoras. Pueden guardarse copias de fragmentos en varios sitios para satisfacer requerimientos de informacin especficos. Como la existencia de copias de fragmentos puede mejorar la disponibilidad de los datos y el tiempo de respuesta, estas copias reducen los costos de comunicacin y consulta totales Ejemplo: Suponga que la BD A esta dividida en dos fragmentos: A1 y A2 Dentro de una BDD es posible el escenario: el fragmento A1 se guarda en los sitios S1 y S2 el fragmento A2 se guarda en los sitios S2 y S3 Los datos replicados se someten a la regla de consistencia mutua La regla de consistencia mutua requiere que todas las copias de fragmentos sean idnticas Por consiguiente, para mantener la consistencia de los datos entre las replicas, el SGBDD debe garantizar que se realice una actualizacin de la BD en todos los sitios donde existan replicas Aunque la replicacin tiene algunos beneficios, tambin exige ms complejidad de procesamiento del SGBDD, porque cada copia de datos debe ser mantenida por el sistema. Procesos que el SGBDD debe realizar para utilizar la BD: Si la BD esta fragmentada, el SGBDD debe decidir que copia acceder Una operacin Read selecciona la copia ms cercana para satisfacer la transaccin Una operacin Write requiere que todas las copias se seleccionen y actualicen para la regla de consistencia mutua El procesador de transacciones enva una solicitud de datos a cada procesador de datos para su ejecucin El procesador de datos recibe y ejecuta cada solicitud y enva los datos de vuelta al procesador de transacciones El procesador de transacciones arma las respuestas del procesador de datos El problema se complica ms cuando se consideran factores adicionales tales como la topologa de la red y procesos de comunicacin Existen tres escenarios de replicacin 1) 2) 3) Una BD totalmente replicada. Guarda varias copias de cada fragmento de la BD en varios sitios. En este caso, los fragmentos de la BD estn replicados. Una BD totalmente replicada puede no ser practica debido a la cantidad de carga impuesta al sistema Una BD parcialmente replicada. Guarda mltiples copias de algunos fragmentos de la BD en mltiples sitios. La mayora de los SGBDD son capaces de manejar bien la BD parcialmente replicada Una BD no replicada. Guarda cada fragmento de BD en un solo sitio. Por consiguiente, no existen fragmentos de BD duplicados

Base de Datos Distribuidas Prof. Sergio Ortiz Gama

Factores que influyen en la decisin de utilizar replicacin de datos Tamao de la BD Frecuencia de uso Costos de desempeo, Software, indirectos y de administracin, asociados con la sincronizacin de las transacciones

Colocacin de datos
La colocacin de los datos describe el proceso de decidir donde localizarlos. Las estrategias de colocacin de los datos son las siguientes: Colocacin particionada de los datos. La base de datos se divide en varias partes desarticuladas (fragmentos) y se guardan en varios sitios Colocacin replicada de los datos. Se guardan copias de uno o ms fragmentos de la BD en varios sitios La distribucin de los datos a travs de la una red de computadoras, se logra mediante la particin de los datos, replicacin de los datos o mediante una combinacin de ambas La colocacin de los datos esta estrechamente relacionada con la manera en que una BD se divide o fragmenta. La mayora de los estudios de colocacin de los datos se enfocan en un tema: QUE datos localizar y en DONDE Los algoritmos de colocacin de los datos consideran varios factores: Objetivos de desempeo y disponibilidad de los datos Tamao, numero de tuplas y el nmero de relaciones (vnculos) que una entidad mantiene con otras entidades Tipos de transacciones a ser aplicadas a la BD, los atributos accedidos por cada una de las transacciones, entre otros

Base de Datos Distribuidas Prof. Sergio Ortiz Gama

Practica. Fragmentacin, distribucin y replicacin Fragmentar y distribuir la BD Compania Supongamos que la Compaa tiene 3 nodos de servidor, uno para cada uno de los departamentos actuales. 1. Los nodos 2 y 3 son para los departamentos 5 y 4 respectivamente. a) En cada uno de estos nodos esperamos que haya un acceso frecuente a la informacin de EMPLEADO y PROYECTO de los empleados que trabajan en ese departamento y los proyectos controlados por ese departamento ( se deduce la informacin de lugar_dept y trabaja_en) Adems, supongamos que en estos nodos se tiene acceso principalmente a los atributos ID_EMP, NOMBRE, APELLIDO, SALARIO y NO_SUPERV de empleado.

b) 2.

El nodo 1 usa la oficina central de la compaa y tiene acceso con regularidad a toda la informacin de empleados y proyectos, adems de utilizar la informacin de DEPENDIENTE para cuestiones de seguros

De acuerdo con estos requerimientos, la base de datos completa se puede almacenar en el nodo 1. Determinar los fragmentos que deben replicarse en los nodos 2 y 3.

Base de Datos Distribuidas Prof. Sergio Ortiz Gama

Nodo 2

id_emp nombre apellido fecnac direccion sexo sal no_superv nd 123 luis Viades 1960-01-09 Paris 5 m 30000 333 5 666 Mario Alberto Luque 1958-09-15 Madrid 43 m 38000 333 5 453 Lucia Aldana 1962-04-12 Budapest 300 f 20000 333 5 EMPD5 id_emp nombre apellido sal no_superv nd 123 luis Viades 30000 333 5 666 Mario Alberto Luque 38000 333 5 453 Lucia Aldana 20000 333 5 DEPTO5 Numdept nomdept nssgte fecinigte 5 Ingenieria 333 1980-10-07 LUGAR_D5 numdept lugard 5 Altavista 5 Buenavista 5 CIVAC PROY5 no_proy nomproy lugarp numd 1 EnsamblajeA Altavista 5 2 ProcecosABC CIVAC 5 3 Calidad Total Buenavista 5 Select id_emp, nombre, apellido,sal, no_superv, id from empleado where nd=5

Fragmentar TRABAJA_EN y decidir cules fragmentos almacenar en los nodos 2 y 3.

Problema Ningn atributo de trabaja_en indica directamente el departamento al que pertenece cada tupla Cada tupla de trabaja_en relaciona un empleado e con un proyecto p Podramos fragmentar TRABAJA_EN segn el departamento d al que e pertenece o bien segn el departamento d que controla p La fragmentacin se facilita si tenemos una restriccin que especifique que d=d para tod as las tuplas TRABAJA_EN; esto es, si los empleados solo pueden trabajar en los proyectos controlados por el departamento al que pertenecen. Sin embargo, no hay tal restriccin en la BD, por ejemplo, la tupla TRABAJA_EN (333, 3, 20) relaciona un empleado que pertenece al departamento 4 con un proyecto que est bajo el control del departamento 5. En este caso podramos fragmentar TRABAJA_EN con base tanto en el departamento al que pertenece el empleado como en el departamento que controla el proyecto

Base de Datos Distribuidas Prof. Sergio Ortiz Gama

A. ND=5
X1 > select * from trabaja_en where no_emp in (select id_emp from empleado where nd=5) and numproy in (select no_proy from proyecto where numd=5); > select no_emp, numproy, horas from empleado, proyecto, trabaja_en where id_emp=no_emp and numproy=no_proy and nd=5 and numd=5 no_emp numproy Horas 123 1 32.5 123 2 40 666 3 20 453 1 10 453 2 30 X2 nd=5 and numd=4 X3 nd=5 and numd=2 X4 nd=5 and numd=1

B. ND=4
X5 >select no_emp, numproy, horas from empleado, proyecto, trabaja_en where id_emp=no_emp and numproy=no_proy and nd=4 and numd=5 no_emp numproy Horas 333 2 35 333 3 20 nd=4 and numd=4 no_emp numproy Horas 333 10 0 nd=4 and numd=2 nd=4 and numd=1 no_emp numproy horas 333 20 10 ND=2 nd=2 and numd=5 nd=2 and numd=4 nd=2 and numd=2 nd=2 and numd=1 ND=1 nd=1 and numd=5 nd=1 and numd=4 nd=1 and numd=2 nd=1 and numd=1

X6

X7 X8

c)
X9 X10 X11 X12

d)
X13 X14 X15 X16

La unin de los fragmentos X1, X2, X3 y X4 produce todas las tuplas TRABAJA_EN de los empleados que pertenecen al departamento 5

Base de Datos Distribuidas Prof. Sergio Ortiz Gama

La unin de los fragmentos X5, X6, X7 y X8 produce todas las tuplas TRABAJA_EN de los empleados que pertenecen al departamento 4 La unin de los fragmentos X1, X5, X9 y X13 produce todas las tuplas TRABAJA_EN de los proyectos controlados por el departamento 5 En nuestra distribucin incluimos todos los fragmentos que se pueden reunir para dar una tupla EMPLEADO o bien una tupla PROYECTO en los nodos 2 y 3 Nodo 2 Colocamos la union de los fragmentos X1, X2, X3, X4, X5, X9 y X13 en el nodo 2 TRABAJA_EN
no_emp numproy Horas 123 1 32.5 123 2 40 666 3 20 453 1 10 453 2 30 333 333 2 3 35 20

Nodo 3 Colocamos la union de los fragmentos X5, X6, X7, X8, X2, X10 y X14 en el nodo 2
no_emp numproy Horas 333 2 35 333 3 20 333 10 0 333 20 10

Los fragmentos X2 y X5 se replican en ambos nodos

Base de Datos Distribuidas Prof. Sergio Ortiz Gama

Procesamiento de consultas en bases de datos distribuidas


Cmo un SGBDD procesa y optimiza una consulta Costos de la transferencia de datos en el procesamiento de consultas distribuidas En un sistema distribuido varios factores complican el procesamiento de consultas El primero es el costo de transferir datos por la red. Estos datos incluyen los archivos intermedios que se transfieren a otros nodos para continuar su procesamiento, as como los archivos de resultado final que tal vez deban transferirse al nodo donde se necesita el resultado de la consulta Los algoritmos de optimizacin de los SGBDD consideran el objetivo de reducir la cantidad de transferencia de datos como criterio de optimizacin al elegir una estrategia de ejecucin de una consulta distribuida Ejemplos Supongamos que las tablas EMPLEADO Y DEPTO estn distribuidas de la siguiente forma (supondremos que ninguna de las tablas est fragmentada): Nodo 1
EMPLEADO id_emp nombre apellido fecnac direccion sexo sal no_superv nd 10 000 registros Cada registro tiene 100 bytes de longitud Id_emp tiene 9 bytes nombre 15 bytes

apellido 15 bytes

nd 4 bytes

Nodo 2
DEPTO Numdept nomdept nssgte fecinigte 100 registros Cada registro tiene 35 bytes de longitud Numdept tiene 4 bytes

nomdept 10 bytes

nssgte 9 bytes

Con base en la informacin: El tamao de EMPLEADO es 100 * 10 000 El tamao de DEPTO es 35 * 100

= 1 000 000 bytes = 3 500 bytes

Consideremos la consulta A: Para cada empleado, obtener su nombre y apellido y el nombre del departamento al que pertenece

NOMBRE, APELLIDO, NOMDEPT (EMPLEADO

>< ND=NUMDEPT DEPTO)

El resultado de esta consulta incluir 10 000 registros, si todo empleado est relacionado con un departamento: Cada registro del resultado de la consulta tiene 40 bytes de longitud (15 + 15 + 10) La consulta se introduce en un nodo 3 distinto que es donde se requiere el resultado de la consulta Ninguna de las dos tablas EMPLEADO ni DEPTO reside en el nodo 3.

10

Base de Datos Distribuidas Prof. Sergio Ortiz Gama

Hay tres estrategias simples para ejecutar esta consulta distribuida 1. 2. Transferir EMPLEADO y DEPTO al nodo 3 y efectuar la reunin. Requerimos transferir un total de 1 000 000 + 3500 = 1 003 500 bytes Transferir EMPLEADO al nodo 2, ejecutar la reunin en ese nodo y enviar el resultado al nodo 3. El tamao del resultado de la consulta es 40 * 10 000 = 400 000 bytes, de modo que debemos transferir 400 000 + 1 000 000 = 1 400 000 bytes Transferir DEPTO al nodo 1, ejecutar la reunin en ese nodo y enviar el resultado al nodo 3. En este caso tenemos que transferir 400 000 + 3500 = 403 500 bytes

3.

Si minimizar la cantidad de transferencia de datos es el criterio de optimizacin, debemos elegir la estrategia 3

11

Potrebbero piacerti anche