Sistemas de Gerência de Bancos de Dados 7 - Outras Arquiteturas para SGBDs 7.3 - SGBDs Paralelos 1
Tópicos Introdução Arquiteturas Paralelas Processamento de Consultas Gerência de Transações 2
Introdução SGBDs Paralelos: combinam técnicas de gerência de dados e processamento paralelo para aumentar desempenho e confiabilidade: particionamento do BD em discos controlados por multiprocessadores resulta em aumento da taxa de transferência de dados da memória secundária para memória principal (I/O bandwidth) paralelização do processamento interno de consultas resulta em diminuição do tempo de resposta paralelização do processamento de transações resulta em aumento da capacidade do sistema (throughput) 3
Arquiteturas Paralelas Shared-Memory Architecture (SMP) barramento 4
Arquiteturas Paralelas Shared-Disk Architecture Local Local barramento 5
Arquiteturas Paralelas Shared-Nothing Architecture (MPP) switch Local Local 6
Arquiteturas Paralelas Hierarchical Architecture barramento barramento barramento barramento 7
Arquiteturas Paralelas Cache Only Memory Architecture (COMA) Hardware shared Virtual Memory Cache Memory Cache Memory 8
Estratégias de alocação: Alocação de Dados semelhantes ao caso de BDDs: fragmentação horizontal ( chamada de particionamento ) fragmentação vertical diferenças: número de nós é potencialmente muito maior transferência de dados ou de processos de um nó para outro é muito mais rápida 9
Alocação de Dados Estratégias de Particionamento Completo: tabela distribuída por todos os nós: round-robin: distribuição cíclica Cycle hashing: distribuição dada por uma função de hashing Hash por intervalo: particionamento normal Partition 10
Alocação de Dados Estratégias de Particionamento Completo: indexação em dois níveis: índice global pode ser totalmente replicado aponta para os nós que armazenam as tuplas associadas aos valores de índice Índice Global apontadores para nós índice local aponta para as tuplas associadas aos valores de índice Índice Local 11 apontadores para páginas
Processamento de Consultas Possibilidades para Paralelização: intra-operador: paralelize o processamento de cada operador, quebrando-o em operadores semelhantes sobre os dados particionados adequado para seleção requer algoritmos especiais para join inter-operador: paralelize o plano de execução da consulta, semelhantemente ao caso de SGBDDs 12
Processamento de Consultas Parallel Nested Join: entrada: R1,...Rm - fragmentos de R S1,...Sn - fragmentos de S JP - join predicate saida: T1,...,Tn - fragmentos da resposta for i from 1 to m do in parallel s Ri to each node containing a fragment of S for j from 1 to n do in parallel R := union of Ri Tj := join(r,sj,jp) R1 R2 S1 R1 R2 R1 R2 S2 13
Processamento de Consultas Parallel Associative Join: entrada: R1,...Rm - fragmentos de R S1,...Sn - fragmentos de S, criados por hash h(b) JP - equijoin predicate da forma R.A=S.B saida: T1,...,Tn - fragmentos da resposta for i from 1 to m do in parallel apply h(a) to Ri creating Ri1,...,Rin for each j from 1 to n do s Rij to the node containing Sj for j from 1 to n do in parallel Rj := union of R1j,...,Rnj Tj := join(rj,sj,jp) R11 R12 R21 R22 S1 R11 R21 R12 R22 S2 14
Processamento de Consultas Parallel Hash Join: entrada: R1,...Rm - fragmentos de R S1,...Sn - fragmentos de S JP - equijoin predicate da forma R.A=S.B saida: T1,...,Tn - fragmentos da resposta for i from 1 to m do in parallel apply h(a) to Ri creating Ri1,...,Rip /* h retorna valores entre 1 e p */ for each j from 1 to p do s Rij to the node p for i from 1 to n do in parallel apply h(b) to Si creating Si1,...,Sip for each j from 1 to p do s Sij to the node p R11 R12 R21 R22 S11 S12 for j from 1 to p do in parallel Rj := union of R1j,...,Rpj Sj := union of S1j,...,Spj Tj := join(rj,sj,jp) R11 15 R21 S11 S21 R12 R22 S21 S22 S12 S22
Gerência de Transações Problemas: Inicialização: a inicialização de uma transação é um processo demorado, que não pode ser paralelizado para transações curtas, um SGBD paralelo pode apresentar um desempenho pior do que um centralizado interferência: a paralelização do processamento das transações pode gerar alta contenção por: um dos recursos de hardware, como memória compartilhada um dos recursos de software, como estruturas internas do SGBD paralelo desbalanceamento no particionamento do BD 16