apresentação do powerpointdeljoe.com.br/professor/bddistrib/aula_03.pdf–aplicável apenas a...

27
Evandro Deliberal [email protected] https://www.linkedin.com/in/evandrodeliberal Aula 03

Upload: lediep

Post on 03-Dec-2018

214 views

Category:

Documents


0 download

TRANSCRIPT

Evandro [email protected]://www.linkedin.com/in/evandrodeliberal

Aula 03

Concorrência• Método

– Sincronização• Problemas:

– Perda de consistência– Acesso a dados inconsistentes– Perda de atualizações

– Modelagem• Dados e Sistemas• A nível lógico, o banco de dados é descrito por um esquema

conceitual global consistindo de um conjunto de objetos lógicos• A nível físico, o banco é descrito por uma série de esquemas

internos, um para cada nó onde está armazenado

Concorrência

Concorrência em BD se refere à maneira pela qual os produtos de BD tratam as situações nas quais um agente (usuário ou programa) deseja ter acesso a

determinada porção de dados ao mesmo tempo que outro agente

Concorrência• Níveis de bloqueio

– Bloqueio de BD

– Bloqueio de arquivo ou tabela

– Bloqueio de unidades lógicas como TABLESPACES ou TABLES

– Bloqueio de blocos

– Bloqueio de linhas de tabelas ou registros

– Bloqueio de campos ou atributos

Concorrência• Definição bem clara das regras

• Conhecimento de todos os nós ou objetos envolvidos

• Conhecimento sobre os processos

• Acompanhamento da operação

• Atualização dos documentos

Concorrência• Método

– Sincronização• Problemas:

– Perda de consistência– Acesso a dados inconsistentes– Perda de atualizações

– Modelagem• Dados e Sistemas• A nível lógico, o banco de dados é descrito por um esquema

conceitual global consistindo de um conjunto de objetos lógicos• A nível físico, o banco é descrito por uma série de esquemas

internos, um para cada nó onde está armazenado

Concorrência – Em resumo• Níveis de bloqueio

– Todo o banco de dados– O arquivo– A construção de dados– A página ou bloco (mais

comum)– A linha ou registro

• Tipos de bloqueio– Apenas de leitura– Leitura e Gravação– Intenção de Bloqueio

• Invocação de bloqueio– Implícito– Explícito

• Disciplinas de bloqueio– FIFO– Detecção de tempo bloqueado– Escalação de bloqueios– Detecção de bloqueios fatais

• Versões– Múltiplas cópias do mesmo

registro ou linha– Trilha de cópias, modificações e

tempos

ConceitoTransaçãoUma transação é uma seqüência de operações executadas como uma única unidade lógica de trabalho. Uma unidade lógica de trabalho deve mostrar

quatro propriedades, designadas pelas iniciais ACID (atomicidade, consistência, isolamento e durabilidade), para que seja qualificada como uma transação.

Atomicidade

Uma transação deve ser uma unidade atômica de trabalho; ou todas as suas modificações de dados são executadas ou nenhuma delas é executada.

Consistência

Quando concluída, uma transação deve deixar todos os dados em um estado consistente. Em um banco de dados relacional, todas as regras devem

ser aplicadas às modificações da transação para manter toda a integridade dos dados. Todas as estruturas de dados internas, tais como índices em

árvore B ou listas duplamente vinculadas, devem estar corretas ao término da transação.

Isolamento

Modificações feitas por transações simultâneas devem ser isoladas das modificações feitas por qualquer outra transação simultânea. Uma transação

reconhece os dados no estado em que estavam antes de outra transação simultânea tê-los modificado ou reconhece os dados depois que a

segunda transação tiver sido concluída, mas não reconhece um estado intermediário. Isso é chamado serializabilidade porque resulta na

capacidade de recarregar os dados iniciais e reexecutar uma série de transações de modo que os dados obtidos estejam no mesmo estado em que

estavam depois que as transações originais foram executadas.

Durabilidade

Depois que uma transação tiver sido concluída, seus efeitos ficam permanentemente no sistema. As modificações persistem até mesmo no caso de

uma queda do sistema.

Transações• Os programadores são responsáveis por:

– Iniciar e terminar transações em pontos que imponham a consistência lógica dos dados. – Definir a seqüência de modificações de dados que deixem os dados em um estado consistente em

relação às regras comerciais da organização. – Inclui essas instruções de modificação em uma única transação de modo que o Mecanismo de banco

de dados do SQL Server possa aplicar a integridade física da transação.

• É de responsabilidade de um sistema de banco de dados empresarial, tal como uma instância do Mecanismo de Banco de Dados, oferecer mecanismos que assegurem a integridade física de cada transação. O Mecanismo de Banco de Dados oferece:– Recursos de bloqueio que preservam o isolamento da transação.– Recursos de log que garantem a durabilidade da transação. Mesmo se o hardware do servidor, o

sistema operacional ou a instância do Mecanismo de Banco de Dados falharem, a instância usa os logs da transação ao reinicializar para reverter automaticamente qualquer transação incompleta até o ponto da falha do sistema.

– Recursos de administração de transação que impõem a atomicidade e a consistência da transação. Depois que uma transação tiver sido iniciada, ela deve ser concluída com êxito ou a instância do Mecanismo de Banco de Dados desfará todas as modificações de dados feitas desde que a transação foi iniciada.

Controle de Transações

TransaçõesMétodos de bloqueio• A técnica de bloqueio em duas fases para controle de concorrência é

baseado no bloqueio de itens de dados, sendo que, chamamos de bloqueio uma variável que fica atrelada ao item de dados.

• Este bloqueio pode ser binário (possui dois valores: 1 e 0), logo, o item de dados está bloqueado ou não está bloqueado. Permitindo que o item de dado só esteja acessível para uma transação apenas se a variável não estiver bloqueada (ou estiver com valor 0).

• São usadas duas operações para o bloqueio binário, são elas: lock(1) e unlock(0), quando o item de dados está sendo usado, o estado da variável é lock(1), assim que a transação encerra a utilização do item é emitida a operação unlock(0), então, o item já está disponível para outra transação.

TransaçõesMétodos de Bloqueio:• Duas maneiras de bloquear(lock) os dados são:

– Bloqueio Compartilhado: quando uma transação recebe este tipo de bloqueio e a instrução é de leitura, então, mais de uma transação poderá acessar o mesmo dado. Se a instrução for de gravação, então ela não poderá participar de um bloqueio compartilhado, ou seja, é permitido que várias transações acessem um mesmo item "A" se todas elas acessarem este item "A" apenas para fins de leitura.

– Bloqueio Exclusivo: quando uma transação recebe este tipo de bloqueio, ela fica exclusivamente reservada para a instrução que compõe a transação, não permitindo que outra transação faça uso do dado que está sendo utilizado, logo, um item bloqueado para gravação é chamado de bloqueado exclusivo, pois uma única transação mantém o bloqueio no item.

TransaçõesImportante:

• Uma transação precisa manter o bloqueio do item de dado durante o tempo em que estiver acessando aquele item.

– até mesmo porque nem sempre o desbloqueio imediato após o acesso final é interessante, pois pode comprometer a serialização em alguns casos.

PerguntasSempre haverá a necessidade de bloqueio e desbloqueio dos itens de dados, mas existem algumas situações em que a combinação dessas duas fases pode gerar um problema no banco dados, que damos o nome de? .....

TransaçõesControle de transações

• Transações explícitas– Inicie uma transação explicitamente por uma função de API ou

emitindo a instrução Transact-SQL BEGIN TRANSACTION.

• Transações de confirmação automática– O modo padrão do Mecanismo de Banco de Dados. Cada instrução

Transact-SQL individual é confirmada na conclusão. Você não precisa especificar nenhuma instrução para controlar transações.

TransaçõesControle de transações

• Transações implícitas– Defina o modo de transação implícito como ativado por uma função de API ou pela

instrução Transact-SQL SET IMPLICIT_TRANSACTIONS ON. A próxima instrução inicia uma nova transação automaticamente. Quando essa transação é concluída, a próxima instrução Transact-SQL inicia uma nova transação.

• Transações no escopo do lote– Aplicável apenas a vários conjuntos de resultados ativos (MARS), uma transação Transact-

SQL explícita ou implícita iniciada em uma sessão MARS se torna uma transação no escopo do lote. Uma transação no escopo do lote não confirmada ou revertida quando um lote é concluído é revertida automaticamente pelo SQL Server.

Os modos de transação são gerenciados no nível de conexão. Se uma conexão for alterada de um modo de transação para outro, isso não terá nenhum efeito nos modos de transação de qualquer outra conexão.

TransaçõesFinalização de uma transação

• COMMIT – Se uma transação for concluída com êxito, confirme-a. Uma instrução

COMMIT garante que todas as modificações na transação fazem parte permanente do banco de dados. Um COMMIT também libera recursos, como bloqueios, usados pela transação.

• ROLLBACK– Se ocorrer um erro em uma transação ou se o usuário decidir cancelá-la,

reverta a transação. Uma instrução ROLLBACK desfaz todas as modificações feitas na transação retornando os dados ao estado anterior ao início da transação. Um ROLLBACK também libera recursos usados pela transação.

TransaçõesTransações Distribuídas• Abrangem dois ou mais servidores conhecidos como

gerenciadores de recursos• O gerenciamento da transação deve ser coordenado

entre os gerenciadores de recursos por um componente de servidor chamado de gerenciador de transações.

• A instância gerencia a transação distribuída internamente. Para o usuário, ela opera como uma transação local.

TransaçõesTransações Distribuídas

• No aplicativo, uma transação distribuída é gerenciada da mesma forma como uma transação local.

• No final da transação, o aplicativo solicita que a transação seja confirmada ou revertida

TransaçõesTransações Distribuídas

• O gerenciamento do processo de confirmação, ocorre em duas fases:

– Preparo

– Confirmação

Fase de confirmação

Se o gerenciador de transações receber preparos bem-sucedidos de todos os gerenciadores de recursos, ele enviará comandos de confirmação a cada gerenciador de recursos. Em seguida, os gerenciadores de recursos podem concluir a confirmação. Se todos os g

TransaçõesFase de preparo

Quando o gerenciador de transações recebe uma solicitação de confirmação, ele envia um comando de preparação a todos os gerenciadores de recursos envolvidos na transação. Cada gerenciador executa todas as ações necessárias para tornar a transação durável, e todos os buffers que mantêm imagens de log da transação são liberados no disco. À medida que cada gerenciador de recursos conclui a fase de preparação, ele retorna informações de êxito ou de falha ao gerenciador de transações.

Fase de confirmaçãoSe o gerenciador de transações receber preparos bem-sucedidos de todos os gerenciadores de recursos, ele enviará comandos de confirmação a cada gerenciador de recursos. Em seguida, os gerenciadores de recursos podem concluir a confirmação. Se todos os gerenciadores de recursos relatarem uma confirmação bem-sucedida, o gerenciador de transações enviará uma notificação de êxito ao aplicativo. Se um gerenciador de recursos informar uma falha na preparação, o gerenciador de transações enviará um comando de reversão a cada gerenciador de recursos e indicará a falha da confirmação ao aplicativo.

Transações Avançadas

Transações DiferidasSignificado

Replicação - Fatores• Definição

– Síncrono

– Assíncrono

• Rede

• O que mais?

Replicação• Dados distribuídos são dados espalhados em múltiplos BD,

sendo que cada dado existe em apenas um lugar. Dados replicados são dados copiados para múltiplos BD.

• Dados distribuídos são síncronos, pois as atualizações tornam-se imediatamente disponíveis a todo o BD.

• Dados replicados são assíncronos, pois as atualizações só se tornam visíveis após o refrescamento das replicações.

• Em caso de falha da rede todo o BD distribuído falha enquanto os sistemas com dados replicados ainda podem operar.

Duvidas

Evandro Deliberal

[email protected]

Obrigado

Evandro Deliberal

[email protected]