lunes, 11 de mayo de 2015

REPORTE UNIDAD lll

Instituto Tecnologico de Ciudad Juarez


 

BASES DE DATOS DISTRIBUIDAS  
Reporte de Actividades
UNIDAD III

3.1. Metodología del procesamiento de consultas distribuidas
                             3.2. Estrategias de procesamiento de consultas distribuidas
                             3.3. Optimización de consultas
 

Alumna: Gomez Rodriguez Veronica

titular: Angelica C. Martinez Q. 

 





Estrategias de procesamiento de consultas distribuidas



Contamos con la estrategia de Reformulación de consultas, que nos sirve para  encontrar que la información que nos va a proveer sea solo la que se le pidió por la  fuente. También se cuenta con la estrategia de descomposición de las fuentes, que consiste  en que según las fuentes que pidan cierto tipo de datos sean las atentidas con mayor  velocidad.


 Árboles de consultas

Es una estructura de árbol que corresponde a una  expresión del álgebra relacional en el que las tablas se representan como  nodos hojas y las operaciones del álgebra relacional como nodos  intermedios. 




Transformaciones equivalentes


Cuando una base de datos se encuentra en múltiples servidores y distribuye a un  número determinado de nodos tenemos:

1.-el servidor recibe una petición de un nodo
2.-el servidor es atacado por el acceso concurrente a la base de datos cargada  localmente
3.-el servidor muestra un resultado y le da un hilo a cada una de las maquinas  nodo de la red local.
Cuando una base de datos es accesada de esta manera la técnica que se utiliza  es la de fragmentación de datos que puede ser hibrida, horizontal y vertical. En esta fragmentación lo que no se quiere es perder la consistencia de los datos,  por lo tanto se respetan las formas normales de la base de datos.
Para realizar una transformación en la consulta primero se desfragmenta  siguiendo los estándares marcados por las reglas formales y posteriormente se  realiza él envió y la máquina que recibe es la que muestra el resultado pertinente para el usuario, de esta se puede producir una copia que será la equivalente a la  original.
 Métodos de ejecución del Join

Sean (R) y s(S) dos relaciones:
Si R S= entonces r s es lo mismo que r x s, y por lo tanto se puede utilizar la  estimación del producto cartesiano. Si R S es una clave de R entonces el número de tuplas en r s no es mayor que el  número de tuplas en S. Si R S es una clave externa de R entonces el número de  tuplas de r s es exactamente el número de tuplas de S.

Si R S no es clave de R ni de S entonces se supone que cada valor aparece con  la misma probabilidad, por lo tanto, sea t una tupla de r y sea R S=Ā, entonces se  estima que la tupla t produce:
Tuplas en s, por lo tanto se estima el tamaño de r s = (a) al cambiar los papeles de  r y s se tiene (b)
Estos valores serán distintos si y sólo si V(A,r) V(A,s), si este es el caso, la más  baja estimación de ambas será la más conveniente.



Join en bucles anidados

Si z = r s, r recibirá el nombre de relación externa y s se llamará relación interna, el  algoritmo de bucles anidados se puede presentar como sigue. Para cada tupla tr en r para cada tupla ts en ssi (tr,ts) satisface la condición entonces añadir tr ts al resultado Algoritmo 5–1 - Join en bucles anidados.
Donde tr ts será la concatenación de las tuplas tr y ts.

Como para cada registro de r se tiene que realizar una exploración completa de s,  y suponiendo el peor caso, en el cual la memoria intermedia sólo puede  concatenar un bloque de cada relación, entonces el número de bloques a acceder  es de . Por otro lado, en el mejor de los casos si se pueden contener ambas  relaciones en la memoria intermedia entonces sólo se necesitarían accesos a  bloques.



Join en bucles anidados por índices

Este algoritmo simplemente sustituye las búsquedas en tablas por búsquedas en  índices, esto puede ocurrir siempre y cuando exista un índice en el atributo de join  de la relación interna. Este método se utiliza cuando existen índices así como  cuando se crean índices temporales con el único propósito de evaluar la reunión.

El costo de este algoritmo se puede calcular como sigue: para cada tupla de la  relación externa r se realiza una búsqueda en el índice de s para recuperar las tuplas apropiadas, sea c = costo de la búsqueda en el índice, el cual se puede  calcular con cualquiera de los algoritmos A3, A4 o A5. Entonces el costo del join  es; si hay índices disponibles para el atributo de join en ambas relaciones, es  conveniente utilizar la relación con menos tuplas.




Optimización de consultas

Para poder optimizar una consulta necesitamos tener claras las propiedades del algebra relacional para asegurar la reformulación de la consulta, al optimizar una consulta obtenemos los siguientes beneficios:

°minimizar costos
°Reducir espacios de comunicaciones-Seguridad en envíos de información

Objetivos de la optimización de consultas
Como se estableció antes, el objetivo del procesamiento de consultas en un ambiente distribuido es transformar una consulta sobre una base de datos distribuida en una especificación de alto nivel a una estrategia de ejecución eficiente expresada en un lenguaje de bajo nivel sobre bases de datos locales.
Así, el problema de optimización de consultas es minimizar una función de costo tal que función de costo total = costo de I/O + costo de CPU + costo de comunicación.
Los diferentes factores pueden tener pesos diferentes dependiendo del ambiente distribuido en el que se trabaje. Por ejemplo, en las redes de área amplia (WAN), normalmente el costo de comunicación domina dado que hay una velocidad de comunicación relativamente baja, los canales están saturados y el trabajo adicional requerido por los protocolos de comunicación es considerable.
Así, los algoritmos diseñados para trabajar en una WAN, por lo general, ignoran los costos de CPU y de I/O. En redes de área local (LAN) el costo de comunicación no es tan dominante, así que se consideran los tres factores con pesos variables.


Tipo de optimización
El problema de optimización de consultas es altamente demandante en tiempo de ejecución y, en el caso general, es un problema de la clase NP. Así existen dos estrategias para su solución: búsqueda exhaustiva oel uso de heurísticas. Los algoritmos de búsqueda exhaustiva tienen una complejidad combinatorial en el número de relaciones de la consulta.
Obtienen la transformación óptima, pero sólo se aplican a consultas simples dado su tiempo de ejecución.
Por otro lado, los algoritmos heurísticos obtienen solo aproximaciones a la transformación óptima pero lo hacen en un tiempo de ejecución razonable. Las heurísticas más directas a aplicar son el agrupamiento de expresiones comunes para evitar el cálculo repetido de las mismas, aplicar primero las operaciones de selección y proyección, reemplazar una junta por una serie de semijuntas y reordenar operaciones para reducir el tamaño de las relaciones intermedias.


Granularidad de la optimización
Existen dos alternativas: considerar sólo una consulta a la vez o tratar de optimizar múltiples consultas. La primera alternativa no considera el uso de resultados comunes intermedios. En el segundo caso puede obtener transformaciones eficientes si las consultas son similares. Sin embargo, el espacio de decisión es mucho más amplio lo que afecta grandemente el tiempo de ejecución de la optimización.



Tiempo de optimización
Una consulta puede ser optimizada en tiempos diferentes con relación a tiempo de ejecución de la consulta. La optimización se puede realizar de manera estática antes de ejecutar la consulta o de forma dinámica durante la ejecución de la consulta. La optimización estática se hace en tiempo de compilación de la consulta. Así, el costo de la optimización puede ser amortizada sobre múltiples ejecuciones de la misma consulta. Durante la optimización de consultas dinámica la elección de la mejor operación siguiente se puede hacer basado en el conocimiento exacto de los resultados de las operaciones anteriores. Por tanto, se requiere tener estadísticas acerca del tamaño de los resultados intermedios para aplicar esta estrategia.
Un tercer enfoque, conocido como híbrido, utiliza básicamente un enfoque estático, pero se puede aplicar un enfoque dinámico cuando los tamaños de las relaciones estimados están alejados de los tamaños actuales.

 Optimización global de consultas

Cuando hablamos de optimización de consultas nos referimos a mejorar los tiempos de respuesta en un sistema de gestión de bases de datos relacional, pues la optimización es el proceso de modificar un sistema para mejorar su eficiencia o también el uso de los recursos disponibles.


En bases de datos relacionales el lenguaje de consultas SQL es el más utilizado por el común de los programadores y desarrolladores para obtener información desde la base de datos. La complejidad que pueden alcanzar algunas consultas puede ser tal, que el diseño de una consulta puede tomar un tiempo considerable, obteniendo no siempre una respuesta óptima.




Optimización local de consultas

Para procesar una consulta local solo se hace referencia a tablas y bases de datos locales(no a vistas ni a tablas remotas) , es decir que estén dentro de la misma instancia del manejador de bases de datos, en una única máquina y que no se tenga que conectar al servidor a otras máquinas para poder efectuar la consulta. Cada subconsulta que se ejecuta en un nodo, llamada consulta local, es optimizada usando el esquema local del nodo. Hasta este momento, se pueden eligen los algoritmos para realizar las operaciones relacionales. La optimización local utiliza los algoritmos de sistemas centralizados.

No hay comentarios:

Publicar un comentario