Motivação
Os sistemas cada vez mais têm a necessidade de efectuar consultas
complexas sobre volumes gigantescos de dados, em tempo útil
A velocidade dos processadores tem aumentado significativamente,
mas, a velocidade dos discos tem tido um crescimento baixo sendo
muitas vezes o estrangulamento no acesso aos dados
Objectivo
Melhoria do desempenho
Incremento da disponibilidade dos dados
Acesso distribuído aos dados
Uma base de dados paralela garante o primeiro ponto, e
uma base de dados distribuída garante predominantemente
os dois últimos
O que permitiu o sucesso dos sistemas paralelos e
distribuídos
Aparecimento e implementação massiva dos sistemas relacionais,
onde as consultas de operações uniformes aplicadas a um conjunto
uniforme de dados, permitem a exploração de diversas formas de
paralelismo
Incapacidade dos fabricantes em conceber máquinas de grande
porte com capacidade suficiente para responder ás solicitações de
múltiplos utilizadores tendo acesso simultâneo a bases de dados
com volume da ordem dos terabytes
Aparecimento de máquinas baratas com múltiplos processadores
rápidos. Oferecem poder de computação aproximado às máquinas
de grande porte, são economicamente mais viáveis, e apresentam
arquitecturas modulares que permitem configurações de acordo
com as necessidades de processamento
Métricas
Um sistema paralelo ideal deve apresentar duas propriedades
Aceleração linear (linear speedup)
Crescimento linear (linear scaleup)
Aceleração linear
Não toma em consideração o tamanho do problema, mas sim o tamanho
do sistema
Para uma determinada tarefa, se o hardware for dobrado, a tarefa deverá
ser executada em metade do tempo
Mede-se definindo a razão entre o tempo de execução de um sistema
considerado de dimensão (1) e um sistema de dimensão (N)
tempo _ sistema _ 1
Speedup =
tempo _ sistema _ N
Speedup
A aceleração é linear se o quociente for igual a N
Crescimento linear
Mede a habilidade de crescimento do sistema e do problema
Se o hardware for duplicado, o sistema deverá ser capaz de
executar uma tarefa duas vezes maior, no mesmo intervalo de
tempo
Mede-se definindo a razão entre o tempo de execução de uma
tarefa de dimensão (1) num sistema de dimensão (1), e o tempo de
execução de uma tarefa de dimensão (N) num sistema de dimensão
(N)
tempo _ tarefa _ 1 _ sistema _ 1
Speedup =
tempo _ tarefa _ N _ sistema _ N
Scaleup
O crescimento é linear se o quociente for igual a 1
Factores limitativos da aceleração e crescimento lineares
O Speed-Up e Scale-Up são muitas vezes sublineares derivado a:
Custo de Arranque: O custo de iniciar múltiplos processos pode dominar o
tempo de computação, se o grau de paralelismo for elevado.
Interferência: Os processos ao acederem a recursos partilhados (ex: Bus do
sistema, discos, locks) competem entre si, despendendo tempo à espera dos
recursos, em vez de executarem trabalho útil.
Skew: Aumentando o grau de paralelismo aumenta-se a variação nos tempos de
execução das tarefas paralelas. O tempo global de execução é condicionado pela
mais demorada das tarefas paralelas.
No entanto, ganhos sobrelineares também podem ser alcançados,
em particular nas aplicações de bases de dados, quando se
consegue tirar proveito de um bom balanceamento de carga e da
disponibilização dos dados em memória e cache.
!
Arquitectura de comunicações para sistemas paralelos
"
Arquitectura de comunicações
Bus: Os nós do sistema enviam e recebem dados por um único bus de
comunicação;
Dificuldades de escalabilidade com o aumento do número de nós no
barramento.
Mesh: Os nós são configurados como nós numa matriz, e cada
componente é ligada a todas as componentes adjacentes;
As ligações aumentam com o número de nós adicionados, e por isso tem
melhor escalabilidade.
Mas pode requerer percorrer 2 (sqrt(n)-1) ligações para enviar uma
mensagem para alguns nós mais distantes na matriz.
Hipercubo: Os nós são numerados em binário; são ligados uns aos
outros se as suas representações binárias diferirem exactamente em
apenas um bit.
N nós estão ligadas a outros log(n) nós e podem chegar a qualquer outro
percorrendo no máximo log(n) ligações; reduz os tempos de comunicação
Arquitectura das bases de dados paralelas
Usam mais do que um CPU/disco/memória.
A organização da memória (principal e secundária) é um dos parâmetros
que tem maior influência num sistema paralelo
Formas de partilha
Shared memory
Todos os processadores partilham a mesma memória, e os dados podem ser movidos
entre a memória e qualquer disco
Shared disk
Cada processador tem a sua memória mas pode ler ou escrever em qualquer dos
discos
Shared nothing
Os discos/cpu/memória individuais são interligados
Hybrid
Combinação das arquitecturas anteriores
Permite:
Resolver mais rapidamente as consultas
O carregamento de dados, a construção de índices e a avaliação das
consultas podes ser efectuados em paralelo
Shared memory
Neste tipo de arquitectura, todos os processadores têm acesso a
qualquer módulo de memória ou disco através de um BUS ou rede
de comunicação
Bastante usada em baixos níveis de paralelismo (4 a 8 nós)
Vantagens
Simplicidade
Balanceamento de carga
Desvantagens
Custo
Expansibilidade limitada
Baixa disponibilidade
Simplicidade
Os dados em memória podem ser acedidos por qualquer dos processadores permitindo o acesso ao
catálogo e informações de controlo. Dessa forma a gestão do SGBD é similar a um sistema em
mono processamento
Balanceamento de carga
O sistema associa as tarefas aos processadores em tempo real baseando-se na carga actual dos
mesmos
Custo
Derivado da complexidade da rede de comunicação, já que é necessário ligar cada processador a
cada memória e disco do sistema
Expansibilidade limitada
Acessos conflituantes à memória partilhada podem causar interferência entre os processadores
limitando o crescimento do sistema
A rede de comunicação deve ter a largura de banda (quantidade de mensagens que a rede pode
suportar) correspondente à soma dos processadores e dos discos. É complicado construir tais redes
o que implica uma grande dificuldade em garantir um crescimento linear
Baixa disponibilidade
O espaço de memória é partilhado por todos os processadores, e uma falha nesse componente pode
afectar todos os processadores
Shared disk
Neste tipo de arquitectura, cada processador possui memória
principal exclusiva e tem acesso a qualquer disco através de um
BUS ou rede de comunicação
Adequado a aplicações “read-only”
Vantagens
Custo
Expansibilidade
Balanceamento de carga
Disponibilidade
Facilidade de migração de sistemas mono processamento
Desvantagens
Complexidade
Desempenho
Custo
O custo da rede de comunicação é inferior à arquitectura de memória partilhada já que pode ser
utilizada tecnologia de BUS padrão
Expansibilidade
Cada processador tem a si associado um módulo de memória, logo, o problema da interferência
não se coloca, permitindo uma muito maior expansibilidade (centenas de processadores)
Balanceamento de carga
É tão bom como o sistema de memória partilhada porque a atribuição de tarefas aos processadores
pode continuar a ser feita baseada na carga actual dos memos
Disponibilidade
As falhas dos módulos de memória são isoladas de outros nós possibilitando uma muito maior
disponibilidade do sistema
Facilidade de migração de sistemas mono processamento
Um sistema de discos partilhados pode ser visto como um conjunto de sistemas mono
processamento que partilham memória secundária
Complexidade
Não existe memória principal global para o controlo de bloqueios pelo que a gestão de transacções
se torna um processo mais complexo, aumentando a troca de mensagens entre processadores e
originando interferência e atrasos
Desempenho
O acesso aos discos torna-se o gargalo do sistema
Shared nothing
Neste tipo de arquitectura (memória distribuída), cada processador
possui memória principal e secundária exclusivas. Cada nó pode
ser visto como um SGBD local (tal como um SGBD distribuído)
Devido a esta similaridade muitas das soluções projectadas para
SGBD distribuídos tais como, fragmentação, gestão distribuída de
transacções e processamento de consultas distribuído podem ser
reutilizadas neste modelo
Vantagens
Baixo custo
Expansibilidade
Disponibilidade
Crescimento incremental
Desvantagens
Balanceamento de carga
As principais vantagens da memória distribuída são o baixo custo aliado a uma
alta expansibilidade e disponibilidade
Os dados acedidos da memória local (primária e secundária) não passam pela
rede de comunicação, minimizando a interferência na partilha dos recursos
Permitindo um crescimento incremental, consegue suportar um número enorme
de processadores sem causar interferência entre si, obtendo aceleração e
crescimento lineares.
A replicação de dados entre os nós permite que seja obtido um alto grau de
disponibilidade do sistema
O custo de comunicação e acesso a discos remotos é alto. O envio de dados
envolve software nos dois extremos da comunicação ponto a ponto
Outro problema desta arquitectura é o balanceamento de carga que pode
degradar consideravelmente o desempenho do sistema. Isto pode ocorrer porque
diferentemente das arquitecturas citadas anteriormente, o balanceamento de
carga é decidido baseado na localização dos dados e não na carga corrente do
sistema
O acréscimo de novos nós ao sistema requer uma reorganização dos dados
Hybrid
Arquitectura hierárquica
Este modelo híbrido consiste de uma arquitectura shared nothing onde cada nó
é formado no nível interno como uma arquitectura shared memory
Arquitectura shared something
Outra alternativa é um sistema shared disk tendo em cada nó um sistema
shared memory
Arquitectura shared something
Arquitectura hierárquica
!
"
Um sistema de Bases de Dados Distribuídas consiste num
conjunto de sites, ligados por uma rede convencional, que não
partilham nenhum componente físico
Os dados estão fisicamente armazenados por várias máquinas
(também referidos por sites ou nós), e cada site é normalmente
gerido por um SGBD (Sistema de Gestão de Base de Dados) e é
capaz de correr independentemente dos outros sites
Os dados são partilhados pelos
utilizadores nas várias máquinas.
A rede interliga as máquinas, pelo que
comunicação entre sites é efectuada
através da rede
As transacções podem aceder a dados
num ou mais sites, de uma vez
Cada nó pode ser um “query site”, um
“data site” ou ambos
Clientes e Servidores
O servidor (SGBD) é o software
que gere a base de dados
O cliente é a aplicação que
requisita informação da base de
dados
Um nó num sistema distribuído
pode actuar como cliente, como
servidor ou ambos
Um cliente pode ligar-se directa
ou indirectamente à base de
dados num nó
Para ligar cada nó num sistema
distribuído é necessário uma rede
de comunicação. Os comandos
são enviados do cliente para o
servidor usando protocolos de
comunicação
Cada base de dados num sistema
distribuído é distinta de todas as
outras bases de dados e tem o seu
global database name
A distribuição dos dados é gerida por
factores como administração local e
aumenta a disponibilidade e o
desempenho
O sistema deve tratar o impacto da
distribuição de dados de forma
transparente. Em particular, as
seguintes propriedades são
desejáveis
Distribuição de dados independente
Atomicidade na distribuição de dados
Existe facilidade de expansão quer
pela adição de novos nós quer pelo
melhoramento de características do
hardware (discos, processadores,
etc.)
Bases de dados Homogéneas
Todos os nós correm o mesmo SGBD
Os servidores têm conhecimento uns dos outros (database links) e
existe uma efectiva distribuição dos pedidos efectuados pelos
utilizadores
Bases de dados Heterogéneas
Os nós têm SGBD diferentes
Os nós podem não ter conhecimento uns dos outros, podendo
fornecer capacidades limitadas para cooperação no
processamento de transacções distribuídas
A ligação entre os diferentes SGBD é feita através de software
específico (Heterogeneous Services Agent)
São usados protocolos de rede para a simplificação de
transacções (ODBJ, JDBC, etc.)
Normalmente usam-se quando se pretende integrar sistemas de
bases de dados já existentes, para fornecer novas funcionalidades
Formas de armazenamento de dados distribuídos
Replicação
Existem várias cópias dos dados, armazenadas em nós
diversos
Grande tolerância a falhas
Fragmentação
Determinação de conjuntos de fragmentos distintos que
constituem unidades lógicas de alocação
Cada unidade lógica é armazenada num determinado nó
(possivelmente distintos, mas não obrigatoriamente)
Os dados existentes na relação global são mapeados pelos
fragmentos sem nenhuma perda
Replicação e fragmentação
As relações são divididas em fragmentos distintos, e existem
várias cópias desses fragmentos replicadas por diferentes nós
Replicação
Vantagens
Disponibilidade
Existindo réplicas, a falha num nó não implica indisponibilidade
Paralelismo
As consultas podem ser efectuadas em vários nós simultaneamente
Redução do volume de dados a transferir
Uma relação está disponível em cada nó que tenha uma réplica
Desvantagens
Actualizações das réplicas
Cada réplica tem de ser actualizada
Falhas nas actualizações ou actualizações concorrentes podem implicar
inconsistência dos dados
Replicação síncrona: Todas as réplicas são actualizadas antes das
transacções serem submetidas
Aumento do tempo de resposta
Replicação assíncrona: As réplicas são actualizadas periodicamente
Inconsistência temporária dos dados
Fragmentação
Vantagens
Menores relações
Menor volume de dados implica melhor tempo de resposta (depende da consulta)
Paralelismo
As consultas podem ser efectuadas em vários nós simultaneamente
Desvantagens
Divisão das consultas por vários nós
Estando as relações fragmentadas, pode ser necessário efectuar operações de junção
e união (depende da consulta)
Comparativamente com a replicação pode gerar tempos de resposta superiores quando
os dados pretendidos se encontram em nós distintos
Fragmentação horizontal
Cada fragmento é um conjunto de tuplos da relação original
Os fragmentos devem ser disjuntos
Técnicas utilizadas
Fragmentação por faixa de valores
Os fragmentos são obtidos em função dos valores dos atributos da relação, levando-se
em consideração os predicados existentes nas aplicações
Fragmentação por função de Hashing
A relação global é fragmentada de acordo com o valor de uma função de hashing
aplicada sobre um dos atributos, de forma a relacionar cada tuplo a um fragmento
Fragmentação circular
Consiste da associação sequencial de cada tuplo da relação global a um fragmento
sem levar em consideração o valor de nenhum atributo.
Desta forma, se a relação contiver n tuplos e o número de fragmentos a serem gerados
for m, cada fragmento receberá n/m tuplos.
Fragmentação derivada
A fragmentação derivada de uma relação global não é baseada nas propriedades dos
seus próprios atributos mas em função da fragmentação de outra relação. É usada para
facilitar a operação de junção entre fragmentos
Fragmentação vertical
Cada fragmento é um conjunto de atributos da relação original
Cada fragmento tem um esquema mais pequeno do que o esquema da
relação original
Cada fragmento de uma relação tem de ter um atributo comum para permitir
mapear a relação original sem perdas, ou seja, é replicado em cada fragmento
a chave primária da relação global de forma a permitir a sua reconstrução a
partir da junção dos fragmentos
O seu objectivo é identificar fragmentos de tal forma que várias aplicações
possam ser executadas com acesso à somente uma partição da relação
global.
Caso uma aplicação necessite de acesso à dados presentes em mais de um
fragmento, a fragmentação vertical não é benéfica visto que será necessária a
realização de junções entre os fragmentos para a obtenção do resultado
!
Fragmentação híbrida
Combinação da fragmentação horizontal e vertical
Pode ser feita de duas formas: fragmentando-se horizontalmente a
relação e em seguida para cada fragmento obtido fragmentá-lo
verticalmente, ou o inverso
Embora estas operações possam ser recursivamente repetidas, o que
ocorre na prática é a interrupção do processo depois da segunda iteração.
A ordem em que as fragmentações são aplicadas afectam o resultado
final.
"
Download

Apresentação 12