bdd U3 U4.pdf
-
Upload
kiqy-gaytan -
Category
Documents
-
view
220 -
download
0
Transcript of bdd U3 U4.pdf
-
7/29/2019 bdd U3 U4.pdf
1/5
Bases de datos distribuidas
Unidad III
1
PROCESAMIENTO DISTRIBUIDO DE CONSULTAS
En el procesamiento de consultas es necesario elegir una estrategia que reduzca al mnimo
el tiempo que se requiere para calcular la respuesta. En el caso de sistemas centralizados, el
criterio principal para determinar el costo de una estrategia especfica es el nmero de
accesos al disco. En un sistema distribuido es preciso tener en cuenta otros factores comoson
El costo de transmisin de datos en la red
El beneficio potencial que supondra en la ejecucin el que varias localidades procesaran
en paralelo partes de la consulta
Repeticin y Fragmentacin
Consideremos una consulta muy sencilla: Encontrar todas las tuplas de la relacin depsito
Aunque la consulta es muy simple, de hecho, es trivial; su procesamiento no es trivial, ya que
es posible que la relacin depsito est fragmentada, repetida o las dos cosas. Si la relacin
depsito est repetida, es preciso decidir qu copia se va a utilizar. Si ninguna de las copias
est fragmentada, se elige la copia que implique costos de transmisin ms reducidos. Pero
si una copia est fragmentada, la eleccin no es tan sencilla, ya que es preciso calcular
varios productos o uniones para reconstruir la relacin depsito. En tal caso, el nmero de
estrategias para este ejemplo sencillo puede ser grande. De hecho, la eleccin de una
estrategia puede ser tan compleja como hacer una consulta arbitraria.
La transparencia de la fragmentacin implica que el usuario puede escribir una consulta
como esta:
nombre-sucursal=Hillside(depsito)
Puesto que depsito est definido como
depsito1 U deposito2
la expresin que resulta del esquema de traduccin de nombres es:
nombre-sucursal=Hillside(depsito1 U deposito2)
Al emplear tcnicas de optimizacin, podemos simplificar de manera automtica esta
expresin. La expresin que resulta es
nombre-sucursal=Hillside(depsito1) U nombre-sucursal=Hillside(depsito2)
la cual incluye dos subexpresiones. La primera incluye slo depsito1 y por tanto puede ser
calculada en la localidad Hillside. En las segunda incluye solamente deposito2 y por tanto
puede ser caluclada en la localidad Valle.
Existe una optimizacin que se puede hacer calculando
nombre-sucursal=Hillside(depsito1)
-
7/29/2019 bdd U3 U4.pdf
2/5
Bases de datos distribuidas
Unidad III
2
Puesto que depsito1 tiene solamente tuplas pertenecientes a la sucursal de Hillside,
podemos eliminar la operacin de seleccin de la relacin depsito2
nombre-sucursal=Hillside(depsito2)
ya que si aplicamos la definicin del fragmento depsito2 tenemos:
nombre-sucursal=Hillside(nombre-sucursal=Valle(depsito))
Esta expresin es el conjunto vaco, independientemente del contenido de la relacin
depsito. As nuestra estrategia final para la localidad Hillside consistir en devolver
depsito1 como resultado de la consulta.
Estrategias de procesamiento de consultas
1. Procesamiento de interseccin simple
Considerar la expresin en lgebra relacionalcliente |X| depsito |X| sucursal
Suponemos que ninguna de las tres relaciones est repetida o fragmentada y que cliente
est almacenada en la localidad Lc, depsito en la localidad Ld y sucursal en la localidad
Lb. Sea L1 la localidad donde se origin la consulta. El sistema debe producir el resultado
en la localidad L1. Entre las posibles estrategias para procesar esta consulta se
encuentran las siguientes:
Enviar copias de las tres relaciones a L1, escoger una estrategia para procesar en forma
local la consulta completa en L1.
Enviar una copia de la relacin cliente a la localidad Ld
y calcularcliente|X|depsito en Ld.
Enviar cliente|X|depsito de Ld a Lb donde se calcula (cliente|X|depsito)|X|sucursal. El
resultado de esta operacin es enviado a L1.
Pueden elaborarse estrategias similares a la anterior al intercambiar los papeles de L c,
Ld, y Lb.
No puede garantizarse que una estrategia sea la mejor en todos los casos. Entre los
factores que deben tomarse en cuenta estn la cantidad de datos que deben transmitirse,
el costo de transmitir un bloque de datos entre dos localidades determinadas, y la
velocidad de procesamiento relativa en cada localidad.
Si se envan las relaciones y existen ndices para ellas, puede ser necesario crear
nuevamente estos ndices en otro lugar, esto requiere un tiempo extra de procesamientoy ms accesos al disco.
2. Estrategias de interseccin utilizando el paralelismo
Consideremos un producto de cuatro relaciones
r1|X|r2|X|r3|X|r4
-
7/29/2019 bdd U3 U4.pdf
3/5
Bases de datos distribuidas
Unidad III
3
donde la relacin ri est almacenada en la localidad Li. Suponemos que el resultado ha
de presentarse en la localidad L1. Existen por supuesto muchas estrategias que se
pueden considerar. Un mtodo atractivo sera enviar r1 a L2 y calcular r1|X|r2 en L2. Al
mismo tiempo se puede enviarr3 a L4 y calcularr3|X|r4 en L4.
La localidad L2 puede enviar tuplas de (r1|X|r2) a L1 conforme se vayan produciendo, envez de esperar a que se calcule el producto completo. De forma similar L4 puede enviar
tuplas de (r3|X|r4) a L1. Una vez que las tuplas de (r1|X|r2) y de (r3|X|r4) lleguen a L1, esta
localidad podr empezar el clculo de (r1|X|r2)|X|( r3|X|r4) en paralelo con el clculo de
(r1|X|r2) en L2y (r3|X|r4) en L4.
3. Estrategia de semiinterseccin
Suponer que deseamos calcular la expresin r1|X|r2en donde r1 y r2 estn almacenadas
en las localidades L1 y L2respectivamente. Sean R1 y R2los esquemas de r1 y r2. Suponer
que queremos obtener el resultado en L1. Si hay muchas tuplas de r2 que no
interseccionan con ninguna de r1, entonces el envo de r2 a L1 requiere el envo de tuplas
que no contribuyen al resultado. Es conveniente borrar (en sentido figurado) tales tuplas
antes de enviar los datos a L1, particularmente si los costos de la red son muy elevados.
Para hacerlo vemos la siguiente estrategia:
a) Calculartemp1 = R1R2(r1) en L1b) Enviartemp1 de L1 a L2
c) Calculartemp2= r2|X|temp1 en L2
d) Enviartemp2de L2 a L1
e) Calcularr1|X|temp2en L1 Este es el resultado de r1|X|r2
La estrategia anterior es ventajosa particularmente cuando en el producto participanrelativamente pocas tupas de r2.
Optimizacin de Consultas Distribuidas
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.
As, 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 trabaje. 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
-
7/29/2019 bdd U3 U4.pdf
4/5
Bases de datos distribuidas
Unidad III
4
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.
Arquitectura del procesamiento de consultas
El problema de procesamiento de consultas se puede descomponer en varios sub-
problemas que corresponden a diferentes niveles. Suponga que se tiene un procesador
de consultas 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
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.
Descomposicin de consultas
La primera capa descompone una consulta consistente en 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.-Reestructuracin. Mediante reglas de transformacin una consulta en el clculo
relacional se transforma a una en el lgebra 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.
-
7/29/2019 bdd U3 U4.pdf
5/5
Bases de datos distribuidas
Unidad III
5
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. Paraencontrar 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 incluidas 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 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 optimizacin local utiliza los
algoritmos de sistemas centralizados.