290 likes | 663 Views
Procesamiento de Consultas Distribuidas (2da. Parte). Lic. Bárbara da Silva. Sistemas de Bases de Datos Distribuidas - UCV. Esquema de la Clase. Objetivos de la optimización de consultas La complejidad de las operaciones del álgebra relacional Arquitectura del procesamiento de consultas
E N D
Procesamiento de Consultas Distribuidas(2da. Parte) Lic. Bárbara da Silva Sistemas de Bases de Datos Distribuidas - UCV
Esquema de la Clase • Objetivos de la optimización de consultas • La complejidad de las operaciones del álgebra relacional • Arquitectura del procesamiento de consultas • Descomposición de consultas • Normalización • Análisis • Simplificación • Reestructuración • Localización de datos distribuidos • Reducción para fragmentación horizontal primaria • Reducción para fragmentación vertical • Reducción para fragmentación horizontal derivada • Reducción para fragmentación híbrida
Objetivos de la optimización de consultas El problema de optimización de consultas es minimizar una función de costo tal que: función de = costo de I/O + costo de CPU + costo de costo total comunicación Costo de I/O: Costo de las operaciones de entrada/salida. Se puede minimizar a través de métodos de acceso y uso eficiente de memoria. Costo de CPU: Costo de las operaciones sobre datos en memoria.
Objetivos de la optimización de consultas Costo de Comunicación: Tiempo de intercambiar datos entre los nodos participantes en el query. Costo de = Tiempo de Formatear + Tiempo de transmitir Comunicación los datos los datos Los diferentes factores pueden tener pesos diferentes dependiendo del ambiente distribuido en el que se trabaje.
La complejidad de las operaciones del álgebra relacional La complejidad de las operaciones del álgebra relacional afectan directamente su tiempo de ejecución y establecen algunos principios útiles al procesador de consultas. Esos principios pueden ayudar en elegir la estrategia de ejecución final. La forma más simple de definir la complejidad es en términos de la cardinalidad de las relaciones independientemente de los detalles de implementación tales como fragmentación y estructuras de almacenamiento.
La complejidad de las operaciones del álgebra relacional La complejidad de las operaciones sugiere dos principios: 1. Dado que la complejidad es con base en las cardinalidades de las relaciones, las operaciones más selectivas que reducen las cardinalidades deben ser ejecutadas primero. 2. Las operaciones deben ser ordenadas en el orden de complejidad creciente de manera que el producto cartesiano puede ser evitado o, al menos, ejecutado al final de la estrategia.
Arquitectura del procesamiento de consultas Consulta sobre relaciones distribuidas Esquema Global Descomposición De Consultas Consulta en Algebra sobre relaciones distribuidas Nodo Central Esquema Fragmentado Localización de Datos Consulta sobre fragmentos Estadísticas sobre Fragmentos Optimización Global Consulta sobre fragmentos optimizadas Esquemas Locales Cada Nodo Optimización Local Consulta locales optimizadas
Descomposición de Consultas La primera capa descompone una consulta en el cálculo relacional en una consulta en el álgebra relacional que opera sobre relaciones globales. Consiste de cuatro partes: • Normalización: La consulta es reescrita de forma normalizada. • Análisis: Se analiza la semántica del query normalizado tal que los querys incorrectos se detectan tempranamente. • Simplificación: Se eliminan predicados redundantes. • Reestructuración: Se hace una trasformación directa de cálculo relacional a álgebra relacional. Luego, se van realizando transformaciones sobre la consulta en algebra relacional para mejorarla.
Localización de Datos Se localizan los datos involucrados en la consulta distribuida usando la información de la distribución de los datos, determinando sobre cuales fragmentos se realiza la consulta para generar una consulta sobre fragmentos. La consulta fragmentada se construye en dos pasos: • La consulta distribuida es traducida a una consulta fragmentada sustituyendo cada relación por su programa de reconstrucción. • La consulta fragmentada es simplificada y reestructurada para producir un query “bueno”.
Localización de Datos Una relación global puede ser reconstruida aplicando las reglas de reconstrucción y derivando un programa en el álgebra relacional cuyos operandos son los fragmentos. A este programa se le conoce como programa de localización ó reconstrucción. -> Fórmula de Reconstrucción. Por cada tipo de fragmentación se tienen técnicas de reducción que generan consultas simples y optimizadas.
Reducción para FHP Ejemplo Empleado (numEmp, nombre, titulo) Asignación (numEmp, numProy, responsabilidad, duración) Se encuentran fragmentadas así: EMP1 = SL numEmp <= ‘E3’ Empleado EMP2 = SL ‘E3’ < numEmp <= ‘E6’ Empleado EMP3 = numEmp > ‘E6’ Empleado ASG1 = SL numEmp <= ‘E3’ Asignacion ASG2 = SL numEmp > ‘E3’ Asignacion
Reducción para FHP Reducción por selección SELECT * FROM Empleado WHERE numEmp = "E5" σ numEmp=‘E5’ σ numEmp=‘E5’ Y Y EMP1 EMP2 EMP3 EMP2 a) b)
Reducción para FHP Reducción por juntas SELECT * FROM Empleado, Asignacion WHERE Empleado.numEmp = Asignacion.numEmp; ⊲⊳numEmp Y ⊲⊳numEmp ⊲⊳numEmp ⊲⊳numEmp Y Y EMP1 EMP2 EMP3 EMP1 ASG1 ASG1 ASG2 EMP2 ASG2 EMP3 ASG3 a) b)
Reducción para FV Considerando que se tiene fragmentado empleado así: EMP1 = PJ numEmp, nombre Empleado EMP2 = PJ numEmp, titulo Empleado Y la consulta: SELECT nombre FROM empleado; Πnombre Πnombre ⊲⊳ numEmp Y EMP1 EMP2 EMP1 a) b)
Reducción para FHD Considerando la siguiente fragmentación: EMP1 = SL titulo = ‘programador’ Empleado EMP2 = SL titulo <> ‘programador’ Empleado ASG1 = Asignacion SJ numEmp EMP1 ASG2 = AsignacionSJ numEmp EMP2 Y la consulta: SELECT * FROM Asignacion, Empleado WHERE Asignacion.numEmp = Empleado.numEmp AND titulo = "Ingeniero Mecánico“
Reducción para FHD ⊲⊳numEmp ⊲⊳numEmp σ titulo=‘ing. Mec.’ σ titulo=‘ing. Mec.’ Y Y Y EMP1 EMP2 EMP2 ASG1 ASG2 ASG1 ASG2 a) a) Y ⊲⊳numEmp ⊲⊳numEmp ⊲⊳numEmp σ titulo=‘ing. Mec.’ σ titulo=‘ing. Mec.’ σ titulo=‘ing. Mec.’ EMP2 ASG2 d) EMP1 ASG1 EMP2 ASG2 c)
Reducción para Fragmentación Híbrida Las consultas en fragmentos híbridos se pueden reducir combinando las reglas usadas para fragmentación horizontal primaria, fragmentación vertical y fragmentación horizontal derivada. Estas se pueden resumir de la manera siguiente: 1. Remover las relaciones vacías generadas para por selecciones contradictorias en fragmentos horizontales. 2. Remover las relaciones intermedias inútiles generadas por proyecciones en fragmentos verticales. 3. Distribuir juntas sobre uniones a fin de aislar y remover juntas inútiles.
Reducción para Fragmentación Híbrida Considerando la siguiente fragmentación híbrida de la relación Empleado: EMP1 = SL numEmp <= "E4" (PJ numEmp, nombre Empleado) EMP2 = SL numEmp > "E4" (PJ numEmp, nombre Empleado) EMP3 = PJ numEmp, titulo Empleado Y la consulta: SELECT nombre FROM Empleado WHERE numEmp = "E5"
Reducción para Fragmentación Híbrida Πnombre σ numEmp=‘E5’ Πnombre ⊲⊳numEmp σ numEmp=‘E5’ Y EMP2 EMP1 EMP2 EMP3 b) a)
Optimización Global de Consultas El objetivo de esta capa es hallar una estrategia de ejecución para la consulta cercana a la óptima. La estrategia de ejecución para una consulta distribuida puede ser descrita con los operadores del álgebra relacional y con primitivas de comunicación para transferir datos entre nodos. Para encontrar una buena transformación se consideran las características de los fragmentos, tales como, sus cardinalidades. Se considera el ordenamiento de juntas, dado que algunas permutaciones de juntas dentro de la consulta pueden conducir a un mejoramiento de varios órdenes de magnitud
Optimización Local de Consultas El trabajo de la última capa se efectúa en todos los nodos con fragmentos involucrados en la consulta. Cada subconsulta que se ejecuta en un nodo, llamada consulta local, es optimizada usando el esquema local del nodo. La optimización local utiliza los algoritmos de sistemas centralizados.