jueves, 30 de abril de 2015

Actividad #16


Estrategias de procesamiento de consultas distribuidas.

Consulta distribuida:
· Las consultas distribuidas tienen acceso a datos de varios orígenes de datos heterogéneos.
· Estos orígenes de datos pueden estar almacenado en el mismo equipo o en equipos diferentes.
· El procesamiento de consultas tiene varias etapas a seguir para resolver una consulta en sql.
· Las características del modelo relacional permiten que cada motor de base de datos elija su propia representación: álgebra relacional.
Existen varios medios para calcular la respuesta a una consulta.
Es preciso tener en cuenta otros factores como son:
· El costo de transmisión de datos en la red.
· Repetición y fragmentación.
· Procesamiento de intersección simple.

Árboles de consultas:
Son estructuras de datos en forma de árbol, en donde, los datos al estar ordenados en la estructura, hace más ágiles las consultas.
Pasos:
– Parsing y traducción de la consulta
– Optimización
– Generación de código
– Ejecución de la consulta



Transformaciones equivalentes.
Cuando una base de datos se encuentra en múltiples servidores y distribuye a un número determinado de nodos tenemos:
El servidor recibe una petición de un nodo.
El servidor es atacado por el acceso concurrente a la base de datos cargada localmente.
El servidor muestra un resultado y le da un hilo a cada una de las maquinas nodo de la red local.


Métodos de ejecución del join.
Existen diferentes algoritmos que pueden obtener transformaciones eficientes en el procesamiento de consultas:

Join externo.

Un outer join es una extensión del operador join que se utiliza a menudo para trabajar con la información que falta.

Join complejos.

Los join en bucle anidado y en bucle anidado por bloques son útiles siempre, sin embargo, las otras técnicas de join son más eficientes que estas, pero sólo se pueden utilizar en condiciones particulares tales como join natural o equi-join.

Join por asociación híbrida.

El algoritmo de join por asociación híbrida realiza otra optimización; es útil cuando el tamaño de la memoria es relativamente grande paro aún así, no cabe toda la relación s en memoria.

Join por asociación.

Al igual que el algoritmo de join por mezcla, el algoritmo de join por asociación se puede utilizar para un Join natural o un equi-join. Este algoritmo utiliza una función de asociación h para dividir las tuplas de ambas relaciones.

Join por mezcla.

Este algoritmo se puede utilizar para calcular si un Join natural es óptimo en la búsqueda o consulta.

Join en bucles anidados por bloques.

Una variante del algoritmo anterior puede lograr un ahorro en el acceso a bloques, si se procesan las relaciones por bloques en vez de por tuplas.




Puntos para la optimización de las consultas distribuidas.

•Identificar sentencias problemáticas 
•Verificar las estadísticas 
•Revisar los planes de ejecución 
•Reestructurar las sentencias SQL
•Reestructurar los índices
•Mantener los planes de ejecución

Para optimizar el uso de la memoria compartida: 

  • Escribir código genérico „
  • Seguir estándares de codificación „ 
  • Usar variables a reemplazar en tiempo de ejecución

Optimización de consulta

Es el proceso de selección del plan de evaluación de las consultas más eficientes de entre las muchas estrategias generalmente disponibles para el procesamiento de una consulta dada, especialmente si la consulta es compleja.

Es el proceso de selección del plan de evaluación de las consultas más eficiente entre las estrategias disponibles para el procesamiento de una consulta dada.
A través del álgebra relacional intenta hallar una expresión equivalente a la expresión dada ƒ.
Elección de una estrategia detallada para el procesamiento de la consulta:
o Selección del algoritmo que se usará para ejecutar una operación
o Selección de los índices concretos que se van a emplear
Importancia
Crear un plan de evaluación de consultas que minimice el costo de la evaluación de consultas a través de la optimación de la misma.


Optimización global

El compilador de SQL funciona en tres fases, que ayuda a producir una estrategia de acceso óptima para evaluar una consulta que hace referencia a una fuente de datos remota. Estas fases son análisis de envío, optimización global y generación de SQL remoto.
El objetivo de la optimización global es producir un plan de acceso que optimiza las operaciones de consulta en todas las fuentes de datos globalmente, en todo el sistema federado. Un plan de acceso que es óptimo globalmente tiene como mínimo un coste global de ejecución en una sistema federado. la fase de generación de SQL remoto convierte a la inversa el plan optimo globalmente en fragmentos de consulta que se ejecutan como fuentes de datos individuales.

Dada una consulta algebraica sobre fragmentos, 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 cordialidades. Un aspecto importante de la optimización de consultas es el ordenamiento de juntas, dado que algunas permutaciones de juntas dentro de la consulta pueden conducir a un mejoramiento de varios órdenes de magnitud. La salida de la capa de optimización global es una consulta algebraica optimizada con operación de comunicación incluida sobre los fragmentos.

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. Hasta este momento, se pueden eligen los algoritmos para realizar las operaciones relacionales.

No hay comentarios:

Publicar un comentario