Está en la página 1de 8

Base de Datos Distribuidas

UNIDAD III PROCESAMIENTO DE CONSULTAS DISTRIBUIDAS

Índice

3.1 Metodología del procesamiento de consultas distribuidas..........................................1


3.2 Estrategias de procesamiento de consultas distribuidas..............................................2
3.3 Optimización de consultas...........................................................................................5

3.1 Metodología del procesamiento de 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.

Microsoft SQL SERVER admite consultas distribuidas utilizando OLE BD.

Los usuarios de SQL SERVER pueden utilizar consultas distribuidas para


obtener acceso a
lo siguiente:

Datos distribuidos almacenados en varias estancias de SQL SERVER.

Datos heterogéneos almacenados en varios orígenes de datos


relacionales y no relacionales a los que se obtienen acceso mediante un
proveedor OLE BD.

Los proveedores OLE BD exponen datos en objetos tabulares


denominados conjuntos de filas. SQL SERVER permite hacer referencia a
conjunto de filas desde proveedores OLE BD en instrucciones TRANSAC-
SQL como si fueran tablas de SQL SERVER.

En las instrucciones select, insert, update y delete de transac-SQL, se


puede hacer referencia directas a las tablas y vistas de orígenes de
datos externos.

Los lenguajes de bases de datos relacionales permiten la expresión de


consultas complejas en una forma concisa y simple.

Particularmente para construir la respuesta a una consulta, el usuario no


tiene que especificar de manera precisa el procedimiento que se debe
de seguir. Este procedimiento es llevado acabo por un modulo del DBNS
llamado el procesador de consultas (query procesador).

El procedimiento de consultas es mucho mas difícil en ambientes


distribuidos que en centralizados, ya que existe un gran numero de
parámetros que afectan el rendimiento de las consultas distribuidas.

L.I. Arnulfo Gamaliel Hernández González 1 de 8 páginas


Base de Datos Distribuidas

La función principal de un procesador de consultas relacionales es


transformar una consulta en una especificación de alto nivel, típicamente
en cálculo relacional, a una consulta equivalente en una especificación
de bajo nivel.

3.2 Estrategias de procesamiento de consultas


distribuidas
El procesamiento de consultas tiene varias etapas a seguir para resolver
una consulta SQL, las características del modelo relacional permiten que
cada motor de base de datos elija su propia representación que,
comúnmente, resulta ser el álgebra relacional.

Existen varios medios para calcular la respuesta a una consulta. En l


caso del sistema centralizado, el criterio principal para determinar el
costo de una estrategia específica es el número de acceso al disco. En
un sistema distribuido 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.

3.2.1 Árboles de consultas

• Pasos
– Parsing y traducción de la consulta
– Optimización
– Generación de código
– Ejecución de la consulta

3.2.2 Transformaciones equivalentes

L.I. Arnulfo Gamaliel Hernández González 2 de 8 páginas


Base de Datos Distribuidas

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.

Cuando una base de datos es acezada 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.

Bueno para realizar una transformación en la consulta primero


desfragmentamos siguiendo los estándares 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.
3.2.3 Métodos de ejecución 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 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 s si (tr,ts) si satisface la condición, entonces añadir


tr * ts al resultado
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 ts, 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 sr bn b.

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 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.

L.I. Arnulfo Gamaliel Hernández González 3 de 8 páginas


Base de Datos Distribuidas

La diferencia principal en costos de este algoritmo con el anterior es que


en el peor de los casos cada bloque de la relación interna s se lee una
vez por cada bloque de dr y no por cada tupla de la relación externa.

Join por mezcla

Este algoritmo se puede utilizar para calcular si un Join natural es óptimo


en la búsqueda o consulta. Para tales efectos, ambas relaciones deben
estar ordenadas para los atributos en común es decir se asocia un
puntero a cada relación, al principio estos punteros apuntan al inicio de
cada una de las relaciones. Según avance el algoritmo el puntero se
mueve a través de la relación. De este modo se leen en memoria un
grupo de tuplas de una relación 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 después utilizar este método.


• Se tiene que considerar el costo de ordenarlo / las relaciones.
• Es mas fácil utilizar pequeñas tuplas.

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. La idea fundamental es dividir las tuplas de cada
relación en conjuntos con el mismo valor de la función de asociación en
los atributos de join.

El número de bloques ocupados por las particiones podría ser


ligeramente mayor que.

Debido a que los bloques no están completamente llenos. El acceso a


estos bloques puede añadir un gasto adicional de 2·max a lo sumo, ya
que cada una de las particiones podría tener un bloque parcialmente
ocupado que se tiene que leer y escribir de nuevo.

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. Dado que el algoritmo de join
por asociación 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 partición de la
relación 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, según se van generando, el sistema las utiliza para examinar el

L.I. Arnulfo Gamaliel Hernández González 4 de 8 páginas


Base de Datos Distribuidas

índice asociativo en y así generar las tuplas de salida del join. Después
de utilizarlas, estas tuplas se descartan, así que la partición 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 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. Se pueden implementar join con
condiciones más complejas tales como conjunción o disyunción Dado un
join de las forma se pueden aplicar una o más de las técnicas de join
descritas anteriormente en cada condición individual, el resultado total
consiste en las tuplas del resultado intermedio que satisfacen el resto de
las condiciones. Estas condiciones se pueden ir comprobado según se
generen las tuplas. La implementación de la disyunción es homóloga a la
conjunción.
Outer Join (Join externos)

Un outer join es una extensión del operador join que se utiliza a menudo
para trabajar con la información 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
relación Chofer con la relación Móvil. Si se efectúa un join corriente se
perderán 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 relación
de la izquierda que no coincidan con ninguna tupla de la relación de la
derecha, las rellena con valores nulos en los demás atributos de la
relación de la derecha y las añade al resultado del join natural.

Un outer join por la derecha ( ) es análogo al procedimiento anterior y el


outer join completo es aquel que efectúa 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 asociación.

3.3 Optimización de consultas


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.

L.I. Arnulfo Gamaliel Hernández González 5 de 8 páginas


Base de Datos Distribuidas

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 trabaja.

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.

3.3.1 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.

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.
3.3.2 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 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 optimización 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

L.I. Arnulfo Gamaliel Hernández González 6 de 8 páginas


Base de Datos Distribuidas

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 características 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 transac-
SQL 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 validación que implique búsquedas en
multiples tablas.

La creación de un triggers.- la forma rápida 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 digitalización 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 comandos

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 además puede modificarse
directamente con el comando alter triggers.

La replicación en SQL SERVER.- Es una tecnología importante en un


ambiente de bases de datos distribuidas por medio de ella es posible
distribuir en la organización 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 información.

Por ejemplo:
Una lista de precios de productos es sincronizada en todas las finales de
la empresa.

Modelo de replicación.- SQL SERVER adopta el modelo de recolpilacion


basada en el modelo publish and susenbe. Este modelo esta compuesto
por editaros, distribuciones, suscriptores, artículos y publicaciones.

L.I. Arnulfo Gamaliel Hernández González 7 de 8 páginas


Base de Datos Distribuidas

Este modelo permite a la re indicación de base de datos mediante el uso


de ole bd.
Tipos de replicación:

Snaphsopt transaccional y marge: Este tipo de replicación toma una


fotografía 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 actualización frecuente de la base de datos para aquellos
usuarios o miembros que no se actualizan constantemente las tablas.

Replicación transaccional: Esta permite la replicación de tablas y


procedimientos almacenados y posibilita la filtración de los datos que
van a publicarse. Este tipo de replicación utiliza un archivo de log para
almacenar las modificaciones hechas en un artículo, por ejemplo una
tabla desde su última publicación, haciéndoles un seguimiento a los
comandos insert, update y delete.

Las modificaciones se almacenan en la base de datos del Publisher u


después distribuidas a sus suscriptores.

Replicación nerge: Esta permite la replicación 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


sincronización se encarga de actualizar las modificaciones relacionadas
en las copias de los suscriptores y viceversa.

L.I. Arnulfo Gamaliel Hernández González 8 de 8 páginas