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.