Introdução a Banco de Dados Prof. Mário A. Nascimento, Ph.D. mario@dcc.unicamp.br http://www.dcc.unicamp.br/~mario Material de autoria original de Raghu Ramakrishnan. 1
Bibliografia Ramakrishnan R., Database Management Systems, WCB McGraw-Hill, 1998. Elmasri, R. & Navathe, S., Fundamentals of Database Systems, Benjamin/Cummings, 1994, 2nd Ed. Korth, H.F.& Silberschatz, A., Sistemas de Banco de Dados, Makron do Brasil, 1995, 2a Ed. 2
Introdução 3
O que é SGBD? Uma grande coleção integrada de dados. Modelos do mundo real (enterprise) Entidades ( ex. estudantes, cursos) Relacionamentos (ex., Madonna está tendo CS564) Um Sistema de Gerenciamento de Banco de Dados (SGBD) é um pacote de software designado para guardar e gerenciar banco de dados. 4
Porque usar um SGBD? Acesso independente e eficiente a dados. Redução no tempo de desenvolvimento da aplicação. Integridade e segurança dos dados. Administração uniforme dos dados. Acesso concorrente, recuperação de crashes. 5
Porque estudar Banco de Dados? Mudança da computação para a informação. Em uma ponta: webspace (confuso!) Na outra ponta: aplicações científicas Conjuntos de dados aumentando em diversividade e volume.. Bibliotecas digitais, videos interativos, Projeto de Genoma Humano, projeto EOS,... Necessidade de SGBD cada vez maior SGBD permeia a maior parte da Computação. SOs, linguagens, teoria, IA, multimidia... 6
Modelos de Dados Um modelo de dados é uma coleção de conceitos para descrever dados. Um esquema é uma descrição de uma coleção particular de dados, usando algum modelo de dados. O modelo de dado relacional é o modelo mais usado hoje. Principal conceito: relação, basicamente uma tabela com linhas e colunas. Toda relação tem um esquema, que descreve as colunas, ou campos. 7
Níveis de Abstrações Muitas visões simples, esquema conceitual (lógico)e esquema físico. Visões descreve como usuários vêem o dado. Esquema conceitual define estrutura lógica. Esquema físico descreve o arquivo e indices usados. Visão 1... Visão N Esquema Conceitual Esquema Físico Esquemas são definidos usando uma DDL; Dados são modificados / consultados usando uma DML. 8
Ex.: Banco de Dados de uma Escola Esquema conceitual: Students(sid: string, name: string, login: string, age: integer, gpa:real) Courses(cid: string, cname:string, credits:integer) Enrolled(sid:string, cid:string, grade:string) Esquema Físico: Relações guardadas como arquivos desordenados. Índices na primeira colunas de estudantes. Esquema externo (Visão): Course_info(cid:string,enrollment:integer) 9
Independência de Dados Aplicações isoladas da maneira que os dados são estruturados e armazenados. Independência lógica de dados Proteção de trocas na estrutura lógica de dados. Independência física de dados Proteção de trocas na estrutura física de dados. Um dos mais importantes benefícios de usar um SGBD! 10
Controle da Concorrência. Execução da concorrência de processos é essencial para uma boa performance do SGBD. Acessos a discos são frequentes e lentos, é importante deixar a CPU alocada a diversos processos concorrentemente. Executar ações de diferentes processos pode levar a contradições: p.ex., o cheque compensado enquanto o saldo é computado. O SGBD evita tais problemas: usuários podem fingir que estão usando um sistema único. 11
Transação: Execução de um programa de BD O conceito chave é transação, uma seqüência atomica de ações no BD (leituras/gravações). Cada transação, executada completamente, deve deixar o BD num estado consistente (se o BD é consistente quando a transação começa). Usuários podem especificar algumas restrições de integridade, e o SGBD reforçará estas restrições. O SGBD não entende a semântica dos dados. Assim, assegurar que a transação preserve a consistência é definitivamente de responsabilidade do usuário! 12
Escalonando Transções Concorrentes SGBD garante que a execução de {T1,..., Tn} é equivalente a alguma execução em série T1...Tn. Antes de ler/escrever um objeto, uma transação requer um lock neste objecto, e espera até o SGBD retornar o lock. Todos os locks são liberados no final da transação. (protocolo 2PL estrito.) Idéia: Se uma ação de Ti, escrevendo X, afeta Tj, que lê X, um deles, digamos Ti, obterá o lock em X primeiro e Tj é forçado a esperar até Ti completar; isto efetivamente ordena as transações. E se Tj já tem um lock em Ye Ti mais tarde requer um lock em Y? (Deadlock!) Ti ou Tj é abortada e reiniciada. 13
Assegurando Atomicidade SGBD assegura atomicidade (tudo ou nada) sempre. Idéia: Construir um log (história) de todas ações realizadas pelo SGBD. Antes de uma mudança ser feita no BD, a entrada do log correspondente é forçada para um lugar seguro (WAL). Depois de um crash, os efeitos das transações parcialmentes executadas são desfeitos (undone) usando o log. (Devido ao WAL, se a entrada do log não foi salva antes do crash, a mudança correspondente não foi aplicada para o banco de dados!) 14
O Log As seguintes ações estão arquivadas no log: Ti escreve um objeto: valor anterior e novo. Registro de log deve ser gravado antes de da mudança efetiva.! Ti commits/aborts: um registro no log indicando tal ação. Registros no log são ligado por ids de transação, assim é fácil para desfazer uma específica transação. Log é seguro e frequentemente duplicado. Todas atividades relacionadas ao log (e de fato, todas atividades relacionadas a CC) são gerenciadas transparentemente pelo SGBD. 15
BDs fazem estas pessoas felizes... Usuários e fabricantes de BDs Programadores de aplicações em BD Administrador de BD (DBA) Projeta esquema logico e físico Gerencia segurança e autorizações Disponibilidades de dados, recuperação de desastres (crashes) Acerto do BD com o passar do tempo Tem que entender como um SGDB funciona! 16
Estrutura de um SGBD Um típico SGBD tem um arquitetura de camadas A figura não mostra CC e componentes de recuperação. Esta é uma das possíveis deferentes arquiteturas: cada sistema tem sua própria variação. Otimização e execução de consultas Operadores relacionais Arquivos e índices Gerenciamento de buffers Gerenciamento do disco BD Estas camadas tem que considerar CC e recuperação 17
Resumo SGBD usados para preservar, consultar grande conjuntos de dados. Benefícios: recuperação de crashes, acesso concorrente, agilidade no desenvolvimento, integridade e segurança dos dados, etc. Níveis de abstração independentes dos dados. Um SGBD típico tem uma arquitetura de camadas. Bons DBAs podem ganhar bem! Bastante P&D feita e a se fazer. 18