[UFMS Digital] Banco de Dados - Módulo 3
Módulo 3: Estruturas de SGBDs Relacionais
Introdução aos Índices e Controle de Concorrência
- O módulo aborda estruturas de SGBDs relacionais, focando em índices e controle de concorrência, com o objetivo de entender armazenamento e acesso a dados.
Estrutura do Índice
- A estrutura do índice é comparada à busca em um livro, onde o índice facilita encontrar informações rapidamente.
- Um índice ordenado no banco de dados permite buscas eficientes, recuperando registros rapidamente através de uma chave de pesquisa.
- A chave de pesquisa pode ser qualquer subconjunto de campos da tabela, não necessariamente a chave primária.
Funcionamento dos Índices
- O índice é um arquivo separado que contém uma chave de busca e um ponteiro para o registro correspondente no disco.
- Ao consultar dados, o SGBD utiliza o índice para evitar carregar todo o conjunto de dados, melhorando a eficiência da busca.
Declaração e Tipos de Índices
- Existem duas formas principais para declarar índices: implicitamente ao definir chaves primárias ou candidatas e explicitamente usando o comando
CREATE INDEX.
- É possível remover índices conforme necessário; os arquivos podem ser organizados sequencialmente ou em múltiplos níveis (ex.: árvores binárias).
Algoritmos e Vantagens dos Índices
- Diferentes algoritmos como hash ou árvore são utilizados para otimizar buscas; cada tipo tem suas vantagens e desvantagens.
Transferências Financeiras e Propriedades ACID em SGBDs
Importância da Atomicidade nas Transações
- A transferência de valores entre contas deve ser tratada como uma única transação para evitar inconsistências, caso ocorra um erro durante o processo.
- Se a operação for dividida em duas transações distintas, pode haver falhas que resultem em valores incorretos nas contas envolvidas.
- O processamento de transações é gerido por um módulo do SGBD que assegura acessos múltiplos de usuários de forma consistente.
Propriedades ACID
Definição e Significado
- As propriedades ACID (Atomicidade, Consistência, Isolamento e Durabilidade) são fundamentais para garantir a integridade das transações em SGBDs relacionais.
Atomicidade
- A atomicidade garante que cada transação seja executada completamente ou não seja executada. Não há execução parcial.
- Em caso de falha durante a execução, todas as operações realizadas na transação são desfeitas para manter a consistência dos dados.
Consistência
- A consistência assegura que se o banco de dados estiver inicialmente consistente, ele permanecerá consistente após a execução da transação.
- O programador é responsável por garantir que as alterações feitas na transação mantenham essa consistência.
Isolamento
- O isolamento permite que várias transações sejam executadas simultaneamente sem interferir umas nas outras. Cada uma deve operar como se fosse isolada.
- O SGBD garante esse isolamento através do módulo de controle de concorrência.
Durabilidade
- A durabilidade assegura que uma vez confirmada (committed), uma transação não pode ser perdida mesmo diante de falhas no sistema.
Controle de Concorrência e Problemas Associados
Importância do Controle de Concorrência
- É crucial realizar o controle de concorrência para evitar problemas como atualizações perdidas quando duas ou mais transações acessam o mesmo item simultaneamente.
Exemplo do Problema da Atualização Perdida
Problemas de Atualização em Sistemas de Banco de Dados
Atualização Perdida e Seus Efeitos
- A atualização perdida ocorre quando uma transação T2 sobrescreve um valor que outra transação T1 estava utilizando, resultando em dados incorretos.
- Além da atualização perdida, existem outros problemas como leitura suja e atualização temporária, que afetam a integridade dos dados em sistemas de controle de concorrência.
Importância do Controle de Concorrência
- O controle de concorrência é crucial para garantir a integridade das transações em bancos de dados, evitando conflitos entre operações simultâneas.
- Embora o processamento sequencial (serial) elimine a concorrência, ele também reduz a eficiência. A concorrência permite um processamento mais ágil das transações.
Teorias e Práticas para Serealização
- Existem várias teorias que buscam tornar planos de execução equivalentes a um plano serial, mas sua aplicação prática é desafiadora.
- Sistemas modernos utilizam regras impostas por sistemas de controle de concorrência para garantir que os planos sejam serealizáveis durante as operações.
Técnicas para Garantir Serealização
- Técnicas como bloqueio e deadlock são implementadas para assegurar comportamentos que garantem a serealização dos planos de execução.
Conclusão sobre Processamento Transacional