You are on page 1of 10

METODOLOGA PROCESAMIENTO CONSULTAS DISTRIBUIDAS El problema de procesamiento de consultas se puede descomponer en varios Sub-problemas que corresponden a diferentes niveles.

En la Figura 4.4, se presenta un esquema por niveles genrico para el procesamiento de consultas. Para simplificar la discusin, suponga que se tiene un procesador de consultas esttico semi-centralizado en donde no se tienen fragmentos replicados. Cuatro capas principales estn involucradas en mapear una consulta a una base de datos distribuida en una secuencia optimizada de operaciones locales, cada una de ellas actuando en una base de datos local. Las cuatro capas principales son: descomposicin de consultas, localizacin de datos, optimizacin global de consultas y optimizacin local de consultas. Las primeras tres se realizan en un nodo central usando informacin global. La cuarta capa se realiza en cada nodo local.

Figura 4.4. Arquitectura en capas del procesamiento de consultas.

Descomposicin de consultas La primera capa descompone una consulta en el calculo relacional en una consulta en el algebra relacional que opera sobre relaciones globales. Consiste de cuatro partes: 1. Normalizacin. Involucra la manipulacin de los cuantificadores de la consulta y de los calificadores de la misma mediante la aplicacin de la prioridad de los Operadores lgicos. 2. Anlisis. Se detecta y rechazan consultas semnticamente incorrectas. 3. Simplificacin. Elimina predicados redundantes.

4. Restructuracin. Mediante reglas de transformacin una consulta en el calculo relacional se transforma a una en el algebra relacional. Se sabe que puede existir ms de una transformacin. Por tanto, el enfoque seguido usualmente es empezar con una consulta algebraica y aplicar transformaciones para mejorarla. Localizacin 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 informacin sobre la distribucin de datos. Esta capa determina cuales fragmentos estn involucrados en la consulta y transforma la consulta distribuida en una consulta sobre fragmentos. Optimizacin Global de Consultas Dada una consulta algebraica sobre fragmentos, el objetivo de esta capa es hallar una estrategia de ejecucin para la consulta cercana a la ptima. La estrategia de ejecucin para una consulta distribuida puede ser descrita con los operadores del algebra relacional y con primitivas de comunicacin para transferir datos entre nodos. Para encontrar una buena transformacin se consideran las caractersticas de los fragmentos, tales como, sus cardinalidades. Un aspecto importante de la optimizacin 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 optimizacin global es una consulta algebraica optimizada con operacin de comunicacin incluida sobre los fragmentos. Optimizacin Local de Consultas El trabajo de la ltima capa se efecta en todos los nodos con fragmentos involucrados en la consulta. Cada sub-consulta 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 optimizacin local utiliza los algoritmos de sistemas centralizados. Descomposicin de consultas Como se dijo en la seccin anterior la descomposicin de consultas consiste de cuatro pasos: normalizacin, anlisis, simplificacin y restructuracin. En esta seccin se abundara mas sobre cada uno de los pasos. Normalizacin La consulta de entrada puede ser arbitrariamente compleja dependiendo de las Facilidades provistas por el lenguaje. El objetivo de la normalizacin es transformar una consulta a una forma normalizada para facilitar su procesamiento posterior.

La normalizacin consiste de dos partes: El anlisis lxico y sintctico. En esta parte se verifica la validez de la expresin que da origen a la consulta. Se verifica que las relaciones y atributos invocados en la consulta estn acordes con la definicin en la base de datos. Por ejemplo, se verifica el tipo de los operando cuando se hace la calificacin. Anlisis El anlisis de consultas permite rechazar consultas normalizadas para los cuales no se requiere mayor procesamiento. Una consulta se puede rechazar si alguno de sus atributos o nombres de relacin no estn definidas en el esquema global. Tambin se puede rechazar si las operaciones que se aplican a los atributos no son del tipo adecuado. Se puede hacer tambin un anlisis semntico. La consulta se puede rechazar si las componentes no contribuyen de ninguna forma a la generacin del resultado. Dentro del clculo relacional no es posible determinar la correctitud semntica de una consulta general. Sin embargo, es posible hacerlo para una clase importante de consultas relacionales, aquellas que no contienen disyunciones y negaciones. El anlisis anterior se basa en la representacin de la consulta como una grafica, llamada la grfica de la consulta o la grfica de conectividad. En una grafica de consulta, un nodo indica la relacin resultante, y cualquier otro nodo representa la relacin operante. Un arco entre dos nodos que no son resultados representa una junta, mientras que un arco cuyo nodo destino es una relacin resultante representa una proyeccin. Ms aun, un nodo no resultado puede ser etiquetado por un predicado de seleccin o auto-junta. Una subgrafica importante de la grafica de conectividad es la grafica de juntas, en la cual nicamente se consideran las juntas. La grafica de juntas es particularmente importante durante la fase de optimizacin. SIMPLIFICACION La consulta en forma normal conjuntiva puede contener predicados redundantes. Una evaluacin directa de la consulta con redundancia puede llevarnos a realizar trabajo duplicado. REESTRUCTURACION El ultimo paso en la descomposicin de consultas reescribe la consulta en el algebra relacional. Esto se hace tpicamente en los siguientes pasos: 1. Una transformacin directa del calculo relacional en el algebra relacional 2. Una re-estructuracin de la consulta en el algebra relacional para mejorar la eficiencia por claridad es costumbre representar la consulta en el algebra relacional por un rbol del algebra relacional, el cual es un rbol en donde una

hoja representa a una relacin almacenada en la base de datos y un nodo no hoja es una relacin intermedia producida por una operacin del algebra relacional. La transformacin de una consulta en el calculo relacional en un rbol del algebra relacional se puede hacer como sigue. Primero, se crea una hoja diferente para cada variable de tuplo diferente. En SQL, las hojas estn disponibles de forma inmediata en la clausula FROM. Segundo, el nodo raz se crea como una operacin de proyeccin involucrando a los atributos resultantes. Estos se encuentran en la clausula SELECT de una consulta en SQL. Tercero, la calificacin (WHERE) de una consulta se traduce a una secuencia apropiada de operaciones relacionales (select, join, union, etc.) yendo de las hojas a la raz. La secuencia se puede dar directamente por el orden de aparicin de los predicados y operadores.

ESTRATEGIAS DE PROCESAMIENTO DE CONSULTAS DISTRIBUIDAS El procesamiento de consultas tiene varias etapas a seguir para resolver una consulta SQL, las caractersticas del modelo relacional permiten que cada motor de base de datos elija su propia representacin que, comnmente, resulta ser el lgebra relacional. Existen varios medios para calcular la respuesta a una consulta. En el caso del sistema centralizado, el criterio principal para determinar el costo de una estrategia especfica es el nmero de acceso al disco. En un sistema distribuido es preciso tener en cuenta otros factores como son: El costo de transmisin de datos en la red. Repeticin y fragmentacin. Procesamiento de interseccin simple.

rboles de consultas Pasos Parsing y traduccin de la consulta Optimizacin Generacin de cdigo Ejecucin de la consulta

Transformaciones equivalentes Cuando una base de datos se encuentra en mltiples servidores y distribuye a un nmero determinado de nodos tenemos: El servidor recibe una peticin 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. Cuando una base de datos es acezada de esta manera la tcnica que se utiliza es la de fragmentacin de datos que puede ser hibrida, horizontal y vertical. En esta fragmentacin 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. Bueno para realizar una transformacin en la consulta primero desfragmentamos siguiendo los estndares marcados por las reglas formales y posteriormente realizamos el envi y la maquina 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.

Mtodos de ejecucin del Join Existen diferentes algoritmos que pueden obtener transformaciones eficientes en el procesamiento de consultas. Join en bucles (ciclos) anidados Si z = r s, r recibir el nombre de relacin externa y s se llamar relacin interna, el algoritmo de bucles anidados se puede presentar como sigue: Para cada tupla tr en s si (tr,ts) si satisface la condicin, entonces aadir tr * ts al resultado Donde tr * ts ser la concatenacin de las tuplas tr y ts. Como para cada registro de r se tiene que realizar una exploracin completa de ts, y suponiendo el peor caso, en el cual la memoria intermedia slo puede concatenar un bloque de cada relacin, entonces el nmero de bloques a acceder es de sr bn b. Por otro lado, en el mejor de los casos si se pueden contener ambas relaciones en la memoria intermedia entonces slo se necesitaran accesos a bloques. 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. Para cada bloque Br dar a igual para cada bloque Bs de s, para cada tupla tr en Br. La diferencia principal en costos de este algoritmo con el anterior es que en el peor de los casos cada bloque de la relacin interna s se lee una vez por cada bloque de dr y no por cada tupla de la relacin externa. Join por mezcla Este algoritmo se puede utilizar para calcular si un Join natural es ptimo en la bsqueda o consulta. Para tales efectos, ambas relaciones deben estar ordenadas para los atributos en comn es decir se asocia un puntero a cada relacin, al principio estos punteros apuntan al inicio de cada una de las relaciones. Segn avance el algoritmo el puntero se mueve a travs de la relacin. De este modo se leen en memoria un grupo de tuplas de una relacin con el mismo valor en los atributos de las relaciones. Qu se debe de tomar en cuenta en este algoritmo? Se tiene que ordenar primero, para despus utilizar este mtodo. Se tiene que considerar el costo de ordenarlo / las relaciones. Es ms fcil utilizar pequeas tuplas.

Join por asociacin. Al igual que el algoritmo de join por mezcla, el algoritmo de join por asociacin se puede utilizar para un Join natural o un equi-join. Este algoritmo utiliza una funcin de asociacin h para dividir las tuplas de ambas relaciones. La idea fundamental es dividir las tuplas de cada relacin en conjuntos con el mismo valor de la funcin de asociacin en los atributos de join. El nmero de bloques ocupados por las particiones podra ser ligeramente mayor que. Debido a que los bloques no estn completamente llenos. El acceso a estos bloques puede aadir un gasto adicional de 2max a lo sumo, ya que cada una de las particiones podra tener un bloque parcialmente ocupado que se tiene que leer y escribir de nuevo. Join por asociacin hbrida El algoritmo de join por asociacin hbrida realiza otra optimizacin; es til cuando el tamao de la memoria es relativamente grande paro aun as, no cabe toda la relacin s en memoria. Dado que el algoritmo de join por asociacin necesita max +1 bloques de memoria para dividir ambas relaciones se puede utilizar el resto de la memoria (M max 1 bloques) para guardar en la memoria intermedia la primera particin de la relacin s, esto es, as no es necesaria leerla ni escribirla nuevamente y se puede construir un ndice asociativo. Cuando r se divide, las tuplas de tampoco se escriben en disco; en su lugar, segn se van generando, el sistema las utiliza para examinar el ndice asociativo en y as generar las tuplas de salida del join. Despus de utilizarlas, estas tuplas se descartan, as que la particin no ocupa espacio en memoria. De este modo se ahorra un acceso de lectura y uno de escritura para cada bloque de y. Join Complejos Los join en bucle anidado y en bucle anidado por bloques son tiles siempre, sin embargo, las otras tcnicas de join son ms eficientes que estas, pero slo se pueden utilizar en condiciones particulares tales como join natural o equi-join. Se pueden implementar join con condiciones ms complejas tales como conjuncin o disyuncin Dado un join de las forma se pueden aplicar una o ms de las tcnicas de join descritas anteriormente en cada condicin individual, el resultado total consiste en las tuplas del resultado intermedio que satisfacen el resto de las condiciones. Estas condiciones se pueden ir comprobado segn se generen las tuplas. La implementacin de la disyuncin es homloga a la conjuncin. Outer Join (Join externos) Un outer join es una extensin del operador join que se utiliza a menudo para trabajar con la informacin que falta.

Por ejemplo: Suponiendo que se desea generar una lista con todos los choferes y los autos que manejan (si manejan alguno) entonces se debe cruzar la relacin Chofer con la relacin Mvil. Si se efecta un join corriente se perdern todas aquellas tuplas que pertenecen a los choferes, en cambio con un outer join se pueden desplegar las tuplas resultado incluyendo a aquellos choferes que no tengan a cargo un auto. El outer join tiene tres formas distintas: por la izquierda, por la derecha y completo. El join por la izquierda ( ) toma todas las tuplas de la relacin de la izquierda que no coincidan con ninguna tupla de la relacin de la derecha, las rellena con valores nulos en los dems atributos de la relacin de la derecha y las aade al resultado del join natural. Un outer join por la derecha ( ) es anlogo al procedimiento anterior y el outer join completo es aquel que efecta ambas operaciones. Para el caso de un outer join completo se puede calcular mediante extensiones de los algoritmos de join por mezcla y join por asociacin. OPTIMIZACIN DE CONSULTAS El objetivo del procesamiento de consultas en un ambiente distribuido es transformar una consulta sobre una base de datos distribuida en una especificacin de alto nivel a una estrategia de ejecucin eficiente expresada en un lenguaje de bajo nivel sobre bases de datos locales. El problema de optimizacin de consultas es minimizar una funcin de costo tal que funcin de costo total = costo de I/O + costo de CPU + costo de comunicacin Los diferentes factores pueden tener pesos diferentes dependiendo del ambiente distribuido en el que se trabaja. Por ejemplo: En las redes de rea amplia (WAN), normalmente el costo de comunicacin domina dado que hay una velocidad de comunicacin relativamente baja, los canales estn saturados y el trabajo adicional requerido por los protocolos de comunicacin es considerable. As, los algoritmos diseados 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 comunicacin no es tan dominante, as que se consideran los tres factores con pesos variables. Optimizacin global de consultas Dada una consulta algebraica sobre fragmentos, el objetivo de esta capa es hallar una estrategia de ejecucin para la consulta cercana a la ptima. La estrategia de ejecucin para una consulta distribuida puede ser descrita con los operadores del lgebra relacional y con primitivas de comunicacin para transferir datos entre nodos. Un aspecto importante de la optimizacin 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 optimizacin global es una consulta algebraica optimizada con operacin de comunicacin incluida sobre los fragmentos. Optimizacin local de consultas El trabajo de la ltima capa se efecta en todos los nodos con fragmentos involucrados en la consulta. Cada consulta que se ejecuta en un nodo, llamada consulta local, es optimizada usando el esquema local del nodo. Hasta este momento, se eligen los algoritmos para realizar las operaciones relacionales. La optimizacin local utiliza los algoritmos de sistemas centralizados. Como realizar triggers.- La mayor parte de las aplicaciones desarrolladas para administrar una base de datos desde una computadora personal antiguas aplicaciones de las bases de datos son los responsables de llevarle el control de las reglas de los negocios. Una de las caractersticas de SQL SERVER es que implementa un mecanismo de control llamado disparador de bases de datos (triggers) y como ya sabemos un triggers es solo un bloque de comandos transacSQL que se ejecuta actualmente con un comando insert, select o update es una tabla. Entre las diversas aplicaciones de un triggers, podemos destacar: Crear el contenido de una columna derivada de datos. Crear un mecanismo de validacin que implique bsquedas en multiples tablas. La creacin de un triggers.- la forma rpida y sencilla de crearlo es con el comando create triggers, o bien por medio del enter prise manager en cualquiera de los dos casos es necesaria la digitalizacin de los comandos SQL, que se ejecutaran cuando se active el triggers. Ejemplo de la Sintaxis: Create triggers nombre_del_triggers on nombre_de_la_tabla For [insert, delete, update] As commandos Donde: On nombre_de_la_tabla.- Indica la tabla para la cual se har el triggers. For.- Debe de estar seguido por el tipo de comando o comandos que activan el triggers. As.- Aqu es donde realmente donde indica el cuerpo del triggers con los comandos que se van a ejecuta. Como modificar un trigger: Una vez realizado el triggers puede ser modificado, y no solo eso si no que adems puede modificarse directamente con el comando alter triggers.

La replicacin en SQL SERVER.- Es una tecnologa importante en un ambiente de bases de datos distribuidas por medio de ella es posible distribuir en la organizacin de una base de datos pueden ser duplicadas y copiadas a varios sitios diferentes. La base de datos distribuida puede sincronizarse, de manera que siempre tengan la misma informacin. Por ejemplo: Una lista de precios de productos es sincronizada en todas las finales de la empresa. Modelo de replicacin.- SQL SERVER adopta el modelo de recopilacin basada en el modelo publish and susenbe. Este modelo esta compuesto por editaros, distribuciones, suscriptores, artculos y publicaciones. Este modelo permite a la re indicacin de base de datos mediante el uso de ole bd. Tipos de replicacin: Snaphsopt transaccional y marge: Este tipo de replicacin toma una fotografa de las tablas de la base de datos y esta es replicado a sus suscriptores, quienes reciben una copia completa de los datos en ves de recibir solo las modificaciones efectuadas. Desventajas: La desventaja principal si as se pueden llamar es que no existe una actualizacin frecuente de la base de datos para aquellos usuarios o miembros que no se actualizan constantemente las tablas. Replicacin transaccional: Esta permite la replicacin de tablas y procedimientos almacenados y posibilita la filtracin de los datos que van a publicarse. Este tipo de replicacin utiliza un archivo de log para almacenar las modificaciones hechas en un artculo, por ejemplo una tabla desde su ltima publicacin, hacindoles un seguimiento a los comandos insert, update y delete. Las modificaciones se almacenan en la base de datos del Publisher u despus distribuidas a sus suscriptores. Replicacin nerge: Esta permite la replicacin de tablas y procedimientos almacenados. Las modificaciones pueden hacerse en el Publisher o bien en las copias mantenidas por los suscriptores. Para mantener la integridad de los datos replicados el proceso de sincronizacin se encarga de actualizar las modificaciones relacionadas en las copias de los suscriptores y viceversa.

10

You might also like