2. FRAGMENTACIÓN VERTICAL
Cada fragmento vertical de una relación R produce
los fragmentos R1, R2, …, Rn donde cada uno de
ellos contiene un subconjunto de atributos de R así
como la llave primaria.
Objetivo: Particionar la relación en partes más
pequeñas para que las aplicaciones de usuario
corran sobre un solo fragmento.
3. FRAGMENTACIÓN VERTICAL
Existen dos acercamientos heurísticos para la
fragmentación vertical de relaciones globales:
Agrupar: Asignar cada atributo a algún fragmento,
y en cada paso, reunir algunos fragmentos hasta
que algún tipo de condición sea satisfecha.
Dividir: Comienza con una relación y decide
particionar basándose en el comportamiento de
accesos de aplicaciones a los atributos.
Dividir sólo se aplica a aquellos atributos que no son
llave.
4. REQUERIMIENTOS DE INFORMACIÓN
Necesitamos algún valor que pueda medir la noción de
“pertenencia” entre los atributos que son accedidos con
mayor frecuencia (afinidad de atributos).
El principal requerimiento de información es la
frecuencia de acceso.
Sea Q={q1, q2, …, qq} un conjunto de consultas que
acceden a la relación R(A1, A2, …, An). Entonces para
consulta qi y cada atributo Aj, asociamos un valor de uso
de atributo, denotado por uso(qi, Aj) y definido como:
1 si el atributo Aj es referenciado por la
uso(qi, Aj)= consulta qi
0 de otra manera
5. REQUERIMIENTOS DE INFORMACIÓN
Ejemplo: Considere la relación PROJ. Asuma que las
siguientes relaciones están definidas para correr en
esta relación.
q1: Encontrar el presupuesto de un proyecto, dado su
número de identificación
q2: Encontrar los nombres y presupuestos de todos
los proyectos.
q3: Encontrar los nombres de proyectos localizados
en una cierta ciudad.
q4: Encontrar el total del presupuesto de un proyecto
dada una ciudad.
7. REQUERIMIENTOS DE INFORMACIÓN
Necesitamos, además, la medida de frecuencia
que mide el vínculo entre dos atributos de una
relación y como son accedidos por las
aplicaciones.
La medida de afinidad entre dos atributos Ai y
Aj de una relación R(A1, A2, …, An) con respecto al
conjunto de aplicaciones Q={q1, q2, …, qq} es definida
por:
8. REQUERIMIENTOS DE INFORMACIÓN
donde refl(qk) es el número de accesos a los atributos
(Ai, Aj) para cada ejecución de la aplicación qk en el
sitio Sl y accl(qk) es la medida de la frecuencia de
acceso de la aplicación previamente definida y
modificada para incluir frecuencias en diferentes
sitios.
9. REQUERIMIENTOS DE INFORMACIÓN
Continuemos con el ejemplo anterior. Por simplicidad,
asumamos que refl(qk)=1 para toda qk y Sl. Si las
frecuencias de aplicación son:
entonces la medida de afinidad entre los atributos A1
y A3 puede ser medida como:
11. ALGORITMO DE AGRUPACIÓN
La tarea principal en el diseño de un algoritmo
de fragmentación vertical es encontrar alguna
característica para agrupar los atributos de una
relación basada en los valores de afinidad de
atributos (AA).
Lo que se pretende es maximizar la siguiente
medida de afinidad global (AM):
12. ALGORITMO DE AGRUPACIÓN
Como la matriz de afinidad de atributos
(AA) es simétrica, la función objetivo se reduce
a:
donde
14. ALGORITMO BEA
1. Inicialización: Posicionar una de las columnas de
AA arbitrariamente en CA.
2. Iteración: Escoger una de las columnas restantes
y tratar de establecerla en alguna de las
posiciones restantes de la matriz CA.
3. Orden de las filas: Una vez que el orden de las
columnas esté definido, la posición de las filas
debe cambiar de tal manera que sus posiciones
concuerden con las posiciones de las columnas.
15. ALGORITMO BEA
Para la segunda parte del algoritmo definimos
Pero también debemos definir el vínculo entre dos
atributos como
17. ALGORITMO BEA
Consideremos el ejemplo anterior y estudiemos la
contribución de mover el atributo A4 entre los
atributos A1 y A2, dado por la fórmula
Cont(A1, A4, A2) =
2bond(A1, A4)+2bond(A4, A2) – 2bond(A1, A2)
bond(A1, A4)=135
bond(A4, A2)=11865
bond(A1, A2)=225
Cont(A1, A4, A2)=23550
18. ALGORITMO BEA
Cuando se desarrolla el algoritmo utilizando la
fórmula Cont es necesario determinar las
características inherentes de posicionar un atributo lo
más a la derecha o lo más a la izquierda posible
dentro de la matriz de agrupamiento. Para el ejemplo
el primer paso es posicionar el atributo A1 en la
primera columna, a partir de aquí podemos
establecer A2 tanto a la izquierda como a la derecha
de A1, sin embargo su vínculo es independiente de la
posición en la que se encuentren. Por tanto
continuamos con el atributo A3, el cual podemos
poner a la izquierda de A1, entre A1 y A2, o a la
derecha de A2.
19.
20. ALGORITMO DE PARTICIÓN VERTICAL
El objetivo de la división es encontrar
conjuntos de atributos que sean accedidos
únicamente, o para la mayoría de las partes, por
distintos conjuntos de aplicaciones.
23. ALGORITMO DE PARTICIÓN VERTICAL
Maximizar el acceso a
un solo fragmento y
minimizar el acceso a
varios (ambos).
Notas del editor
SELECT BUDGET
FROM PROJ
WHERE PNO=Value.
SELECT PNAME, BUDGET
FROM PROJ.
SELECT PNAME
FROM PROJ
WHERE LOC=Value.
SELECT SUM(BUDGET)
FROM PROJ
WHERE LOC=Value