You are on page 1of 36

Base de Datos Paralelas

Ing. Hernn Nina Hanco

Base de datos paralelas


Arquitecturas en bases de datos
Paralelismo en las bases de datos
Paralelismo de E/S
Paralelismo entre consultas
Paralelismo en consultas
Paralelismo en operaciones
Paralelismo entre operaciones
Diseo de sistemas paralelo

Arquitecturas paralelas de bases de datos

Existen varios modelos de arquitectura

para las mquinas paralelas.


Memoria Compartida. Todos los

procesadores comparten una memoria


comn.
P

MEMORIA

Arquitecturas paralelas de bases de


datos (cont.)
Disco Compartido. Todos los procesadores

comparten un conjunto de discos comn. Algunas


veces los sistemas de disco compartido se
denominan agrupaciones o clusters.
M

Arquitecturas paralelas de bases de


datos (cont.)
Sin compartimiento. Los procesadores no

comparten ni memoria ni disco duro.


M

P
P

Arquitecturas paralelas de bases de datos (cont.)


Jerrquico. Este modelo es un hbrido de las

arquitecturas anteriores.
P

MEMORIA

MEMORIA

MEMORIA

Paralelismo en las bases de datos


Los sistemas paralelos son factibles de ser

implementados

Los precios de las computadoras vienen bajando cada vez.


PC de escritorio tienen mltiples procesadores para
acelerar las tareas de computo.

En muchas empresas las bases de datos son

enormes

Volmenes enormes de transacciones de datos son


coleccionados y almacenados para su posterior anlisis.
Necesidad de almacenar objetos multimedia.

Se esta incrementando el uso de sistemas de bases

de datos paralelos a gran escala.

Almacenamiento de extensos volmenes de datos


El procesamiento rpido de consultas y transacciones, para
la ayuda a la toma de decisiones

Paralelismo en las bases de datos (cont.)


Los datos pueden ser particionados sobre mltiples

discos para la E/S paralela


Operaciones relacionales individuales (Ejemplo:

ordenamiento, uniones, agregacin) puede ser


ejecutado en paralelo.

Los datos pueden ser particionados y cada procesador


puede trabajar independientemente sobre su propia
particin.

Las consultas son expresados en un lenguaje de

alto nivel (SQL)

Facilidad para crear paralelismo

Diferentes consultas pueden ser ejecutadas en

paralelo.

Paralelismo de E/S
Se refiere a la particin de las relaciones sobre mltiples

discos para reducir el tiempo necesario de su recuperacin.


La forma mas habitual de particionado de datos en un entorno

de base de datos paralelas es el particionado horizontal.


En la particin horizontal, las tuplas de cada relacin se

dividen(o desagrupan) entre varios disco, de modo que cada


tupla resida en uno distinto.

Tcnicas de particionado
Sea D1, D2, D3, . .. . . Dn (numero de discos = n)
Turno rotatorio (Round robin):

La i-sima tupla se enva al disco numerado Diski mod n

Asegura la distribucin homognea

Particin por asociacin (Dispersin):

Escoge uno o mas atributos como atributos de la particin.

Escoge una funcin asociacin cuyo rango sea 0..n-1

Cada tupla de la relacin original se asocia en trminos de los


atributos de la particin. Si la funcin de asociacin devuelve i, la
tupla se ubica en el disco Di.

f(a1,

..an) Particin

Tcnicas de particionado (Continua)


Particin por rangos (Intervalos):

Dado un atributo partirlo en rangos y cada rango


se almacena en un disco.

Utiliza un vector de divisin para expresar los


rangos

Ejemplo: un vector de particin [5,11], una tupla


con valor 2 en el atributo de particin se ira al
disco 0, una tupla con valor 8 ira al disco 1,
mientras que la tupla con valor 20 ira al disco 2

Figuras de particionados

Comparacin de tcnicas de particin


Evaluar como las tcnicas de particiones soportan

los siguientes tipos de acceso a datos:


1.

Exploracin de la relacin completa.

2.

Localizacin de tuplas de manera asociativa consultas


concretas.

3.

Ejemplo: nombre_empleado= Garcia.

Localizacin de todas las tuplas cuyo valor de un atributo


se halle en un rango especificado Consultas de rango.

Ejemplo: 10000 sueldo < 20000.

Comparacin de tcnicas de particin (Cont.)


Exploracin Consulta
Completa
Concreta

Consulta
Rangos

Turno
Rotatorio

Eficiente

Ineficiente

Ineficiente

Particin por
Asociacin

Eficiente

Eficiente si
Ineficiente
coinciden con los
atributos de la
particin

Particin por
Rangos

Eficiente

Eficiente si
coincide con el
atributo de la
particin

Eficiente si
coincide con el
atributo de la
particin

Comparacin de tcnicas de particin (Cont.)


Turno rotatorio:

Es mejor en las aplicaciones que desean leer


secuencialmente la relacin completa en cada
consulta.

Todos los discos tienen un numero igual de


tuplas, el trabajo es balanceado.

Con este esquema tanto las consultas concretas


como las de rango son difciles de procesar, ya
que se deben emplear bsquedas en todos y
cada uno de los n discos.

Comparacin de tcnicas de particin (Cont.)


Particin por asociacin:
Es mejor en acceso secuencial

Si la funcin de asociacin es una buena funcin aleatoria y los


atributos de particin constituyen una clave de la relacin, el
numero de tuplas en cada disco es aproximadamente el mismo.
Entonces, el tiempo empleado para explorar la relacin es
aproximadamente 1/n del necesario para explorar la relacin en
un sistema de disco nico.

No se adapta bien a las consultas concretas en trminos de

atributos que no sean de la particin.


No resulta adecuada para las respuestas a consultas de

rangos, por que hace falta explorar todos los discos.

Comparacin de tcnicas de particin (Cont.)


Particiones por rango:
Buenas para el acceso secuencial
Es bueno para consultas concretas sobre los atributos de

particin; solo se necesita acceder a un solo disco.


Para consultas de rango sobre los atributos de particin, uno o

pocos discos pueden necesitar tener acceso.

Crear particiones en la relacin a travs de los discos


Si una relacin contiene pocas tuplas que pueden

caber en un bloque de disco, entonces, asignar a la


relacin un solo disco.
Las relaciones grandes se particionan

preferiblemente entre todos los discos disponibles

Tratamiento del sesgo


La distribucin de tuplas al particionar una relacin

puede estar sesgada, con un porcentaje alto de


tuplas ubicado en algunas particiones y porcentajes
menores en otras.
Tipos de sesgos:

Sesgo de los valores de atributo.

Un determinado valor para un atributo es mas frecuente que


otro.

Sesgo de la particin.

Se refiere al hecho de que puede haber un desequilibrio de


carga en la particin, aunque no haya sesgo en los atributos.

La operacin mas larga en paralelo es la que

determina el tiempo total de la operacin

Sesgo de particin
Un sesgo pequeo puede dar lugar a una disminucin significativa del

rendimiento.
El sesgo se transforma en un problema creciente al aumentar el

grado de paralelismo.

Por ejemplo: Si una relacin de 1 000 tuplas se divide en 10 partes y la divisin est
sesgada, puede haber algunas particiones de tamao menor que 100 y otras de
tamao mayor que 100.

Incluso se puede dar la casualidad de que una particin tenga el tamao de 200.

Teniendo una aceleracin, al tener acceso en paralelo a las particiones, de slo 5, en


lugar del valor de 10 que se cabra esperar.

Se esperaba una aceleracin de 10 veces ms rpido que hacindolo en un solo


disco; pero debido al sesgo (con 200 tuplas, se tiene 1000/200 = 5) slo se obtiene
una aceleracin de 5.

Si la misma relacin, con las 1 000 tuplas, tiene que dividirse en 100 partes, las
particiones tendrn de media 10 tuplas.

Si una particin llega a tener hasta 40 tuplas (lo que es posible dado el gran nmero
de particiones) la aceleracin que se obtendra al tener acceso a ellas en paralelo
sera de 25 (1000/40 = 25), en vez de 100.

Por lo tanto, se puede ver que la prdida de aceleracin debido al sesgo aumenta
con el paralelismo.

Manejo de sesgo en particiones de rango


Se puede crear un vector de divisin por rangos

equilibrado:

La relacin primero se ordena segn los atributos de la


particin

Se explora la relacin de forma ordenada

Se lee cada 1/n de la relacin (n n de particiones que hay


que crear)

Se aade el valor del atributo de divisin de la siguiente


tupla al vector de la particin.

El principal inconveniente es la sobrecarga de E/S

debida a la ordenacin inicial.


Para minimizar, la sobrecarga una alternativa a este

problema es creando una tabla de frecuencias, o


histogramas.

Manejo del sesgo utilizando Histogramas


Se puede reducir creando y almacenando una tabla de

frecuencias o histograma, de los valores de los atributos para


todos los atributos de cada relacin.
Resulta sencillo crear una funcin de particin por rangos

equilibrados dado un histograma de los atributos de la


particin.

Manejo del sesgo empleando


procesadores virtuales
En el enfoque de procesadores virtuales se simula

que el numero de procesadores virtuales es mltiplo


del numero de procesadores reales.
Se asignan las tuplas a los virtuales y estos a los

reales mediante una particin por turno rotatorio.


La asignacin por turno rotatorio de los

procesadores virtuales a procesadores reales


distribuir el trabajo adicional entre varios
procesadores reales, de forma que ningn
procesador tuviera que asumir toda la carga.

Paralelismo entre consultas


Se ejecutan en paralelo entre s diferentes consultas

o transacciones.
El tiempo de una transaccin es el mismo pero se

incrementa la productividad (throughput)


Consideraciones de implementacin:

Coherencia del cache

Evitar que dos procesadores modifiquen al tiempo


un mismo dato (Protocolos de Bloqueo)

Los sistemas con arquitectura paralela tambin

deben asegurar que dos procesadores no actualicen


simultneamente los mismos datos de manera
independiente.

Protocolo de la coherencia de cache


Ejemplo de un protocolo de coherencia de cache

para un sistema de disco compartido:

Antes de cualquier acceso de lectura o escritura a una


pagina, la transaccin la bloquea en modo compartido o
exclusivo, segn corresponda. Inmediatamente despus de
obtener el bloqueo compartido o exclusivo de la pgina, la
transaccin lee tambin su copia mas reciente del disco
compartido.

Antes de que la transaccin libere el bloqueo exclusivo de


una pgina, la traslada al disco compartido; posteriormente
libera el bloqueo

Otros protocolos mas complejos evitan la lectura y

escritura reiteradas de disco exigidas por el


protocolo anterior.

Paralelismo en consultas
Ejecucin en paralelo de una nica consulta en varios

procesadores y discos; importante para acelerar las consultas


de ejecucin prolongada.
Dos maneras de ejecutar en paralelo una sola consulta:

Paralelismo en operaciones se puede acelerar el


procesamiento de la consulta haciendo paralela la ejecucin de
cada una de sus operaciones individuales ordenacin, seleccin,
proyeccin, y reunin.

Paralelismo entre operaciones Ejecutando en paralelo las


diferentes operaciones de las expresiones de las consultas.

Dado que el numero de operaciones de una consulta tpica es

pequeo comparado con el nmero de tuplas procesado por


cada operacin, La primera modalidad puede adaptarse mejor
a un aumento de paralelismo.

Paralelismo en operaciones
Nuestra discusin de algoritmos paralelos asume:

Consultas de solo lectura

Arquitecturas sin compartimiento

n procesadores, P0, ..., Pn-1, y n discos D0, ..., Dn-1, donde el


disco Di es asociado con el procesador Pi.

Si un procesador tiene mltiples discos, esto se puede

simplificar simulando todos los discos como un solo disco Di.


En arquitecturas sin compartimiento puede ser eficiente la

simulacin de sistemas de memoria y disco compartido.

Algoritmos para sistemas no compartidos pueden as ejecutarse


sobre sistemas de memoria y disco compartido.

Si embargo pueden realizarse algunas optimizaciones

Ordenacin paralela
Si la ordenacin se particiona en rangos basndose

en los atributos por los que se va a ordenar se


puede ordenar cada particin por separado y
concatenar. Si se ha particionado siguiendo algn
otro mtodo:

Se puede dividir en rangos de acuerdo con los atributos de


ordenacin y luego ordenar cada particin por separado

Se puede utilizar una versin paralela del algoritmo externo


de ordenacinmezcla

Ordenacin con particin por rangos


1.

Se redistribuyen las tuplas de la relacin utilizando


una estrategia de divisin por rangos

2.

Cada uno de los procesadores ordena localmente


su particin sin interactuar con los dems
procesadores. Cada procesador ejecuta la misma
operacin sobre un conjunto de datos diferente

La operacin de mezcla final es trivial. Se ha de

emplear un buen vector de particin por rangos.

Ordenacin y mezclas externas paralelas


Suponemos que la relacin ya se ha

particionado en n discos:

Cada procesador Pi ordena localmente los datos del disco


Di

El sistema mezcla las partes ordenadas por cada


procesador para obtener el resultado ordenado final. Esta
mezcla puede paralelizarse mediante esta secuencia:

El sistema divide en rangos las particiones ordenadas en cada


procesador Pi entre los procesadores P0, .,Pm1. Enva las tuplas
de acuerdo con el orden establecido, por lo que cada procesador
recibe las tuplas en corrientes ordenadas.

Cada procesador Pi Realiza una mezcla de las corrientes segn las


recibe para obtener una sola parte ordenada

Las partes ordenadas de los procesadores P0,Pm1 se concatenan


para obtener el resultado final.

Reunin paralela
La operacin reunin exige que el sistema

compare pares de tuplas para ver si


satisfacen la condicin de reunin, si se
cumplen, aaden el par al resultado de la
reunin. Los algoritmo de reunin paralela
intentan repartir entre varios procesadores
los pares que hay que comparar, cada
procesador procesa localmente parte de la
reunin y luego el sistema rene los
resultados para producir el resultado final

Reunin paralela(Cont.)

Paralelismo entre operaciones


Paralelismo de encauzamiento:

Una operacin consume el resultado de otra

No siempre es til pues una operacin puede


requerir la totalidad de las tuplas y no bastarle
resultados parciales

No siempre las operaciones son tan largas para


esperar

Paralelismo Independiente:

Cada operacin se realiza por separado y luego


otra operacin las rene

Tiempo de ejecucin en Paralelo


Problemas del Paralelismo:
Sesgo
Cuello

de botella en los recursos

Costo

de reunin y de inicio

Tiempo de ejecucin
Ti

= Tinicio + max(op0, ..., opn) + Treunion

Diseo de sistemas paralelos


La carga de datos en paralelo desde fuentes

externas es un requisito importante si se van


a tratar grandes volmenes de datos
entrantes.
Un gran sistema paralelo de bases de datos

debe abordar tambin los siguientes


aspectos de disponibilidad:

El poder de recuperacin frente al fallo de algunos


procesadores o discos

La reorganizacin interactiva de los datos y los cambios de


los esquemas.

Oracle parallel server


Es un ambiente de computo robusto que permite

que varios nodos (cluster) trabajen como un solo


equipo.
Todos los nodos pueden ejecutar transacciones al

mismo tiempo sobre la base de datos


Se encarga de mantener la consistencia y la

integridad en los datos sin importar la concurrencia


de las transacciones
Es un componente importante para los sistemas que

requieren tolerancia a fallos y un corto tiempo de


cada

You might also like