Base de Datos Paralelas
Base de Datos Paralelas
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
Arquitecturas paralelas de bases de datos
Arquitecturas paralelas de bases de datos
Existen varios modelos de arquitectura
para las máquinas paralelas.
Memoria Compartida.
Todos los
procesadores comparten una memoria
común.
P
Arquitecturas paralelas de bases de
Arquitecturas paralelas de bases de
datos (cont.)
datos (cont.)
Disco Compartido. Todos los procesadores
comparten un conjunto de discos común. Algunas veces los sistemas de disco compartido se
denominan agrupaciones o clusters.
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
Arquitecturas paralelas de bases de datos (cont.)
Arquitecturas paralelas de bases de datos (cont.)
Jerárquico. Este modelo es un híbrido de las arquitecturas anteriores.
P
P PP PP PP MEMORIAMEMORIA
P
P PP PP PP MEMORIAMEMORIA
P
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 múltiples procesadores para acelerar las tareas de computo.
En muchas empresas las bases de datos son
enormes
Volúmenes enormes de transacciones de datos son
coleccionados y almacenados para su posterior análisis. Necesidad de almacenar objetos multimedia.
Se esta incrementando el uso de sistemas de bases
de datos paralelos a gran escala.
Almacenamiento de extensos volúmenes de datos
Paralelismo en las bases de datos (cont.)
Paralelismo en las bases de datos (cont.)
Los datos pueden ser particionados sobre múltiples discos para la E/S paralela
Operaciones relacionales individuales (Ejemplo: ordenamiento, uniones, agregación) puede ser ejecutado en paralelo.
Los datos pueden ser particionados y cada procesador
puede trabajar independientemente sobre su propia partición.
Las consultas son expresados en un lenguaje de alto nivel (SQL)
Facilidad para crear paralelismo
Paralelismo de E/S
Paralelismo de E/S
Se refiere a la partición de las relaciones sobre múltiples
discos para reducir el tiempo necesario de su recuperación.
La forma mas habitual de particionado de datos en un entorno
de base de datos paralelas es el particionado horizontal.
En la partición horizontal, las tuplas de cada relación se
Técnicas de particionado
Técnicas de particionado
Sea D1, D2, D3, . .. . . Dn (numero de discos = n)
Turno rotatorio (Round robin):
La i-ésima tupla se envía al disco numerado Diski mod n
Asegura la distribución homogénea
Partición por asociación (Dispersión):
Escoge uno o mas atributos como atributos de la partición.
Escoge una función asociación cuyo rango sea 0…..n-1
Cada tupla de la relación original se asocia en términos de los
atributos de la partición. Si la función de asociación devuelve i, la tupla se ubica en el disco Di.
Técnicas de particionado (Continua)
Técnicas de particionado (Continua)
Partición por rangos (Intervalos):
Dado un atributo partirlo en rangos y cada rango
se almacena en un disco.
Utiliza un vector de división para expresar los
rangos
Ejemplo: un vector de partición [5,11], una tupla
con valor 2 en el atributo de partición se ira al disco 0, una tupla con valor 8 ira al disco 1,
Figuras de particionados
Comparación de técnicas de partición
Comparación de técnicas de partición
Evaluar como las técnicas de particiones soportan los siguientes tipos de acceso a datos:
1. Exploración de la relación completa.
2. Localización de tuplas de manera asociativa – consultas
concretas.
Ejemplo: nombre_empleado= “Garcia”.
3. Localización de todas las tuplas cuyo valor de un atributo
Comparación de técnicas de partición (Cont.)
Comparación de técnicas de partición (Cont.)
Exploración
Completa ConsultaConcreta ConsultaRangos
Turno
Rotatorio Eficiente Ineficiente Ineficiente
Partición por
Asociación Eficiente Eficiente si coinciden con los
atributos de la partición
Ineficiente
Partición por
Rangos Eficiente Eficiente si coincide con el
atributo de la partición
Comparación de técnicas de partición (Cont.)
Comparación de técnicas de partición (Cont.)
Turno rotatorio:
Es mejor en las aplicaciones que desean leer
secuencialmente la relación completa en cada consulta.
Todos los discos tienen un numero igual de
tuplas, el trabajo es balanceado.
Con este esquema tanto las consultas concretas
Comparación de técnicas de partición (Cont.)
Comparación de técnicas de partición (Cont.)
Partición por asociación:
Es mejor en acceso secuencial
Si la función de asociación es una buena función aleatoria y los
atributos de partición constituyen una clave de la relación, el numero de tuplas en cada disco es aproximadamente el mismo. Entonces, el tiempo empleado para explorar la relación es
aproximadamente 1/n del necesario para explorar la relación en un sistema de disco único.
No se adapta bien a las consultas concretas en términos de
atributos que no sean de la partición.
No resulta adecuada para las respuestas a consultas de
Comparación de técnicas de partición (Cont.)
Comparación de técnicas de partición (Cont.)
Particiones por rango:
Buenas para el acceso secuencial
Es bueno para consultas concretas sobre los atributos de
partición; solo se necesita acceder a un solo disco.
Para consultas de rango sobre los atributos de partición, uno o
Crear particiones en la relación a través de los discos
Crear particiones en la relación a través de los discos
Si una relación contiene pocas tuplas que pueden caber en un bloque de disco, entonces, asignar a la relación un solo disco.
Las relaciones grandes se particionan
Tratamiento del sesgo
Tratamiento del sesgo
La distribución de tuplas al particionar una relación
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 partición.
Se refiere al hecho de que puede haber un desequilibrio de
carga en la partición, aunque no haya sesgo en los atributos.
Sesgo de partición
Sesgo de partición
Un sesgo pequeño puede dar lugar a una disminución significativa del
rendimiento.
El sesgo se transforma en un problema creciente al aumentar el grado de
paralelismo.
Por ejemplo: Si una relación de 1 000 tuplas se divide en 10 partes y la división está sesgada, puede haber algunas particiones de tamaño menor que 100 y otras de tamaño mayor que 100.
Incluso se puede dar la casualidad de que una partición tenga el tamaño de 200.
Teniendo una aceleración, al tener acceso en paralelo a las particiones, de sólo 5, en lugar del valor de 10 que se cabría esperar.
Se esperaba una aceleración de 10 veces más rápido que haciéndolo en un solo disco; pero debido al sesgo (con 200 tuplas, se tiene 1000/200 = 5) sólo se obtiene una
aceleración de 5.
Si la misma relación, con las 1 000 tuplas, tiene que dividirse en 100 partes, las particiones tendrán de media 10 tuplas.
Si una partición llega a tener hasta 40 tuplas (lo que es posible dado el gran número de particiones) la aceleración que se obtendría al tener acceso a ellas en paralelo sería de 25 (1000/40 = 25), en vez de 100.
Manejo de sesgo en particiones de rango
Manejo de sesgo en particiones de rango
Se puede crear un vector de división por rangos
equilibrado:
La relación primero se ordena según los atributos de la partición
Se explora la relación de forma ordenada
Se lee cada 1/n de la relación (n nº de particiones que hay que
crear)
Se añade el valor del atributo de división de la siguiente tupla al
vector de la partición.
El principal inconveniente es la sobrecarga de E/S
debida a la ordenación inicial.
Para minimizar, la sobrecarga una alternativa a este
problema es creando una tabla de frecuencias, o
Se puede reducir creando y almacenando una tabla de
frecuencias o histograma, de los valores de los atributos para todos los atributos de cada relación.
Resulta sencillo crear una función de partición por rangos
equilibrados dado un histograma de los atributos de la partición.
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 múltiplo del numero de procesadores reales.
Se asignan las tuplas a los virtuales y estos a los reales mediante una partición por turno rotatorio. La asignación por turno rotatorio de los
procesadores virtuales a procesadores reales distribuirá el trabajo adicional entre varios
Paralelismo entre consultas
Paralelismo entre consultas
Se ejecutan en paralelo entre sí diferentes consultas o
transacciones.
El tiempo de una transacción es el mismo pero se
incrementa la productividad (throughput)
Consideraciones de implementación:
Coherencia del cache
Evitar que dos procesadores modifiquen al tiempo un
mismo dato (Protocolos de Bloqueo)
Los sistemas con arquitectura paralela también deben
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 transacción la bloquea en modo compartido o exclusivo, según corresponda. Inmediatamente después de obtener el bloqueo compartido o exclusivo de la página, la transacción lee también su copia mas reciente del disco compartido.
Antes de que la transacción libere el bloqueo exclusivo de una página, la traslada al disco compartido; posteriormente libera el bloqueo
Paralelismo en consultas
Paralelismo en consultas
Ejecución en paralelo de una única consulta en varios
procesadores y discos; importante para acelerar las consultas de ejecución prolongada.
Dos maneras de ejecutar en paralelo una sola consulta:
Paralelismo en operaciones – se puede acelerar el
procesamiento de la consulta haciendo paralela la ejecución de cada una de sus operaciones individuales ordenación, selección, proyección, y reunión.
Paralelismo entre operaciones – Ejecutando en paralelo las
diferentes operaciones de las expresiones de las consultas.
Dado que el numero de operaciones de una consulta típica es
Paralelismo en operaciones
Paralelismo en operaciones
Nuestra discusión 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 múltiples discos, esto se puede
simplificar simulando todos los discos como un solo disco Di.
En arquitecturas sin compartimiento puede ser eficiente la
simulación de sistemas de memoria y disco compartido.
Algoritmos para sistemas no compartidos pueden así ejecutarse
sobre sistemas de memoria y disco compartido.
Ordenación paralela
Ordenación paralela
Si la ordenación se particiona en rangos basándose en los atributos por los que se va a ordenar se
puede ordenar cada partición por separado y
concatenar. Si se ha particionado siguiendo algún otro método:
Se puede dividir en rangos de acuerdo con los atributos de
ordenación y luego ordenar cada partición por separado
Se puede utilizar una versión paralela del algoritmo externo
Ordenación con partición por rangos
Ordenación con partición por rangos
1. Se redistribuyen las tuplas de la relación utilizando
una estrategia de división por rangos
2. Cada uno de los procesadores ordena localmente
su partición sin interactuar con los demás
procesadores. Cada procesador ejecuta la misma operación sobre un conjunto de datos diferente
Ordenación y mezclas externas paralelas
Ordenación y mezclas externas paralelas
Suponemos que la relación 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, ….,Pm‐1. Envía 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 según las
recibe para obtener una sola parte ordenada
Las partes ordenadas de los procesadores P0,…Pm‐1 se concatenan
Reunión paralela
Reunión paralela
La operación reunión exige que el sistema
compare pares de tuplas para ver si
satisfacen la condición de reunión, si se
cumplen, añaden el par al resultado de la
reunión. Los algoritmo de reunión paralela
intentan repartir entre varios procesadores
los pares que hay que comparar, cada
procesador procesa localmente parte de la
reunión y luego el sistema reúne los
Reunión paralela(Cont.)
Paralelismo entre operaciones
Paralelismo entre operaciones
Paralelismo de encauzamiento:
Una operación consume el resultado de otra
No siempre es útil pues una operación puede
requerir la totalidad de las tuplas y no bastarle resultados parciales
No siempre las operaciones son tan largas para
esperar
Paralelismo Independiente:
Cada operación se realiza por separado y luego
Tiempo de ejecución en Paralelo
Tiempo de ejecución en Paralelo
Problemas del Paralelismo:
Sesgo
Cuello de botella en los recursos
Costo de reunión y de inicio
Tiempo de ejecución
Diseño de sistemas paralelos
Diseño de sistemas paralelos
La carga de datos en paralelo desde fuentes
externas es un requisito importante si se van
a tratar grandes volúmenes de datos
entrantes.
Un gran sistema paralelo de bases de datos
debe abordar también los siguientes
aspectos de disponibilidad:
El poder de recuperación frente al fallo de algunos
procesadores o discos
La reorganización interactiva de los datos y los cambios de
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