Escolar Documentos
Profissional Documentos
Cultura Documentos
Replicação
Consistência e replicação
Consistência e replicação
Consistência e replicação
Consistência e replicação
Consistência e replicação
Consistência e replicação
Consistência e replicação
Consistência e replicação
– Replicação como técnica de crescimento
Manter várias cópias consistentes pode estar sujeito a problemas de
desempenho
Um conjunto de cópias é consistente se todas forem sempre iguais
Logo, quando uma operação de atualização é realizada sobre uma
cópia, a atualização deve ser propagada para todas as outras cópias
Manter a consistência entre todas as cópias em um sistema
distribuído de larga escala Muito custoso!
Consistência e replicação
– Replicação como técnica de crescimento
Dilema:
o Problemas de escalabilidade podem ser amenizados pela
aplicação de replicação e cache resultando em melhor
desempenho
o Manter todas as cópias consistentes requer sincronização
global muito custoso em termos de desempenho
A cura saiu pior que a doença?
o Não, se pudermos relaxar as restrições de consistência!
Consistência e replicação
– Modelos de consistência centrados em dados
A consistência tem sido discutida no contexto de operações de leitura e
escrita em dados compartilhados por meio de (depósito de dados):
o Memória compartilhada (distribuída)
o Banco de dados (distribuído)
o Sistema de arquivos (distribuído)
Cada processo que pode acessar dados do depósito tem uma cópia
local (ou próxima) disponível referente ao depósito inteiro
Consistência e replicação
– Modelos de consistência centrados em dados
Operações de escrita são propagadas para outras cópias
o Memória compartilhada (distribuída)
o Se a operação alterou dados Escrita
o Se a operação não alterou dados Leitura
Consistência e replicação
– Modelos de consistência centrado em dados
Modelo de Consistência é um contrato entre processos e depósitos de
dados
o Se os processos concordarem em obedecer certas regras o
depósito promete funcionar de maneira correta
Normalmente, um processo que executa uma leitura em um dado,
espera como retorno um valor que mostre o resultado da última
operação de escrita naquele dado
o Sem um relógio global é difícil definir qual foi a última escrita
o Como alternativa, são usadas outras definições/regras
estabelecidas por um modelo de consistência
Quais inconsistências são toleráveis?
Consistência e replicação
– Modelos de consistência centrado em dados - Consistência
contínua
Definidas a partir de três eixos:
o 1. Desvio em valores numéricos entre réplicas
Cópias não podem variar por mais que valor absoluto ou relativo
Número de atualizações não vistas por outras réplicas
o 2. Desvio em idade entre réplicas
Última vez que a réplica foi atualizada
o 3. Desvio em relação às operações de atualização
Tolera ordenação diferente de atualizações nas réplicas
As atualizações podem ser aplicadas temporariamente em uma
cópia local a espera de um acordo global, podendo serem
refeitas na ordem correta antes de se tornarem permanentes
Consistência e replicação
– Modelos de consistência centrado em dados - Consistência
contínua
Proposta uma unidade de consistência – CONIT
o Especifica a unidade na qual a consistência deve ser medida
o Uma CONIT representa uma única ação, por exemplo um
boletim individual de previsão de tempo.
Consistência e replicação
– Modelos de consistência centrado em dados - Consistência
contínua
Proposta uma unidade de consistência – conit
o As variáveis X e Y = 0
Consistência e replicação
– Modelos de consistência centrado em dados - Consistência
contínua
Necessário compromisso para manter conits de granularidade grossa e
conits de granularidade fina
o Exemplo: diferença de duas réplicas não pode ter mais que
uma atualização pendente
Consistência e replicação
– Modelos de consistência centrado em dados - Consistência
contínua
Necessário tratar duas questões para se por as conits em prática:
o Para impor consistência é necessário ter protocolos
o Programadores devem especificar os requisitos de
consistência para aplicações
Os programadores não estão acostumados com replicação, muito
menos em fornecer informações sobre consistência
Para implementar conits é obrigatório que haja interfaces de
programação simples e fáceis de entender
o Pode ser implementada como um conjunto de ferramentas
parecido com bibliotecas
AffectsConit, DependsOnConit
Consistência e replicação
– Modelos de consistência centrado em dados - Consistência
contínua
Além da consistência contínua, existe uma classe importante de
modelos de consistência na área de programação concorrente
o Consistência sequencial
o Consistência causal
Estes modelos tratam de ordenar operações consistentemente em
dados compartilhados replicados
Quando for preciso realizar atualizações provisórias em réplicas, estas
terão de chegar a um acordo sobre uma ordenação global dessas
atualizações
Consistência e replicação
– Modelos de consistência centrado em dados - Consistência
contínua
Ordenação consistente de operações
o Notação para representar operações de leitura e escrita
o Wi(x)a O processo Pi escreve o valor a no item de dado x
o Ri(x)a O processo Pi lê o valor a do item de dado x
Consistência e replicação
– Modelos de consistência centrado em dados - Consistência
Restrita
Todos os processos executam todas as operações de leitura e escrita na
mesma ordem que elas foram emitidas
Portanto:
o Leituras nunca ficam obsoletas
o Todas as réplicas executam as operações de escrita na
mesma ordem
Consistência e replicação
– Modelos de consistência centrado em dados - Consistência
Sequencial
Um depósito de dados é sequencialmente consistente quando satisfaz a
seguinte condição:
O resultado de qualquer execução é o mesmo que seria se as
operações (de leitura e escrita) realizadas por todos os processos no
depósito de dados fossem executadas na mesma ordem sequencial e as
operações de cada processo individual aparecessem nessa sequência
na ordem especificada por seu programa
Consistência e replicação
– Modelos de consistência centrado em dados - Consistência
Sequencial
Todos os processos executam todas as operações de leitura e escrita
em uma mesma ordem global, e as operações em um processo
aparecem na ordem que são emitidas pelo programa que está sendo
executado pelo processo
Portanto:
o Leituras podem ficar obsoletas em relação ao tempo real,
mas não em relação à hora lógica
o As operações de escrita em todas as réplicas estão
totalmente ordenadas na mesma ordem e acordo com a hora
lógica
Consistência e replicação
– Modelos de consistência centrado em dados - Consistência
Sequencial
Consistência e replicação
– Modelos de consistência centrado em dados - Consistência
Sequencial
Consistência e replicação
– Modelos de consistência centrado em dados - Consistência
Sequencial
Exemplo de sistema com consistência sequencial
o IVY: Sistema de memória distribuída compartilhada
o Provê um acesso à memória compartilhada com a memória
fisicamente distribuída entre as máquinas
o Geralmente é mais fácil escrever programas com modelo de
programação de memória compartilhada do que com modelo
de troca de mensagens
Consistência e replicação
– Modelos de consistência centrado em dados - Consistência
Sequencial
Arquitetura do sistema IVY
Consistência e replicação
– Modelos de consistência centrado em dados - Consistência
Sequencial
Consistência sequencial em IVY
o Sempre lê uma página com a última atualização já realizada
Tem que invalidar todas as páginas que estão na cache de
outras máquinas antes de executar uma operação de escrita
o Somente um processador (dono) pode escrever em uma
página de cada vez
o O dono é sempre o último que escreveu na página
Como descobrir o dono da página?
Como garantir que só existe um dono por página?
Como garantir que as páginas que estão na cache vão ser
invalidadas?
Consistência e replicação
– Modelos de consistência centrado em dados - Consistência
Sequencial
Gerente centralizado IVY
Consistência e replicação
– Modelos de consistência centrado em dados - Consistência
Sequencial
Leitura em IVY
Consistência e replicação
– Modelos de consistência centrado em dados - Consistência
Sequencial
Escrita em IVY
Consistência e replicação
– Modelos de consistência centrado em dados - Consistência
Sequencial
Invariantes em IVY
o Toda página tem exatamente somente um dono de cada vez
o O dono corrente tem uma cópia da página
o Se a página é marcada como r/w pelo dono, não existem
outras cópias
o Se a página é marcada r/o pelo dono, ela é idêntica a outras
cópias
o Gerente sabe de todas as cópias
Consistência e replicação
– Modelos de consistência Causal
A Consistência Causal representa um enfraquecimento da consistência
sequencial no sentido que faz distinção entre eventos que são
potencialmente relacionados por causalidade e os que não são
o Se o evento b é causado ou influenciado por um evento
anterior a, então é necessário que todos vejam primeiro a e,
depois, b
o Se o processo P1 escreve x, em seguida P2 lê x e escreve y,
os dois primeiros são causais, porém as duas escritas são
concorrentes.
Consistência e replicação
– Modelos de consistência Causal
Para um depósito de dados ser considerado consistente por
causalidade, é necessário que obedeça à seguinte condição:
o Escritas que são potencialmente relacionadas por
causalidade devem ser vistas por todos os processos na
mesma ordem
o Escritas concorrentes podem ser vistas em ordem diferente
em máquinas diferentes
Consistência e replicação
– Modelos de consistência Causal
Qualquer execução ocorre como se todas as operações de
leitura/escrita, que tem relação de causalidade entre elas, tivessem sido
executadas em uma ordem que reflete a causalidade entre elas
As operações concorrentes, ou sejam, que não tem relação de
causalidade, podem ser executadas em ordens diferentes nas diferentes
réplicas
Consistência e replicação
– Modelos de consistência Causal
Consistência e replicação
– Modelos de consistência Causal
Qualquer execução ocorre como se todas as operações de
leitura/escrita que tem relação de causalidade entre elas tivessem sido
executadas em uma ordem que reflete a causalidade entre elas
As operações concorrentes, ou sejam, que não tem relação de
causalidade, podem ser executadas em ordens diferentes nas diferentes
réplicas
Consistência e replicação
– Modelos de consistência Causal
Consistência causal é estritamente mais fraca que a sequencial e pode
resultar em resultados estranhos
o Se um sistema é sequencialmente consistente => ele
também é causalmente consistente
MAS: ela também oferece maiores possibilidades de concorrência
o Operações concorrentes, que não são casualmente
dependentes, podem ser executadas por diferentes
processos em diferentes ordens
o Ao contrário, com consistência sequencial, necessita-se
forçar uma ordem global de todas as operações
o Então pode-se obter um melhor desempenho do que com
sequencial
o Não é muito popular na indústria
Consistência e replicação
– Modelos de consistência Eventual
Permite leituras obsoletas, mas garante que operações de leitura irão
eventualmente refletir valores escritos previamente, mesmo depois de
ter passado muito tempo
Não ordena escritas concorrentes à medida que são executadas, o que
pode causar conflitos mais tarde: qual escrita foi a primeira?
Consistência e replicação
– Modelos de consistência Eventual
Maior número de oportunidades de concorrência do que consistência
restrita, sequencial ou causal
Consistência sequencial requer conexões altamente confiáveis
o Muita troca de informação entre cliente e servidor
Consistência sequencial pode ser imprópria para alguns cenários:
o Clientes desconectados (por exemplo, seu laptop fica fora da
rede mas você quer editar um documento que tem réplica)
o Rede desconectada entre os centros de dados
o Aplicações podem preferir inconsistência potencial do que
perda de disponibilidade
Consistência e replicação
– Modelos de consistência Eventual X Sequencial
Sequencial: gerencia concorrência de forma pessimista
o Decide a ordem de atualização das operações à medida que
elas são executadas
Eventual: gerencia concorrência de forma otimista
o Deixa as atualizações acontecerem, e se preocupa com a
sua ordenação depois
o Pode criar conflitos
Quando você codifica algo offline por um período – talvez
você tenha que resolver conflitos com os membros do seu
time quando você tornar seu código online
Não é muito difícil de resolver este conflito com código, mas
é difícil em geral (pense em resolver conflitos quando você
atualizou uma imagem offline)
Consistência e replicação
– Como estes modelos são utilizados?
Consistência restrita
o Sistema de Cloud da Google denominado Spanner que utiliza
consitência externa que é similar à restrita
Consistência sequencial
o Alguns sistemas comerciais e acadêmicos provêm consistência
sequencial
o Yale’s IVY DSM, Microsoft’s Niobe DFS, Cornell’s chain replication,
Consistência causal
o ???
Consistência eventual
o Alguns sistemas comerciais e acadêmicos provêm consistência
eventual
o Exemplos: sincronizadores de arquivos, Amazon’s Dynamo, Bayou
Consistência e replicação
– Modelos de consistência centrados no cliente
Modelos de Consistência Centrados em Dados
o Visam fornecer uma visão consistente de um depósito de dados
no âmbito de um sistema
o Processos concorrentes podem estar atualizando um depósito
de dados simultaneamente
Modelos de Consistência Centrados no Cliente
o Os depósitos de dados são caracterizados pela ausência de
atualizações simultâneas
o A maioria das operações envolve ler dados
o Estes depósitos oferecem um modelo de consistência mais fraco
consistência eventual
Consistência e replicação
– Modelos de consistência centrados no cliente
Até que ponto a consistência precisa ser garantida?
o Pode variar dependendo da aplicação
o Páginas Web caches locais com páginas ainda
desatualizadas grau de inconsistência pode ser tolerado pelo
cliente
Com a introdução de modelos de consistência centrados no cliente,
muitas inconsistências podem ser ocultadas de modo relativamente
barato
Consistência e replicação
– Modelos de consistência centrados no cliente – Consistência
eventual
Consistência e replicação
– Modelos de consistência centrados no cliente
Consistência centrada no Cliente
o Quando se usa depósitos de dados de consistência eventual
Se um mesmo usuário operar sobre réplicas diferentes, ele
pode obter inconsistências se as atualizações ainda não
tiverem sido propagadas
o Estas inconsistências podem ser resolvidas a partir de
consistência centrada no cliente
Dá garantia a um único cliente de consistência de acesso a
um depósito de dados por esse cliente
Não há garantia para acessos concorrentes por clientes
diferentes
Consistência e replicação
– Modelos de consistência centrados no cliente
São destacados 4 modelos distintos de consistência
o Leituras monotônicas
o Escritas monotônicas
o Leia-suas-escritas
o Escritas-seguem-leituras
Consistência e replicação
– Modelos de consistência centrados no cliente
São usadas as seguintes notações:
o xi versão do item de dados x na cópia local Li
o WS(xi) conjunto de operações de escrita ocorrida em x em
Li até
o Ok(xi;xj) o processo k realizou a operação O e produziu o
valor xj a partir de xi
o Ok(xi|xj) o processo k realizou a operação O e produziu o
valor xj independentemente do valor xi
Consistência e replicação
– Modelos de consistência centrados no cliente
Leituras monotônicas
o Se um processo ler o valor de um item de dados x, qualquer
operação de leitura sucessiva de x executada por esse
processo sempre retornará o mesmo valor ou um valor mais
recente
o A consistência de leitura monotônica garante que se um
processo viu um valor de x no tempo t, ele nunca verá uma
versão mais velha de x em um tempo posterior
Consistência e replicação
– Modelos de consistência centrados no cliente
Leituras monotônicas
Consistência e replicação
– Modelos de consistência centrados no cliente
Leituras monotônicas
o Na leitura de um calendário pessoal em diferentes
servidores, a consistência leitura monotônica garante que o
dono do calendário irá sempre ver todas as atualizações,
independentemente de qual servidor está sendo acessado
o Também garante que, se o usuário ler e-mail e não houver
modificação enquanto o usuário estiver se movimentando de
um servidor para outro, o usuário verá os e-mails que ele já
leu novamente
Consistência e replicação
– Modelos de consistência centrados no cliente
Escritas monotônicas
o Uma operação de escrita executada por um processo em um
item de dados x é concluída antes de qualquer operação de
escrita sucessiva em x pelo mesmo processo
Atualização de versões de bibliotecas substituindo uma ou
mais funções
Consistência e replicação
– Modelos de consistência centrados no cliente
Leia suas escritas
o O efeito de uma operação de escrita por um processo no
item de dados x sempre será visto por uma operação de
leitura sucessiva em x pelo mesmo processo
Contra-exemplo: Atualizamos uma página no servidor, mas
quando abrimos a página vemos a versão antiga (problema
com o cache)
Consistência e replicação
– Modelos de consistência centrados no cliente
Escritas seguem leituras
o Qualquer operação de escrita sucessiva executada por um
processo em um item de dados x, será realizada sobre uma
cópia de x atualizada com o valor lido mais recentemente
pelo processo
Consistência e replicação
– Modelos de consistência centrados no cliente
Escritas seguem leituras
o Garantir que usuários de um grupo de discussão em rede
vejam a apresentação de uma reação a um artigo somente
depois de terem visto o artigo original
o Um usuário lê um artigo A e depois reage apresentando uma
resposta B
o B será escrito para qualquer cópia do grupo, somente após A
ter sido escrito
Consistência e replicação
– Gerenciamento de réplicas
Onde, quando e por quem réplicas devem ser posicionadas?
o Posicionar servidores de réplicas
É o posicionamento de hardware: encontrar as melhores
localizações para colocar um servidor que pode hospedar
depósito de dados (ou parte dele)
o Posicionar conteúdo
É o posicionamento dos dados e softwares: encontrar o
melhor servidor para colocar conteúdo.
Consistência e replicação
– Gerenciamento de réplicas
Posicionamento do servidor de réplicas
o Análises das propriedades do cliente e da rede são úteis
para se tomar decisões conscientes
o Há vários modos de se calcular o melhor posicionamento de
servidores de réplicas
No geral, é um problema de otimização que consiste em
selecionar as melhores K de N localizações
A ideia básica é identificar os K maiores clusters de nós e
designar um nó de cada cluster para hospedar o conteúdo
replicado.
Consistência e replicação
– Gerenciamento de réplicas
Para selecionar as melhores K de N localizações
o Análises das propriedades do cliente e da rede são úteis
para se tomar decisões conscientes
o Podem ser usadas heurísticas baseadas na distancia
(latência, largura de banda) entre clientes e localizações
o Ou pode-se ignorar posições de clientes considerando a
Internet como um conjunto de Sistemas Autônomos (AS)
Rede no qual os nós executam o mesmo protocolo de
roteamento, que é gerenciada por uma única organização
Consideram o maior AS e colocam um servidor no roteador
com maior número de enlaces
Os ASs são escolhidos em ordem de tamanho
Consistência e replicação
– Gerenciamento de réplicas
O problema é que estes algoritmos são caros em termos de cálculo
o Alternativa:
Foi desenvolvido um método para identificar rapidamente uma
região para o posicionamento do servidor de réplicas
As regiões são identificadas como um conjunto de nós que
acessam o mesmo conteúdo, com uma latência baixa entre nós
Primeiramente, seleciona-se as regiões com o maior número de
nós, e permite que um dos nós aja como Servidor de Réplicas
Funciona tão bem quanto os anteriores Mais rápido
Consistência e replicação
– Gerenciamento de réplicas
Replicação e posicionamento de conteúdo
o Após o posicionamento do servidor de réplicas, é preciso decidir
sobre o posicionamento do conteúdo
Qual o melhor servidor para hospedar uma cópia de um depósito
de dados
o Podem se distinguir 3 tipos de réplicas organizadas logicamente:
Réplicas permanentes
Réplicas iniciadas por servidor
Réplicas iniciadas por cliente
Consistência e replicação
– Gerenciamento de réplicas
Replicação e posicionamento de conteúdo
o Réplicas permanentes:
Conjunto inicial de réplicas que constituem um depósito de
dados distribuído
Número de réplicas permanentes normalmente é pequeno
Exemplo: Site Web
Arquivos que constituem um site são replicados para um número
limitado de servidores que estão em uma única localização
Ou, site Web é copiado para um número limitado de servidores,
sites espelhados, que estão geograficamente espalhados pela
Internet
Consistência e replicação
– Gerenciamento de réplicas
Replicação e posicionamento de conteúdo
o Réplicas iniciadas por servidor:
Cópias de um depósito de dados para aprimorar desempenho
são criadas por iniciativa do (proprietário do) depósito de dados
Replicação ou migração de arquivos para proximidade de
clientes que emitem muitas requisições
Exemplo:
Considere um servidor em NY. Pode acontecer uma rajada de
requisições de uma localização inesperada, longe do servidor.
Neste caso, talvez seja vantajoso instalar uma quantidade de
réplicas temporárias nas regiões de onde vem as requisições
Consistência e replicação
– Gerenciamento de réplicas
Replicação e posicionamento de conteúdo
o Réplicas iniciadas por cliente:
São mais conhecidas como Cache na máquina do cliente
Recurso de armazenamento local, usado por um cliente para
armazenar temporariamente uma cópia dos dados que ele
acabou de requisitar
Caches são usadas para melhorar o tempo de acesso aos
dados
Gerenciamento da cache cabe inteiramente ao cliente
O depósito de dados de onde os dados foram trazidos nada tem
a ver com a manutenção da consistência dos dados em cache
Consistência e replicação
– Gerenciamento de réplicas
Replicação e posicionamento de conteúdo
o Réplicas iniciadas por cliente:
São mais conhecidas como Cache na máquina do cliente
Quando um cliente quer acessar alguns dados, se conecta com
a cópia do depósito de dados mais próxima
Quando a maioria das operações envolve somente ler dados, o
desempenho pode ser melhorado, dado que o cliente pode
armazenar dados requisitados em uma cache mais próxima.
Cache pode estar localizada na máquina do cliente, ou em uma
outra máquina separada dentro da mesma rede local
Dados são mantidos por um período limitado de tempo
Consistência e replicação
– Gerenciamento de réplicas
Replicação e posicionamento de conteúdo
Consistência e replicação
– Gerenciamento de réplicas
Distribuição de Conteúdo
o O gerenciamento de réplicas também trata da propagação de
conteúdo atualizado para servidores de réplicas relevantes,
seguindo os compromissos:
Estado X Operações
Protocolos de recuperação de atualização X Protocolos de envio
de atualizações
Consistência e replicação
– Gerenciamento de réplicas
Estado X Operações
o Uma importante questão de projeto refere-se ao fato do que
deve ser propagado:
1. Somente uma notificação de uma atualização
2. Transferir dados de uma cópia para outra
3. Propagar a operação de atualização para outras cópias
Consistência e replicação
– Gerenciamento de réplicas
Estado X Operações
o 1. Notificação de uma atualização
Realizadas por protocolos de invalidação
Cópias são informadas que uma atualização ocorreu e que os
dados que elas contém não são mais válidos
Usam pouca largura de banda
Útil quando existe muita operação de atualização e pouca leitura
Dados não são propagados
Toda vez que é requisitada uma operação em uma cópia
invalidada, em geral esta cópia precisa ser atualizada
anteriormente, segundo o modelo de consistência
Consistência e replicação
– Gerenciamento de réplicas
Estado X Operações
o 2. Transferir Dados de Uma Cópia para Outra
Várias modificações empacotadas em uma única mensagem
Útil quando a taxa leitura/escrita é relativamente alta
A probabilidade de uma atualização ser realmente efetiva é
grande
Os dados modificados devem ser lidos antes de ocorrer uma
outra atualização sucessiva
O fato de haver um grande número de leituras faz com que os
dados devam ser modificados antes de ocorrer a atualização
seguinte
Consistência e replicação
– Gerenciamento de réplicas
Estado X Operações
o 3. Propagar a operação de atualização para outras cópias
Não transferir dados, mas informar a cada réplica qual operação
de atualização ela deve realizar
São informados os parâmetros e informações necessárias para
a operação de atualização
Esta abordagem é denominada replicação ativa
O principal benefício da replicação ativa é que as atualizações
muitas vezes podem ser propagadas com custos mínimos de
largura de banda
Pode ser que a réplica precise de maior capacidade de
processamento
Consistência e replicação
– Gerenciamento de réplicas
Recuperação X Envio de Atualizações
o Abordagem baseada em envio
Atualizações são propagadas para outras réplicas sem que
essas réplicas tenham solicitado essas atualizações
Costumam ser usados entre réplicas permanentes e réplicas
iniciadas por servidor, mas também podem ser usadas para
enviar atualizações a caches de clientes
Usadas quando é necessário alto grau de consistência
Dados consistentes estão disponíveis imediatamente quando
solicitados
Consistência e replicação
– Gerenciamento de réplicas
Recuperação X Envio de Atualizações
o Abordagem baseada em recuperação de atualizações
Um servidor ou cliente requisita que um outro servidor lhe envie
quaisquer atualizações que ele tiver no momento em questão
Comumente usado por caches de clientes
Cliente sonda o servidor para ver se é necessária uma
atualização
Consistência e replicação
– Distribuição de conteúdo
Comparação entre protocolos
Consistência e replicação
– Questões importantes
Qual a principal razão de se utilizar modelos de consistência fraca.
o Muitas vezes é necessário utilizar replicação para aumentar
o desempenho do sistema. Com a replicação, surge a
necessidade de se manter réplicas consistentes.
o Trabalhar com consistência, de maneira a evitar uma
sincronização global de eventos, é a única forma de se
alcançar um bom desempenho em sistemas distribuídos de
larga escala.
o Assim, muitas aplicações aceitam modelos de consistência
fraca onde as restrições em relação a atualização das
réplicas podem ser relaxadas.
Consistência e replicação
– Questões importantes
Porque é importante um contrato entre software e o depósito de dados?
o É importante que o depósito de dados implemente o que o
software espera. Se um programa espera consistência
sequencial, o depósito de dados deve garantir este nível de
consistência.
o Entretanto, para melhorar o desempenho pode-se fornecer
um modelo de consistência mais fraco. Neste caso, o
software deve concordar com as regras de um novo contrato.
Exercícios