Sei sulla pagina 1di 36

Base de Datos Paralelas

Base de Datos Paralelas


Ing. Hernn Nina Hanco
Base de datos paralelas
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
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 P P P P P P P
MEMORIA MEMORIA
Arquitecturas paralelas de bases de
Arquitecturas paralelas de bases de
datos (cont.)
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.
P P
P P
P P
P P
M M
M M
M M
M M
Arquitecturas paralelas de bases de
Arquitecturas paralelas de bases de
datos (cont.)
datos (cont.)

Sin compartimiento. Los procesadores no


comparten ni memoria ni disco duro.
P P
P P
P P
P P
M M
M M
M M
M M
P P M M
Arquitecturas paralelas de bases de datos (cont.)
Arquitecturas paralelas de bases de datos (cont.)

Jerrquico. Este modelo es un hbrido de las


arquitecturas anteriores.
P P P P P P P P
MEMORIA MEMORIA
P P P P P P P P
MEMORIA MEMORIA
P P P P P P P P
MEMORIA MEMORIA
Paralelismo en las bases de datos
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.)
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
Paralelismo de E/S

Se refere 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
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 Disk


i 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)
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
Figuras de particionados
Comparacin de tcnicas de particin
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.

Ejemplo: nombre_empleado= Garcia.


3. Localizacin de todas las tuplas cuyo valor de un atributo
se halle en un rango especifcado Consultas de rango.

Ejemplo: 10000 sueldo < 20000.


Comparacin de tcnicas de particin (Cont.)
Comparacin de tcnicas de particin (Cont.)
Exploracin
Completa
Consulta
Concreta
Consulta
Rangos
Turno
Rotatorio
Efciente Inefciente Inefciente
Particin por
Asociacin
Efciente Efciente si
coinciden con los
atributos de la
particin
Inefciente
Particin por
Rangos
Efciente Efciente si
coincide con el
atributo de la
particin
Efciente si
coincide con el
atributo de la
particin
Comparacin de tcnicas de particin (Cont.)
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.)
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.)
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
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
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 refere 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
Sesgo de particin

Un sesgo pequeo puede dar lugar a una disminucin signifcativa 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
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.

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 utilizando Histogramas
Manejo del sesgo utilizando Histogramas
Manejo del sesgo empleando
Manejo del sesgo empleando
procesadores virtuales
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
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 modifquen 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
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
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
Paralelismo en operaciones

Nuestra discusin de algoritmos paralelos asume:

Consultas de solo lectura

Arquitecturas sin compartimiento

n procesadores, P
0
, ..., P
n-1
, y n discos D
0
, ..., D
n-1
, donde el disco
D
i
es asociado con el procesador P
i
.

Si un procesador tiene mltiples discos, esto se puede


simplifcar simulando todos los discos como un solo disco D
i
.

En arquitecturas sin compartimiento puede ser efciente 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
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
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 fnal es trivial. Se ha de


emplear un buen vector de particin por rangos.
Ordenacin y mezclas externas paralelas
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 fnal. 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 fnal.
Reunin paralela
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 fnal
Reunin paralela(Cont.)
Reunin paralela(Cont.)
Paralelismo entre operaciones
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
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
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
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

Potrebbero piacerti anche