Diseño De Fragmentación Horizontal Primaria

Anuncio
Diseño
De
Fragmentación
Horizontal Primaria
Diseño de Fragmentación Horizontal Primaria
Determinar un conjunto disjunto y completo de
predicados de selección, con la finalidad de que
cada uno de los elementos de los fragmentos
sea referenciado homogéneamente.
Algunas definiciones
Un predicado simple es de la forma:
atributo = valor
Diseño de Fragmentación Horizontal Primaria
Un predicado minitermino (y) de un conjunto P
de predicados simples es la conjunción de todos
los predicados apareciendo en P, ya sea tomada
en forma natural o negada, proveyendo que esta
expresión no es una contradicción. Esto es:
y = Λ p*i
p*i ε P
Donde p*i = pi o p*i = NOT pi ; y <> false
Un fragmento es el conjunto de todos los tuplos
para el cual un predicado minitermino es
verdadero
Diseño de Fragmentación Horizontal Primaria
Un predicado simple pi es relevante con
respecto a un conjunto P de predicados
simples, si existe al menos dos predicados
miniterminos de P cuya expresión difiere
solamente en el predicado pi ( en un caso
aparece en su forma natural y en otro en su
forma negada) tal que los correspondientes
fragmentos son referenciados en diferente
forma por al menos una aplicación
Diseño de Fragmentación Horizontal Primaria
Ejemplo 1. Considere :
La relación EMP(NE, Nom, Dept, Puesto,Sal).
Dos aplicaciones: la primera accesa la
información por departamento y la segunda
accesa
información
únicamente
de
programadores.
Dos departamentos ubicados en distintos
sitios, de tal manera que la aplicación accesa
con mayor probabilidad la información del
sitio (departamento) donde se ejecuta.
Diseño de Fragmentación Horizontal Primaria
Dos predicados simples hay en este ejemplo:
Dept = 1 y Puesto = 'P'. Los predicados
miniterminos para estos dos predicados son:
+ Dept = 1 and Puesto = 'P'
+ Dept = 1 and Puesto <> 'P'
+ Dept <> 1 and Puesto = 'P’
+ Dept <> 1 and Puesto <> 'P’
Los dos predicados simples mencionados son
relevantes, mientras que por ejemplo, Sal > 50
no es relevante.
Diseño de Fragmentación Horizontal Primaria
Establescamos P = { p1,p2,..,pn } un conjunto de
predicados simples. Para que P represente una
fragmentación correcta y eficientemente, P
deberá ser completo y mínimo.
Un conjunto P de predicados es completo si y
solo
si
cualquiera
de
dos
tuplos
pertenecientes al mismo fragmento son
referenciados con la misma probabilidad por
cualquier aplicación
P es mínimo si todos sus predicados son
relevantes.
Diseño de Fragmentación Horizontal Primaria
Ejemplo 2. Considere :
P1 = { Dept = 1} no es completo.
P2 = { Dept = 1, Puesto = 'P'} es completo
y mínimo.
P3 = { Dept = 1, Puesto = 'P', Sal > 50 } es
completo pero no mínimo.
Diseño de Fragmentación Horizontal Primaria
Fragmentación horizontal puede ser producida
con el sig. metodo:
Considere un predicado p1 que particione a los
tuplos de R en dos partes, los cuales son
referenciados diferentemente por al menos una
aplicación. Asignemos P = p1 .
Considere un nuevo predicado simple pi que
particiona al menos un fragmento de P en dos
partes que sean referenciados diferentemente por al
menos una aplicación. Asignemos P=P U pi Elimina
predicados no relevantes de P. Repite este paso
hasta que el conjunto de fragmentos miniterminos
de P es completo.
Diseño de Fragmentación Horizontal Primaria
Ejemplo General. Considere :
Una base de datos de Empleados(#E,Nombre, #Dept),
Departamentos(#Dept,Nombre,Area),
Proveedores(Snum,Nombre,Cd) y Embarq(Snum,.,#Dept)
Considere 3 sitios en la red: Querétaro (S1), DF (S2),
Cuernavaca (S3).
30 departamentos: los primeros 10 cercanos a
Querétaro, entre el 11 y el 20 cercanos al DF y del 21 al
30 cercanos a Cuernavaca.
Los proveedores están en Querétaro o en Cuernavaca.
Existe dos áreas Norte (Queretaro) y Sur (Cuernavaca),
D.F. esta en la línea divisora con departamentos en el
área Norte y Sur.
En Cd. del proveedor solo existe dos valores: "Q" ó "C".
Diseño de Fragmentación Horizontal Primaria
Existen las sigs. aplicaciones importantes:
Una aplicación requiriendo el nombre de proveedor
dado su número de proveedor.
SELECT Nombre
FROM Proveedor
WHERE Snum = $x
La aplicación es usada en cualquiera de los sitios. Si
es usada en el sitio 1 referencia proveedores con Cd =
"Q" con 80% de probabilidad; si es usada en el sitio 3
referencia proveedores con Cd = "C" con 80% de
probabilidad; y si es usada en DF los referencia con la
misma probabilidad.
Diseño de Fragmentación Horizontal Primaria
Aplicaciones administrativas, que son utilizadas
solamente en los sitios 1 y 3; en el sitio 1 utilizan
aplicaciones acerca de deptos. en el área norte; y para
deptos. en el área sur se utilizan aplicaciones en el sitio
3.
Aplicaciones acerca del trabajo conducido en cada
depto. Estas aplicaciones pueden ser utilizadas en
cualquier depto. pero referencian con mayor
probabilidad a tuplos de deptos. que son más cercanos
a su sitio de origen.
Realice una fragmentación horizontal de este sistema.
Diseño de Fragmentación Horizontal Primaria
Como atacar el problema ?
Identifique los sitios que estan presentes en el
problema.
Identifique las aplicaciones del sistema (las
principales)
Identifique en que sitio se ejecutan las
aplicaciones.
Identifique las tablas que accesa cada
aplicación.
Para cada tabla identificada realice la
fragmentación horizontal (aplique el algoritmo)
tomando en cuenta la frecuencia de activación
de las aplicaciones.
Diseño de Fragmentación Horizontal Primaria
Fragmentación de Proveedores.
1) Encontrar un predicado que permita iniciar la
fragmentación.
P1: Cd = "Q".
2) Verificar que el conjunto P={ Cd = "Q"} es completo y
mínimo.
+ Encontrar los miniterminos:
– M1: Cd = "Q"
– M2: Cd <> "Q" => Cd = "C"
+ Verificar que P es mínimo.
Ya que todos los predicados de P son
relevantes entonces P es mínimo.
Diseño de Fragmentación Horizontal Primaria
+ Verificar si el conjunto P es completo.
Ya que para cada uno de los fragmentos
originados por P, cualquiera de dos tuplos
es accesado con la misma probabilidad
entonces P es completo.
3) Ya que P es mínimo y completo, la fragmentación
establecida por los miniterminos es correcta y
eficiente.
Diseño de Fragmentación Horizontal Primaria
Fragmentación de Departamentos.
1) Encontrar un predicado que permita iniciar la
fragmentación.
P = {Area =‘N’}.
P es mínimo pero no completo.
2) Considerar otro predicado que particione algun
fragmento de P en dos partes que sean referenciados
de diferente manera por al menos una aplicación.
P2 = Dept <= 10
P = { Area = 'N', Dept <= 10}
Diseño de Fragmentación Horizontal Primaria
+ Verificar la relevancia de los predicados en P.
m1: Area = 'N' ^ Dept <= 10
m2: Area = 'N' ^ ~(Dept <= 10)
m3: Area <> 'N' ^ Dept <= 10
m4: Area <> 'N' ^ ~(Dept <= 10)
Todos los predicados de P son relevantes.
Pero P no es completo. Existen tuplos del
fragmento asociado a m4 que estan siendo
referenciados con mayor probabilidad.
3) Considere otro predicado ….
P3=Dept<20
P={Area = 'N', Dept <= 10, Dept <=20}
Diseño de Fragmentación Horizontal Primaria
+ Verificar la relevancia de los predicados en P.
m1:[A='N' ^ D<=10 ^ D<=20]
[A='N' ^ D<=10]
m2:[A='N' ^ D<=10 ^ ~(D<=20)]
m3:[A='N' ^ ~(D<=10) ^ D<=20]
[A='N' ^ (10<D<=20)]
m4:[A='N' ^ ~(D<=10) ^ ~(D<= 20)]
m5:[~(A='N') ^ D<=10 ^ D<=20]
[A='N' ^ D>20]
[~(A='N') ^ D<=10]
m6:[~(A= 'N') ^ D<=10 ^ ~(D<=20)]
m7:[~(A='N') ^ ~(D<=10) ^D<=20]
m8: [~(A='N') ^ ~(D<=10) ^ ~(D<=20)]
[~(A='N') ^ (10<D<=20)]
[~(A='N') ^ D>20]
m2, m4, m5, y m6 son miniterminos que no se cumplen
(se contradicen o no concuerdan con la situación
planteada. Entonces eliminandolos quedan
Diseño de Fragmentación Horizontal Primaria
Entonces eliminandolos quedan
m1:[A='N' ^ D<=10]
[D<=10]
m3:[A='N' ^ (10<D<=20)]
[A=‘N’ ^ (10<D<=20)]
m7:[~(A='N') ^ (10<D<=20)]
[A=‘S’ ^ (10<D<=20)]
m8: [~(A='N') ^ D>20]
[D>20]
P es relevante y completo, por lo tanto la fragmentación
provista por estos miniterminos es correcta y eficiente.
Descargar