Sistema de Gerenciamento de Banco de Dados 1. Introdução Definição de uma base de dados: a) Em essência uma base de dados nada mais é que uma coleção de informações que persiste por longos períodos (Jeffrey Ullman ) b) conjunto de dados que contém informações de uma empresa em particular (Abraham Silberschatz) c) é uma coleção de dados que descreve as atividades de uma ou mais organizações (setores) relacionadas entre si (Raghu Ramakrishnan) d) conjunto de dados devidamente relacionados, tendo sido projetado, construído para manipular dados com propósito específico. Um Sistema de Gerenciamento de Banco de Dados (SGBD) pode ser definido como um software projetado para auxiliar a criar, manter e atualizar os dados do banco de dados (Raghu Ramakrishnan); Um sistema de banco de dados deve: a) permitir que o usuário crie novas bases de dados e especifique seu esquema ( estrutura lógica dos dados), usando uma linguagem especializada chamada data definition language - DDL. b) oferecer ao usuário a capacidade de consultar (query) os dados de uma base de dados e modificá-los, usando uma linguagem apropriada frequentemente chamada de query language ou data manipulation language. c) suportar o armazenamento de grande quantidade de dados por longos períodos de tempo, mantendo os dados seguros de acidentes e acesso não autorizado e garantindo acesso eficiente aos dados através de consultas e modificações à base de dados. d) Controlar os acessos simultâneos aos dados de tal forma a evitar que ações de um usuário afete outros e que haja corrupção acidental dos dados. 1.2 Arquitetura de um SGBD modificação dos consultas esquemas modificações dos dados processador de consultas gerenciador de transações gerenciador de armazenamento Dados e Metadados 1.2.1 Processador de consultas É responsável por transformar uma consulta ou modificação solicitados pelo usuário em uma sequência de operações a serem executadas sobre os dados de uma base de dados. O processador de consultas é responsável por: a) executar consultas b) modificar os dados da base de dados (inserir, remover, modificar) ou metadados (num SGBD relacional inclui nome das relações, nomes dos atributos, tipos de atributos) c) fazer um planejamento (query plan) para obter a melhor maneira de executar uma consulta (ex: usar índice, reordenar as operações, etc) 1.2.2 Gerenciador de Transações Consultas e outras ações são agrupadas em transações, que são unidades que devem ser executadas atomicamente e de forma isolada. A execução de uma transação deve ser durável, ou seja o efeito de uma transação que foi completada deve ser preservada mesmo após uma falha do sistema. uma transação é uma coleção de operações que desempenha uma função lógica única dentro de uma aplicação do sistema de banco de dados requisitos fundamentais para a execução de uma transação: a) atomicidade: toda a transação é executada ou nada é feito; b) consistência: após uma transação ter sido completada a base de dados satisfaz as condições de consistencias previamente assumidas; c) isolamento: se duas transações estão sendo executadas simultâneamente seus efeitos devem ser isolados uma da outra;(locking – controle de concorrência) d) durabilidade: uma vez que o sistema tenha informado que uma transação ocorreu com sucesso, seu efeito não deve ser perdido em caso de falha;(logging – recuperação de falhas) e) consiteência – uma transação, uma vez executada, deve garantir a consistência do banco de dados ( ex: atributo a tem valor sempre menor que atributo B). 1.2.3 Gerenciador de Armazenamento Tem como função: (i) gerenciar os acessos feitos à base de dados de acordo com as solicitações feitas pelos níveis mais altos do SGBD; (ii) gerenciar os recursos de disco e de memória. Estas funções poderiam ser executadas pelos sistemas operacionais convencionais. No entanto, seria muito difícil garantir os requisitos fundamentais de uma transação além da manutenção de redundância dos dados. 1.3 Arquitetura de um sistema de armazenamento motor de execução (execution engine) memória gerenciador de buffer pool gerenciador de espaço em disco disco 1.3.1 Gerenciador de espaço em disco O gerenciador de espaço em disco tem como função: - gerenciar os espaços livres e ocupados na área reservada para a base de dados; - suportar o conceito de páginas como unidade de dados; - transferir páginas da (para) a memória. 1.3.2 Gerenciador de Buffer Pool O gerenciador de buffer pool tem como função: - gerenciar a memória principal alocada para o SGBD; alocar e desalocar área de memória para suportar os dados as serem processados. 1.3.3 Motor de Execução ( Execution Engine) O Motor de execução tem como função executar cada uma das etapas.do plano de consulta definido pelo processador de consultas. Interage com a maioria dos componentes do SGBD, seja diretamente ou através dos buffers. Suas funções incluem: - liberar e requisitar espaço livre em disco ; - manter informações sobre as páginas alocadas para cada tabela; organizar os registros dentro de uma página; ser capaz de identificar a página no disco que contém o registro sendo solicitado; suportar estruturas de dados auxiliares para garantir acesso mais rápido à página que contém a informação solicitada; gerenciar o catálogo do sistema, que são estruturas de dados que mantêm informações sobre todas as relações, índices e visões de uma base de dados.