jueves, 30 de abril de 2015

Actividad #16

PROCESAMIENTO DE CONSULTAS DISTRIBUIDAS
El procesamiento de consultas es de suma importancia en bases de datos centralizadas. Sin embargo, en BDD éste adquiere una relevancia mayor.

El objetivo es convertir transacciones de usuario en instrucciones para manipulación de datos. No obstante, el orden en que se realizan las transacciones afecta grandemente la velocidad de respuesta del sistema.

En BDD se tiene que considerar el procesamiento local de una consulta junto con el costo de transmisión de información al lugar en donde se solicitó la consulta.
El éxito creciente de la tecnología de bases de datos relacionales en el procesamiento de datos se debe, en parte, a la disponibilidad de lenguajes los cuales pueden mejorar significativamente el desarrollo de aplicaciones y la productividad del usuario final.

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 
1.-el servidor recive una peticion 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.

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 ok.
Bueno para realizar una transformación en la consulta primero desfragmentamos siguiendo los estandares marcados por las reglas formales y posteriormente realizamos el envio y la maquina que recibe es la que muestra el resultado pertinente para el usuario, de esta se puede producir una copia que sera la equivalente a la original.

Join
La sentencia join en SQL permite combinar registros de dos o más tablas en una base de datos relacional. En el Lenguaje de Consultas Estructurado (SQL), hay tres tipo de JOIN: interno, externo, y cruzado.
En casos especiales una tabla puede unirse a sí misma, produciendo una auto-combinación,SELF-JOIN.
Matemáticamente, JOIN es composición relacional, la operación fundamental en el álgebra relacional, y generalizando es una función de composició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.

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.

Estadísticas
La efectividad de una optimización recae en las estadísticas de la base de datos. La optimización dinámica de consultas requiere de estadísticas para elegir las operaciones que deben realizarse primero. La optimización estática es aún más demandante ya que el tamaño de las relaciones intermedias también debe ser estimado basándose en estadísticas.

Localización de Datos
La entrada a esta capa es una consulta algebraica definida sobre relaciones distribuidas. El objetivo de esta capa es localizar los datos de la consulta usando la información sobre la distribución de datos. Esta capa determina cuales fragmentos están involucrados en la consulta y transforma la consulta distribuida en una consulta sobre fragmentos.

Optimización Global de Consultas
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 cardinalidades. 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 incluidas 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. La optimización local utiliza los
algoritmos de sistemas centralizados.

jueves, 23 de abril de 2015

Actividad #15

Consultas Distribuidas
  • Las consultas distribuidas detienen acceso a datos de varios orígenes de datos heterogéneos.
  • Estos orígenes de datos pueden estar almacenados en el mismo equipo o en equipos diferentes.
Optimización de consulta
Es el proceso de selección del plan de evaluación de las consultas mas 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. ƒ 
  1. A través del álgebra relacional intenta hallar una expresión equivalente a la expresión dada ƒ 
  2. Elección de una estrategia detallada para el procesamiento de la consulta: 
  • Selección del algoritmo que se usará para ejecutar una operación
  • 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.

Optimizacion global
el compilador de SQL funciona en  tres fases, que ayuda a producir una estrategia de acceso optima para evaluar una consulta que hace referencia a una fuente de datos remota. Estas fases son analisis de envio, optimizacion global y generacion de SQL remoto.

El objetivo de la optimizacion 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 optimo globalmente tiene como minimo un coste global de ejecucion en una sistema federado. la fase de generacion 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 cardinalidades. 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 incluidas 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.

lunes, 20 de abril de 2015

Actividad #14

Procesamiento de consultas distribuidas
Arboles de consultas
Son estructuras de datos en forma de árbol, en donde, los datos al estar ordenados en la estructura, hace mas ágiles las consultas.
Pasos para el arboles de 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 de JOIN
  • Join – Reunión
  • Todas las tuplas que estén en ambas tablas
  • Símbolo
Tipos de Join:
Reunion natural
  • reunion de tablas con todos los atributos del mismo nombre de ambas tablas.
Semireunion
  • solo las tuplas que cumplan las condiciones
Left outer join
  • reuniom externa por la izquierda
  • todas las tuplas de R aunque no esten en S
  • Los campos donde no hay correspondencia se asocian a NULL
Rigth outer join
  • reuniom externa por la derecha
  • todas las tuplas de S aunque no esten en R
  • Los campos donde no hay correspondencia se asocian a NULL
Evidencia de la expocision: