Buscar

Tema 4 - Sistemas de banco de dados distribuídos

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 3, do total de 77 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 6, do total de 77 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 9, do total de 77 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Prévia do material em texto

21/11/2023, 07:43 Sistemas de banco de dados paralelos
https://stecine.azureedge.net/repositorio/00212ti/07593/index.html# 1/77
Sistemas de banco de dados paralelos
Prof. Sidney Nicolau Venturi Filho
Descrição
O banco de dados paralelo e a sua utilização na implementação de um
cluster PostgreSQL.
Propósito
Entender as técnicas que dão suporte ao funcionamento dos bancos de
dados paralelos e realizar a criação e configuração de um cluster
PostgreSQL é de importância fundamental para o profissional de TI
atualmente.
Preparação
Recomenda-se que você instale o PostgreSQL em uma máquina virtual.
Objetivos
Módulo 1
Paralelismos em sistemas computacionais
21/11/2023, 07:43 Sistemas de banco de dados paralelos
https://stecine.azureedge.net/repositorio/00212ti/07593/index.html# 2/77
Reconhecer as técnicas utilizadas em sistemas paralelos.
Módulo 2
Fundamentos de banco de dados e consultas
paralelas
Analisar as características dos sistemas de bancos de dados
paralelos e suas consultas.
Módulo 3
Execução de consultas paralelas e
balanceamento de carga
Identificar as técnicas utilizadas na execução de consultas paralelas
e no balanceamento de carga entre os nós.
Módulo 4
Bancos de dados em cluster
Criar e configurar um cluster de banco de dados PostgreSQL.
Introdução
Com o aumento da demanda dos sistemas por capacidade de
processamento, duas soluções se apresentam. A primeira refere-
se a utilizar máquinas individuais mais poderosas ou associar
várias máquinas em paralelo para realizar o processamento.

21/11/2023, 07:43 Sistemas de banco de dados paralelos
https://stecine.azureedge.net/repositorio/00212ti/07593/index.html# 3/77
A segunda solução permite uma diminuição dos custos de
implantação e da escalabilidade do sistema. O uso de cluster de
banco de dados se popularizou, pois, além de aumentar a
capacidade de processamento, trouxe consigo uma melhor
solução de tolerância a falhas. Esse será o tema de nosso
estudo. Vamos lá?
1 - Paralelismos em sistemas computacionais
Ao �nal deste módulo, você será capaz de reconhecer as técnicas utilizadas em sistemas
paralelos.
Processamento paralelo
Neste vídeo, apresentaremos os fundamentos do processamento
paralelo, passando pelas suas origens e falando sobre a motivação para
o seu uso. Veremos ainda o paralelismo de grão e a diferença entre
processamento paralelo e distribuído.
21/11/2023, 07:43 Sistemas de banco de dados paralelos
https://stecine.azureedge.net/repositorio/00212ti/07593/index.html# 4/77
Origens do processamento paralelo
Von Neumann, em seus trabalhos na década de 1940, citava o uso de
arquiteturas paralelas como forma de obter maior capacidade de
processamento visando executar as tarefas de forma mais rápida e
eficiente. Acompanhe o desenvolvimento!
Von Neumann
Foi um matemático húngaro de origem judaica, naturalizado estadunidense.
Contribuiu com a ciência da computação, entre outras áreas. É considerado
um dos mais importantes matemáticos do século XX.
Máquinas monoprocessadas
Ao longo das décadas de 1950 e
1960, o aumento de velocidade
de processamento era obtido por
meio da construção de
máquinas monoprocessadas
com maior velocidade de CPU.
Máquinas multiprocessadas
A partir da década de 1970, o
aumento da velocidade do
processador já não era suficiente
para atender às necessidades,
sendo adotadas as arquiteturas
de máquinas multiprocessadas,
trabalhando de forma
concorrente.
Processamento paralelo
P d l id
21/11/2023, 07:43 Sistemas de banco de dados paralelos
https://stecine.azureedge.net/repositorio/00212ti/07593/index.html# 5/77
Essas técnicas definiram diversos níveis de paralelismo, impactando o
desenvolvimento de chips com múltiplos núcleos, dispositivos de
entrada e saída, sistemas operacionais, aplicações e o desenvolvimento
de técnicas de programação com o uso de threads. Vejamos os níveis
de paralelismo!
Threads
Forma como um processo/tarefa de um programa de computador é divido
em duas ou mais tarefas que podem ser executadas concorrentemente.
Aplicação
Utilização de processos leves (threads)
Utilização de processos remotos
Invocação de métodos remotos (Java RMI)
Sistema operacional
Multiprocessamento
Multiprogramação
Arquitetura
Vários processadores
Unidades de E/S ativa
Hierarquia de memória
Passaram a ser desenvolvidas,
então, técnicas de
processamento paralelo, de
forma que o conjunto de
processadores pudesse
trabalhar coordenadamente na
solução de problemas
complexos.
21/11/2023, 07:43 Sistemas de banco de dados paralelos
https://stecine.azureedge.net/repositorio/00212ti/07593/index.html# 6/77
Hierarquia de barramentos
Processador
Múltiplas unidades funcionais
Pipeline de instrução
Processamento paralelo (PP)
Podemos definir processamento paralelo como várias unidades
colaborando de forma ativa para realizar um processamento, com maior
rapidez e eficiência.
Para obter essa maior eficiência, cada uma das unidades deve atacar
uma parte do trabalho, comunicando-se para coordenar a divisão das
tarefas, trocar valores intermediários e juntá-los para produzir o
resultado.
Atenção!
Para o processamento paralelo ser eficiente em sua execução, os
programas necessitam ser escritos para executar em vários
processadores, disparando múltiplas threads, já que não é realizado
automaticamente pelos sistemas operacionais.
Motivação para uso de processamento paralelo
Vejamos agora os principais motivos para uso de processamento
paralelo. Vamos lá!
 Desempenho
Reduzir o tempo de execução devido à divisão do
trabalho por múltiplas unidades de processamento.
 Tolerância a falhas
Reduzir a probabilidade de falhas, pois o mesmo
processamento pode ser realizado em mais de um
l l
21/11/2023, 07:43 Sistemas de banco de dados paralelos
https://stecine.azureedge.net/repositorio/00212ti/07593/index.html# 7/77
Grão de paralelismo
Define como realizar a modelagem de sistemas paralelos e pode ser de
três tipos. Vamos conferir!
Grosso
O processamento a ser realizado pode ser particionado em
unidades de trabalho grande, permitindo que, mesmo existindo
um grande custo de comunicação, vale a pena executar em
paralelo, já que o custo de transmissão é compensado pelo
ganho de tempo em atacar o problema com mais processadores.
Médio
O processamento engloba apenas unidades de trabalho médio.
Neste caso, quando o custo de comunicação for muito alto, o
desempenho obtido com mais processadores poderá não
compensar.
Fino
local.
 Modelagem
Reduzir a complexidade de se implementar a
aplicação em situações em que o problema é, em
sua essência, paralelo.
 Aproveitamento de recursos
Aproveitar melhor os recursos disponíveis a partir
da execução de múltiplos processos.
21/11/2023, 07:43 Sistemas de banco de dados paralelos
https://stecine.azureedge.net/repositorio/00212ti/07593/index.html# 8/77
O trabalho somente comporta tarefas pequenas. Neste caso,
somente o custo de transmissão baixo tornará eficiente o
processamento em vários locais diferentes.
Processamento paralelo x distribuído
Os sistemas de processamento paralelo podem ser classificados como:
Fortemente acoplados: São sistemas em que a comunicação entre
os processadores ocorre por meio dos barramentos internos do
equipamento e que compartilham, normalmente, a memória
principal. Exemplos: notebook e computadores com processadores
multicores e supercomputadores com multiprocessamento
simétrico ou assimétrico.
Fracamente acoplados: Abrangem os sistemas que envolvem as
unidades processadoras interligadas por algum sistema de
comunicação em rede. Eles podem ser em redes ou distribuídos.
Multiprocessamento simétrico ou assimétrico
Ocorre em um sistema computacional com vários processadores com
memória compartilhada sob controle de um único sistema operacional. Em
contraste, o multiprocessamento assimétrico emprega sistemas diferentes.
Observe, a seguir, os tipos de sistemas paralelos.
Tipos de sistemas paralelos.
Podemosnotar que os sistemas de processamento distribuído são, na
realidade, um tipo de sistema paralelo fracamente acoplado, tendo os
dois tipos os mesmos complicadores para implementação, diferindo,
basicamente, na motivação de seu desenvolvimento. Entenda:
21/11/2023, 07:43 Sistemas de banco de dados paralelos
https://stecine.azureedge.net/repositorio/00212ti/07593/index.html# 9/77
Processamento em rede
Ganho de desempenho com redução de custos de comunicação,
utilizando processadores interligados em redes locais ou por
barramentos internos.
Processamento distribuído
Redução do custo de comunicação em redes de longa distância a partir
da modelagem baseada na localidade física onde o processamento
deve ser realizado.
Arquiteturas de hardware para
sistemas paralelos
Neste vídeo, apresentaremos as arquiteturas de hardware para sistemas
paralelos, mostrando os tipos, a memória compartilhada, os discos
compartilhados, o nada compartilhado e a hierárquica.
Tipos de arquitetura de hardware
Em um mundo ideal, os computadores teriam processadores
infinitamente rápidos, com memória ilimitada e custando uma pequena
fração do preço que custam no mundo real, o que não exigiria aumento
de velocidade, escalabilidade ou processamento paralelo.
A realidade é desafiadora e a partir do uso de um conjunto de
processadores com velocidade finita e expansão da memória disponível
a partir da criação de áreas de troca de dados entre memórias
individualmente limitadas.
Embora a ideia pareça bem simples, a implementação
do acréscimo de novos processadores diminui um
pouco a velocidade individual de todos os outros, o que
21/11/2023, 07:43 Sistemas de banco de dados paralelos
https://stecine.azureedge.net/repositorio/00212ti/07593/index.html# 10/77
pode ser um problema, pois, se, por exemplo, cada
processador acrescido impactar 1% do funcionamento
dos outros, em um sistema com mil processadores, o
desempenho total corresponderá a apenas 4% do
desempenho de um sistema monoprocessado de
mesma velocidade.
Visando lidar com essa degradação, foram propostas quatro
arquiteturas para sistemas paralelos. Vamos conferi-las!
Observe, a seguir, os tipos de arquiteturas para sistemas paralelos.
 Memória compartilhada
Cada um dos processadores compartilha a mesma
memória e os mesmos discos.
 Discos compartilhados
Cada processador tem uma memória própria, mas
tem acesso a todos os discos.
 Nada compartilhado
Cada memória e disco são próprios de um
processador que atua como servidor dos dados que
possui.
 Hierárquica
Cada nó pode ser considerado como um sistema
independente.
21/11/2023, 07:43 Sistemas de banco de dados paralelos
https://stecine.azureedge.net/repositorio/00212ti/07593/index.html# 11/77
Tipos de arquiteturas para sistemas paralelos.
Memória compartilhada
Originalmente, neste tipo de arquitetura, todos os processadores podem
acessar qualquer disco ou módulo de memória a partir de um
barramento comum. Vejamos agora as vantagens e desvantagens
dessa arquitetura. Vamos lá!
Simplicidade de implementação e balanceamento de carga
dinâmico.
Gargalo gerado no barramento de acesso à memória, já que os
processadores passarão a maior parte do tempo esperando sua
vez no barramento para acessar a memória.
Visando minimizar esse gargalo, modernos sistemas de memória
compartilhada utilizam uma arquitetura similar à exibida a seguir, na
qual cada processador possui um banco de memória conectado
diretamente a ele, e os processadores são interligados por um sistema
de interconexão rápida; os processadores também são conectados a
controladores de E/S que fazem interface com o armazenamento
externo. Essa solução, apesar de minimizar o gargalo, apresenta elevado
custo pela necessidade de um sistema complexo de interconexão dos
processadores. Observe!
Vantagens 
Desvantagens 
21/11/2023, 07:43 Sistemas de banco de dados paralelos
https://stecine.azureedge.net/repositorio/00212ti/07593/index.html# 12/77
Modernos sistemas de memória compartilhada.
Discos compartilhados
Neste modelo, cada nó possui seus próprios processadores e memória,
mas todos os nós podem acessar todos os discos diretamente por meio
de uma rede de interconexão.
Atenção!
A arquitetura do disco compartilhado em relação à arquitetura de
memória compartilhada possui como vantagem escalar um número
maior de processadores, além de fornecer melhor grau de tolerância a
falhas, com baixo custo, pois se um nó falhar, os demais podem assumir
suas tarefas.
Implementações modernas dessa arquitetura usam uma storage area
network (SAN), que se constitui de uma rede local de alta velocidade
projetada para conectar grandes matrizes de discos redundantes (RAID)
aos processadores nos diversos nós e que aumentam a tolerância a
falhas já que fornecem caminhos redundantes para acesso aos discos.
Storage Area Network.
Nada compartilhado
21/11/2023, 07:43 Sistemas de banco de dados paralelos
https://stecine.azureedge.net/repositorio/00212ti/07593/index.html# 13/77
Em um sistema sem compartilhamento, cada nó consiste em um
processador, memória e um ou mais discos. Os nós se comunicam por
uma rede de interconexão de alta velocidade. Um nó funciona como o
servidor para os dados no disco ou discos que o nó possui. Como as
referências de disco local são atendidas por discos locais em cada nó, o
modelo sem compartilhamento supera a desvantagem de exigir que
todas as E/S passem por uma única rede de interconexão.
Sua grande desvantagem envolve os custos de comunicação e de
acesso ao disco não local, que são mais altos do que em uma
arquitetura de memória ou disco compartilhado, pois o envio de dados
envolve interação de software em ambas as extremidades.
O nada compartilhado é uma arquitetura que possui
alta escalabilidade, por isso é amplamente utilizada
para lidar com volumes de dados muito grandes.
Hierárquica
Esta arquitetura combina as características das outras três. Entenda:
Nós interconectados
Em seu nível superior, ela é
composta por nós que não
compartilham memória ou disco.
Esses nós são então
interconectados por uma rede de
comunicações, caracterizando
um sistema nada compartilhado.
Vários processadores
Cada nó, individualmente, pode
ser construído utilizando vários
processadores em um esquema
de memória compartilhada ou
disco compartilhado,
constituindo-se, assim, em uma
hierarquia.
21/11/2023, 07:43 Sistemas de banco de dados paralelos
https://stecine.azureedge.net/repositorio/00212ti/07593/index.html# 14/77
Falta pouco para atingir seus objetivos.
Vamos praticar alguns conceitos?
Questão 1
Quanto aos sistemas paralelos, podemos afirmar que:
I. Sistemas distribuídos são um tipo de sistema paralelo modelado
com base na localidade física onde ocorrerá o processamento.
II. Sistemas fortemente acoplados possuem normalmente memória
compartilhada.
III. Sistemas fortemente acoplados podem ser em rede ou
distribuído.
É verdadeiro o que se afirma em
Suporte sem
compartilhamento
O mais comum, atualmente, é
utilizar essa arquitetura na qual
cada nó oferece suporte ao
paralelismo de memória
compartilhada, com vários nós
interconectados de maneira não
compartilhada.
A apenas I.
B I e III.
C II e III.
21/11/2023, 07:43 Sistemas de banco de dados paralelos
https://stecine.azureedge.net/repositorio/00212ti/07593/index.html# 15/77
Parabéns! A alternativa D está correta.
A afirmativa I é verdadeira porque sistemas distribuídos são
classificados como paralelos fracamente acoplados modelados
para diminuir os custos de transmissão em redes de longa
distância. A afirmativa II é verdadeira, pois os sistemas paralelos
mais comuns atualmente são aqueles com processadores
multicore, nos quais existe apenas uma memória principal
compartilhada. Por fim, a afirmativa III é falsa porque sistemas em
rede e distribuídos são fracamente acoplados.
Questão 2
Quanto aos sistemas de memória compartilhada, podemos afirmar
que:
Os mais modernos interligaram osprocessadores por um sistema
de alta velocidade
Porque
Dessa forma, eliminam o gargalo de acesso aos bancos de
memória que ocorria na implementação tradicional.
Assinale a alternativa correta.
D I e II.
E I, II e III.
A
As duas afirmações estão corretas e a segunda
justifica a primeira.
B
As duas afirmações estão corretas e a segunda não
justifica a primeira.
C A primeira afirmação é correta e a segunda falsa.
21/11/2023, 07:43 Sistemas de banco de dados paralelos
https://stecine.azureedge.net/repositorio/00212ti/07593/index.html# 16/77
Parabéns! A alternativa A está correta.
A primeira afirmativa está correta, pois, nos sistemas mais
modernos, o barramento comum de acesso à memória foi
substituído por ligações da alta velocidade entre os processadores,
cada um com seu próprio banco de memória, devido ao gargalo de
acesso que existia nos sistemas tradicionais, o que torna a segunda
afirmativa verdadeira e justificativa da primeira.
2 - Fundamentos de banco de dados e consultas paralelas
Ao �nal deste módulo, você será capaz de analisar as características dos sistemas de banco
de dados paralelos e suas consultas.
Banco de dados paralelos
Neste vídeo, apresentaremos os conceitos básicos dos bancos de
dados paralelos, explicando o que são, a sua motivação e os objetivos
de uso.
D A primeira afirmação é falsa e a segunda correta.
E As duas afirmações são falsas.
21/11/2023, 07:43 Sistemas de banco de dados paralelos
https://stecine.azureedge.net/repositorio/00212ti/07593/index.html# 17/77
Motivação para banco de dados paralelos
Os sistemas atuais, particularmente os baseados na web, requerem
suporte para bancos de dados muito grandes, podendo atingir a ordem
de exabytes.
As organizações estão usando esses volumes cada vez maiores de
dados para planejar suas atividades e preços.
A demanda dos aplicativos que consultam esse volume de dados é a
grande motivação para uso de banco de dados paralelos, já que os
bancos centralizados e cliente/servidor tradicionais não conseguem
lidar de forma eficiente com a quantidade de transações solicitadas por
segundo e prover suporte à tomada de decisão.
A natureza orientada a conjuntos de consultas de banco de dados
naturalmente se presta à paralelização. Vários sistemas comerciais e de
pesquisa demonstraram o poder e a escalabilidade do processamento
paralelo de consultas.
Big data.
21/11/2023, 07:43 Sistemas de banco de dados paralelos
https://stecine.azureedge.net/repositorio/00212ti/07593/index.html# 18/77
Vale a pena notar que os programas aplicativos são normalmente
construídos de forma que possam ser executados em paralelo em
vários servidores de aplicativos, que se comunicam em uma rede com
um servidor de banco de dados, que pode ser um sistema paralelo.
O que são bancos de dados paralelos?
Motivados pela necessidade crescente de lidar, de forma eficiente, com
os enormes volumes de dados, pesquisadores resolveram combinar a
computação paralela e o gerenciamento distribuído de dados.
Os sistemas multiprocessados, sejam os fortemente acoplados ou os
fracamente acoplados formando um cluster, fornecem desempenho
muito grande e favorecem o gerenciamento de dados, permitindo a
implementação de sistemas de bancos de dados paralelos, ou seja,
sistemas de bancos de dados em computadores paralelos.
A maior parte da pesquisa sobre sistemas de banco de
dados paralelos foi realizada no contexto do modelo
relacional porque ele fornece uma boa base para o
processamento paralelo de dados.
A implementação de sistemas de bancos de dados paralelos depende
naturalmente de técnicas de bancos de dados distribuídos. No entanto,
os problemas críticos são a colocação de dados, o processamento
paralelo de consultas e o balanceamento de carga porque o número de
nós pode ser muito maior do que o número de sites em um DBMS
distribuído. Portanto, embora os princípios básicos sejam os mesmos
do SGBD distribuído, as técnicas para sistemas de banco de dados
paralelos são bem diferentes.
Objetivos do uso de banco de dados paralelos
Podemos de forma resumida afirmar que os sistemas de banco de
dados paralelos combinam gerenciamento de banco de dados e
processamento paralelo para aumentar o desempenho e a
disponibilidade.
O problema enfrentado pelo gerenciamento de banco de dados
convencional há muito é conhecido como “gargalo de E/S”, induzido
pelo alto tempo de acesso ao disco em relação ao tempo de acesso à
memória principal. A solução encontrada para o gargalo foi o aumento
da largura de banda de E/S por meio do paralelismo.
Exemplo
21/11/2023, 07:43 Sistemas de banco de dados paralelos
https://stecine.azureedge.net/repositorio/00212ti/07593/index.html# 19/77
Se um banco de dados de determinado tamanho for armazenado em um
único disco de throughput T, T será o throughput final do sistema. Por
outro lado, se o banco for particionado em N discos, cada um com o
throughput T, o throughput total do sistema será, em tese, N * T, que
poderá ser consumido praticamente sem gargalos por diversos
processadores.
Throughput
Taxa em que os dados são transmitidos. Ele também pode ser definido
como a quantidade de dados movidos com êxito de um lugar para outro em
um determinado período. A taxa de transferência é medida em bits por
segundo (bps).
Os objetivos dos sistemas de banco de dados paralelos são
semelhantes aos dos SGBDs distribuídos (desempenho, disponibilidade,
escalabilidade), mas têm foco um pouco diferente. Vamos entender
melhor!
 Alto desempenho
Refere-se ao desempenho obtido a partir de
gerenciamento paralelo de dados, otimização de
consultas e balanceamento de carga.
 Alta disponibilidade
Refere-se ao aumento de dados e a tolerância a
falhas, já que um sistema de banco de dados
paralelo consiste em muitos componentes
redundantes.
21/11/2023, 07:43 Sistemas de banco de dados paralelos
https://stecine.azureedge.net/repositorio/00212ti/07593/index.html# 20/77
Otimização de consultas
O paralelismo pode ser usado para aumentar o rendimento e diminuir os
tempos de respostas da transação. No entanto, diminuir o tempo de
resposta de uma consulta complexa por meio de paralelismo em larga
escala pode aumentar seu tempo total (por comunicação adicional) e
prejudicar a taxa de transferência como efeito colateral. Portanto, é crucial
otimizar e paralelizar as consultas para minimizar a sobrecarga do
paralelismo, por exemplo, restringindo o grau de paralelismo da consulta.
Balanceamento de carga
É a capacidade do sistema de dividir determinada carga de trabalho
igualmente entre todos os processadores. Dependendo da arquitetura do
sistema paralelo, isso pode ser obtido estaticamente por meio de um
design de banco de dados físico apropriado ou dinamicamente em tempo
de execução.
Obtendo paralelismo nas operações
de entrada e saida
Neste vídeo, mostraremos como obter paralelismo nas operações de
entrada e saída, explicando o particionamento horizontal das tabelas,
horizontal round-robin (circular), horizontal HASH e horizontal por faixa.
Veremos ainda como manter o particionamento horizontal atualizado e
outras formas.
 Escalabilidade
Refere-se, em um sistema paralelo, à maior
facilidade de acomodar tamanhos crescentes de
banco de dados ou demandas crescentes de
desempenho.
21/11/2023, 07:43 Sistemas de banco de dados paralelos
https://stecine.azureedge.net/repositorio/00212ti/07593/index.html# 21/77
Particionamento horizontal das tabelas
Uma das formas de melhorar o desempenho dos bancos de dados em
paralelo é particionar os dados de forma a permitir o paralelismo nas
operações de acesso aos dados nos diversos discos, permitindo que
cada processador acesse os dados de uma das partições. Com a
distribuição, a consulta pode ser otimizada de forma a ser executada
mais rapidamente.
A forma mais eficiente de particionamento de dados
em um ambiente de banco de dados paralelos é o
particionamento horizontal, onde as linhas das tabelas
são distribuídas entrevários discos diferentes. As
tuplas de uma relação são divididas entre muitos
discos, tal que cada tupla resida em um disco
diferente.
Existem três técnicas possíveis para realizar esse particionamento, cada
uma com suas vantagens e desvantagens. Vamos estudá-las!
Particionamento horizontal.
Particionamento horizontal round-robin (circular)
Neste caso, a tabela é percorrida em qualquer ordem e as linhas, à
medida que são lidas, são espalhadas pelos diversos discos sem
nenhum critério específico de distribuição.
Por exemplo, em uma tabela com 8 linhas e 3 discos, a linhas 1 poderia
ir para o disco 1, a 2 para o disco 2 e a 3 para o disco 3, a 4 para o disco
1 e assim sucessivamente, conforme ilustrado.
21/11/2023, 07:43 Sistemas de banco de dados paralelos
https://stecine.azureedge.net/repositorio/00212ti/07593/index.html# 22/77
Particionamento horizontal circular.
O particionamento horizontal circular garante uma distribuição uniforme
das linhas, de forma que cada disco possui aproximadamente o mesmo
número de registros da tabela, sendo particularmente eficiente quando
as consultas implicam ler a tabela inteira ou pelo menos uma grande
parte dela.
Já em buscas pontuais ou por faixa, surge a necessidade de varrer
todos os discos até encontrar o item de dados procurado.
Particionamento horizontal HASH
Nesta estratégia, os valores de uma ou mais colunas da tabela são
escolhidos para serem submetidos a uma função de HASH cujo
resultado determina o disco onde a linha será armazenada.
Confira, a seguir, a situação em que o resultado da função de HASH da
linha determina seu armazenamento.
Particionamento horizontal HASH.
21/11/2023, 07:43 Sistemas de banco de dados paralelos
https://stecine.azureedge.net/repositorio/00212ti/07593/index.html# 23/77
O particionamento horizontal HASH é muito eficiente em consultas
pontuais que realizam a pesquisa com base no valor da coluna utilizada
no particionamento. Por exemplo, se uma relação é particionada pelo
CPF do cliente, encontrar o cliente de determinado CPF é muito fácil,
pois basta aplicar a função de HASH para descobrir o disco a ser lido,
deixando os outros livres para consultas por outros processadores.
Além disso, a recuperação de toda a tabela também pode ser eficiente,
pois, se a função de HASH for bem escolhida, ela provocará uma
distribuição mais ou menos uniforme da quantidade de linhas das
tabelas entre os diversos discos.
Particionamento horizontal por faixa
Neste caso, as linhas são distribuídas com base na faixa de valores de
uma coluna, alocando os contíguos no mesmo disco.
A seguir, exemplificamos o funcionamento, no qual existem 3 faixas de
valores, uma associada a cada disco e as linhas são alocadas com base
na faixa onde se enquadram.
Particionamento horizontal por faixa.
O particionamento horizontal por faixa é adequado para consultas de
ponto e intervalo no atributo de particionamento.
Para facilitar o acesso, é mantido um vetor de particionamento que
indica em qual disco se encontra determinado valor, conforme ilustrado,
em que valores menores que 15 são mapeados para o Disco 1; valores
no intervalo [15, 40), ou seja, valores ≥ 15 mas < 40, são mapeados para
o Disco 2; valores no intervalo [40, 75), ou seja, valores ≥ 40, mas < 75,
são mapeados para o Disco 4; enquanto valores > 75 são mapeados
para o Disco 4.
21/11/2023, 07:43 Sistemas de banco de dados paralelos
https://stecine.azureedge.net/repositorio/00212ti/07593/index.html# 24/77
Vetor de particionamento.
Mantendo o particionamento horizontal atualizado
Agora, vamos considerar como o particionamento é mantido quando
uma relação é atualizada. Veja!
 Tupla inserida
Se uma tupla é inserida em uma relação, ela é
enviada para o nó apropriado com base na
estratégia de particionamento.
 Tupla excluída
Se uma tupla for excluída, sua localização é
encontrada primeiro com base no valor de seu
atributo de particionamento (para round-robin,
todas as partições são pesquisadas). A tupla é
então excluída de onde quer que esteja localizada.
 Tupla atualizada
S t l f t li d l li ã ã
21/11/2023, 07:43 Sistemas de banco de dados paralelos
https://stecine.azureedge.net/repositorio/00212ti/07593/index.html# 25/77
Round-robin
É um algoritmo escalonador de tarefas (processos) que consiste em dividir
o tempo de uso da CPU (central processing unit).
No entanto, se o particionamento por intervalo ou particionamento por
HASH for usado e a atualização afetar um atributo, o local da tupla
poderá ser afetado. Nesse caso:
1
A tupla original é
excluída do local
original.
2
A tupla atualizada é
inserida e enviada ao nó
apropriado com base na
estratégia de
particionamento
utilizada.
Outras formas de particionamento
Há ainda outros dois tipos de particionamento. Vamos entendê-los!
Vertical
Consiste em cumprir o objetivo de gerar tabelas menores que a
original em cada disco, ao passo que as colunas de uma tabela
se particionam entre os discos, onde cada campo reside em um
ou mais discos para alcançar o fim proposto.
Misto
Consiste em realizar um particionamento horizontal seguido de
um vertical ou de um vertical seguido de um horizontal.
Se uma tupla for atualizada, sua localização não
será afetada caso o particionamento round-robin
seja usado ou se a atualização não afetar um
atributo de particionamento.

21/11/2023, 07:43 Sistemas de banco de dados paralelos
https://stecine.azureedge.net/repositorio/00212ti/07593/index.html# 26/77
O particionamento vertical pode ser visto na tabela adiante. Confira!
Particionamento vertical.
Apesar de ser possível realizar esse tipo de particionamento em um
banco paralelo, na prática, ele não é muito utilizado.
Fundamentos de consultas paralelas
Neste vídeo, apresentaremos os fundamentos de consultas paralelas,
mostrando a visão geral do paralelismo em consultas, bem como
paralelismo inter e intraconsulta.
Visão geral do paralelismo em consultas
Para obtermos o paralelismo em um banco de dados podemos realizar
o particionamento das tabelas em vários discos, paralelizando a entrada
e saída, diminuindo o gargalo existente nos bancos de dados
tradicionais.
Este particionamento, entretanto, não é o único recurso, já que podemos
também transformar as consultas a serem executadas em consultas
paralelas.
Podemos definir consultas paralelas como aquelas
executadas utilizando algum tipo de recurso que
permita serem realizadas de forma mais rápida,
21/11/2023, 07:43 Sistemas de banco de dados paralelos
https://stecine.azureedge.net/repositorio/00212ti/07593/index.html# 27/77
individualmente ou no seu conjunto, admitindo que
mais transações aconteçam no mesmo intervalo de
tempo.
Existem duas formas de se explorar o paralelismo em consultas de
banco de dados, veja:
Interconsulta
Trata-se da execução de várias consultas em paralelo umas com as
outras nos diversos nós.
Intraconsulta
Trata-se da implicação do processamento de diferentes partes de uma
única consulta em paralelo em vários nós.
Paralelismo interconsulta
O esquema interconsulta é fundamental para obter escalabilidade em
sistemas de processamento de transações, pois permite que várias
transações sejam executadas em paralelo, considerando que cada
transação individual seria executada de forma mais rápida se sua
realização fosse isolada. O paralelismo interconsulta, portanto, aumenta
o número de transações que o sistema pode executar por segundo.
O esquema interconsulta é a forma mais fácil de se obter o paralelismo
entre as consultas em um sistema de banco de dados paralelos,
particularmente nos sistemas de memória compartilhada. Os SGBDs
projetados para sistemas monoprocessados podem ser utilizados em
sistemas de memória compartilhada praticamente sem adaptações, já
que eles suportam sem problema o processamento concorrente de
transações. Você pode então se perguntar:
Como assim o acesso
concorrente permite um
paralelismo?

21/11/2023, 07:43 Sistemas de banco de dadosparalelos
https://stecine.azureedge.net/repositorio/00212ti/07593/index.html# 28/77
A situação se complica quando o sistema paralelo é do tipo nada
compartilhado ou disco compartilhado, pois, como cada processador
acessa os dados na memória a ele associada, é necessário que seja
garantida a coerência entre os dados comuns a serem acessados pelas
diversas transações em paralelo nos vários processadores.
Para poder se estabelecer essa coerência, o sistema deve providenciar
bloqueios e log, de forma a garantir que, se uma transação paralela
gerar alterações nos dados comuns a outras transações, estas sejam
devidamente propagadas de forma a não gerar anomalias de
transações. Esse problema é denominado problema de coerência de
cache, e diversos protocolos foram desenvolvidos para a sua solução.
Em sistemas de discos compartilhados, esses protocolos funcionam da
seguinte forma:
1. Antes do acesso a um item de dados, uma transação deve bloqueá-
lo de forma compartilhada ou exclusiva, dependendo de sua
necessidade.
2. Após obter o bloqueio, a transação realiza a leitura do item de
dados com seu valor mais recente no disco compartilhado.
3. Antes de liberar o item de dados do bloqueio, se a transação o
alterou, ela realiza a sua descarga para o disco, de forma que as
novas transações leiam o dado atualizado.
Em sistemas com nada compartilhado, os protocolos de disco
compartilhado devem ser estendidos da seguinte forma:
Resposta
O que acontece é que, nos bancos
tradicionais, a execução de transações
concorrentes é controlada a partir da
serialização, para evitar anomalias, sendo
que os dados estão na memória comum dos
sistemas, podendo ser aplicado em um
sistema paralelo com memória
compartilhada onde os mesmos dados são
acessados pelos diversos processadores.
21/11/2023, 07:43 Sistemas de banco de dados paralelos
https://stecine.azureedge.net/repositorio/00212ti/07593/index.html# 29/77
1. Cada item de dado deve possuir um processador home (P) e é
armazenado no disco D.
2. Consultas sendo executadas em outros processadores solicitam a
P a cópia mais recente do item de dados.
3. P obtém a cópia mais recente e a envia ao solicitante, realizando o
bloqueio mais adequado para o item.
4. Ao ser informado pelo solicitante que ocorreu alguma alteração, P
atualiza o disco e libera o bloqueio.
Paralelismo intraconsulta
O esquema intraconsulta acelera a execução de cada consulta individual
a partir do paralelismo obtido em suas operações internas.
Como a execução de uma única consulta envolve várias operações,
como seleções, junções, agregações etc., a possibilidade de efetivar as
operações em paralelo nos diversos nós diminui o tempo de resposta
total, gerando o chamado paralelismo intraoperações.
Outra fonte de paralelismo na avaliação de uma consulta é a árvore de
operadores que pode conter várias operações. Podemos paralelizar a
avaliação da árvore de operadores analisando em paralelo algumas das
operações que não dependem umas das outras. Além disso, podemos
canalizar a saída de uma operação para outra operação.
Árvore de operações.
21/11/2023, 07:43 Sistemas de banco de dados paralelos
https://stecine.azureedge.net/repositorio/00212ti/07593/index.html# 30/77
As duas operações podem ser executadas em paralelo em nós
separados, uma gerando uma saída que é consumida pela outra, mesmo
enquanto é gerada. Ambas as formas de paralelismo são exemplos de
paralelismo de interoperação.
Em resumo, a execução de uma única consulta pode ser paralelizada de
duas maneiras diferentes, entenda:
Paralelismo intraoperações
A partir das implementações paralelas de operações relacionais
comuns, como: classificação, junção, agregação e outras.
Paralelismo interoperações
A partir da sincronização e cooperação das diversas operações de uma
mesma consulta.
As duas formas de paralelismo são complementares e podem ser
usadas simultaneamente em uma consulta. Como o número de
operações em uma consulta típica é pequeno, comparado ao número de
linhas processadas por cada operação, o paralelismo intraoperações
pode escalar melhor com o aumento do paralelismo. No entanto, o
paralelismo interoperacional também é importante, especialmente em
sistemas de memória compartilhada com múltiplos núcleos.
Falta pouco para atingir seus objetivos.
Vamos praticar alguns conceitos?
Questão 1
A imagem mostra o conteúdo de uma tabela.
21/11/2023, 07:43 Sistemas de banco de dados paralelos
https://stecine.azureedge.net/repositorio/00212ti/07593/index.html# 31/77
Sabendo-se que a tabela foi particionada horizontalmente entre
dois discos, tendo o primeiro recebido os valores ímpares de C2 e o
segundo os valores pares de C2, podemos afirmar que
(1) O tipo de particionamento foi o particionamento horizontal por
faixa.
Porque
(2) No particionamento horizontal por faixa o valor de uma coluna é
utilizado para determinar o disco de destino.
Assinale a alternativa correta.
21/11/2023, 07:43 Sistemas de banco de dados paralelos
https://stecine.azureedge.net/repositorio/00212ti/07593/index.html# 32/77
Parabéns! A alternativa D está correta.
No particionamento por faixa, o valor de uma coluna determina o
disco de destino, mas esse não foi o caso no exemplo. O que
ocorreu é que linhas foram distribuídas utilizando o
particionamento circular.
Questão 2
Quanto aos objetivos do uso de bancos de dados paralelos,
podemos afirmar que:
I. Eles foram implementados para minimizar o gargalo de E/S dos
sistemas centralizados.
II. O balanceamento de carga visa obter a escalabilidade.
III. A alta disponibilidade é garantida pela redundância existente no
sistema.
IV. A otimização da consulta permite menor tempo de reasposta às
solicitações.
São verdadeiras as afirmativas:
A As duas afirmações estão corretas e a segunda
justifica a primeira.
B
As duas afirmações estão corretas e a segunda não
justifica a primeira.
C A primeira afirmação é correta e a segunda falsa.
D A primeira afirmação é falsa e a segunda correta.
E As duas afirmações são falsas.
A I, II e III.
21/11/2023, 07:43 Sistemas de banco de dados paralelos
https://stecine.azureedge.net/repositorio/00212ti/07593/index.html# 33/77
Parabéns! A alternativa C está correta.
A afirmativa II está errada porque o balanceamento de carga
contribui com o alto desempenho, não com a escalabilidade. As
demais afirmativas estão corretas.
3 - Execução de consultas paralelas e balanceamento de carga
Ao �nal deste módulo, você será capaz de identi�car as técnicas utilizadas na execução de
consultas paralelas e no balanceamento de carga entre os nós.
Paralelismo intraoperações
B II, III e IV.
C I, III e IV.
D III e IV.
E I, II, III e IV.
21/11/2023, 07:43 Sistemas de banco de dados paralelos
https://stecine.azureedge.net/repositorio/00212ti/07593/index.html# 34/77
Neste vídeo, apresentaremos o paralelismo intraoperações, mostrando a
ordenação paralela, a junção paralela e outras operações relacionais.
Ordenação paralela
Considere que uma tabela foi particionada em vários discos, a partir dos
valores de uma coluna, utilizando a técnica da faixa de intervalo, sendo
que uma consulta deseja listar essa tabela ordenada pela coluna do
particionamento.
A obtenção do paralelismo aqui seria trivial, já que a operação de
classificação seria implementada classificando cada partição em
paralelo e, em seguida, concatenando as partições classificadas para
obter o resultado ordenado final.
Como as linhas foram particionadas em N discos, o tempo necessário
para ler e ordenar toda a tabela é reduzido por um fator correspondente
ao número de discos no acesso paralelo. Já se a coluna a utilizada na
ordenação não corresponder à utilizada no particionamento da tabela,
duas estratégias poderiam ser utilizadas, são elas:

Classi�cação por particionamento de
intervalo

Sort-merge externo paralelo
Classi�cação por particionamento de intervalo
Esta classificação funciona da seguinte forma:
21/11/2023, 07:43Sistemas de banco de dados paralelos
https://stecine.azureedge.net/repositorio/00212ti/07593/index.html# 35/77
Classificação por particionamento de intervalo.
Vamos entender a classificação:
1. A tabela é particionada por faixa de intervalo, para isso cada nó do
sistema realiza a leitura das linhas da tabela que residem em seu
disco, analisa o valor da coluna de particionamento e as envia para
o nó que ficará responsável por realizar a ordenação do intervalo.
2. Cada partição é ordenada individualmente pelo responsável pelo
intervalo após ter recebido as linhas enviadas pelos outros nós.
3. Após terminar a ordenação, o nó envia o intervalo ordenado para os
demais processadores.
4. Os processadores agregam as partições ordenadas recebidas e
produzem a resposta à consulta.
Sort-merge externo paralelo
Esta estratégia funciona da seguinte forma:
21/11/2023, 07:43 Sistemas de banco de dados paralelos
https://stecine.azureedge.net/repositorio/00212ti/07593/index.html# 36/77
Classificação Sort-Merge externo paralelo.
Vamos entender a estratégia:
1. Cada nó classifica as linhas da tabela existentes em seu disco, ou
seja, em sua partição.
2. Após a ordenação, os nós enviam a sua partição ordenada para os
outros processadores.
3. Os processadores, ao receberam as partições dos demais,
executam então uma operação tradicional de merge, obtendo o
resultado da consulta.
Junção paralela
Os algoritmos de junção paralela tentam dividir as tuplas das relações
de entrada em vários nós. Cada nó, então, calcula parte da junção
localmente. Em seguida, o sistema coleta os resultados de cada nó para
produzir o resultado. Dividir as tuplas depende do algoritmo de junção.
Vejamos, a seguir, as possibilidades.
Junção particionada
Quando realizamos uma junção em que a condição de igualdade é
observada, como “matricula=codigofuncionario”, a junção particionada
pode ser utilizada.
As tabelas envolvidas na junção devem ser particionadas por HASH ou
faixa de intervalo, utilizando as colunas envolvidas na condição de
junção. O algoritmo de junção segue os seguintes passos:
21/11/2023, 07:43 Sistemas de banco de dados paralelos
https://stecine.azureedge.net/repositorio/00212ti/07593/index.html# 37/77
Junção particionada.
Vamos entender os passos:
1. Cada processador percorre as linhas das tabelas envolvidas na
junção armazenadas em seus discos, aplica a função de
particionamento e envia as linhas para o nó responsável pelo
processamento da partição.
2. Os nós, após receberam as linhas enviadas pelos demais, realizam
localmente a junção das partições das duas tabelas.
Junção fragmentar e replicar
A junção particionada não pode ser aplicada em junções se a condição
for de desigualdade, pois é possível que todas as linhas de uma tabela
se juntem a algumas da outra tabela, o que inviabiliza realizar o
particionamento.
Esta técnica pode ser implementada de diversas formas, sendo que a
mais simples ocorre da seguinte maneira:
Junção fragmentar e replicar.
Vamos entender a técnica:
21/11/2023, 07:43 Sistemas de banco de dados paralelos
https://stecine.azureedge.net/repositorio/00212ti/07593/index.html# 38/77
1. Inicialmente, é realizado o particionamento de uma das tabelas por
qualquer critério envolvendo a coluna de junção.
2. A segunda tabela é replicada em todos os nós.
3. Cada processador executa então a junção entre a sua partição e a
tabela replicada.
Outras operações relacionais
A execução de outras operações relacionais também pode ser
paralelizada. Confira!
 Seleção
Neste caso, uma tabela pode ser particionada pelas
colunas utilizadas nas condições de seleção,
fazendo com que o acesso seja realizado a um
único nó ou eventualmente nos que atendem à
condição.
 Eliminação duplicada
Neste caso, duplicatas podem ser eliminadas por
classificação, sendo que qualquer uma das
técnicas de classificação paralela pode ser utilizada
e otimizada para eliminar duplicatas assim que
aparecerem durante a classificação. Também
podemos paralelizar a eliminação de duplicatas
particionando as tuplas (por intervalo ou
particionamento de HASH) e eliminando duplicatas
localmente em cada nó.
 Projeção
Neste caso, a projeção sem eliminação de
duplicatas pode ser executada à medida que as
tuplas são lidas do disco em paralelo. Se as
duplicatas devem ser eliminadas, qualquer uma das
técnicas descritas pode ser usada.
21/11/2023, 07:43 Sistemas de banco de dados paralelos
https://stecine.azureedge.net/repositorio/00212ti/07593/index.html# 39/77
Paralelismo interoperações
Neste vídeo, apresentaremos o paralelismo interoperações, mostrando o
paralelismo pipeline e também o independente.
Paralelismo pipeline
Parte do princípio de utilização dos resultados parciais de uma
operação como entrada para a seguinte sem esperar o final da primeira
operação. Vamos ver um exemplo!
Considere o seguinte comando SQL:
SQL 
 Agregação
Neste caso, podemos paralelizar a operação
particionando a relação nos atributos de
agrupamento e, em seguida, calculando os valores
agregados localmente em cada nó. Tanto o
particionamento de HASH quanto o
particionamento de intervalo podem ser usados.
21/11/2023, 07:43 Sistemas de banco de dados paralelos
https://stecine.azureedge.net/repositorio/00212ti/07593/index.html# 40/77
Uma execução serial do comando seria:
1. Filtrar a tabela de contas correntes selecionando apenas as linhas
com saldo maior que 2500.
2. Realizar a junção entre as contas com saldo maior que 2500 com
os clientes que as possuem.
3. Projetar o nome dos clientes a que as contas se referem.
No esquema de pipeline, à medida que os dados das contas com saldo
maior que 2500 são produzidos, eles já são passados para a operação
de junção que determina o proprietário da conta. A seguir, os dados do
proprietário são passados para a operação de projeção para separar o
seu nome.
Note que esse esquema de pipeline é naturalmente paralelizável, pois
enquanto em um sistema monoprocessado as operações teriam que ir
se sucedendo na CPU, o que não traria grande vantagem para o tempo
de execução em relação à execução sequencial, em um sistema
paralelo cada operação poderia ser realizada em um processador
diferente, o que certamente tornaria o tempo de resposta menor.
Paralelismo independente
As operações em uma expressão de consulta que não dependem umas
das outras podem ser executadas em paralelo. Essa forma de
paralelismo é chamada de paralelismo independente.
Considere a seguinte consulta:
SQL 
Uma possível solução seria executar em paralelo a junção de T1 com T2,
gerando uma tabela intermediária T12, e a de T3 com T4, gerando a
tabela intermediária T34, e depois realizar a junção de T12 com T34.
Note que as duas junções são independentes entre si e, portanto,
podem ser paralelizadas por paralelismo independente. Observe que o
21/11/2023, 07:43 Sistemas de banco de dados paralelos
https://stecine.azureedge.net/repositorio/00212ti/07593/index.html# 41/77
cálculo da junção final depende dos resultados das duas primeiras
junções, portanto, não pode ser feito usando paralelismo independente.
Otimização e execução de consultas
paralelas
Neste vídeo, apresentaremos a otimização e execução de consultas
paralelas, mostrando o modelo de execução com operador de troca e a
otimização de consulta paralela.
Modelo de execução com operador de troca
Este modelo divide o processamento em duas fases, veja:

Particionamento de dados com operador de
troca

Execução de operações de dados puramente
locais
O operador de troca realiza um novo particionamento dos dados a partir
das necessidades da consulta, sendo o único responsável pelo
intercâmbio de dados entre os nós. Todas as outras operações são
realizadas em dados locais de forma similar ao que ocorre em bancos
centralizados.
O operador de troca possui dois componentes: um esquema para
particionar dados de saída, aplicado em cada nó de origem, e um
esquema para mesclar dados deentrada, aplicado em cada nó de
destino.
21/11/2023, 07:43 Sistemas de banco de dados paralelos
https://stecine.azureedge.net/repositorio/00212ti/07593/index.html# 42/77
Ilustramos o processo denominando de partição, o esquema de origem,
de execução e de destino. O operador de troca pode particionar dados
de várias maneiras. Veja!
Operador de troca.
Vamos entender o processo de troca:
1. Por particionamento de HASH em um conjunto especificado de
atributos.
2. Por intervalo de particionamento em um conjunto especificado de
atributos.
3. Ao replicar os dados de entrada em todos os nós, referido como
difusão.
4. No envio de todos os dados para um único nó.
Observe também que a entrada para o operador de troca pode estar em
um único site (referido como não particionado) ou já particionado em
vários sites. O reparticionamento de dados já particionados resulta em
cada nó de destino recebendo dados de várias fontes nós. Cada nó de
destino recebe os itens de dados dos nós de origem e executa as
operações como se os dados fossem locais. Todas as formas de obter
paralelismo vistas até agora podem ser modeladas como uma
sequência de operações de troca e operadores locais, em cada nó, que
desconhecem completamente o paralelismo.
Otimização de consulta paralela
Exibe semelhanças com o processamento de consultas distribuídas, no
entanto, concentra-se muito mais em aproveitar o paralelismo
21/11/2023, 07:43 Sistemas de banco de dados paralelos
https://stecine.azureedge.net/repositorio/00212ti/07593/index.html# 43/77
intraoperações e interoperações.
Um otimizador de consulta paralela possui três componentes, veja:

Espaço de pesquisa

Modelo de custo

Estratégia de pesquisa
Vamos conhecê-los melhor!
Espaço de pesquisa
Os planos de execução são normalmente representados por meio de
árvores de operadores que definem a ordem de execução das
operações. Essas árvores são normalmente anotadas indicando
aspectos adicionais de execução, como o algoritmo que será utilizado
naquela operação, sendo que no caso específico dos bancos paralelos
deve ser anotado também o uso do pipeline. Vejamos alguns exemplos.
Ilustramos as árvores de execução de operações sem pipeline, onde a
relação temporária Temp1 deve ser completamente produzida e a tabela
HASH em Build2 deve ser construída antes que o operar possa começar
a consumir R3, o mesmo ocorrendo para Temp2, construir e operar na
terceira sequência. Assim, a execução sem pipeline engloba quatro
fases consecutivas, observe:
21/11/2023, 07:43 Sistemas de banco de dados paralelos
https://stecine.azureedge.net/repositorio/00212ti/07593/index.html# 44/77
Árvore de execução sem pipeline.
Vamos entender as fases:
1. Construir a tabela HASH de R1.
2. Operar a tabela HASH de R1 com R2 gerando a tabela Temp1.
3. Construir a tabela HASH de Temp1 e operar com R3 gerando
Temp2.
4. Construir a tabela HASH de Temp2 e operar com R4 produzindo o
resultado.
A ilustração seguinte mostra as mesmas operações sendo executadas
em pipeline, que pode ocorrer em duas fases se houver memória
suficiente disponível para criar as tabelas de HASH. Confira!
21/11/2023, 07:43 Sistemas de banco de dados paralelos
https://stecine.azureedge.net/repositorio/00212ti/07593/index.html# 45/77
Árvore de execução em pipeline.
Vamos entender as fases:
1. Criar as tabelas HASH para R1 R3 e R4.
2. Executar as funções “operar no pipeline”.
Modelo de custo
Realiza a estimativa do custo de determinado plano de execução e
engloba dois aspectos. Vamos conferir!
Aspecto em que a estimativa de custo é baseada nos custos de
transmissão dos dados entre os nós, do impacto do operador de
troca ao realizar um novo particionamento dos dados, do
consumo de memória, do tempo de processamento e do tempo
de acesso aos discos.
Aspecto que se constitui pelas funções que calculam o custo
dos diversos algoritmos utilizados, como: junção, ordenação etc.
Dependente da arquitetura 
Independente da arquitetura 
21/11/2023, 07:43 Sistemas de banco de dados paralelos
https://stecine.azureedge.net/repositorio/00212ti/07593/index.html# 46/77
O tempo total de um plano pode ser calculado simplesmente
adicionando todos os componentes de custo dependente da arquitetura
com os tempos previstos para os algoritmos das operações mais os
tempos referentes ao pipeline.
O tempo de resposta do plano p, programado em fases (cada uma
denotada por ph), é calculado da seguinte forma:
Valduriez, 2020, p. 373.
Em que:
Op denota um operador.
respTime (Op) é o tempo de resposta de Op.
pipe_delay (Op) é o período de espera de Op necessário para a
entrega das primeiras tuplas de resultado (é igual a 0 se as relações
de entrada de Op são armazenadas).
store_delay(ph) é o tempo necessário para armazenar o resultado
de saída da fase ph (é igual a 0 se ph for a última fase, assumindo
que os resultados são entregues assim que são produzidos).
Para estimar o custo de um plano de execução, o modelo de custo usa
estatísticas de banco de dados e informações de organização, como
cardinalidades de relação e particionamento, como na otimização de
consulta distribuída.
Estratégia de busca
Esta estratégia não precisa ser diferente da otimização de consulta
centralizada ou distribuída. No entanto, o espaço de busca tende a ser
muito maior porque há mais parâmetros que impactam os planos de
execução paralela, em particular, o pipeline.
RT(p) = ∑
ph∈p
(maxOp∈ph (r espTime(op) + pipe_delay(Op)) + store_delay(ph))
21/11/2023, 07:43 Sistemas de banco de dados paralelos
https://stecine.azureedge.net/repositorio/00212ti/07593/index.html# 47/77
Balanceamento de carga
Neste vídeo, apresentaremos o balanceamento de carga, mostrando o
balanceamento de carga intraoperações, interoperações e intraconsulta.
Balanceamento de carga intraoperações
Depende do grau de paralelismo e da alocação de processadores para o
operador. Essa alocação tem que lidar com desvios de eficiência que
podem ocorrer em tempo de execução, o que leva à utilização de dois
tipos de técnicas de alocação. Vamos entendê-las!
Técnicas adaptativas
A ideia principal é decidir estaticamente sobre uma alocação inicial dos
processadores para o operador (usando um modelo de custo) e, em
tempo de execução, adaptar-se ao desvio usando a realocação de
carga.
Técnicas especializadas
Os algoritmos de consultas paralela podem ser especializados para lidar
com desvios. Uma abordagem é usar vários algoritmos de execução,
cada um especializado em um grau diferente de distorção, e determinar,
no tempo de execução, qual algoritmo é o melhor.
Balanceamento de carga interoperações
Para obter um bom balanceamento de carga no nível interoperador, é
necessário escolher, para cada operador, quantos e quais processadores
atribuir para sua execução. Isso deve ser feito considerando o
paralelismo do pipeline.
Em um sistema nada compartilhado, o balanceamento
é mais difícil, sendo normalmente realizado
dinamicamente (logo antes da execução) o grau de
21/11/2023, 07:43 Sistemas de banco de dados paralelos
https://stecine.azureedge.net/repositorio/00212ti/07593/index.html# 48/77
paralelismo e a localização dos processadores para
cada operador.
Já em sistemas de disco compartilhado ou de memória compartilhada,
há mais flexibilidade, pois o fato de todos os processadores terem
acesso igual aos discos permite que qualquer um deles seja alocado
para qualquer operador. Em particular, um processador pode ser
alocado a todos os operadores na mesma cadeia de pipeline, portanto,
sem paralelismo entre operadores. No entanto, o paralelismo
interoperador é útil para a execução independente.
Balanceamento de carga intraconsulta
Deve combinar o paralelismo intraoperações e interoperações, o que,
dependendo da arquitetura do sistema, pode ser bem difícil de se
conseguir. Uma solução geral para o problema é o modelo de execução
chamado dynamic processing (DP), cuja ideia fundamental é que a
consulta seja decompostaem unidades independentes de
processamento sequencial, cada uma das quais pode ser realizada por
qualquer processador.
O modelo de execução do DP é baseado em alguns conceitos. Vejamos!
 Ativações
Referem-se a uma unidade sequencial de trabalho.
Como qualquer ativação pode ser executada por
qualquer thread (por qualquer processador), as
ativações devem ser independentes e referenciar
todas as informações necessárias para sua
execução, ou seja, o código a ser executado e os
dados a serem processados. Dois tipos de
ativações podem ser distinguidos:
Ativações de gatilho: Usadas para iniciar a
execução de um operador.
Ativações de dados: Descrevem uma tupla
produzida no modo pipeline.
 Filas de ativação
R f à i t ã d ti õ d d d
21/11/2023, 07:43 Sistemas de banco de dados paralelos
https://stecine.azureedge.net/repositorio/00212ti/07593/index.html# 49/77
Falta pouco para atingir seus objetivos.
Vamos praticar alguns conceitos?
Questão 1
Considere as imagens:
Elas mostram a execução das mesmas operações com e sem
pipeline. Quanto a esses planos de execução, podemos afirmar que:
A execução com pipeline produzirá um tempo de resposta menor se
o sistema possuir muita memória disponível.
Referem-se à movimentação de ativações de dados
ao longo das cadeias de pipeline, que é feita
usando filas de ativação associadas aos
operadores. Essas filas são utilizadas para
ativações de gatilhos entregando aos operadores
os dados a serem utilizados.
 Threads
Referem-se à ideia de alocar apenas um thread por
consulta em um processador e permitir que ela
consuma ativações de qualquer uma das filas
disponíveis em sua memória.
21/11/2023, 07:43 Sistemas de banco de dados paralelos
https://stecine.azureedge.net/repositorio/00212ti/07593/index.html# 50/77
Porque
Somente dessa forma as tabelas HASH podem ser geradas em
paralelo, permitindo a execução em pipeline.
Assinale a alternativa correta.
Parabéns! A alternativa A está correta.
Para que a execução em pipeline seja possível, a função operar
deve poder receber da função HASH em cada estágio os valores
intermediários produzidos junto com os valores intermediários
produzidos por operar no estágio anterior. Para que isso ocorra, o
sistema tem que possuir memória suficiente para as operações em
paralelo, o que faz das duas afirmativas verdadeiras e a segunda
justificando a primeira.
Questão 2
Entre as técnicas utilizadas no paralelismo intraconsulta, temos o
pipeline. Quanto a essa técnica, podemos afirmar que:
Ela agiliza o processamento da consulta a partir das técnicas de
intraoperações.
Porque
A
As duas afirmações estão corretas e a segunda
justifica a primeira.
B
As duas afirmações estão corretas e a segunda não
justifica a primeira.
C A primeira afirmação é correta e a segunda falsa.
D A primeira afirmação é falsa e a segunda correta.
E As duas afirmações são falsas.
21/11/2023, 07:43 Sistemas de banco de dados paralelos
https://stecine.azureedge.net/repositorio/00212ti/07593/index.html# 51/77
O pipeline permite que uma segunda operação comece a ser
executada antes que a primeira operação termine.
Assinale a alternativa correta.
Parabéns! A alternativa D está correta.
A primeira afirmativa é falsa porque o pipeline é uma técnica
interoperações, não intraoperações, já a segunda afirmativa é
verdadeira.
A
As duas afirmações estão corretas e a segunda
justifica a primeira.
B
As duas afirmações estão corretas e a segunda não
justifica a primeira.
C A primeira afirmação é correta e a segunda falsa.
D A primeira afirmação é falsa e a segunda correta.
E As duas afirmações são falsas.
21/11/2023, 07:43 Sistemas de banco de dados paralelos
https://stecine.azureedge.net/repositorio/00212ti/07593/index.html# 52/77
4 - Bancos de dados em cluster
Ao �nal deste módulo, você será capaz de criar e con�gurar um cluster de banco de dados
PostgreSQL.
Cluster e grid
Neste vídeo, apresentaremos os principais conceitos relacionados a
cluster e grid, mostrando as motivações para seu uso, bem como as
suas diferenças e os tipos de cluster.
Motivações para uso de cluster e grid
As atividades de processamento de dados de grandes empresas e
governos aumentaram muito ao longo dos anos. Duas soluções têm
sido adotadas no atendimento dessa demanda, são elas:
Utilizar computadores com grande poder de processamento,
mainframes e supercomputadores.
Utilizar computação paralela.
21/11/2023, 07:43 Sistemas de banco de dados paralelos
https://stecine.azureedge.net/repositorio/00212ti/07593/index.html# 53/77
A primeira solução tem como principal desvantagem a baixa
escalabilidade, pois, quando as necessidades de processamento
aumentam, a única solução possível é fazer um upgrade no
equipamento, o que acarreta normalmente um dispêndio grande de
recursos financeiros além do que a melhoria do equipamento
normalmente acarreta a geração de uma grande capacidade ociosa
inicial.
Gráfico: Evolução da carga de processamento e a utilização da computação de grande porte.
A segunda solução (utilizar sistemas paralelos) tem sido implementada
basicamente com a utilização de cluster ou grid de computadores, que
associam máquinas de menor porte de forma a agregar capacidade de
processamento ao obter melhor escalabilidade e menor desperdício de
capacidade computacional.
Gráfico: Evolução da carga de processamento e a utilização da computação paralela.
As duas soluções apresentam similaridades, como poder de
processamento e disponibilidade elevados, suporte a milhares de
transações por segundo, administração dos ambientes computacionais
complexa e grande capacidade de armazenamento. Porém, a
21/11/2023, 07:43 Sistemas de banco de dados paralelos
https://stecine.azureedge.net/repositorio/00212ti/07593/index.html# 54/77
computação de grande porte e a paralela possuem grandes diferenças,
veja a comparação (MUSSI, 2013):
Grande porte
Alto custo de
implantação.
Dependência de
fornecedor único.
Utilização de
hardware
específico.
Alto custo de
manutenção.
Dificuldade de
redimensionamento
do ambiente.
Utilização parcial
da capacidade de
processamento.
Grande custo total
de propriedade.
Tecnologia
estabelecida no
mercado.
Cluster e grid
Baixo custo de
implantação.
Independência de
fornecedores –
facilidade de
negociação.
Utilização de
hardware comum –
padrão PC.
Baixo custo de
manutenção.
Facilidade de
redimensionamento
do ambiente.
Maximização da
capacidade de
processamento.
Baixo custo total de
propriedade.
Tecnologia
inovadora.
Note que, quando falamos aqui de computação paralela, estamos
usando os termos cluster e grid. Mas eles são a mesma coisa?
Diferenças entre cluster e grid
Cluster e grid são muitas vezes vistos como sinônimos: um sistema
paralelo composto por máquinas e interligado por um sistema de
comunicação, normalmente uma rede de computadores. Eles realmente
correspondem a essa definição, pois possuem como característica
apresentar para o usuário um sistema que se comporta como se fosse
centralizado e que atende às suas solicitações.

21/11/2023, 07:43 Sistemas de banco de dados paralelos
https://stecine.azureedge.net/repositorio/00212ti/07593/index.html# 55/77
Em ambos os casos aparece a figura do middleware, que corresponde a
uma camada de software localizada entre os aplicativos e a
infraestrutura dos nós, de forma a intermediar o diálogo entre os
aplicativos e os servidores, implementando a transparência do sistema
paralelo e dando ao usuário a ilusão de estar acessando um sistema
centralizado. Observe!
Middleware.
Quando falamos em cluster, temos como principal característica o fato
de ele ser constituído por um conjunto homogêneo de máquinas, tanto
do ponto de vista de hardware como de software, ou seja, por exemplo,
um cluster de banco de dados pode ser formado por máquinas que
seguem a arquitetura X86, SO Linux e rodando PostgreSQL interligadas
por uma rede local.
Em sua configuração mais comum, um clusteré
formado por um nó mestre, ou seja, a máquina
principal que gerencia o funcionamento da aplicação
entre todos os nós.
O nó mestre faz a interface com o usuário, aloca tarefas e administra a
fila de tarefas, normalmente executando um middleware.
Ilustramos um cluster, que se encontra dentro do círculo pontilhado.
Confira!
21/11/2023, 07:43 Sistemas de banco de dados paralelos
https://stecine.azureedge.net/repositorio/00212ti/07593/index.html# 56/77
Cluster.
Você poderia perguntar: “Mas grid não é mesma coisa?”
Não exatamente. Como citado, cluster tem uma característica de
homogeneidade, em termos de hardware e software, sendo criado para
executar alguma tarefa específica que, em geral, necessita de alto poder
de processamento, por exemplo, implementar um banco de dados
paralelo.
Já os grids possuem abordagem heterogênea, possuem muita variação
de hardware e software, executam tarefas diferentes em seus nós,
apesar de relacionadas entre si, correspondendo, muitas vezes, a uma
interligação de diversos clusters, como o CineGrid, que trabalha no
desenvolvimento de ferramentas de colaboração.
Tipos de cluster
Os clusters são criados com finalidades diferentes, sendo justamente o
que determina o seu tipo. Vejamos então os principais tipos de cluster.
Vamos lá?
Cluster de alto desempenho
Visa obter uma grande capacidade de processamento, com um
volume alto de operações por segundo.
Cluster de alta disponibilidade
21/11/2023, 07:43 Sistemas de banco de dados paralelos
https://stecine.azureedge.net/repositorio/00212ti/07593/index.html# 57/77
Visa prover tolerância a falhas, mantendo o sistema ativo por
longos períodos, com plena capacidade de processamento,
conseguindo automaticamente identificar e corrigir erros.
Cluster para balanceamento de carga
Visa controlar a distribuição do processamento entre diversas
máquinas de forma que nenhuma fique ociosa ou
sobrecarregada. Ele realiza monitoramento constante da
comunicação e nos mecanismos de redundância a fim de
prevenir a ocorrência de falhas.
Banco de dados em cluster
Neste vídeo, mostraremos os principais conceitos relacionados ao
banco de dados em cluster. Traremos também uma visão geral desse
banco de dados, os princípios de processamento de transações e as
técnicas utilizadas.
Visão geral de banco de dados em cluster
A camada de banco de dados é crítica, já que uma falha,
indisponibilidade ou problemas de integridade podem gerar a
indisponibilidade de um sistema inteiro e até mesmo a perda de dados.
Por conta dessa característica, o uso de banco de dados paralelos em
cluster vem sendo muito utilizado.
Nessa solução, o gerenciamento de dados paralelo ocorre utilizando um
SGBD de prateleira, normalmente desenvolvido para uso centralizado,
em que o banco local não tem consciência da existência de um cluster,
sendo os recursos de paralelismo no gerenciamento implementados por
meio de middleware. Essa abordagem foi adotada com sucesso nos
clusters MySQL ou PostgreSQL.
21/11/2023, 07:43 Sistemas de banco de dados paralelos
https://stecine.azureedge.net/repositorio/00212ti/07593/index.html# 58/77
Temos alguns cenários em que a tecnologia de cluster de banco de
dados pode ser utilizada com eficiência. Vejamos!
Arquitetura de cluster de banco de dados
Veja um cluster de banco de dados com uma arquitetura nada
compartilhado onde o gerenciamento paralelo de dados é feito por
SGBDs independentes orquestrados por um middleware replicado em
cada nó. Para melhorar o desempenho e a disponibilidade, os dados
podem ser replicados em diferentes nós usando o SGBD local.
 Alta disponibilidade
Visa aumentar a tolerância a falhas e facilitar o
acesso aos dados, utilizando tecnologias de
replicação específicas para o SGBD.
 Paralelização de donsultas SQL
Visa aumentar a velocidade de processamento e
diminuir o tempo de resposta de consultas SQL
complexas, particionando e distribuindo-as em um
conjunto de servidores.
 Balanceamento de carga
Visa atender grandes aplicações transacionais,
aumentando a quantidade de transações que
podem ser realizadas ao mesmo tempo pela melhor
utilização da capacidade de processamento dos
diversos servidores evitando ociosidade ou
sobrecarga e qualquer um deles.
21/11/2023, 07:43 Sistemas de banco de dados paralelos
https://stecine.azureedge.net/repositorio/00212ti/07593/index.html# 59/77
Cluster de banco de dados nada compartilhado.
Aplicativos clientes interagem com o middleware de uma maneira
clássica para enviar transações de banco de dados, ou seja, consultas
ad hoc, transações ou chamadas para procedimentos armazenados.
Alguns nós podem ser especializados como nós de acesso para receber
transações, caso em que compartilham um serviço de diretório global
que captura informações sobre usuários e bancos de dados.
O processamento geral de uma transação para um único banco de
dados é o seguinte:

A transação é
autenticada e
autorizada usando o
diretório.

A transação, se bem-
sucedida, é roteada para
um SGBD em algum nó,
possivelmente diferente,
para ser executada.
Processamento de transações em bancos de dados em cluster
Como acontece em um SGBDP, o middleware do cluster de banco de
dados possui várias camadas de software. Vamos analisá-las!
Camada que aciona a execução da transação no melhor nó,
usando as informações de carga obtidas das sondagens do nó.
O melhor nó é definido como aquele que possui carga de
transação mais leve. Ele garante ainda que cada execução de

Balanceador de carga de transações 
21/11/2023, 07:43 Sistemas de banco de dados paralelos
https://stecine.azureedge.net/repositorio/00212ti/07593/index.html# 60/77
transação obedeça às propriedades ACID e, em seguida, sinaliza
ao SGBD para confirmar ou abortar a transação.
Camada que gerencia o acesso aos dados replicados e garante
consistência forte de forma que as transações que atualizam os
dados replicados sejam executadas na mesma ordem serial em
cada nó.
Camada que explora as seguintes formas de paralelismo:
Interconsultas – Encaminha cada consulta enviada para um
nó e, após a conclusão da consulta, envia os resultados para
o aplicativo cliente.
Intraconsultas – Como o sistema é implementado utilizando
SGBD centralizado, em cada nó eles não podem interagir uns
com os outros para processar a mesma consulta, cabendo
ao processador controlar a execução da consulta, a
composição do resultado e o balanceamento de carga.
Camada que fornece recuperação e failover on-line.
Em computação, failover significa tolerância a falhas. Quando
um sistema, servidor ou outro componente de hardware ou
software fica indisponível, um componente secundário assume
operações sem que haja interrupção nos serviços.
O processador de consultas explora o paralelismo interconsultas e
intraconsultas.
Técnicas em bancos de dados em cluster
Gerenciador de replicação 
Processador de consultas 
Gerenciador de tolerância a falhas 
21/11/2023, 07:43 Sistemas de banco de dados paralelos
https://stecine.azureedge.net/repositorio/00212ti/07593/index.html# 61/77
Vários tipos de técnicas que vimos em bancos de dados paralelos e
distribuídos são utilizadas nos bancos de dados em cluster. Confira!
Replicação
De forma similar ao que ocorre em bancos de dados distribuídos, os
bancos em cluster utilizam a replicação para melhorar o desempenho e
a disponibilidade. Em um cluster, a interconexão entre os nós é rápida e
o sistema de comunicações dá suporte à serialização de cópias ao
mesmo tempo que fornece escalabilidade devido ao ambiente estável e
com pouca mudança na topologia da rede.
Serialização de cópias
Abordagem que evita conflitos e reforça a consistência em cluster de banco
de dados. Para permitir esta serialização, são utilizados os seguintes
passos:
Cada transação de entrada T para o sistema tem um carimbo de tempo
cronológico ts(T) = C, e é enviada para todos os outros nós onde há uma cópia.
Em cada nó, um atraso de tempo é introduzido antesde iniciar a execução de T,
visando garantir que todos os nós envolvidos tenham tempo de receber a
mensagem com a transação.
Quando o atraso expira, todas as transações que podem ter sido confirmadas
antes de C têm a garantia de serem recebidas e executadas antes de T, seguindo
a ordem do timestamp (ou seja, ordem total).
Portanto, essa abordagem evita conflitos e reforça a consistência forte em
clusters de banco de dados.
Balanceamento de carga
Em um cluster de banco de dados, com o uso da serialização de cópias
na replicação, o balanceamento de carga pode ser alcançado com
facilidade já que como todas as cópias são mutuamente consistentes,
qualquer nó que armazene uma cópia dos dados da transação, por
exemplo, o nó menos carregado, pode ser escolhido em tempo de
execução por uma estratégia convencional de balanceamento de carga.
Processamento de transações
Em um cluster de banco de dados, o processamento paralelo de
consultas pode ser usado com sucesso para gerar alto desempenho. O
paralelismo interconsultas é obtido naturalmente como resultado do
balanceamento de carga e da replicação.
Comentário
21/11/2023, 07:43 Sistemas de banco de dados paralelos
https://stecine.azureedge.net/repositorio/00212ti/07593/index.html# 62/77
O paralelismo interconsultas é útil principalmente para aumentar o
throughput de aplicativos orientados a transações e, até certo ponto,
reduzir o tempo de resposta de transações e consultas.
Já para aplicativos OLAP (processamento analítico on-line), os quais
normalmente usam consultas ad hoc que acessam grandes
quantidades de dados, o paralelismo intraconsulta é utilizado para
reduzir ainda mais o tempo de resposta sendo implementado pelo
middleware.
Implementando um cluster de banco
de dados com PostgreSQL
Neste vídeo, apresentaremos como implementar um cluster de banco de
dados com PostgreSQL. Traremos também uma visão geral do cluster
em PostgreSQL e falaremos sobre o Pgpool-II, mostrando a instalação e
configuração do cluster utilizando o Pgpool-II.
Visão geral do cluster em PostgreSQL
O PostgreSQL é um SGBD de código aberto que possui uma grande
comunidade atuante que desenvolveu muitas soluções para permitir que
ele funcionasse de forma eficiente, tanto como banco distribuído como
banco paralelo, buscando obter alta disponibilidade e balanceamento de
carga.
Dependendo do cenário, a solução deve permitir replicação síncrona ou
assíncrona. O core do PostgreSQL foi aperfeiçoado para dar suporte a
esses cenários com alguns recursos. Vamos detalhar!
 Hot standby / Streaming replication
Disponível a partir do PostgreSQL 9.0 e fornece
replicação binária assíncrona para um ou mais
t db t bé d t h t
21/11/2023, 07:43 Sistemas de banco de dados paralelos
https://stecine.azureedge.net/repositorio/00212ti/07593/index.html# 63/77
Standbys
Refere-se ao banco de dados standby, sendo uma réplica do banco de
dados principal. Sua utilização é possível para recuperação em caso de
falha ou quando o principal banco não está disponível.
A comunidade do SGBD desenvolveu ainda uma série de middleware
para dar suporte à criação de clusters, especialmente nos casos da
replicação de dados e alta disponibilidade, conforme evidenciado.
Projeto Licença Maturidade
PgCluster BSD Paralisado
Pgpool-II BSD
Atualizado
Recentemente
standbys, que também podem se tornar hot
standbys, o que significa que podem ser
consultados como um banco de dados somente
leitura.
 Warm standby / Log shipping
Não disponível para consulta, sendo uma solução
de alta disponibilidade que “replica” um cluster de
banco de dados para um arquivo ou um servidor de
espera o qual pode ser ativado rapidamente.
 Extração lógica do conjunto de alterações
Disponível a partir do PostgreSQL 9.4, forma a base
dos recursos de replicação bidirecional e replicação
lógica de log streaming.
21/11/2023, 07:43 Sistemas de banco de dados paralelos
https://stecine.azureedge.net/repositorio/00212ti/07593/index.html# 64/77
Projeto Licença Maturidade
Slony BSD Estável
Bucardo BSD Estável
Londiste BSD Estável
Comparação entre middleware de cluster do PostgreSQL.
Podemos observar que o Pgpool-II é o mais completo, pois permite criar
um pool de conexões, realizar replicação, balanceamento de carga e
consulta paralela.
Vamos estudá-lo com mais detalhes!
O que é o Pgpool-II?
É um middleware que funciona entre servidores PostgreSQL e um
cliente de banco de dados PostgreSQL que suporte até 128 nós de
banco de dados e utiliza replicação síncrona baseada em consultas que
fornecem alguns recursos. Vejamos!
Recurso em que o Pgpool-II salva as conexões com os
servidores PostgreSQL e as reutiliza sempre que uma nova
conexão com as mesmas propriedades chega, ou seja, nome de
usuário, banco de dados, versão do protocolo. Reduz a
sobrecarga da conexão e melhora a taxa de transferência geral
do sistema.
Recurso em que o Pgpool-II pode gerenciar vários servidores
PostgreSQL. O uso da função de replicação permite criar um
backup em tempo real em 2 ou mais discos físicos, para que o
serviço possa continuar sem parar os servidores em caso de
falha do disco.
Pool de conexão 
Replicação 
21/11/2023, 07:43 Sistemas de banco de dados paralelos
https://stecine.azureedge.net/repositorio/00212ti/07593/index.html# 65/77
Recurso em que, se um banco de dados for replicado, a
execução de uma consulta SELECT em qualquer servidor
retornará o mesmo resultado. O Pgpool-II aproveita o recurso de
replicação para reduzir a carga em cada servidor PostgreSQL,
distribuindo consultas SELECT entre vários servidores,
melhorando a taxa de transferência geral do sistema. Na melhor
das hipóteses, o desempenho melhora proporcionalmente ao
número de servidores PostgreSQL. O balanceamento de carga
funciona melhor em uma situação em que há muitos usuários
executando muitas consultas ao mesmo tempo.
Recurso em que trava um limite no número máximo de conexões
simultâneas com o PostgreSQL, sendo as conexões rejeitadas
após esse número delimitado. Definir o número máximo de
conexões, no entanto, aumenta o consumo de recursos e afeta o
desempenho do sistema. O Pgpool-II também tem um limite no
número máximo de conexões, mas conexões extras serão
enfileiradas em vez de retornar um erro imediatamente.
Recurso em que os dados podem ser divididos entre os vários
servidores, para que uma consulta possa ser executada em
todos os servidores simultaneamente a fim de reduzir o tempo
geral de execução. A consulta paralela funciona melhor ao
pesquisar dados em grande escala.
Instalação e con�guração do cluster utilizando Pgpool-II
A seguir, serão apresentados os passos para a instalação e
configuração do Pgpool-II em uma máquina com o sistema Ubuntu.
Iniciando a instalação
Balanceamento de carga 
Limitando conexões excedidas 
Consulta paralela 
21/11/2023, 07:43 Sistemas de banco de dados paralelos
https://stecine.azureedge.net/repositorio/00212ti/07593/index.html# 66/77
A instalação inicia a partir dos pacotes da distribuição e, para isso,
devem ser emitidos os seguintes comandos no terminal:
sudo apt-get update
Comando sudo apt-get update.
sudo apt-get install pgpool2
Comando sudo apt-get install Pgpool-II
Con�guração básica
Agora, vamos começar a configuração. Para isso, teremos que alterar
alguns parâmetros no arquivo de configuração do pgpool2.
Pelo terminal, vá até o diretório do arquivo, no exemplo, é:
cd/etc/pgpool2.
Encontrando o arquivo para configuração do Pgpool-II no terminal.
Abra o arquivo pgpool.conf utilizando o vi ou o vim. Lembre-se de
colocar sudo antes e depois quando for pedido a senha do root.
Abrindo o arquivo para configuração do Pgpool-II no terminal.
Depois, quando for pedida a senha do root o arquivo será aberto no
editor.
21/11/2023, 07:43 Sistemas de banco de dados paralelos
https://stecine.azureedge.net/repositorio/00212ti/07593/index.html# 67/77
Arquivo aberto no terminal para configuração do Pgpool-II.
Outra forma

Continue navegando