Escolar Documentos
Profissional Documentos
Cultura Documentos
Distribuídos
Material Teórico
Processamento de Consultas e Replicação de Dados
Revisão Textual:
Prof. Esp. Claudio Pereira do Nascimento
Processamento de Consultas
e Replicação de Dados
• Introdução;
• Comandos Remotos e Distribuídos;
• Protocolos de Segurança;
• Níveis de Persistência;
• Mecanismos de Atualização;
• Fragmentação de Dados.
OBJETIVO DE APRENDIZADO
• Compreender a importância dos estudos dos conceitos sobre a distribuição de dados;
• Entender o que é uma transação em uma base de dados;
• Entender o que é ACID;
• Entender a importância da replicação e fragmentação em um ambiente distribuído
de dados.
Orientações de estudo
Para que o conteúdo desta Disciplina seja bem
aproveitado e haja maior aplicabilidade na sua
formação acadêmica e atuação profissional, siga
algumas recomendações básicas:
Conserve seu
material e local de
estudos sempre
organizados.
Aproveite as
Procure manter indicações
contato com seus de Material
colegas e tutores Complementar.
para trocar ideias!
Determine um Isso amplia a
horário fixo aprendizagem.
para estudar.
Mantenha o foco!
Evite se distrair com
as redes sociais.
Seja original!
Nunca plagie
trabalhos.
Não se esqueça
de se alimentar
Assim: e de se manter
Organize seus estudos de maneira que passem a fazer parte hidratado.
da sua rotina. Por exemplo, você poderá determinar um dia e
horário fixos como seu “momento do estudo”;
No material de cada Unidade, há leituras indicadas e, entre elas, artigos científicos, livros, vídeos e
sites para aprofundar os conhecimentos adquiridos ao longo da Unidade. Além disso, você tam-
bém encontrará sugestões de conteúdo extra no item Material Complementar, que ampliarão
sua interpretação e auxiliarão no pleno entendimento dos temas abordados;
Após o contato com o conteúdo proposto, participe dos debates mediados em fóruns de discus-
são, pois irão auxiliar a verificar o quanto você absorveu de conhecimento, além de propiciar o
contato com seus colegas e tutores, o que se apresenta como rico espaço de troca de ideias e
de aprendizagem.
UNIDADE Processamento de Consultas e Replicação de Dados
Introdução
Olá, vamos mais uma vez estudar sobre banco de dados distribuído, desta vez o
assunto diz respeito a gerenciar as transações que ocorrem em uma base de dados e
principalmente se ela for distribuída, que é o caso. Então vamos continuar.
É por isso que as organizações possuem instalações dispersas por vários pon-
tos geográficos, dispondo cada um destes de bases de dados e meios de proces-
samento próprios.
Às vezes, pode não fazer sentido ter um servidor em vários locais. Por exemplo,
se uma empresa tem sede em São Paulo e 3 lojas no litoral paulista, não faz sentido
ter um servidor em cada local. Nesta situação, talvez seja mais adequada uma so-
lução cliente/servidor. Portanto, se o problema não tiver uma natureza distribuída,
não devemos utilizar uma base de dados distribuída.
Cada Servidor que participa na base de dados distribuída tem uma autonomia
local, ou seja, é administrado (contas, segurança, ...) separado e independentemente
dos outros servidores. Esta autonomia local tem várias vantagens:
• Os nós dos sistemas podem espelhar mais facilmente a estrutura lógica das
organizações onde se inserem;
8
• Os dados armazenados localmente são controlados por um administrador lo-
cal, pelo que o domínio de administração é menor e mais manejável;
• A recuperação de falhas pode ser efetuada numa base estritamente local;
• Os nós do sistema podem ter a dimensão mais adequada a cada problema local
e crescer independentemente.
Aplicação
do Utilizador
Begin_transaction,
Resultados
Read, Write, EOT, Modelo de Execução da
e notificações
Abort Transação Distribuída
Gestor de Gestor de
Transações Transações
Protocolo de
Read, Write, Controle de Réplicas
EOT, Abort
Gestor de Gestor de Protocolo de Controle de
Escalonamento Escalonamento Concorrência Distribuída
Com uma estrutura preparada e adequado, podemos começar a pensar nas ações
que acontecem entre a base de dados e as diversas interfaces existentes no sistema.
A estas ações podemos tecnicamente chamar de transação.
9
9
UNIDADE Processamento de Consultas e Replicação de Dados
INSERT INTO Depto (Num_Depto, NmDepto, Cd_Gerente) VALUES (100, ‘TI’, 3);
COMMIT;
ROLLBACK;
INSERT INTO Depto (Num_Depto, NmDepto, Cd_Gerente) VALUES (110, ‘RH’, 20);
SAVEPOINT ponto1;
COMMIT;
10
Na atividade onde diversas transações são processadas ao mesmo tempo (tran-
sações concorrentes), ocorre um entrelaçamento de operações entre elas.
Transação distribuída
• Inclui comandos que acedem a dados em dois ou mais nós distintos.
11
11
UNIDADE Processamento de Consultas e Replicação de Dados
Transações Distribuídas
Uma transação distribuída termina com commit em todos os servidores que
participam dela, ou então termina com rollback em todos os servidores.
Importante! Importante!
12
• write_item(X): escreve o valor de uma variável X de memória em um item X
do banco de dados.
Exemplo:
T1 T2
read_item(X); read_item(X);
X := X - N; X := X + M;
write_item(X); write_item(X);
read_item(Y);
Y := Y + N;
write_item(Y);
Figura 3
Fonte: iStock/Getty Images
13
13
UNIDADE Processamento de Consultas e Replicação de Dados
Protocolos de Segurança
Para que as características fundamentais das transações (mais conhecidas por
ACID: Atomicity, Consistency, Isolation, Durability) pudessem ser uma realida-
de nas base de dados distribuída, foi necessário criar protocolos de segurança:
• Protocolos de COMMIT;
• Protocolos de ABORT ou terminação;
• Protocolos de recuperação.
Cada nó tem um gestor de transações local, responsável por manter o log (para
recuperação caso seja necessário) e por participar na coordenação da execução
concorrente de transações a executar no próprio nó.
Protocolos de COMMIT
Asseguram que a propriedade da atomicidade da transação é respeitada. O pro-
tocolo mais conhecido e mais simples é o Two-Phase Commit (COMMIT em duas
fases) ou 2PC.
Estes respondem com uma mensagem de “Pronto”, indicando que está prepara-
do para fazer o COMMIT da sua parte da transação, ou então com uma mensagem
de “Abort”, indicando que não é possível fazer o COMMIT.
14
Todos os participantes têm de responder com “Pronto” para que o COMMIT da
transação possa ocorrer. Senão, é enviado um “Global Abort” a todos os partici-
pantes para que abortem as suas subtransações. Ou seja, basta um “Abort” de um
dos nós para que toda a transação falhe.
O 2PC pode bloquear devido à falha de um dos nós durante o processo. Uma
transação bloqueada não é desejável porque continua a manter os locks dos recur-
sos de que necessita para a sua tran-
sação – impedindo que outras tran-
sações que precisem desses mesmos
recursos possam obtê-los.
Protocolos de Recuperação
Depois de os nós que falharam voltarem a ficar operacionais, estes protocolos
indicam-lhes as medidas que devem tomar para se sincronizarem com os restantes
nós. Voltando ao caso do 2PC:
15
15
UNIDADE Processamento de Consultas e Replicação de Dados
Trocando ideias...Importante!
Compartilhar é a mesma coisa que fragmentar.
Níveis de Persistência
O processamento em uma base de dados consiste na manipulação de seus dados e
de acordo com a característica de sua estrutura podem ser transientes ou persistentes.
16
Existem objetos que persistem dentro do espaço de trabalho de uma transação,
mas que são invalidados quando a transação termina. As transações são normal-
mente executadas dentro de uma sessão. O usuário estabelece seu login e define
diferentes parâmetros ambientais dentro da sessão em que está conectado ou
logado, como caminhos, opções de exibição, janelas etc.
Porém, também existem desvantagens que se prendem com o fato de ser neces-
sário manter a coerência global do sistema. De fato, quando a informação num nó
é atualizada, as suas réplicas também o devem ser, o que aumenta o overhead do
sistema (custos de atualização e necessidade de algoritmos complexos para a execu-
ção de transações).
Sim, a replicação é mais vantajosa em sistemas onde sem tem uma necessidade
de muitas leituras a dados, mas poucas atualizações. Um detalhe que se deve pensar
é sobre a implementação com a localização física das réplicas.
A aplicação cliente apenas tem de saber o nome lógico para ter condições de aces-
sar o ficheiro, sendo da responsabilidade do SGBD manter um catálogo de réplicas que
forneça o mapeamento dos nomes físicos e respectivas localizações.
17
17
UNIDADE Processamento de Consultas e Replicação de Dados
O modelo assíncrono atualiza apenas uma das réplicas numa transação e pro-
paga as alterações para as outras réplicas depois, em outra transação. Este tipo de
replicação também é chamado lazy replication (replicação preguiçosa).
Quando é indispensável que exista consistência estrita (os dados têm de estar per-
manentemente atualizados), é necessário usar a replicação síncrona. Se não for esse
o caso, deve-se utilizar a replicação assíncrona por ter melhores tempos de resposta.
É possível até indicar intervalos de tempo para que as atualizações tenham lugar,
de hora em hora, por exemplo.
Mecanismos de Atualização
Existem vários tipos de mecanismos de atualização, sendo executadas onde as
atualizações são feitas, das permissões dos clientes e do timing das atualizações:
• primary copy (também chamada primary site replication);
• update everywhere (também chamada shared ownership ou, em português,
replicação simétrica);
• Epidémica – as operações são feitas numa única réplica (uma qualquer) e uma
transação diferente compara os dados das outras réplicas, atualizando-as;
• Subscrição – semelhante à anterior, mas considera-se que os nós apenas que-
rendo ter os dados, não se importando com a sua consistência.
Os nós que desejem manter a sua réplica atualizada devem subscrever-se perante
o nó responsável pelos dados. Um nó que não se tenha subscrevido, é responsável
por tentar obter os dados a partir de qualquer um dos outros nós, mas é possível que
esses dados não sejam os mais recentes.
18
• ROWA (read one, write all) – como o nome indica, nas operações de escri-
ta, as réplicas são sincronizadas e atualizadas ao mesmo tempo.
Como todas as réplicas estão sincronizadas, é possível ler apenas uma delas,
obtendo uma leitura consistente. As duas primeiras técnicas são as mais difundidas,
apresentando-se em maior pormenor de seguida.
Na replicação por primary copy, um dos nodos detém a posse dos dados,
sendo o único que pode atualizá-los e propagar essas atualizações para os nodos
onde estão as suas réplicas – denominadas snapshots. Este método funciona da
seguinte maneira:
• Primeiro, é necessário escolher a réplica do item de dados que irá ser a primary
copy. O nó que contém a réplica é chamado primary site.
Diferentes itens de dados podem ter diferentes primary sites. O primary site
deve ser escolhido de modo que seja o que acesse mais vezes a estes dados, ou o
que acesse com mais dificuldade (devido, por exemplo, a uma ligação de rede com
uma baixa taxa de transferência de dados).
A vantagem deste método é a sua simplicidade, já que dados replicados são tra-
tados de um modo semelhante aos dados não replicados. Por outro lado, o primary
site pode tornar-se um gargalo para o desempenho de um grande sistema: são
enviados para este nó os pedidos de leitura provenientes de nós que não tenham
réplicas desses dados e todos os pedidos de escrita. Apesar de os pedidos de leitura
poderem ser realizados em paralelo por nós com réplicas, o processamento dos
pedidos de escrita são todos feitos por este nó.
Uma das possibilidades para resolução destes conflitos incluem, por exemplo, o
recurso ao fator tempo, em que prevalece a atualização mais recente.
Se este último valor e o timestamp do item de dados forem iguais, então a atuali-
zação é segura: os dados são alterados e é colocado no item de dados o timestamp
que a réplica contém, senão, a réplica tem de ser reconciliada.
19
19
UNIDADE Processamento de Consultas e Replicação de Dados
Por vezes, não é possível atualizar todas as réplicas. Em ambientes realistas, temos
também de contar com a possibilidade de existirem falhas, quer dos nós, quer da rede
de comunicações. A melhor maneira de lidar com falhas nos nós pode ser ignorá-las.
Fragmentação de Dados
A fragmentação é a utilização de uma técnica para dividir logicamente as relações.
As tabelas não são uma unidade lógica apropriada para estruturar uma base de da-
dos. Normalmente as aplicações e seus utilizadores não estão interessados em todos
os dados que estas contêm.
Também é possível combinar estes dois tipos, originando uma fragmentação mista.
20
Tabela 2 – Fragmentação Vertical da Tabela de Empregados
CÓDIGO NOME CARGO
1 F. Rodrigues 4
2 J. Barros 4
3 A. Silva 3
4 J. Sousa 2
5 M. Pereira 1
21
21
UNIDADE Processamento de Consultas e Replicação de Dados
Material Complementar
Indicações para saber mais sobre os assuntos abordados nesta Unidade:
Sites
Introdução a persistência de dados com o hibernate
https://goo.gl/hVLGST
MYSQL – Replicação de dados
https://goo.gl/2aChGQ
Livros
1941 – Introdução a sistemas de banco de dados
DATE, C.J. 1941 – Introdução a sistemas de banco de dados. Tradução de Daniel
Vieira. Rio de Janeiro: Elsevier, 2003.
Sistemas distribuídos princípios e paradigmas
TANENBAUM A. S.; STEEN, M. V. Sistemas distribuídos princípios e paradigmas.
3. ed. São Paulo: Pearson, 2009. (e-book)
22
Referências
BARBIERI, C. Bi2: Business Intelligence, modelagem & qualidade. Rio de Janeiro:
Elsevier, 2011.
23
23