26.12.2014 Views

consultas

consultas

consultas

SHOW MORE
SHOW LESS

Create successful ePaper yourself

Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.

PROCESAMIETO DE<br />

COSULTAS<br />

Dr. Víctor J. Sosa Sosa<br />

3<br />

Procesamiento de Consultas<br />

Consulta de usuario<br />

en alto nivel<br />

Procesador<br />

de <strong>consultas</strong><br />

Comandos de manipulación de<br />

datos en bajo nivel<br />

Dr. Víctor J. Sosa Sosa<br />

4


Componentes del Procesamiento de Consultas<br />

Lenguaje de <strong>consultas</strong> utilizado.<br />

SQL “intergalactic dataspeak”.<br />

Metodología de ejecución de <strong>consultas</strong>.<br />

Los pasos necesarios para ejecutar una consulta de alto nivel<br />

(declarativa)<br />

Optimización de <strong>consultas</strong>.<br />

¿Cómo determinamos la “mejor” estrategia de ejecución<br />

Dr. Víctor J. Sosa Sosa<br />

5<br />

Componentes del Procesamiento de Consultas<br />

Lenguaje de <strong>consultas</strong> utilizado.<br />

SQL “Intergalactic Dataspeak”.<br />

Metodología de ejecución de <strong>consultas</strong>.<br />

Los pasos necesarios para ejecutar una consulta de alto<br />

nivel (declarativa).<br />

Optimización de <strong>consultas</strong>.<br />

¿Cómo determinar el “mejor” plan de ejecución<br />

Dr. Víctor J. Sosa Sosa<br />

6


Alternativas de Selección<br />

SELECT ENAME<br />

FROM E, G<br />

WHERE E.ENO = G.ENO<br />

AD DUR > 37<br />

Estrategia 1<br />

Π ENAME (σ DUR>37 ∧ E.ENO=G.ENO (E × G))<br />

Estrategia 2<br />

Π ENAME ( E ENO (σ DUR>37 (G)))<br />

La estrategia 2 reduce el producto cartesiano, asi que es “mejor”<br />

Dr. Víctor J. Sosa Sosa<br />

7<br />

¿Cuál es el Problema<br />

Sitio 1 Sitio 2 Sitio 3<br />

G 1 = σ ENO≤“E3” (G) G 2 = σ ENO≤“E3” (G) E 1 = σ ENO≤“E3” (E)<br />

Sitio 4<br />

E 2 = σ ENO≤“E3” (E)<br />

Sitio 5<br />

Resultado<br />

Estrategia 1<br />

Sitio 5<br />

Resultado = E 1 ’ ∪ E 2 ’<br />

Sitio 3<br />

E 1 ’ = E 1 ENO G 1 ’<br />

G<br />

Sitio 1 1 ’<br />

G 1 ’ = σ DUR>37 (G 1 )<br />

Sitio 4<br />

E 2 ’ = E 2 ENO G 2 ’<br />

G<br />

Sitio 2 2 ’<br />

G 2 ’ = σ DUR>37 (G 2 )<br />

Dr. Víctor J. Sosa Sosa<br />

8


Sitio 1<br />

G 1 = σ ENO≤“E3” (G)<br />

Estrategia 2<br />

¿Cuál es el Problema<br />

Sitio 2<br />

G 2 = σ ENO≤“E3” (G)<br />

Sitio 3<br />

E 1 = σ ENO≤“E3” (E)<br />

Sitio 4<br />

E 2 = σ ENO≤“E3” (E)<br />

Sitio 5<br />

Resultado<br />

Sitio 5<br />

Resultado = (E 1 ∪ E 2 ) ENO σ DUR>37 (G 1 ∪ G 2 )<br />

G 1 G 2<br />

E 1 E 2<br />

Sitio 1 Sitio 2 Sitio 3 Sitio 4<br />

Dr. Víctor J. Sosa Sosa<br />

9<br />

Alternativas de Costo<br />

Suponer lo siguiente:<br />

tamaño(E) = 400, tamaño (G) = 1000<br />

costo de acceso a tuplas = 1 unidad; costo de trasferir una tupla = 10 unidades<br />

Estrategia 1.<br />

1. Producir G’: 20*costo de acceso a tupla 20<br />

2. Transferir G’ a los lugares de E: 20*costo de transferir tupla 200<br />

3. Producir E’: (20*20)*costo de acceso a tupla 800<br />

4. Transferir E’ a los lugares resultantes: 20*costo de trasferir tupla 200<br />

Costo Total 1,220<br />

Estrategia 2.<br />

1. Transferir E al lugar 5: 400*costo de transferir tupla 4,000<br />

2. Transferir E al lugar 5: 1,000*costo de transferir tupla 10,000<br />

3. Producir G’: 1,000*costo de acceso a tupla 1,000<br />

4. Reunión de E y G’: 20*1,000*costo de acceso a tupla 20,000<br />

Costo Total 35,000<br />

Dr. Víctor J. Sosa Sosa<br />

10


Objetivo de la Optimización de Consultas<br />

Minimizar una función de costo<br />

costo de I/O + costo de CPU + costo de comunicación<br />

Esto podría tener diferentes pesos en diferentes ambientes distribuidos.<br />

<br />

Redes de área amplia.<br />

Los costos de comunicación dominarán.<br />

• Bajo ancho de banda.<br />

• Baja velocidad.<br />

• Alta sobrecarga de protocolo.<br />

Muchos algoritmos ignoran el resto de componentes de costos.<br />

Redes de área local.<br />

Costos de comunicación no dominantes.<br />

La función de costo total debe ser considerada.<br />

También se puede maximizar el desempeño (throughput).<br />

Dr. Víctor J. Sosa Sosa<br />

11<br />

Complejidad de las Operaciones Relacionales<br />

Suponemos:<br />

Relaciones de cardinalidcad n.<br />

Búsqueda secuencial.<br />

Operación<br />

Complejidad<br />

Selección<br />

Proyección<br />

(Sin eliminar duplicados)<br />

Proyección<br />

(Con eliminación de duplicados)<br />

Agrupamiento<br />

Reunión<br />

Semi-reunión<br />

División<br />

Operadores de conjuntos<br />

Producto cartesiano<br />

O(n)<br />

O(nlogn)<br />

O(nlogn)<br />

O(n 2 )<br />

Dr. Víctor J. Sosa Sosa<br />

12


Elementos para Optimización de Consultas<br />

(Tipos de Optimizadores)<br />

Búsqueda exhaustiva.<br />

Optimo.<br />

Basado en costo.<br />

Complejidad combinatoria en el número de relaciones.<br />

Heurística.<br />

No optimo.<br />

Reagrupar subexpresiones comunes.<br />

Desarrollar primero selecciones y proyecciones.<br />

Reemplazar una reunión por una serie de semireuniones.<br />

Reordenar operaciones para reducir el tamaño de las<br />

relaciones intermedias.<br />

Optimizar operaciones individuales.<br />

Dr. Víctor J. Sosa Sosa<br />

13<br />

Elementos para Optimización de Consultas<br />

(Granularidad de la Optimización)<br />

Una consulta a la vez.<br />

No puede usar resultados intermedios comunes.<br />

<br />

Múltiples <strong>consultas</strong> a la vez.<br />

Eficiente si hay muchas <strong>consultas</strong> similares.<br />

El espacio de decisión es mucho mayor.<br />

Dr. Víctor J. Sosa Sosa<br />

14


Elementos para Optimización de Consultas<br />

(Tiempo de Optimización)<br />

Estático.<br />

Compilación = optimizar antes de la ejecución.<br />

Difícil de estimar el tamaño de los resultados intermedios (provoca<br />

una propagación de error).<br />

El costo puede amortizarse entre muchas ejecuciones.<br />

Sistema R*.<br />

Dinámico.<br />

Optimización en tiempo de ejecución.<br />

Información exacta en los tamaños de relaciones intermedias.<br />

Se tiene que reoptimizar para ejecuciones múltiples.<br />

Ingres distribuido.<br />

Híbrido.<br />

Compilación usando un algoritmo estático.<br />

Si el error en el tamaño estimado es mayor que un umbral,<br />

reoptimizar al tiempo de ejecución.<br />

Mermaid.<br />

Dr. Víctor J. Sosa Sosa<br />

15<br />

Elementos para Optimización de Consultas<br />

(Estadísticas)<br />

Relación.<br />

Cardinalidad.<br />

Tamaño de una tupla.<br />

Fracción de tuplas participando en un reunión con otra rela-<br />

ción.<br />

Atributo.<br />

Cardinalidad del dominio.<br />

Número actual de valores distintos.<br />

Suposiciones comunes.<br />

Independencia entre diferentes valores de atributos.<br />

Distribución uniforme de valores de atributos en su dominio.<br />

Dr. Víctor J. Sosa Sosa<br />

16


Elementos para Optimización de Consultas<br />

(Decisión de Sitios)<br />

Centralizado.<br />

Un solo sitio determina la “mejor” estrategia.<br />

Implementación simple.<br />

Necesita conocer toda la base de datos distribuida.<br />

Distribuido.<br />

Cooperación entre sitios para determinar la estrategia global.<br />

Necesita sólo información local.<br />

Costo de cooperación.<br />

Híbrido.<br />

Un sitio determina la estrategia global.<br />

Cada sitio optimiza las sub<strong>consultas</strong> locales.<br />

Dr. Víctor J. Sosa Sosa<br />

17<br />

Elementos para Optimización de Consultas<br />

(Topología de Red)<br />

Red de área amplia (WAN) punto a punto.<br />

Características.<br />

• Bajo ancho de banda.<br />

• Baja velocidad.<br />

• Sobrecarga de protocolo.<br />

El costo de comunicación es determinante; se ignoran los otros<br />

factores de costo<br />

Estrategia global para minimizar el costo de comunicación.<br />

Estrategia local acorde a la optimización de consulta centralizada.<br />

Red de área local (LAN).<br />

El costo de comunicación no es relevante.<br />

El costo de I/O debe ser considerado.<br />

La difusión puede ser explotada para las reuniones.<br />

Existen algoritmos especiales para redes de tipo estrella.<br />

Dr. Víctor J. Sosa Sosa<br />

18


Metodología para Proc. de Consultas Distribuidas<br />

Consultas basadas en cálculo<br />

sobre relaciones distribuidas<br />

Descomposición<br />

de Consulta<br />

ESQUEMA<br />

GLOBAL<br />

CONTROL<br />

DE<br />

SITIOS<br />

Consultas basadas en algebra<br />

sobre relaciones distribuidas<br />

Localización<br />

de Datos<br />

Consulta en fragmentos<br />

ESQUEMA DE<br />

FRAGMETOS<br />

Optimización<br />

Global<br />

ESTADISTICAS SOBRE<br />

FRAGMETOS<br />

A NIVEL<br />

LOCAL<br />

Consulta optimizada en fragmentos con<br />

operaciones de comunicación<br />

Optimización<br />

Local<br />

ESQUEMAS<br />

LOCALES<br />

Consulta local optimizada<br />

Dr. Víctor J. Sosa Sosa<br />

19<br />

Paso 1. Descomposición de Consulta<br />

Entrada: Consulta basada en cálculo sobre las relaciones globales.<br />

<br />

Normalización.<br />

Manipular cuantificadores y cualificación de la consulta.<br />

Análisis.<br />

Detectar y rechazar <strong>consultas</strong> “incorrectas”.<br />

Posible para sólo un subconjunto del cálculo relacional.<br />

Simplificación.<br />

Eliminar predicados redundantes.<br />

Restructuración.<br />

Transformar de consulta basada en cálculo a consulta en álgebra.<br />

Más de una traducción es posible.<br />

Usa reglas de transformación.<br />

Dr. Víctor J. Sosa Sosa<br />

20


ormalización de Predicados de Selección<br />

Análisis léxico y sintáctico.<br />

Verificación de validación.<br />

Verificación de atributos y relaciones.<br />

Poner dentro de la forma normal.<br />

Forma normal conjuntiva.<br />

(p 11 ∨ p 12 ∨ ... ∨ p 1n ) ∧ ... ∧ (p m1 ∨ p m2 ∨ ...∨ p mn )<br />

Forma normal disjuntiva.<br />

(p 11 ∧ p 12 ∧ ... ∧ p 1n ) ∨ ... ∨ (p m1 ∧ p m2 ∧ ... ∧ p mn )<br />

Dr. Víctor J. Sosa Sosa<br />

21<br />

Análisis de Consultas<br />

Rechazar las <strong>consultas</strong> incorrectas.<br />

Tipos de dato incorrectos.<br />

Si cualquiera de sus atributos o nombres de relaciones no están<br />

definidos en el esquema global.<br />

Si las operaciones se aplican a atributos de tipos incorrectos.<br />

Semánticamente incorrecto.<br />

Componentes que no contribuyen de ninguna manera a la<br />

generación del resultado.<br />

Solamente un subconjunto de las <strong>consultas</strong> en cálculo relacional se<br />

pueden probar en cuanto a correctez.<br />

Aquéllas que no contienen disjunciones y negaciones.<br />

Los errores se pueden detectar con los siguientes mecanismos:<br />

• Grafo de conexión (grafo de consulta).<br />

• Grafo de reunión (tipo especial de grafo de conexión).<br />

Dr. Víctor J. Sosa Sosa<br />

22


Análisis de Consultas - Ejemplo<br />

SELECT ENAME, RESP<br />

FROM E, G, J<br />

WHERE E.ENO = G.ENO<br />

AD G.JNO = J.JNO<br />

AD JNAME = “CAD/CAM”<br />

AD DUR ≥ 36<br />

AD<br />

TITLE = “Programmer”<br />

TITLE=<br />

“Programmer”<br />

E.ENO=G.ENO<br />

E<br />

ENAME<br />

Grafo de Consulta<br />

DUR≥36<br />

G<br />

RESP<br />

RESULTADO<br />

G.JNO=J.JNO<br />

J<br />

JNAME=“CAD/CAM”<br />

Grafo de Reunión<br />

E.ENO=G.ENO<br />

E<br />

G<br />

G.JNO=J.JNO<br />

J<br />

Dr. Víctor J. Sosa Sosa<br />

23<br />

Análisis de Consultas - Ejemplo<br />

Si el gráfo de la consulta no está enlazado, la consulta<br />

está equivocada.<br />

SELECT ENAME, RESP<br />

FROM E, G, J<br />

WHERE E.ENO = G.ENO<br />

AD JNAME = “CAD/CAM”<br />

AD DUR ≥ 36<br />

AD TITLE = “Programmer”<br />

DUR≥36<br />

E.ENO=G.ENO<br />

G<br />

TITLE=“Programmer”<br />

E<br />

RESP<br />

J<br />

JNAME=“CAD/CAM”<br />

ENAME<br />

RESULTADO<br />

24<br />

Dr. Víctor J. Sosa Sosa


¿Por qué simplificar<br />

<br />

Simplificación de Consultas<br />

Recuérdese el ejemplo.<br />

¿Cómo Usar las reglas de transformación.<br />

Eliminación de redundancias mediante las reglas de<br />

idempotencia:<br />

p 1 ∧ ¬(p 1 ) ⇔ false<br />

p 1 ∧ (p 1 ∨ p 2 ) ⇔ p 1<br />

p 1 ∨ false ⇔ p 1<br />

. . .<br />

Aplicación de transitividad.<br />

Uso de reglas de integridad.<br />

Dr. Víctor J. Sosa Sosa<br />

25<br />

Simplificación de Consultas- Ejemplo<br />

SELECT<br />

FROM<br />

WHERE<br />

OR<br />

AD<br />

OR<br />

AD<br />

TITLE<br />

E<br />

E.ENAME = “J. Doe”<br />

(OT (E.TITLE = “Programmer”)<br />

(E.TITLE = “Programmer”<br />

E.TITLE = “Elect. Eng.”)<br />

OT (E.TITLE = “Elect. Eng.”))<br />

SELECT<br />

FROM<br />

WHERE<br />

TITLE<br />

E<br />

E.ENAME = “J. Doe”<br />

Dr. Víctor J. Sosa Sosa<br />

26


Restructuración<br />

<br />

<br />

<br />

Convertir de cálculo relacional a<br />

algebra relacional.<br />

Hacer uso de árboles de consulta.<br />

Ejemplo.<br />

Encontrar los nombres de empleados<br />

diferentes a J. Doe que trabajaron en<br />

el proyecto CAD/CAM de 1 a 2 años.<br />

SELECT ENAME<br />

FROM E, G, J<br />

WHERE E.ENO = G.ENO<br />

AD G.JNO = J.JNO<br />

AD ENAME ≠ “J.Doe”<br />

AD JNAME = “CAD/CAM”<br />

AD (DUR = 12 OR DUR = 24)<br />

Π ENAME<br />

σ DUR=12 OR DUR=24<br />

σ JNAME=“CAD/CAM”<br />

σ ENAME≠ “J. DOE”<br />

JNO<br />

ENO<br />

J G E<br />

Proyección<br />

Selección<br />

Reunión<br />

Dr. Víctor J. Sosa Sosa<br />

27<br />

Restructuración - Reglas de Transformación<br />

Conmutatividad de operaciones binarias.<br />

R × S ⇔ S × R<br />

R S ⇔ S R<br />

R ∪ S ⇔ S ∪ R<br />

Asociatividad de operaciones binarias.<br />

(R × S) × T ⇔ R × (S × T)<br />

(R S) T ⇔ R (S T)<br />

Idempotencia en operaciones unarias<br />

Π A’ (Π A’ (R)) ⇔ Π A’ (R)<br />

σ p1(A1) (σ p2(A2) (R)) = σ p1(A1) ∧ p2(A2) (R)<br />

donde R[A] y A’⊆ A, A’’⊆ A y A’⊆ A’’.<br />

Conmutar selección con proyección.<br />

Dr. Víctor J. Sosa Sosa<br />

28


Restructuración - Reglas de Transformación<br />

Conmutar selección con operaciones binarias.<br />

σ p(Ai) (R × S) ⇔ (σ p(Ai) (R)) × S<br />

σ p(Ai) (R (Aj,Bk))S) ⇔ (σ p(Ai) (R)) (Aj,Bk))S<br />

σ p(Ai) (R ∪ T) ⇔ σ p(Ai) (R) ∪ σ (Ai) (T)<br />

donde A i pertenece a R y T.<br />

Conmutar proyección con operaciones binarias.<br />

Π C (R × S) ⇔ Π A’ (R) × Π B’ (S)<br />

Π C (R (Aj,Bk) S) ⇔ Π A’ (R) (Aj,Bk) Π B’ (S)<br />

Π C (R ∪ S) ⇔ Π C (R) ∪ Π C (S)<br />

donde R[A] y S[B]; C = A’ ∪ B’ donde A’⊆ A, B’⊆ B.<br />

Dr. Víctor J. Sosa Sosa<br />

29<br />

Restructuración - Ejemplo<br />

Retomando el ejemplo previo:<br />

Encontrar los nombres de<br />

empleados diferentes a J. Doe<br />

que trabajaron en el proyecto<br />

CAD/CAM de 1 a 2 años.<br />

Π ENAME<br />

σ DUR=12 OR DUR=24<br />

σ JNAME=“CAD/CAM”<br />

Proyección<br />

Selección<br />

SELECT ENAME<br />

FROM E, G, J<br />

WHERE E.ENO = G.ENO<br />

AD G.JNO = J.JNO<br />

AD ENAME ≠ “J.Doe”<br />

AD JNAME = “CAD/CAM”<br />

AD (DUR = 12 OR DUR = 24)<br />

σ ENAME≠ “J. DOE”<br />

JNO<br />

ENO<br />

J G E<br />

Reunión<br />

Dr. Víctor J. Sosa Sosa<br />

30


Equivalencia de Consultas<br />

Π ENAME<br />

31<br />

σ JNAME = “CAD/CAM” ∧ (DUR = 12 OR DUR = 24) ∧ ENAME ≠ “J.DOE”<br />

JNO ∧ ENO<br />

X<br />

G J E<br />

Dr. Víctor J. Sosa Sosa<br />

Restructuración<br />

Π ENAME<br />

JNO<br />

Π JNO, ENAME<br />

32<br />

ENO<br />

Π JNO<br />

Π JNO, ENO Π ENO, ENAME<br />

σ JNAME = “CAD/CAM” σ DUR = 12 OR DUR = 24<br />

σ ENAME ≠ “J.DOE”<br />

J<br />

G<br />

E<br />

Dr. Víctor J. Sosa Sosa


Paso 2 - Localización de Datos<br />

Entrada: Consulta en álgebra sobre relaciones distribuidas.<br />

Determinar cuáles fragmentos están involucrados.<br />

Localización de programas.<br />

Sustituir para cada consulta global su programa de<br />

localización.<br />

Optimizar la expresión resultante.<br />

Dr. Víctor J. Sosa Sosa<br />

33<br />

Suponer:<br />

Localización - Ejemplo<br />

Π ENAME<br />

E está fragmentado en E 1 , E 2 y<br />

E 3 como sigue:<br />

E 1 = σ ENO ≤ “E3” (E)<br />

E 2 = σ ”E3” < ΕΝΟ ≤ “E6” (E)<br />

σ DUR=12 OR DUR=24<br />

σ JNAME=“CAD/CAM”<br />

E 3 = σ ENO ≥ “E6”<br />

G está fragmentado en G σ<br />

1 y G 2 ENAME ≠ “J. DOE”<br />

como sigue:<br />

JNO<br />

G 1 = σ ENO ≤ “E3” (G)<br />

G 2 = σ ΕΝΟ > “E3” (G)<br />

ENO<br />

Reemplace E por (E 1 ∪ E 2 ∪<br />

E 3 ) y G por (G 1 ∪ G 2 ) en J ∪<br />

E 1 E 2 E 3 G 1 G 2<br />

34<br />

cualquier consulta.<br />

Dr. Víctor J. Sosa Sosa


Proporcionando Paralelismo<br />

∪<br />

ENO<br />

ENO ENO ENO ENO<br />

ENO<br />

E 1 G 1 E 1 G 2 E 2 G 1 E 2 G 2 E 3 G 1 E 3 G 2<br />

Dr. Víctor J. Sosa Sosa<br />

35<br />

Eliminando Trabajo Innecesario<br />

∪<br />

ENO<br />

ENO<br />

ENO<br />

E 1 G 1 E 2 G 2 E 3 G 2<br />

Dr. Víctor J. Sosa Sosa<br />

36


Reducción por FH<br />

Reducción con selección.<br />

Relación R y F R = {R 1 , R 2 , ..., R w } donde R j = σ pj (R)<br />

σ pi (R j ) = φ si ∀x en R: ¬(p i (x) ∧ p j (x))<br />

Ejemplo:<br />

SELECT *<br />

FROM E<br />

WHERE ENO = “E5”<br />

σ ENO=“E5”<br />

σ ENO=“E5”<br />

E 1<br />

∪<br />

E 2 E 3<br />

E 2<br />

Dr. Víctor J. Sosa Sosa<br />

37<br />

Reducción por FHP<br />

Reducción con reunión.<br />

Es posible si la fragmentación se hace sobre un atributo que<br />

participa en la reunión.<br />

Una reunión distribuida sobre una unión:<br />

(R 1 ∪ R 2 ) R 3 ⇔ (R 1 R 3 ) ∪ (R 2 R 3 )<br />

Dado R i = σ pi (R) y R j = σ pj (R)<br />

R i R j = φ si ∀x en R i , ∀y en R j : ¬(p i (x) ∧ p j (y))<br />

Dr. Víctor J. Sosa Sosa<br />

38


Reducción por FHP<br />

Ejemplo de reducción con reunión.<br />

Suponer que E está fragmentada como antes y<br />

G 1 = σ ENO ≤ “E3” (G)<br />

G 2 = σ ENO > “E3” (G)<br />

Considerar la consulta<br />

SELECT *<br />

FROM<br />

E, G<br />

WHERE E.ENO = G.ENO<br />

ENO<br />

∪<br />

∪<br />

E 1 E 3<br />

E 2<br />

G 1 G 2<br />

Dr. Víctor J. Sosa Sosa<br />

39<br />

Reducción por FHP<br />

Ejemplo de reducción con reunión.<br />

Distribuir la reunión sobre las uniones.<br />

Aplicar la regla de reducción.<br />

∪<br />

ENO<br />

ENO<br />

ENO<br />

E 1 G 1<br />

E 2 G 2<br />

E 3 G 2<br />

Dr. Víctor J. Sosa Sosa<br />

40


Reducción por FV<br />

Encuentra relaciones intermedias inservibles (vacias).<br />

Sea la relación R definida sobre los atributos A = {A 1 , A 2 ,<br />

..., A n } fragmentada verticalmente en R i = Π A’ (R) donde<br />

A’ ⊆ A, entonces:<br />

Π D,K (R i ) es inservible si el conjunto de la proyección de<br />

los atributos D no está en A’.<br />

Dr. Víctor J. Sosa Sosa<br />

41<br />

Reducción por FV<br />

Relaciones intermedias inservibles (vacias).<br />

Ejemplo : E 1 = Π ENO, ENAME (E); E 2 = Π ENO, TITLE (E)<br />

SELECT<br />

FROM<br />

ENAME<br />

E<br />

Π ENAME<br />

Π ENAME<br />

ENO<br />

E 1 E 2 E 1<br />

Dr. Víctor J. Sosa Sosa<br />

42


Reducción por FHD<br />

Reglas:<br />

Distrubuye las reuniones sobre las uniones.<br />

Aplica la reducción de la reunión para la fragmentación<br />

horizontal.<br />

Ejemplo:<br />

G 1 : G ENO E 1<br />

G 2 : G ENO E 2<br />

E 1 : σ TITLE = “Programmer” (E)<br />

E 2 : σ TITLE = “Programmer” (E)<br />

43<br />

SELECT *<br />

FROM E, G<br />

WHERE G.ENO = E.ENO<br />

AD E.TITLE = “Mech. Eng.”<br />

Dr. Víctor J. Sosa Sosa<br />

Reducción para una FHD<br />

Consulta genérica<br />

ENO<br />

∪<br />

G 1 G 2<br />

σ TITLE=“Mech. Eng.”<br />

∪<br />

Primeras selecciones<br />

ENO<br />

E 1 E 2<br />

σ<br />

∪<br />

TITLE=“Mech. Eng.”<br />

G 1 G 2<br />

E 2<br />

Dr. Víctor J. Sosa Sosa<br />

44


Reducción para una FHD<br />

G 2<br />

E 2<br />

Reuniones sobre uniones ∪<br />

ENO<br />

G 1 E 2<br />

ENO<br />

σ TITLE=“Mech. Eng.”<br />

G 2<br />

G 2<br />

E 2<br />

Eliminación de las relaciones intermedias vacías.<br />

(Sub-árbol izquierdo)<br />

ENO<br />

σ TITLE=“Mech. Eng.”<br />

Dr. Víctor J. Sosa Sosa<br />

45<br />

Reducción para FM<br />

Combina las reglas especificadas:<br />

Eliminar las relaciones vacías generadas por selecciones<br />

contradictorias en fragmentos horizontales.<br />

Eliminar las relaciones innecesarias generadas por<br />

proyecciones en fragmentos verticales.<br />

Distribuir reuniones sobre uniones para aislar y eliminar<br />

reuniones innecesarias.<br />

Dr. Víctor J. Sosa Sosa<br />

46


Reducción por FM<br />

Ejemplo:<br />

Π ENAME<br />

Considérese la siguiente<br />

fragmentación mixta:<br />

σ ENO=“E5” Π ENAME E 1 =σ ENO ≤ “E4” (Π ΕΝΟ,ΕΝΑΜΕ (Ε))<br />

E 2 =σ ENO > “E4” (Π ΕΝΟ,ΕΝΑΜΕ (Ε))<br />

σ ENO=“E5”<br />

ENO<br />

E 3 =Π ENO, TITLE (Ε)<br />

Considérese la siguiente consulta: ∪<br />

E 2<br />

SELECT ENAME<br />

FROM E<br />

WHERE ENO = “E5” E 1 E 2 E 3<br />

47<br />

Dr. Víctor J. Sosa Sosa<br />

Paso 3 - Optimización de Consulta Global<br />

Entrada: Consulta fragmentada.<br />

Encontrar la mejor (no necesariamente la óptima) estrategia<br />

global.<br />

Minimizar el costo de una función.<br />

Procesamiento de reunión distribuída.<br />

<br />

“Frondoso” vs. árboles lineales.<br />

¿Cuál relación enviar a dónde<br />

Envío completo vs. envío por demanda.<br />

Decidir sobre el uso de semireuniones.<br />

Las semireuniones ahorran en comunicación a costa de<br />

más procesamiento local.<br />

Métodos de reunión.<br />

<br />

Ciclos anidados vs. reuniones ordenadas (merge join o<br />

hash join).<br />

Dr. Víctor J. Sosa Sosa<br />

48


Optimización Basada en Costo<br />

Espacio de solución.<br />

El conjunto de expresiones de álgebra equivalentes<br />

(árboles de consulta).<br />

Funciones de costo (en términos de tiempo).<br />

Costo I/O + costo CPU + costo de comunicación.<br />

Estas pueden tener diferentes pesos en diferentes<br />

entornos distribuidos (LAN vs. WAN).<br />

Pueden también maximizar el rendimiento.<br />

Algoritmo de búsqueda.<br />

¿Cómo podemos movernos dentro del espacio de<br />

solución<br />

Búsquedas exhaustivas y algoritmos heurísticos<br />

(mejoramiento iterativo, templado simulado,<br />

algoritmos genéticos, etc.).<br />

Dr. Víctor J. Sosa Sosa<br />

49<br />

Funciones de Costo<br />

Tiempo total (o costo total).<br />

Reducir cada costo (en términos de tiempo) por<br />

componente.<br />

Hacer el costo del componente tan pequeño como sea<br />

posible.<br />

Optimizar la utilización de los recursos.<br />

Incrementa el throughput del sistema.<br />

Tiempo de respuesta.<br />

Hacer tantas cosas como sea posible en paralelo.<br />

Pudiera incrementar el tiempo total debido al<br />

incremento de actividad total.<br />

Dr. Víctor J. Sosa Sosa<br />

50


Costo Total<br />

Sumatoria de todos los factores de costo:<br />

Costo total = costo de CPU + costo I/O + costo de comunicación<br />

donde<br />

Costo de CPU<br />

= costo por unidad de instrucción * No. de instrucciones<br />

Costo de I/O<br />

= costo por unidad de I/O a disco * No. de I/Os a disco<br />

Costo de comunicación<br />

= inicio de mensaje + transmisión<br />

Dr. Víctor J. Sosa Sosa<br />

51<br />

Costo Total de los Factores<br />

Redes de cobertura amplia.<br />

Inicio de mensaje y costo de transmisión altos.<br />

El costo de procesamiento local es bajo (mainframes<br />

rápidas o minicomputadoras).<br />

Relación de costos de comunicación a I/O = 20:1.<br />

Redes de área local.<br />

Los costos de procesamiento local y comunicación<br />

son similares.<br />

Relación de costos de comunicación a I/O = 1:1.6.<br />

Dr. Víctor J. Sosa Sosa<br />

52


Tiempo de Respuesta<br />

Tiempo entre el inicio y la terminación de una consulta.<br />

Tiempo de respuesta<br />

= tiempo de CPU + tiempo I/O + tiempo de comunicación<br />

Tiempo de CPU<br />

= unidad de tiempo por instrucción * No. de instrucciones<br />

secuenciales<br />

Tiempo de I/O<br />

= unidad de tiempo I/O * No. de I/Os secuenciales<br />

Tiempo de comunicación<br />

= unidad de tiempo del mensaje de inicio * No. de<br />

mensajes secuenciales + tiempo de unidad de<br />

transmisión * No. de bytes secuenciales<br />

Dr. Víctor J. Sosa Sosa<br />

53<br />

Ejemplo de Funciones de Costo<br />

Sitio 1<br />

Sitio 2<br />

x unidades<br />

y unidades<br />

Sitio 3<br />

Suponemos que sólo se considera el costo de comunicación.<br />

Tiempo total = 2 * tiempo de inicialización de mensaje +<br />

tiempo de unidad de transmisión * (x+y)<br />

Tiempo de respuesta = max {tiempo de enviar x de 1 a 3,<br />

tiempo de enviar y de 2 a 3}<br />

Tiempo de enviar x de 1 a 3 = tiempo de inicialización de<br />

mensaje + tiempo de unidad de transmisión * x<br />

Tiempo de enviar y de 2 a 3 = tiempo de inicialización de<br />

mensaje + tiempo de unidad de transmisión * y<br />

Dr. Víctor J. Sosa Sosa<br />

54


Estadísticas de Optimización<br />

Factor de costo primario: tamaño de relaciones intermedias.<br />

Para cada relación R[A 1 , A 2 , ..., A n ] con fragmentos R 1 , R 2 , ...,<br />

R r .<br />

Longitud de cada atributo: long(A i).<br />

Número de valores distintos para cada atributo en cada<br />

fragmento: card(Π Ai R j ).<br />

Valores máximo y mínimo en el dominio de cada<br />

atributo: min(A i ), max(A i ).<br />

Cardinalidad de cada dominio: card(dom[A i ]).<br />

Cardinalidad de cada fragmento: card(R j ).<br />

Dr. Víctor J. Sosa Sosa<br />

55<br />

Estadísticas de Optimización<br />

Factor de selectividad de cada operación para relaciones.<br />

Para reuniones<br />

card(R S)<br />

FS (R,S) =<br />

card(R) * card(S)<br />

Mayor precisión => mayor costo para mantener.<br />

Dr. Víctor J. Sosa Sosa<br />

56


Tamaño de Relaciones Intermedias<br />

Selección.<br />

tamaño(R) = card(R) * long(R)<br />

card(σ F (R) = FS σ (F) * card(R)<br />

donde<br />

FS σ (A = valor) =<br />

FS σ (A > valor) =<br />

FS σ (A < valor) =<br />

1<br />

card(∏ A (R))<br />

max(A) - valor<br />

max(A) - min(A)<br />

valor - min(A)<br />

max(A) - min(A)<br />

Dr. Víctor J. Sosa Sosa<br />

57<br />

Tamaño de Relaciones Intermedias<br />

y donde<br />

FS σ ( p(A i ) ∧ p(A j ) )<br />

= FS σ ( p(A i )) * FS σ ( p(A j ) )<br />

FS σ ( p(A i ) ∨ p(A j ) )<br />

= FS σ ( p(A i )) + FS σ ( p(A j ) )<br />

- (FS σ ( p(A i )) * FS σ ( p(A j ) ) )<br />

FS σ ( A ∈ {valores} )<br />

= FS σ ( A = valor ) * card({valores})<br />

Dr. Víctor J. Sosa Sosa<br />

58


Tamaño de Relaciones Intermedias<br />

Proyección.<br />

card(Π K (R)) = card(R)<br />

Producto cartesiano.<br />

card(R × S) = card(R) * card(S)<br />

Unión.<br />

Límite superior: card(R ∪ S) = card(R) + card(S)<br />

Límite inferior: card(R ∪ S) = max{card(R), card(S)}<br />

Diferencia.<br />

Límite superior: card(R - S) = card(R)<br />

Límite inferior: 0<br />

59<br />

Dr. Víctor J. Sosa Sosa<br />

Tamaño de Relaciones Intermedias<br />

Reunión.<br />

Caso especial. A es una llave de R y B es una llave<br />

foránea de S; A es una llave foránea de R y B es una<br />

llave de S.<br />

card(R A=B S) = card(R)<br />

Caso general.<br />

Semireunión.<br />

donde<br />

card(R S) = FS * card(R) * card(S)<br />

card(R A S) = FS (S.A) * card(R)<br />

FS (R A S) = FS (S.A) = card(Π Α(S))<br />

card(dom[A])<br />

Dr. Víctor J. Sosa Sosa<br />

60


Optimización de Consultas Centralizada<br />

INGRES.<br />

Dinámica.<br />

Interpretativa.<br />

System R.<br />

Estática.<br />

Búsqueda exhaustiva.<br />

Dr. Víctor J. Sosa Sosa<br />

61<br />

Algoritmo de IGRES<br />

Descomponer cada consulta multivariable en una<br />

secuencia de <strong>consultas</strong> monovariable con una variable<br />

común.<br />

Procesa cada una mediante un procesador de <strong>consultas</strong><br />

monovariable.<br />

Elige un plan inicial de ejecución (heurística).<br />

Ordena el resto considerando tamaños de<br />

relaciones intermedias<br />

Nota: no mantiene información estadística.<br />

Dr. Víctor J. Sosa Sosa<br />

62


Algoritmo de Descomposición de IGRES<br />

Reemplazo de variable. Se sustituye una variable n de la<br />

consulta q por una serie de <strong>consultas</strong><br />

q 1 → q 2 → ... → q n<br />

donde q i usa el resultado de q i-1 .<br />

Separación de consulta. Se separa la consulta q en q’ →<br />

q’’ donde q’ y q’’ tienen una variable común, la cual es el<br />

resultado de q’.<br />

Sustitución de tupla . Se reemplaza el valor de cada tupla<br />

con los valores actuales, y se simplifica la consulta.<br />

q(V 1 , V 2 , ..., V n ) → {q’ (t 1i , V 2 , V 3 , ..., V n ), t 1i ∈ R 1 }<br />

Dr. Víctor J. Sosa Sosa<br />

63<br />

Separación de Consulta<br />

q:<br />

q’:<br />

SELECT V 2 .A 2 , V 3 .A 3 , ..., V n .A n<br />

FROM R 1 V 1 , ..., R n V n<br />

WHERE P 1 (V 1 .A 1 ’) AD P 2 (V 1 .A 1 , V 2 .A 2 , ..., V n .A n )<br />

⇓<br />

SELECT V 1 .A 1 ITO R 1 ’<br />

FROM R 1 V 1<br />

WHERE P 1 (V 1 .A 1 )<br />

q’’: SELECT V 2 .A 2 , V 3 .A 3 , ..., V n .A n<br />

FROM R 1 ’ V 1 , R 2 V 2 , ..., R n V n<br />

WHERE P 2 (V 1 .A 1 , V 2 .A 2 , ..., V n .A n )<br />

Dr. Víctor J. Sosa Sosa<br />

64


q:<br />

q 11 :<br />

Ejemplo de Separación<br />

SELECT E.ENAME<br />

FROM E, G, J<br />

WHERE E.ENO = G.ENO<br />

AD G.JNO = J.JNO<br />

AD J.JNAME = “CAD/CAM”<br />

SELECT<br />

FROM<br />

WHERE<br />

⇓<br />

J.JNO ITO JVAR<br />

J<br />

J.JNAME = “CAD/CAM”<br />

q’:<br />

SELECT<br />

FROM<br />

WHERE<br />

AD<br />

E.ENAME<br />

E, G, JVAR<br />

E.ENO = G.ENO<br />

G.JNO = JVAR.JNO<br />

Dr. Víctor J. Sosa Sosa<br />

65<br />

Ejemplo de Separación<br />

q’:<br />

q 12 :<br />

q 13 :<br />

SELECT<br />

FROM<br />

WHERE<br />

AD<br />

SELECT<br />

FROM<br />

WHERE<br />

SELECT<br />

FROM<br />

WHERE<br />

E.ENAME<br />

E, G, JVAR<br />

E.ENO = G.ENO<br />

G.JNO = JVAR.JNO<br />

⇓<br />

G.ENO ITO GVAR<br />

G, JVAR<br />

G.JNO = JVAR.JNO<br />

E.ENAME<br />

E, GVAR<br />

E.ENO = GVAR.ENO<br />

Dr. Víctor J. Sosa Sosa<br />

66


Sustitución de Tuplas<br />

La consulta q 11 es mono-variable; mientras que q 12 y q 13 están<br />

sujetas a sustitución de tuplas.<br />

Suponemos que GVAR tiene únicamente dos tuplas: y<br />

.<br />

La sustitución para q 13 queda de la siguiente manera<br />

q 131 : SELECT E.EAME<br />

FROM E<br />

WHERE E.EO=“E1”<br />

q 132 :<br />

SELECT<br />

FROM<br />

WHERE<br />

E.EAME<br />

E<br />

E.EO=“E2”<br />

Dr. Víctor J. Sosa Sosa<br />

67<br />

Algoritmo de System R<br />

Consultas simples (ejem. mono-relación) son<br />

ejecutadas de acuerdo al mejor camino de acceso<br />

Ejecución de Joins<br />

2.1 Determina el posible orden de los joins<br />

2.2 Determina el costo de cada orden<br />

2.3 Elige el orden de join con costo mínimo<br />

Dr. Víctor J. Sosa Sosa<br />

68


Algoritmo de System R<br />

Para los Joins, tiene 2 algoritmos alternativos:<br />

Ciclos Anidados<br />

Para cada tupla de relación externa (cardinalidad n 1 )<br />

Para cada tupla de relación interna (cardinalidad n 2 )<br />

join de dos tuplas si el predicado del join es verdadero<br />

Fin<br />

Fin<br />

Complejidad: n 1 * n 2<br />

Mezclar Join<br />

Ordena relaciones<br />

Mezcla relaciones<br />

Complejidad: n 1 + n 2 Si las relaciones son previamente<br />

ordenadas y equijoin<br />

Dr. Víctor J. Sosa Sosa<br />

69<br />

Algoritmo de System R - Ejemplo<br />

Nombres de empleados que trabajan en el<br />

proyecto CAD/CAM<br />

Asumir:<br />

E tiene un índice sobre ENO<br />

G tiene un índice sobre JNO<br />

J tiene un índice sobre JNO y un índice sobre JNAME<br />

ENO<br />

E<br />

G<br />

JNO<br />

J<br />

Dr. Víctor J. Sosa Sosa<br />

70


Algoritmo de System R - Ejemplo (cont..)<br />

Elige el mejor camino de acceso para cada relación<br />

E: búsqueda secuencial (no hay selección sobre E)<br />

G: búsqueda secuencial (no selección sobre G)<br />

J: índice sobre JNAME (hay una selección sobre<br />

J basado en JNAME)<br />

Determinar el mejor orden de Join<br />

E G J<br />

G J E<br />

J G E<br />

G E J<br />

E X J G<br />

J X E G<br />

Seleccionar el mejor orden basado en los costos del Join<br />

evaluado de acuerdo a los dos métodos<br />

Dr. Víctor J. Sosa Sosa<br />

71<br />

Algoritmo de System R<br />

Alternativas<br />

E G J<br />

E G E x J G E G x J J G J x E<br />

pruned pruned pruned pruned<br />

(G E) J (J G) E<br />

El mejor orden del join total es uno de<br />

((G E) J)<br />

((J G) E)<br />

Dr. Víctor J. Sosa Sosa<br />

72


Algoritmo de System R<br />

((J G) E) tiene un índice útil sobre los atributos del<br />

select y accesa directamente los atributos del Join de G y E<br />

Por lo tanto, elegirlo con los siguientes métodos de<br />

acceso:<br />

Seleccionar J usando el índice sobre JNAME<br />

entonces unir con G utilizando el indice sobre JNO<br />

después unir con E utilizando el índice sobre ENO<br />

Dr. Víctor J. Sosa Sosa<br />

73<br />

Ordenar Join en Consultas de Fragmentos<br />

Ordenan Joins<br />

INGRES Distribuido<br />

System R*<br />

Ordenan SemiJoins<br />

SDD-1<br />

Algoritmos Apers-Hevner-Yao<br />

Dr. Víctor J. Sosa Sosa<br />

74


Ordenar Join<br />

Considerar dos relaciones solamente<br />

R<br />

Si tamaño(R) < tamaño(S)<br />

Si tamaño(R) > tamaño(S)<br />

S<br />

Con múltiples relaciones es más complejo debido a<br />

que existen muchas alternativas<br />

Procesar el costo de todas las alternativas y<br />

evaluar la mejor<br />

* Es necesario procesar el tamaño de relaciones<br />

intermedias lo cual es dificil<br />

Uso de heurísticas<br />

Dr. Víctor J. Sosa Sosa<br />

75<br />

Ordenar Join - Ejemplo<br />

Considerar<br />

J JNOE ENOG<br />

ENO<br />

Sitio 2<br />

G<br />

JNO<br />

Sitio 1 E<br />

J Sitio 3<br />

Dr. Víctor J. Sosa Sosa<br />

76


Ordenar Join - Ejemplo<br />

Alternativas de ejecución:<br />

1. E → Sitio 2<br />

2.<br />

Sitio 2 procesa E’=E G<br />

E’ → Sitio 3<br />

Sitio 3 procesa E’ J<br />

3.<br />

5.<br />

G → Sitio 3<br />

Sitio 3 procesa G’=G J<br />

G’ → Sitio 1<br />

Sitio 1 procesa G’ E<br />

E → Sitio 2<br />

J → Sitio 2<br />

Sitio 2 procesa E J G<br />

4.<br />

G → Sitio 1<br />

Sitio 1 procesa E’=E G<br />

E’ → Sitio 3<br />

Sitio 3 procesa E’ J<br />

J → Sitio 2<br />

Sitio 2 procesa J’=J G<br />

J’ → Sitio 1<br />

Sitio 1 procesa J’ E<br />

Dr. Víctor J. Sosa Sosa<br />

77<br />

Algoritmos de SemiJoin<br />

Considerar el join de dos relaciones:<br />

R[A] (ubicada en el sitio 1)<br />

S[A] (ubicada en el sitio 2)<br />

Alternativas:<br />

1 Hacer el join R AS<br />

2 Efectuar uno de los semijoins equivalentes<br />

R AS ⇔ (R AS) AS<br />

⇔ R A (S AR)<br />

⇔ (R AS) A (S AR)<br />

Dr. Víctor J. Sosa Sosa<br />

78


Algoritmos de SemiJoin<br />

Efectuar el Join<br />

Enviar R al Sitio 2<br />

El Sitio 2 Procesa R AS<br />

Considerar SemiJoin (R AS) AS<br />

S’← ΠΑ(S)<br />

S’ →Sitio 1<br />

Sitio 1 procesa R’ = R AS’<br />

R’ →Sitio 2<br />

Sitio 2 procesa R’ AS<br />

SemiJoin es mejor si<br />

tamaño(ΠΑ(S)) + tamaño(R AS)) < tamaño(R)<br />

Dr. Víctor J. Sosa Sosa<br />

79<br />

Procesamiento de Consultas Distribuido<br />

Algoritmos<br />

INGRES<br />

Distribuido<br />

Tiempo<br />

Optimo<br />

Dinámico<br />

Objetivo<br />

de la fun.<br />

Tiempo de<br />

Respuesta<br />

o Costo<br />

Total<br />

Costo<br />

Total<br />

Factores a<br />

optim.<br />

Tamaño del<br />

Mensaje,<br />

Procesamiento<br />

Topología<br />

de Red<br />

General o<br />

Braodcast<br />

Semi<br />

Joins<br />

Estadisticas*<br />

Fragmen.<br />

no 1 Horiz.<br />

#Msg, Tam. General o<br />

R* Estático Total .Msg, IO, CPU Local no 1,2 No<br />

SDD-1<br />

AHY<br />

Estático<br />

Estático<br />

Costo<br />

Total Tam. Msg General si 1,3,4,5 No<br />

Tiempo de<br />

Respuesta<br />

o Costo<br />

Total<br />

#Msg Msg size, General si 1,3,5 No<br />

1: cardinalidad de la relación, 2: número de valores únicos por atributo, 3: factor de selectividad del join<br />

4: tamaño de proyección sobre cada atributo join, 5: tamaño del atributo y de la tupla<br />

Dr. Víctor J. Sosa Sosa<br />

80


Algoritmo de IGRES Distribuido<br />

Igual que la versión centralizada excepto<br />

El movimiento de relaciones (y fragmentos) necesita<br />

ser considerado<br />

Optimización con respecto al posible costo de<br />

comunicaciones o tiempo de respuesta<br />

Dr. Víctor J. Sosa Sosa<br />

81<br />

Algoritmo de R*<br />

El costo de función incluye procesamiento local así como<br />

transmisión<br />

Considera sólo joins<br />

Búsqueda exhaustiva<br />

Compilación<br />

Dr. Víctor J. Sosa Sosa<br />

82


Algoritmo de R*<br />

Eficiencia en Joins<br />

Traslada todo<br />

Grandes transferencia de datos<br />

Pequeño número de mensajes<br />

Es mejor si las relaciones son pequeñas<br />

Ir a Buscar<br />

número de mensajes = O(cardinalidad de relación<br />

externa)<br />

La transferencia de datos por mensaje es mínima<br />

Es mejor si las relaciones son grandes y la<br />

selectividad es buena<br />

Dr. Víctor J. Sosa Sosa<br />

83<br />

Algoritmo de R* -<br />

Partición Vertical y Joins<br />

1. Mover tuplas de una relación exterior al sitio de una<br />

relación interior<br />

(a) Extraer tuplas exteriores<br />

(b) Enviarlas al sitio de la relación interior<br />

(c) Unirlas como vayan llegando<br />

Costo Total = costo(extraer tuplas exteriores cualificadas)<br />

+ no. de tuplas exteriores fetched *<br />

costo(extraer tuplas interiores calificadas)<br />

+ cost. msg * (no. tuplas exteriores fetched *<br />

tamaño prom. de tuplas exteriores) / tamaño msg.<br />

Dr. Víctor J. Sosa Sosa<br />

84


Algoritmo de R* -<br />

Partición Vertical y Joins<br />

2. Mover tuplas de relación interior al sitio de<br />

relación exterior<br />

No se pueden unir como van llegando; necesitan ser almacenadas<br />

Costo Total = costo(extraer tuplas exteriores cualificadas)<br />

+ no. de tuplas exteriores fetched *<br />

costo(extraer tuplas interiores matching del almacén temporal)<br />

+ costo(extraer tuplas interiores cualificadas)<br />

+ costo(almacenar todas las tuplas internas cualificadas en<br />

almacén temporal)<br />

+ cost. msg * (no. tuplas interiores fetched *<br />

tamaño prom. de tupla interior) / tamaño msg.<br />

Dr. Víctor J. Sosa Sosa<br />

85<br />

Algoritmo de R* -<br />

Partición Vertical y Joins<br />

3.<br />

Mover relaciones internas y externas a otro sitio<br />

Costo Total = costo(extraer tuplas exteriores cualificadas)<br />

+ costo(extraer tuplas interiores cualificadas)<br />

+ costo(almacenar tuplas interiores en alm. )<br />

almacén temporal)<br />

+ cost. msg * (no. tuplas exteriores fetched *<br />

tamaño prom. de tupla exterior) / tamaño msg.<br />

+ cost. msg * (no. tuplas interiores fetched *<br />

tamaño prom. de tupla interior) / tamaño msg.<br />

+ no. de tuplas exteriores fetched *<br />

costo(extraer tuplas interiores del almacén temporal)<br />

Dr. Víctor J. Sosa Sosa<br />

86


Algoritmo de R* -<br />

Partición Vertical y Joins<br />

4.Fetch inner tuples as nedded<br />

(a) Extraer tuplas cualificadas en sitio de relación exterior<br />

(b) Enviar requisición conteniendo join columna valor(s)<br />

para tuplas exteriores al sitio de la relación interior<br />

(c) Extraer tuplas interiores que aparean en el sitio de relación interior<br />

(d) Enviar las tuplas interiores que aparean al sitio de la relación exterior<br />

(e) Unir como vayan llegando<br />

Costo Total = costo(extraer tuplas exteriores cualificadas)<br />

+ cost. msg * (no. tuplas exteriores fetched)<br />

+ no. de tuplas exteriores fetched *<br />

(no. de tuplas interiores fetched * tamaño prom.<br />

de tupla interior * cost. msg. / tamaño msg.<br />

+ no. de tuplas exteriores fetched * costo(extraer tuplas<br />

interiores que aparean para un valor exterior)<br />

Dr. Víctor J. Sosa Sosa<br />

87<br />

Algoritmo de SDD -1<br />

Basado en el algortimo de Subiendo la Cuesta (Hill Climbing)<br />

No Semijoins<br />

No Replicación<br />

No fragmentación<br />

No es considerado el costo de transferir el resultado<br />

al sitio del usuario desde el sitio del resultado final<br />

Puede minimizar tanto el tiempo total o el tiempo<br />

de respuesta<br />

Dr. Víctor J. Sosa Sosa<br />

88


Algoritmo Hill Climbing<br />

Asumir que el join esta entre tres relaciones.<br />

Paso 1: Hacer procesamiento inicial<br />

Paso 2: Selección de la solución factible inicial (ES 0 )<br />

2.1 Determinar el sitio candidato para el resultado - sitio donde<br />

una relación referenciada en la consulta exista<br />

2.2 Calcular el costo de transferir todas los otras relaciones<br />

refrenciadas a cada sitio candidato<br />

2.3 ES 0 = sitio candidato con costo mínimo<br />

Paso 3: Determinar divisiones candidatas de ES 0 en {ES 1 ,ES 2 }<br />

3.1 ES 1 consiste de enviar una de las relaciones al otro sitio<br />

de la relación<br />

3.2 ES 2 consiste de enviar el join de las relaciones al sitio del<br />

resultado final<br />

Dr. Víctor J. Sosa Sosa<br />

89<br />

Algoritmo Hill Climbing<br />

Paso 4: Remplazar ES 0 con el plan de división el cual<br />

da:<br />

costo(ES 1 ) + costo(join local) + costo(ES 2 ) < costo(ES 0 )<br />

Paso 5: Recursivamente aplicar pasos 3-4 sobre ES 1 y ES 2<br />

hasta que ninguno de los planes pueda ser encontrado<br />

Paso 6: Verificar por transmisiones redundantes en el plan<br />

final y eliminarlas.<br />

Dr. Víctor J. Sosa Sosa<br />

90


Algoritmo Hill Climbing - Ejemplo<br />

¿Cuales son los salarios de los ingenieros que trabajan en el<br />

proyecto CAD/CAM<br />

ΠSAL(S TITLE(E ENO(G JNO(σJNAME=“CAD/CAM”(J)))))<br />

Asumir:<br />

Relación Tamaño Sitio<br />

E<br />

S<br />

J<br />

G<br />

8<br />

4<br />

4<br />

10<br />

El tamaño de las relaciones es definido por su cardinalidad<br />

Minimizar costo total<br />

El costo de transmisión entre dos sitios es 1<br />

Ignorar el costo de procesamiento local<br />

1<br />

2<br />

3<br />

4<br />

Dr. Víctor J. Sosa Sosa<br />

91<br />

Algoritmo Hill Climbing - Ejemplo<br />

Paso 1:<br />

Selección sobre J; el resultado tiene cardinalidad 1<br />

Relación Tamaño Sitio<br />

E<br />

S<br />

J<br />

G<br />

8<br />

4<br />

4<br />

10<br />

1<br />

2<br />

3<br />

4<br />

Dr. Víctor J. Sosa Sosa<br />

92


Algoritmo Hill Climbing - Ejemplo<br />

Paso 2: Solución factible inicial<br />

Alternativa 1: El sitio de resultado es el sitio 1<br />

Costo Total = costo(S →Sitio 1) + costo(G→Sitio 1) + costo(J→Sitio 1)<br />

= 4 + 10 + 1 = 15<br />

Alternativa 2: El sitio de resultado es el sitio 2<br />

Costo Total = 8 + 10 + 1 = 19<br />

Alternativa 3: El sitio de resultado es el sitio 3<br />

Costo Total = 8 + 4 + 10 = 22<br />

Alternativa 4: El sitio de resultado es el sitio 4<br />

Costo Total = 8 + 4 + 10 = 22<br />

Por lo Tanto ES 0 = {E→Sitio 4; S→Sitio 4; J→Sitio 4}<br />

Dr. Víctor J. Sosa Sosa<br />

93<br />

Algoritmo Hill Climbing - Ejemplo<br />

Paso 3: Determinar divisiones candidato<br />

Alternativa 1: {ES 1 , ES 2 , ES 3 } donde<br />

ES 1 : E → Sitio 2<br />

ES 2 : (E S) → Sitio 4<br />

ES 3 : J → Sitio 4<br />

Alternativa 2: {ES 1 , ES 2 , ES 3 } donde<br />

ES 1 : S → Sitio 1<br />

ES 2 : (S E) → Sitio 4<br />

ES 3 : J → Sitio 4<br />

Dr. Víctor J. Sosa Sosa<br />

94


Algoritmo Hill Climbing - Ejemplo<br />

Paso 4: Determinar los costos de cada alternativa de división<br />

costo(Alternativa 1) = costo(E → Sitio 2) + costo((E S) → Sitio 4) +<br />

costo(J → Sitio 4)<br />

= 8 + 8 +1 = 17<br />

costo(Alternativa 2) = costo(E → Sitio 1) + costo((S E) → Sitio 4) +<br />

costo(J → Sitio 4)<br />

= 4 + 8 +1 = 13<br />

Decisión: NO DIVIDIR<br />

Paso 5: ES 0<br />

es el “mejor”<br />

Paso 6: No hay transmisiones redundantes<br />

Dr. Víctor J. Sosa Sosa<br />

95<br />

Algoritmo Hill Climbing<br />

Problemas:<br />

Algoritmo avaro → determina una solución inicial factible<br />

e iterativamente trata de mejorarla<br />

Si hay un mínimo local no podría encontrar mínimo global<br />

Si el plan óptimo tiene un alto costo inicial, no lo<br />

encontrará ya que no lo eligirá como la solución<br />

factible inicial<br />

Ejemplo : Un plan mejor es<br />

J → Sitio 4<br />

G’ = (J G) → Sitio 1<br />

(G’ E) → Sitio 2<br />

Costo Total = 1 + 2 + 2 = 5<br />

Dr. Víctor J. Sosa Sosa<br />

96


Algoritmo SDD - 1<br />

Inicialización<br />

Paso 1: En la estrategia de ejecución (llamado ES), incluye<br />

todo el procesamiento local<br />

Paso 2: Refleja los efectos del procesamiento local sobre el<br />

perfil de la base de datos<br />

Paso 3: Construye un conjunto de operaciones semijoin<br />

benéficas (BS) como sigue:<br />

BS = 0<br />

Por cada semijoin SJi<br />

BS ← BS ∪ SJi si costo(SJi) < beneficio(SJi)<br />

Dr. Víctor J. Sosa Sosa<br />

97<br />

Algoritmo SDD-1 - Ejemplo<br />

Considerar la siguiente consulta<br />

SELECT *<br />

FROM E, G, J<br />

WHERE E.ENO = G.ENO<br />

AD G.JNO = J.JNO<br />

La cual tiene el siguiente grafo y estadísticas:<br />

relació n card tam . tu pla tam . relació n<br />

sitio 1 sitio 2 sitio 3<br />

ENO<br />

JNO<br />

E G J<br />

E<br />

G<br />

J<br />

3 0<br />

1 0 0<br />

5 0<br />

5 0<br />

3 0<br />

4 0<br />

1 5 0 0<br />

3 0 0 0<br />

2 0 0 0<br />

a trib u to SF ta m a ñ o (Π atribu to )<br />

E .E N O<br />

G .E N O<br />

G .JN O<br />

J.JN O<br />

.3<br />

.8<br />

1<br />

.4<br />

1 2 0<br />

4 0 0<br />

4 0 0<br />

2 0 0<br />

98<br />

Dr. Víctor J. Sosa Sosa


Algoritmo SDD-1 - Ejemplo<br />

Semijoins beneficiosos:<br />

SJ 1 = G E, cuyo beneficio es 2100 = (1 - 0.3) * 3000<br />

y el costo es 120<br />

SJ 2 = G J, cuyo beneficio es 1800 = (1 - 0.4) * 3000<br />

y el costo es 200<br />

Semijoins no beneficiosos:<br />

SJ 3 = E G, cuyo beneficio es 300 = (1 - 0.8) * 1500<br />

y el costo es 400<br />

SJ 4 = G J, cuyo beneficio es 0 y el costo es 400<br />

Dr. Víctor J. Sosa Sosa<br />

99<br />

Algoritmo SDD-1<br />

Proceso iterativo<br />

Paso 4: Remueve el más beneficioso SJi de BS y lo<br />

agrega a ES<br />

Paso 5: Modifica el perfil de la base de datos acordemente<br />

Paso 6: Modifica BS apropiadamente<br />

Procesa nuevos valores beneficio/costo<br />

Verifica si algún nuevo semijoin necesita ser<br />

incluido en BS<br />

Paso 7: Si BS ≠ 0, regresa al paso 4<br />

Dr. Víctor J. Sosa Sosa<br />

100


Algoritmo SDD-1 - Ejemplo<br />

Iteración 1:<br />

Remover SJ 1 de BS y agregarlo a ES.<br />

Actualizar estadísticas de G<br />

tamaño(G) = 900 (= 3000*0.3)<br />

SF (G.ENO) = ~0.8*0.3 = 0.24<br />

Iteración 2:<br />

Dos semijoins beneficiosos:<br />

SJ 2 = G’ J, cuyo beneficio es 540 = (1-0.4)*900 y el costo es 200<br />

SJ 3 = E G’,cuyo beneficio es 1400 = (1-0.24)*1500 y el costo<br />

es 400<br />

Agregar SJ 3 a ES<br />

Actualizar estadísticas de E<br />

tamaño(E) = 360 (= 1500*0.24)<br />

SF (E.ENO) = ~0.3*0.24 = 0.072<br />

Dr. Víctor J. Sosa Sosa<br />

101<br />

Algoritmo SDD-1 - Ejemplo<br />

Iteración 3:<br />

No nuevos semijoins beneficiosos<br />

Remover semijoins SJ2 que quedan de BS y<br />

agregarlo a ES.<br />

Actualizar estadísticas de G<br />

tamaño(G) = 360 (= 900*0.4)<br />

Nota: La selectividad de G pudiera también cambiar, pero no<br />

es importante en este ejemplo<br />

Dr. Víctor J. Sosa Sosa<br />

102


Algoritmo SDD-1<br />

Selección del Sitio de Reunión<br />

Paso 8: Encontrar el sitio donde la más grande cantidad de datos<br />

reside y seleccionarlo como el sitio de reunión<br />

Ejemplo:<br />

Total de datos almacenados en los sitios:<br />

Sitio 1: 360<br />

Sitio 2: 360<br />

Sitio 3: 2000<br />

Por lo tanto el sitio 3 será elegido como el sitio de reunión.<br />

Dr. Víctor J. Sosa Sosa<br />

103<br />

Algoritmo SDD-1<br />

Postprocesamiento<br />

Paso 9: Para cada R i en el sitio “assembly” , encontrar los<br />

semijoins del tipo<br />

R i<br />

R j<br />

donde el costo total de ES sin este semijoin es más<br />

pequeño que el costo con éste y remueve el semijoin<br />

de ES.<br />

Nota: Podría haber beneficios indirectos<br />

Los semijoins no son removidos<br />

Paso 10: Permute el orden de semijoins si se hace se podría mejorar<br />

el costo total de ES.<br />

Ejemplo: Estrategia final:<br />

Envíar (G E) J al sitio 3<br />

Enviar E G’ al sitio 3<br />

Dr. Víctor J. Sosa Sosa<br />

104


Algoritmos Apers-Hevner-Yao<br />

Sitio de resultado especificado por el usuario<br />

Hacer uso de semijoins<br />

Puede ser usado para un mínimo de tiempo total o responder<br />

en un mínimo de tiempo<br />

Considera solamente costo de transmisiones<br />

Consultas<br />

Esas <strong>consultas</strong> donde, después de iniciar el procesamiento<br />

local, cada relación en la consulta contiene solamente el<br />

atributo común del join , el cual es también la única salida de<br />

la consulta.<br />

Consultas generales<br />

Cualquier consulta que sea anterior y que sea buena<br />

Dr. Víctor J. Sosa Sosa<br />

105<br />

Algoritmo-Representación AHY<br />

Considere la siguiente consulta simple y sus estadísticas<br />

A<br />

R 2<br />

A<br />

R 1 R 3<br />

A<br />

atributo SF size(Π atributo )<br />

R 1 .A<br />

R 2 .A<br />

.3<br />

1<br />

100<br />

400<br />

R 3 .A .7 200<br />

Puede ser representado por el siguiente plan<br />

R 1 .A 100<br />

R 2<br />

R 3 .A<br />

200<br />

84<br />

Dr. Víctor J. Sosa Sosa<br />

106


Paso 4 - Optimización Local<br />

Entrada: Mejor plan de ejecución global<br />

Selecciona el mejor camino de acceso<br />

Usa las técnicas de optimización centralizada<br />

Dr. Víctor J. Sosa Sosa<br />

107<br />

Optimización de Consultas Distribuidas -<br />

Problemas<br />

Modelo de costo<br />

Optimización de consulta multiple<br />

Heurísticas para reducir alternativas<br />

Mayor conjunto de <strong>consultas</strong><br />

Optimización sólo sobre <strong>consultas</strong> select-project-join<br />

También necesita manejar <strong>consultas</strong> complejas (ejem.,<br />

uniones) disjunciones, agregaciónes y clasificaciones)<br />

Costo de optimización vs. costo de ejecución tradeoff<br />

Heurísticas para reducir alternativas<br />

Estrategias de búsqueda controlables<br />

Intervalo Optimización/reoptimización<br />

Extensión de los cambios en el perfil de la base de<br />

datos antes de que la reoptimización sea necesaria<br />

Dr. Víctor J. Sosa Sosa<br />

108

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!