CURSO
BASES DE DATOS DISTRIBUIDAS
Expositor: M.C. José Mario Martínez Castro
J=m2C
Contenido 1. Fundamentos de SBDDs. 2. Arquitectura Cliente/Servidor. 3. Diseño de Bases de Datos Distribuidas. 4. Procesamiento Distribuido de Consultas. 5. Manejo Distribuido de Transacciones.
J=m2C
3. DISEÑO DE BASES DE DATOS DISTRIBUIDAS
J=m2C
Problema de Diseño
En un marco general tomar decisiones acerca de la ubicación de los datos y los programas, en los sitios de una red de computadoras, así como también posiblemente el diseño de la propia red. En los SABDDs, la ubicación de las aplicaciones supone ubicación del software de los SABDDs, y ubicación de las aplicaciones que corren sobre la base de datos.
J=m2C
Dimensiones del Problema Patrón de acceso Dinámico Información parcial
Estático Datos Datos + programa
Nivel de conocimiento Información completa
Compartimiento
J=m2C
Diseño de la Distribución
Descendente. Principalmente en sistemas que inician de cero. Principalmente en sistemas homogeneos. Ascendente. Cuando las bases de datos ya existen en los diferentes sitios.
J=m2C
Diseño Descendente Análisis de requerimientos Req. del sistema (objetivos) Diseño conceptual
Entrada del usuario Integración de vistas
Esq. conep. global
Información de acceso
Diseño de vistas Definición del esquema externo Entrada del usuario
Diseño de la distribución Esq. concep. local Diseño físico Esquema físico Retroalimentación
Observ. y monit.
Retroalimentación
J=m2C
Problemática del Diseño de la Distribución
¿Por qué fragmentar todo? ¿Cómo fragmentar? ¿Cuánto fragmentar? ¿Cómo probar la correctez? ¿Cómo ubicar los fragmentos? ¿Qué requirimientos de información?
J=m2C
Fragmentación
¿Podemos distribuir sólo relaciones? ¿Cuál es la unidad razonable de distribución? Relación. Las vistas son subconjuntos de relaciones (localmente). Comunicación extra.
Fragmento de relación (sub-relación). Ejecución concurrente de un número de transacciones que accesan diferentes porciones de una relación. Las vistas que no puedan ser definidas sobre un solo fragmento requerirán procesamiento extra. El control de la semántica de datos (especialmente forzar la integridad) es más complejo. J=m2C
Alternativas: Fragmentación Horizontal J
J1: Proyectos con presupuesto menor que $200,000. J2: Proyectos con presupuesto mayor o igual a $200,000.
J1 J2
JNAME
BUDGET
LOC
J1 J2 J3 J4 J5
Instrumentation Database Develop. CAD/CAM Maintenance CAD/CAM
150000 135000 250000 310000 500000
Montreal New York New York Paris Boston
J2
J1 JNO
JNO
JNAME Instrumentation Database Develop.
BUDGET 150000 135000
LOC
JNO
JNAME
BUDGET
LOC
Montreal New York
J3 J4 J5
CAD/CAM Maintenance CAD/CAM
250000 310000 500000
New York Paris Boston
J=m2C
Alternativas: Fragmentación Vertical J
J1: Información de los presupuestos de los proyectos. J2: Información de los nombres de los proyectos y su ubicación.
JNO
JNAME
BUDGET
LOC
J1 J2 J3 J4 J5
Instrumentation Database Develop. CAD/CAM Maintenance CAD/CAM
150000 135000 250000 310000 500000
Montreal New York New York Paris Boston
J1
J2
JNO BUDGET
JNO
J1 J2 J3 J4 J5
150000 135000 250000 310000 500000
J1 J2 J3 J4 J5
JNAME
LOC
Instrumentation Montreal Database Develop. New York CAD/CAM New York Maintenance Paris CAD/CAM Boston
J=m2C
Grado de Fragmentación
Número finito de alternativas
Tuplas o atributos
Relaciones
Encontrar el nivel adecuado de particionamiento dentro de este rango.
J=m2C
Correctez de la Fragmentación
Completez. La descomposición de una relación R en fragmentos R1, R2, ..., Rn, es completa si y sólo si cada elemento de datos en R puede ser encontrado en algún Ri. Reconstrucción. Si la relación R se descompone en fragmentos R1, R2, ..., Rn, debiera existir un operador relacional tal que R = Ri, Ri FR . Excluyente. Si la relación R se descompone en fragmentos R1, R2, ..., Rn, y datos del elemento di están en Rj, entonces di no debiera estar en algún otro fragmento Rk (j k).
J=m2C
Alternativas de Asignación
No Replicado. Particionada: cada fragmento reside en un solo sitio. Replicado. Réplica completa: cada fragmento en cada sitio. Réplica parcial: cada fragmento en algunos de los sitios. Regla del pulgar: sólo de lectura Si Consultas Consultas para actualizar 1 replicación es ventajosa, de lo contrario la réplica puede causar problemas.
J=m2C
Comparación de Alternativas de Réplica Réplica Total PROCESAMIENTO DE CONSULTAS
Fácil
ADMINISTRACION DE DICCIONARIO
Fácil o no existente
Réplica Parcial Particionado Misma
Dificultad
Misma
Dificultad
CONTROL DE CONCURRENCIA
Moderado
Difícil
Fácil
FIABILIDAD
Muy Alta
Alta
Baja
Posible Aplicación
Realista
FACTIBILIDAD
Posible Aplicación
J=m2C
Requerimientos de Información
Cuatro Categorias:
Información de la base de datos. Información de la aplicación. Información de la red de comunicaciones. Información del sistema de cómputo.
J=m2C
Tipos de Fragmentación
Fragmentación horizontal (FH). Fragmentación horizontal primaria (FHP). Fragmentación horizontal derivada (FHD). Fragmentación vertical (FV). Fragmentación híbrida o mixta (FM).
J=m2C
FHP - Requerimientos de Información
Información de la base de datos: Relaciones S TITLE, SAL E
L1 J
ENO, ENAME, TITLE L2
JNO, JNAME, BUDGET, LOC L3
G ENO, JNO, RESP, DUR
Cardinalidad de cada relación: card(R).
J=m2C
FHP - Requerimientos de Información
Información de la aplicación: Predicados simples: Dada R[A1,A2,...An], un predicado simple pj es pj : Ai Valor donde {=, <, , >, }, Valor Di y Di es el dominio de Ai. Ejemplo: JNAME = ‘Maintenance’ BUDGET 200000. Predicados minterm: Dado Ri y Pri = {pi1, pi2, ..., pim} definir Mi = {mi1, mi2, ..., miz} como Mi = {mij |mij = vpik Pri pik*}, 1 k m, 1 j z donde pik*= pi o pik*= pi.
J=m2C
FHP - Requerimientos de Información Ejemplos de predicados minterm: m1 : JNAME = ‘Maintenance’ BUDGET 200000 m2 : (JNAME = ‘Maintenance’) BUDGET 200000 m3 : JNAME = ‘Maintenance’ (BUDGET 200000) m4 : (JNAME = ‘Maintenance’) (BUDGET 200000)
J=m2C
FHP - Requerimientos de Información
Información de la aplicación: Selectividad de predicados minterm: sel(mj) Número de tuplas de la relación que son accesadas por una consulta de usuario la cual está especificada por un predicado minterm mj dado. Frecuencias de acceso: acc(qj) Frecuencia con la cual la aplicación qj accesa datos. Análogamente se puede definir la frecuencia de acceso para un predicado minterm.
J=m2C
Fragmentación Horizontal Primaria Definición: Rij = Fj(Ri), 1 j w donde Fj es la fórmula de selección usada para obtener el fragmento Rij, el cual es (preferentemente) un predicado minterm. Por lo tanto: Una fragmentación horizontal Ri de una relación R consiste de todas las tuplas de R las cuales satisfacen un predicado minterm. Dado un conjunto de predicados minterm M, hay tantas fragmentaciones horizontales de la relación R como predicados minterm existan. A los fragmentos horizontales también se les llama fragmentos minterm.
J=m2C
FHP - Obtención de Predicados Simples Dados: Una relación R, y el conjunto de predicados simples Pr. Obtener: El conjunto de fragmentos de R = {R1, R2, ..., Rw} los cuales obedecen las reglas de fragmentación. Preliminares: Pr debe ser completo. Pr debe ser mínimo.
J=m2C
Completez de los Predicados Simples
Se dice que un conjunto de predicados simples Pr es completo si y sólo si el acceso a las tuplas de los fragmentos minterm definidos sobre Pr requiere que dos tuplas del mismo fragmento minterm tengan la misma probabilidad de ser accesadas por todas y cada una de las aplicaciones.
J=m2C
Completez de los Predicados Simples Ejemplo: Suponemos que J(JNO, JNAME, BUDGET, LOC) tiene dos aplicaciones definidas para trabajar sobre J: Encontrar los presupuestos de los proyectos en cada localidad. Encontrar los proyectos con presupuesto menor que $200000.
J=m2C
Completez de los Predicados Simples De acuerdo a (1) Pr = {LOC=“Montreal”, LOC=“New York”, LOC=“Paris”} lo cual no es completo con respecto a (2). Si modificamos Pr = {LOC=“Montreal”, LOC=“New York”, LOC=“Paris”, BUDGET200000, BUDGET>200000} el cual es completo.
J=m2C
Minimalidad de los Predicados Simples
Si un predicado influye en cómo se ejecuta la fragmentación (v.g. provoca que un fragmento f se particione en nuevos fragmentos fi y fj), entonces debiera existir al menos una aplicación que accese a fi y fj diferentemente. En otras palabras el predicado simple deberá ser relevante en determinar una fragmentación. Si todos los predicados de un conjunto Pr son relevantes, entonces Pr es mínimo.
J=m2C
Relevancia de los Predicados Simples Sean mi y mj dos predicados minterm idénticos en su definición, excepto que mi contiene el predicado simple pi mientras que mj contiene pi, y sean fi y fj dos fragmentos definidos de acuerdo a mi y mj; entonces pi es relevante si y sólo si
acc(mi) card(fi)
acc(mj) card(fj)
J=m2C
Minimalidad de los Predicados Simples Ejemplo Pr = {LOC=“Montreal”, LOC=“New York”, LOC=“Paris”, BUDGET200000, BUDGET>200000} es mínimo además de ser completo. Sin embargo, si agregamos JNAME=“Instrumentation” entonces Pr no es mínimo.
J=m2C
Algoritmo COM-MIN Entrada: Una relación R y un conjunto de predicados simples Pr. Salida:
Un conjunto de predicados simples completo y mínimo Pr’ para Pr.
Regla I: Una relación o fragmento se particiona en al menos dos partes las cuales son accesadas de manera diferente por al menos una aplicación.
J=m2C
Algoritmo COM-MIN Inicialización: Encontrar un pi Pr tal que pi particione R de acuerdo a la Regla 1. Hacer Pr’ pi; Pr Pr - pi; F f i Agregar predicados iterativamente a Pr’ hasta que esté completo. Encontrar un pj Pr tal que pj particione algún f k definido por un predicado minterm de Pr’ de acuerdo a la Regla 1. Hacer Pr’ Pr’ pi; Pr Pr - pi; F F f i Si pk Pr’ el cual no es relevante, entonces Hacer Pr’ Pr’ - pk; F F - fk
J=m2C
Algoritmo P-HORIZONTAL Hacer uso de COM-MIN para efectuar fragmentación. Entrada: Una relación R y un conjunto de predicados simples Pr. Salida: Un conjunto de fragmentos minterm M de R. Hacer Pr’ COM-MIN(R,Pr) Determinar el conjunto M de predicados minterm Determinar el conjunto de implicaciones I entre pi Pr Eliminar los predicados minterm contradictorios de M
J=m2C
FHP - Ejemplo
Dos relaciones candidatas: S y J. Fragmentación de la relación S: Aplicación: verificar salario y determinar aumento. Los registros de empleados se manipulan en dos sitios => la aplicación corre en dos sitios. Predicados simples: p1 : SAL 30000 p2 : SAL > 30000 Pr : {p1, p2} el cual es completo y mínimo Pr’ = Pr Predicados minterm: m1 : (SAL 30000) (SAL 30000) m2 : (SAL 30000) (SAL 30000) m3 : (SAL 30000) (SAL 30000) m4 : (SAL 30000) (SAL 30000) J=m2C
FHP - Ejemplo
Fragmentación de la relación S (continúa): Implicaciones: i1 : (SAL 30000) (SAL 30000) i2 : (SAL 30000) (SAL 30000) i3 : (SAL 30000) (SAL 30000) i4 : (SAL 30000) (SAL 30000)
m1 es contradictorio a i1, m4 es contradictorio a i2 S2
S1 TITLE
SAL
TITLE
SAL
Mech. Eng. Programmer
27000 24000
Elect. Eng. Syst. Anal.
40000 34000
J=m2C
FHP - Ejemplo
Fragmentación de la relación J: Aplicaciones: Encontrar el nombre y el presupuesto de los proyectos dado su número. Estas consultas son emitidas en tres sitios. Accesar la información del proyecto de acuerdo a su presupuesto. Predicados simples para la aplicación (1): p1 : LOC = “Montreal” p2 : LOC = “New York” p3 : LOC = “Paris” Predicados simples para la aplicación (2): p4 : BUDGET 200000 p5 : BUDGET 200000 Pr = Pr’ = {p1, p2, p3, p4, p5}
J=m2C
FHP - Ejemplo
Fragmentación de la relación J (continúa): Fragmentos minterm después de la eliminación: m1 : (LOC “Montreal”) (BUDGET 200000) m2 : (LOC “Montreal”) (BUDGET 200000) m3 : (LOC “New York”) (BUDGET 200000) m4 : (LOC “New York”) (BUDGET 200000) m5 : (LOC “Paris”) (BUDGET 200000) m6 : (LOC “Paris”) (BUDGET 200000)
J=m2C
FHP - Ejemplo J1
J2
JNO
JNAME
BUDGET
LOC
JNO
J1
Instrumentation
150000
Montreal
J2
JNAME
BUDGET
Database Develop. 135000
LOC New York
J6
J4 JNO
JNAME
BUDGET
LOC
JNO
JNAME
BUDGET
LOC
J3
CAD/CAM
250000
New York
J4
Maintenance
310000
Paris
J=m2C
Fragmentación Horizontal Derivada
Definida sobre una relación miembro de una liga según una operación de selección especificada sobre su relación propietaria. Cada enlace corresponde a una equireunión. S TITLE, SAL E
L1 J
ENO, ENAME, TITLE L2
JNO, JNAME, BUDGET, LOC L3
G ENO, JNO, RESP, DUR
J=m2C
FHD - Definición Dado un enlace L donde propietario(L)=S y miembro(L)=R, la fragmentación horizontal derivada de R se define como Ri = R
Si, 1 i w
Donde w es el número máximo de fragmentos que serán definidos en R, y Si = Fi(S), donde Fi es la formula mediante la cual se define la fragmentación horizontal primaria Si.
J=m2C
FHD - Ejemplo Dado el enlace L1, donde propietario(L1)=S y miembro(L1)=E E1= E S1 E2= E S2 donde S1= SAL 30000(S) S2= SAL >30000(S)
ENO ENAME TITLE E3 A. Lee Mech. Eng. E4 J. Miller Programmer E7 R. Davis Mech. Eng.
ENO E1 E2 E5 E6 E8
ENAME J. Doe M. Smith B. Casey L. Chu J. Jones
TITLE Elect. Eng. Syst. Anal. Syst. Anal. Elect. Eng. Syst. Anal. J=m2C
FHD - Correctez
Completez. Integridad referencial. Sea R la relación miembro de un enlace cuyo propietario es la relación S la cual está fragmentada como Fs = {S1, S2, ..., Sw}. Además sea A el atributo de la reunión entre R y S. Entonces para cada tupla t de R, debiera existir una tupla t’ de S tal que t[A] = t’[A] Reconstrucción. Igual que la de la fragmentación horizontal primaria. Exclusión. Si el grafo de la reunión entre el propietario y los fragmentos miembro es simple.
J=m2C
Fragmentación Vertical
Ha sido estudiada dentro del contexto centralizado. Metodología de diseño. Agrupamiento físico. Más difícil que la horizontal, debido a que existen más alternativas. Existen dos técnicas: Agrupamiento de atributos en fragmentos. División de la relación en fragmentos.
J=m2C
Fragmentación Vertical
Traslape de fragmentos. Agrupamiento. Sin traslape de fragmentos. División.
No se considera traslape en los atributos llave replicados. Ventaja: facilita hacer cumplir las dependencias funcionales (para verificar integridad, etc.)
J=m2C
FV - Requerimientos de Información
Información de la aplicación: Afinidad de los atributos, la cual es una medida que indica qué tanta relación existe entre los atributos. Esto se obtiene de las primitivas de uso de los datos. Dado un conjunto de consultas Q = {q1, q2, ..., qq} que corren sobre la relación R[A1, A2, ..., An], uso(qi,Aj) =
1 si el atributo Aj es referido en la consulta qi 0 en caso contrario
uso(qi, ) se puede definir análogamente.
J=m2C
FV - Ejemplo de uso(qi, Aj) Considerar las siguientes 4 consultas para la relación J: q1: SELECT BUDGET FROM J WHERE JNO=Valor q3: SELECT JNAME FROM J WHERE LOC=Valor
q2: SELECT JNAME, BUDGET FROM J q4: SELECT SUM(BUDGET) FROM J WHERE LOC=Valor
Sean A1=JNO, A2=JNAME, A3=BUDGET, A4=LOC
q1 q2 q3 q4
A1 1 0 0 0
A2 0 1 1 0
A3 1 1 0 1
A4 0 0 1 1
J=m2C
FV - Medida de Afinidad aff(Ai, Aj) 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, ..., qn} se define como sigue aff(Ai, Aj) = todas las consultas que accesan Ai y Aj Sl ref l(qk) acc(qk)
J=m2C
FV - Cálculo de aff(Ai, Aj) Suponemos que cada consulta en el ejemplo anterior accesa los atributos una vez durante cada ejecución. También suponemos las frecuencias de acceso
q1 q2 q3 q4
S1 15 5 25 3
S2 20 0 25 0
S3 10 0 25 0
Entonces aff(A1, A3) = 15*1 + 20*1 +10*1 = 45 A1 A2 A3 A4
y la matriz de afinidad de atributos AA es
A1 45 0 45 0
A2 0 80 5 75
A3 45 5 53 3
A4 0 75 3 78
J=m2C
FV - Algoritmo de Agrupamiento
Toma la matriz de afinidad de atributos AA y reorganiza el orden de los atributos para formar grupos donde los atributos en cada grupo demuestran alta afinidad unos con otros. El algoritmo de energía de cohesión (BEA) se usado para agrupamiento de entidades. BEA encuentra un orden de atributos tal que la medida de afinidad global AM = (afinidad de Ai y Aj con sus vecinos) i j
se maximiza.
J=m2C
Algoritmo de Energía de Cohesión Entrada: La matriz AA. Salida: La matriz de afinidad CA agrupada, la cual es una derivación de AA.
Inicialización: Colocar y ajustar una de las columnas de AA en CA. Iteración: Colocar las n-i columnas restantes en el resto de i +1 posiciones en la matriz CA. Por cada columna, elegir el lugar que más contribuya a la medida de afinidad global. Ordenar filas: Ordenar las filas de acuerdo al orden de columna.
J=m2C
Algoritmo de Energía de Cohesión
La “mayor contribución” se encuentra de acuerdo a la siguiente fórmula: cont (Ai, Ak, Aj) = 2bond(Ai, Ak) + 2bond(Ak, Aj) - 2bond(Ai, Aj) donde: n
bond(Ax, Ay) = aff(Az, Ax) aff(Az, Ay) z=1
J=m2C
BEA - Ejemplo Considerar la siguiente matriz AA y la correspondiente matriz CA donde A1 y A2 han sido ubicados como sigue:
AA =
A1 A2 A3 A4
A1 45 0 45 0
A2 0 80 5 75
A3 5 5 53 3
A4 0 75 3 78
CA =
A1 A2 A3 A4
A1 45 0 45 0
A2 0 80 5 75
Ordenar (0-3-1): cont (A0, A3, A1) = 2bond(A0, A3) + 2bond(A3, A1) - 2bond(A0, A1) = 2*0 + 2*4410 - 2*0 = 8820 Ordenar (1-3-2): cont (A1, A3, A2) = 2bond(A1, A3) + 2bond(A3, A2) - 2bond(A1, A2) = 2*4410 + 2*890 - 2*225 = 10150 Ordenar (2-3-4): cont (A2, A3, A4) = 1780
J=m2C
BEA - Ejemplo Por lo tanto la matriz CA tiene la forma A1 A2 A3 A4
A1 45 0 45 0
A3 5 5 53 3
A2 0 80 5 75
A4
La forma final de la matriz CA (después de organizar las filas) es A1 A3 A2 A4
A1 45 45 0 0
A3 45 53 5 3
A2 0 5 80 75
A4 0 3 75 78
J=m2C
FV - Algoritmo ¿Cómo puede dividirse un conjunto de atributos agrupados {A1, A2, ..., An} en dos (o más) conjuntos {A1, A2, ..., Ai} y {Ai+1, ..., An} tal que no haya (o sea mínimo el número de) aplicaciones que accesen ambos (o más de un) conjuntos? A1 A2 A3
A1,A2,A3, ..., Ai Ai+1, ..., An
TA
Ai Ai+1
BA
An
J=m2C
FV - Algoritmo Definir TQ = conjunto de las aplicaciones que accesan sólo TA, BQ = conjunto de las aplicaciones que accesan sólo BA, OQ = conjunto de las aplicaciones que accesan TA y BA, y CTQ = número total de accesos a los atributos por las aplicaciones que accesan sólo TA, CBQ = número total de accesos a los atributos por las aplicaciones que accesan sólo BA, COQ = número total de accesos a los atributos por las aplicaciones que accesan TA y BA. Entonces encontrar el punto sobre la diagonal que maximiza CTQ*CBQ-COQ2
J=m2C
FV - Algoritmo Dos problemas: Un fragmento a la mitad de la matriz CA. Cambiar la columna más izquierda hasta la derecha, reordenar las filas, y aplicar el algorimo para encontrar el “mejor” punto de particionamiento. Hacer esto para todos los cambios posibles. Costo O(n2). Para más de dos grupos. Particionamiento en n grupos. Probar 1, 2, ..., n-1 puntos de división a lo largo de la diagonal y tratar de encontrar el mejor punto para cada uno de éstos. Costo O(2n).
J=m2C
FV - Correctez Una relación R, definida sobre un conjunto de atributos A y clave K, genera la partición vertical FR={R1, R2, ..., Rr}.
Completez. Lo siguiente debiera satisfacerse: A = Ai Reconstrucción. La reconstrucción puede efectuarse mediante R = K Ri, Ri FR Exclusión. Los identificadores no se consideran para ser traslapados ya que son mantenidos por el sistema. Las llaves duplicadas no se consideran para ser traslapadas.
J=m2C
Fragmentación Híbrida R FH
FH
R1 FV
R2 FV
FV
FV FV
R11
R12
R21
R22
R23
J=m2C
Distribución de Fragmentos Planteamiento del problema: Dado F = {F1, F2,...,Fn} es el conjunto de fragmentos. S = {S1, S2, ..., Sm} es el conjubto de sitios en la red, y Q = {q1, q2, ..., qq} es el conjunto de aplicaciones, encontrar la distribución “óptima” de F en S.
J=m2C
Distribución de Fragmentos Optimalidad
Costo minimo. Comunicación + Almacenamiento + Procesamiento (lectura y actualizaciones). Costo en términos de tiempo (usualmente). Eficiencia. Tiempo de respuesta. Restricciones. Restricciones por sitio (almacenaje y procesamiento).
J=m2C
Requerimientos de Información
Información de la base de datos. Selectividad de fragmentos. Tamaño de un fragmento.
Información de la aplicación. Tipos de acceso y número. Acceso a sitios.
Información de la red de comunicaciones. Ancho de banda. Distancias entre sitios. Sobrecarga de protocolos.
Información del sistema de cómputo. Unidad de costo de almacenar datos en un sitio. Unidad de costo de procesar datos en un sitio.
J=m2C
Distribución Problema de distribución de archivos (FAP) vs. problema de distribución de base de datos (DAP).
Los fragmentos no pueden tratarse como archivos individuales. Se tienen que tomar en cuenta sus relaciones. El acceso a la base de datos es más complicado. El modelo de acceso a archivos remotos no aplica. Relación entre distribución y procesamiento de consultas. El costo de mantener la integridad debe considerarse. El costo del control de concurrencia debe considerarse.
J=m2C
Distribución - Requerimientos de Información
Información de la base de datos: Selectividad de fragmentos minterm. Tamaño de los fragmentos. Información de las aplicaciones: Número de accesos de lectura de una consulta a un fragmento. Número de accesos de actualización a un fragmento. Una matriz que indique cuáles consultas actualizan qué fragmentos. Una matriz similar para las lecturas. Sitio de origen de cada consulta.
J=m2C
Distribución - Requerimientos de Información
Información de los sitios: Unidad de costo de almacenar datos en un sitio. Unidad de costo de procesar datos en un sitio. Información de la red: Costo de comunicación de una trama entre dos sitios. Tamaño de la trama.
J=m2C
Modelo de Distribución Forma general min(costo total) sujeto a restricciones de tiempo de respuesta restricción de almacenaje restricción de procesamiento variables de decisión: xij = 1 si el fragmento Fi se almacena en el sitio Sj 0 en caso contrario
J=m2C
Modelo de Distribución
Costo Total : todas las consultas costo de procesamiento de consulta + todos los sitios todos los fragmentos costo de almacenaje de un frag. en un sitio Costo de almacenaje (del fragmento Fj en Sk): (unidad de costo de almacenaje en Sk) * (tamaño de Fj) * xjk Costo de procesamiento de consulta: componente de procesamiento + componente de transmisión
J=m2C
Modelo de Distribución
Componente de procesamiento: costo de acceso + costo de mantenimiento de integridad + costo de control de concurrencia Costo de Acceso: todos los sitios todos los fragmentos (no. de accesos de actualización + no. de accesos de lectura) * xjk * costo de procesamiento local en un sitio Los costos de mantenimiento de integridad y de control de concurrencia se pueden formaular de una manera similar.
J=m2C
Modelo de Distribución
Componente de Transmisión: costo de procesar actualizaciones + costo de procesar lecturas Costo de actualizaciones: todos los sitios todos los fragmentos costo del mensaje de actualizar + todos los sitios todos los fragmentos costo de confirmación Costo de lecturas: todos los fragmentos min todos los sitios (costo del comando de recuperación + costo de enviar los resultados)
J=m2C
Modelo de Distribución
Restricciones: Tiempo de respuesta: tiempo de ejecución de la consulta max. tiempo de resp. permisible para esa consulta Almacenamiento: todos los fragmentos reqs. de almacenaje de un fragmento en ese sitio capacidad de almacenaje de ese sitio Procesamiento: todas las consultas carga de proc. de una consultas en ese sitio capacidad de procesamiento de ese sitio
J=m2C
Problema - Separación de los Pasos de Diseño Relaciones Globales FRAGMENTACION
Fragmentos de Relaciones
DISTRIBUCION
Relaciones Locales
J=m2C
Fragmentación Vertical
J=m2C
Introducción
En esta sección se presenta un modelo que unifica la fragmentación vertical, la ubicación y la reubicación dinámica en sistemas de bases de datos distribuídas. Este modelo permite mejorar el desempeño de sistemas expuestos a cambios en los patrones de uso de los datos. La naturaleza de muchos sistemas distribuídos es dinámica, con cambios en la topología de la red, patrones y frecuencias de acceso, nuevos datos, número de nodos, costos, y recursos. Este aspecto dinámico se trata incorporándolo en el modelo matemático.
J=m2C
Introducción
El uso generalizado de redes de comunicaciones para computadoras, incluyendo Internet, facilita la implementación de sistemas de bases de datos distribuídas.
Sin embargo, uno de los problemas más difíciles para su desarrollo es la falta de metodologías y herramientas para efectuar su diseño.
J=m2C
Introducción
Tradicionalmente, se ha considerado que el diseño de la distribución consiste de dos fases separadas: fragmentación y ubicación de fragmentos.
Contrariamente a la creencia generalizada, se demuestra que es más sencillo resolver simultáneamente los problemas de fragmentación y ubicación.
En este sentido, el modelo propuesto es innovador.
J=m2C
Descripción del Problema Dada una red de computadoras S1
Sn
RED S2
S3
S = {S1, S2, ..., Sn }: sitios o nodos en la red
J=m2C
Descripción del Problema Un conjunto de aplicaciones y una base de datos relacional
q1
S1
Sn
q1
RED q2
S2
S3
q1
q2
S = {S1, S2, ..., Sn }: sitios o nodos en la red Q = {q1, q2, ..., qq }: aplicaciones J=m2C
Descripción del Problema El problema consiste en la determinación y ubicación de fragmentos de tal forma que se minimice el costo total de comunicación y almacenamiento f1
q1
S1
Sn
q1
RED q2
S2
S3
q1
q2
f2
S = {S1, S2, ..., Sn }: sitios o nodos en la red Q = {q1, q2, ..., qq }: aplicaciones F = {f1, f2, ..., fn}: fragmentos
J=m2C
Modelo Matemático En este modelo, la decisión de almacenar un atributo en el sitio j se representa con una variable binaria xj. Así xj= 1 si se almacena en j, y xj = 0 en caso contrario.
min z = f q l cij xj + c1 fki y kj i k j k i ki j k k Costo de comunicación
Costo de acceso a varios fragmentos
+ c w + a c d x j j 2 j i j i ij Costo de almacenamiento
Costo de reubicación J=m2C
Costo de Comunicación f1
q1
S1
Sn
q1
RED S2
S3
S = {S1, S2, ..., Sn }: sitios o nodos en la red Q = {q1, q2, ..., qq }: aplicaciones F = {f1, f2, ..., fn}: fragmentos
J=m2C
Costo de Comunicación
f q l c x k i ki j k k ij jj
J=m2C
Costo de Acceso a Varios Fragmentos S1
f1
Sn
RED q2
S2
S3
q2
f2
S = {S1, S2, ..., Sn }: sitios o nodos en la red Q = {q1, q2, ..., qq }: aplicaciones F = {f1, f2, ..., fn}: fragmentos
J=m2C
Costo de Acceso a Varios Fragmentos
c f ki y kj i k j 1
J=m2C
Costo de Almacenamiento de Fragmentos f1
S1
Sn
RED S2
S3
f2
S = {S1, S2, ..., Sn }: sitios o nodos en la red F = {f1, f2, ..., fn}: fragmentos
J=m2C
Costo de Almacenamiento de Fragmentos
cw j
2 j
J=m2C
Costo de Reubicación f1
f1 q1 f1 f1
S1 f1
f1
f1 f f 1 1
Sn
RED
f1 f1
S2
q1 f f1 f1 1
f1 f1
S3
S = {S1, S2, ..., Sn }: sitios o nodos en la red Q = {q1, q2, ..., qq }: aplicaciones F = {f1, f2, ..., fn}: fragmentos
J=m2C
Costo de Reubicación
ai c d xjj ij
i
j
J=m2C
Modelo Matemático donde fki = frecuencia de emisión de la consulta k desde el sitio i; qk =
parámetro de uso, qk = 1 si la consulta k usa el atributo , en caso contrario qk = 0;
lk =
número de paquetes de comunicación necesarios para transportar al atributo requerido por la consulta k
=
(p sk )/PA p = tamaño en bytes del atributo ; sk = selectividad de la consulta k; PA = tamaño del paquete de comunicación en bytes;
J=m2C
Modelo Matemático cij =
costo de comunicación entre el sitio i y el sitio j;
c1 =
costo por accesar varios fragmentos para satisfacer una consulta;
c2 =
costo por ubicar un fragmento en un sitio;
ykj =
variable de decisión, ykj = 1 si la consulta k accede a uno o más atributos localizados en el sitio j, y ykj = 0 en caso contrario;
wj =
variable de decisión, wj = 1 si existe uno o más atributos en el sitio j, y wj = 0 en caso contrario;
J=m2C
Modelo Matemático ai =
indicador de ubicación previa, ai = 1 si el atributo está localizado actualmente en el sitio i, en caso contrario ai = 0;
d =
número de paquetes de comunicación necesarios para mover el atributo a otro sitio en caso necesario;
=
(p * CA)/PA donde CA = cardinalidad de la relación.
J=m2C
Modelo Matemático Restricciones intrínsecas del problema: 1)
x j = 1
cada atributo debe almacenarse en sólo un sitio;
j
" 2)
q
x i
k
j ki donde
k
" , i
ki
1 , si f ki 0 0 , si f ki 0
cada atributo debe ubicarse en un sitio i que ejecute por lo menos una consulta que involucre al atributo;
J=m2C
Modelo Matemático Restricciones intrínsecas del problema: 3)
t w j - x j 0
"j
4)
t y - qk xj 0 kj
" k, j
esta restricción fuerza el valor de wj a 1 cuando cualquier xj es igual a 1, e induce wj a 0 en caso contrario; esta restricción fuerza ykj a 1 cuando cualquier qkxj es igual a 1, e induce ykj a 0 en caso contrario;
J=m2C
Modelo Matemático Restricciones intrínsecas del problema: 5) CA p xj CSj
j
la suma de los tamaños de los fragmentos asignados al sitio j no debe exceder la capacidad de éste.
J=m2C
Solución Factible Actual z
z(x)
x
J=m2C
Vecindad de Solución Actual z
z(x)
x H(x)
J=m2C
La Nueva Solución se Genera Aleatoriamente z
z(x)
x H(x)
y
J=m2C
Diferencia de Valores de la Función Objetivo z
z(x)
z = z(y) - z(x) z(y)
x
y
J=m2C
Regla de Aceptación z La nueva solución y se acepta si z < T
z = z(y) - z(x)
x
y
J=m2C
Se Obtiene una Nueva Solución Actual z
Nueva x
J=m2C
Algoritmo de Aceptación por Umbral
Inicio real T, entero i, S x = la mejor de un conjunto de S soluciones factibles T = valor inicial alto de temperatura
J=m2C
Algoritmo de Aceptación por Umbral repetir repetir para i = 1 hasta S y = solución vecina si z(y) - z(x) < T entonces x=y en caso contrario no se acepta la nueva solución fin_si i=i+1 fin_si hasta alcanzar el equilibrio térmico T = T hasta alcanzar el congelamiento Fin J=m2C
Desviación Porcentual Respecto al Óptimo 0.4 0.35 0.3 0.25
B&B AU
0.2 0.15 0.1 0.05 0 1
2
3
4
5
6
7
8
9 10 11 12 13
PROBLEMAS
J=m2C
Comparación en Tiempo de Ejecución 8 7 6 5
B&B AU
4 3 2 1 0 1
2
3
4
5
6
7
8
9 10 11 12 13
PROBLEMAS
J=m2C
Conclusiones
Se han propuesto varios métodos para el diseño de bases de datos distribuídas. Invariablemente el problema de diseño se ha dividido en dos fases: fragmentación y ubicación.
El modelo propuesto muestra la factibilidad de integrar la fragmentación y ubicación en una sola fase, lo cual resulta en una solución más eficiente.
J=m2C
Conclusiones
El modelo se resolvió usando dos algoritmos: Branch and Bound para programación entera, y Aceptación por Umbral. Los resultados experimentales muestran que el algoritmo de Aceptación por Umbral encuentra la solución óptima para problemas pequeños.
Los resultados muestran la eficiencia del algoritmo de Aceptación por Umbral, con un buen desempeño para problemas pequeños y mostrando su potencial para resolver problemas grandes.
J=m2C