Introdução a Banco de Dados Prof. Mário A. Nascimento, Ph.D. [email protected] http://www.dcc.unicamp.br/~mario Material de autoria original de Raghu Ramakrishnan. Database Management Systems, R. Ramakrishnan (tradução, autorizada, de Anna & Mario Nascimento) 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. Database Management Systems, R. Ramakrishnan (tradução, autorizada, de Anna & Mario Nascimento) 2 1 Introdução Database Management Systems, R. Ramakrishnan (tradução, autorizada, de Anna & Mario Nascimento) 3 O que é um 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. Database Management Systems, R. Ramakrishnan (tradução, autorizada, de Anna & Mario Nascimento) 4 2 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”. Database Management Systems, R. Ramakrishnan (tradução, autorizada, de Anna & Mario Nascimento) 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 ... Database Management Systems, R. Ramakrishnan (tradução, autorizada, de Anna & Mario Nascimento) 6 3 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. Database Management Systems, R. Ramakrishnan (tradução, autorizada, de Anna & Mario Nascimento) 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. Database Management Systems, R. Ramakrishnan (tradução, autorizada, de Anna & Mario Nascimento) 8 4 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) Database Management Systems, R. Ramakrishnan (tradução, autorizada, de Anna & Mario Nascimento) 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 mudanças na estrutura lógica de dados. Independência física de dados Proteção de mudanças na estrutura física de dados. ☛ Um dos mais importantes benefícios de usar um SGBD! Database Management Systems, R. Ramakrishnan (tradução, autorizada, de Anna & Mario Nascimento) 10 5 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. Database Management Systems, R. Ramakrishnan (tradução, autorizada, de Anna & Mario Nascimento) 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 ! Database Management Systems, R. Ramakrishnan (tradução, autorizada, de Anna & Mario Nascimento) 12 6 Escalonando Transaçõ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. Database Management Systems, R. Ramakrishnan (tradução, autorizada, de Anna & Mario Nascimento) 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 !) Database Management Systems, R. Ramakrishnan (tradução, autorizada, de Anna & Mario Nascimento) 14 7 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. Database Management Systems, R. Ramakrishnan (tradução, autorizada, de Anna & Mario Nascimento) 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 ! Database Management Systems, R. Ramakrishnan (tradução, autorizada, de Anna & Mario Nascimento) 16 8 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 Database Management Systems, R. Ramakrishnan (tradução, autorizada, de Anna & Mario Nascimento) 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 já feita e a ser feita. Database Management Systems, R. Ramakrishnan (tradução, autorizada, de Anna & Mario Nascimento) 18 9