introdução a sistemas de banco de dados
DESCRIPTION
Introdução a Sistemas deBanco de DadosTRANSCRIPT
Módulo I: Introdução a Sistemas de Banco de Dados
(Aula 1)
Clodis Boscarioli
Banco de Dados I
2007
Agenda:
� Apresentação do Plano de Ensino;
� Aspectos Históricos;
� Estrutura Geral de um SGBD;
� Profissionais de BD;
� Exemplos de SGBDs Comerciais.
Sistema de Arquivos
� Primeiro sistema para armazenamento e manipulação de dados e geração de informação.
� Problemas:
� Definição das estruturas de arquivos inseridas no própriocódigo do aplicativo
� Alta dependência entre dados e aplicação, dificultando as atividades de manutenção;
� Compartilhamento de um arquivo por vários programascomprometido. A definição das estruturas dos arquivos eramduplicadas nos programas;
� Arquivos e programas de um mesmo sistema desenvolvidos, de forma isolada, por diferentes programadores, e até mesmo, emlinguagens de programação diferentes.
Sistemas de Arquivos - Problemas
� Inconsistência e redundância de dados:
� Se a mesma informação está repetida em diversos lugares (arquivos diferentes) ela:
� está redundante, aumentando os custos de armazenamento e;� pode passar para um estado inconsistente, com valores divergentes nas diferentes réplicas.
� Dificuldade de acesso aos dados:
� A geração de informação pode surgir, durante o tempo em que o sistema está em produção, sob diferentes aspectos. Cada requisição de informação diferente, no sistema de arquivos, vai gerar a necessidade da criação de um programa aplicativo. A recuperação de informação não é atendida de modo eficiente.
� Isolamento de dados:� Os dados estão armazenados em arquivos distintos, que não possuem qualquer tipo de relacionamento direto, e ainda, podem conter diferentes formatos para o mesmo dado.
� Problemas de integridade:
� É difícil manter “restrições de integridade” automaticamente, por exemplo:
� O balanço de uma conta bancária não pode cair abaixo de um determinado valor.
� Sempre que o saldo de uma conta for superior a um valor X, parte deste saldo deve ser automaticamente aplicado na poupança.
Sistemas de Arquivos - Problemas
Sistemas de Arquivos - Problemas
� Problemas de atomicidade:� Algumas operações em um sistema devem ser “atômicas” (indivisíveis). Ou essas operações são, em seu conjunto, executadas até o fim, ou nenhuma delas deve ser executada.
� Problemas de segurança:
� Nem todos os usuários do sistema devem estar autorizados a ver/acessar todos os dados armazenados. Uma vez que os programas de aplicação são inseridos no sistema como um todo, é difícil implementar e garantir a efetividade de regras de segurança.
Sistemas de Arquivos - Problemas
� Anomalias no acesso concorrente:� A melhora de desempenho em um sistema pode ocorrer pela execuçãosimultânea de diversas operações. Geralmente, nos sistemas de arquivos, esta melhoria seria difícil de implementar sem levar a danos na consistência dos dados. Considere a seguinte situação num sistema bancário:
� Suponha que o saldo de uma conta bancária A seja 500 reais. Se dois clientes retiram fundos desta conta A ao mesmo tempo (acesso concorrente à conta A), um estado inconsistente pode ocorrer se na execução das duas instâncias do programa de débito, ambos os clientes leiam o saldo antigo e retirem, cada um, seu valor correspondente, e seja então armazenado o valor restante.
� Instanciando o problema:� Ambos lêem o valor 500;� Um retira 50 reais (resultando 450 reais) e o outro 100 reais (resultado 400 reais);
� Dependendo de qual execução do programa de débito registre o saldo restante primeiro, o valor do saldo da conta será 450 ou 400 reais, quando deveria ser 350 reais.
Sistema de Arquivos versus Sistemas de Banco de Dados
O acesso/gerenciamento aos/dos dados é feito diretamente pelos programas aplicativos.
O acesso/gerenciamento aos/dos dadosé feito pelo SGBD. O SGBD funciona como uma interface entre o BD e os programas aplicativos.
Dados(arquivos)
Dados(arquivos)SGBD
Sistema de arquivos Sistema de Banco de Dados (SBD)
Aplicativos Aplicativos
SBDs: Independência de Dados
� É a capacidade de modificar a definição dos esquemas em determinado nível, sem afetar o esquema de nível superior.
� Independência de dados física: é a capacidade de modificar o esquema físico sem que, com isso, qualquer programa de aplicaçãoprecise ser reescrito. Modificações no nível físico são necessárias, ocasionalmente, para aprimorar desempenho. (mais fácil de ser alcançada nos SBDs)
� Independência de dados lógica: é a capacidade de modificar o esquema lógico sem que, com isso, qualquer programa de aplicaçãoprecise ser reescrito. Modificações no nível lógico são necessárias sempre que uma estrutura lógica do banco de dados é alterada (por exemplo, mudança do sistema monetário).
Discussão sobre o “BUG do Milênio”.
Sistema Gerenciador de Banco de Dados
Um Sistema Gerenciador de Banco de Dados (SGBD) é uma
coleção de programas que habilitam usuários a criar e
manter um banco de dados.
O SGBD é um software de propósito geral, que facilita o
processo de definição, construção e manipulação de um
bancos de dados.
O grande objetivo de um sistema de BD é oferecer uma
visão “abstrata” dos dados, com disponibilidade eficiente,
aos usuários.
Definição de banco de dados envolve
especificar estruturas e tipos de dados para serem
gravados no banco de dados, com uma descrição
detalhada de cada tipo de dado.
Construção de um banco de dados é o
processo de consistir e gravar inicialmente dados
no banco de dados.
Manipulação de um banco de dados inclui
funções como consulta por dados específicos e
atualização para refletir as alterações no mundo
real.SGBD
PROGRAMAS
Mundo real
usuários
SGBDs - Propósitos Gerais
Visão Geral de um SGBD
SGBD
Usuários
Interface comaplicações
Programas deaplicações
Consultas(queries)
Esquema de Banco de Dados
Usuáriosnavegantes
Programadoresde aplicações
Usuáriossofisticados
Administra-dores de BD
Processadorde consultas
Gerenciadorde memória
Gerenciadorde transações
Gerenciador de buffer
Gerenciadorde arquivos
InterpretadorDDL
CompiladorDML
Pré-compiladorde comandos
DML
Programas deaplicações em código objeto
Componentes de execuçãode consultas
Armazenamentoem disco Índices
Arquivos dedados
Dados estatísticos BD
Dicionáriode dados
SGBD - Linguagens dos Sistemas
1. Linguagem de Definição de Dados: Um esquema de dados é especificado por uma conjunto de definições expressas por uma linguagem especial chamada Linguagem de definição de dados (do inglês Data-Definition Language – DDL).
O resultado da compilação dos parâmetros/comando DDL geral os dicionário de dados (arquivo de metadados).
2. Linguagem de Manipulação de Dados: Do inglês Data-Manipulation Language – DML) é a linguagem que viabiliza o acesso e a manipulação do dados. Podem ser:
Procedurais: o usuário especifica procedimentos para recuperar os dados que necessita.
Não-procedurais: o usuário descreve os dados que necessita.
� Manipulação de dados = recuperação de informações do banco de dados e inserção, remoção e alteração de dados no banco de dados.
SGBD - Linguagens dos Sistemas
SGBD - Processamento de Consultas
� Compilador DML: Traduz comandos DML em instruções de baixo nível, entendidos pelo componente de execução de consultas. Além disso, otimiza a solicitação do usuário.
� Pré-compilador para comandos DML inseridos em programas de aplicação: Convertem comandos DML em chamadas de procedimentos normais da linguagem hospedeira. Interage com o compilador DML e modo a gerar o código apropriado.
� Interpretador DDL: Interpreta os comandos DDL e os registra no dicionário de dados.
� Componentes para tratamento de consultas: Executa instruções de baixo nível gerada pelo compilador DML.
SGBD - Gerenciador de Memória
� Um dos principais objetivos de um Sistema de Banco de Dados é simplificar e otimizar o acesso aos dados.
� O desempenho de um SBD depende diretamente da eficiência das estrutura usadas na representação dos dados e do quanto este sistema está apto a operar essas estrutura de dados
� Um dos principais módulos de um SGBD é o gerenciador de memória, responsável por fazer a interface entre o armazenamento de dados em um nível mais baixo e as consultas e programas de aplicação submetidos ao sistema. Ele também realiza a interface do SBD com o Sistema de Arquivos do Sistema Operacional.
� É o gerenciador de memória quem traduz os diversos comandos DML em comandos de baixo nível de sistemas de arquivos.
SGBD - Gerenciador de Memória
� Composto por:
� Gerenciamento de autorizações e integridade: testam o cumprimento das regras de integridade e a permissão ao usuário no acesso ao dado.
� Gerenciamento de Transações: cuida da execução das transações.
� Administração de buffer: responsável pela intermediação de dados do disco para a memória principal e pela decisão de quais dados colocar em memória auxiliar.
� Administração de arquivos: gerencia a alocação de espaço de no armazenamento em disco e as estruturas de dados usadas para representar estas informações armazenadas em disco.
SGBD – Módulo Banco de Dados
� Arquivo de dados: armazena os dados (o banco de dados propriamente dito).
� Dicionário de dados: metadados.
� Índices: estrutura que otimizam o acesso aos itens de dados.
� Estatística de dados: armazena informações estatísticas relativas aos dados contidos no banco de dados. Essas informações são usadas pelo processador de consultas para seleção de meios eficientes para execução de consultas.
• BD não contém somente os dados de conteúdo
armazenados, ele também armazena definições e descrições
sobre a estrutura que forma o BD (metadados);
• Os metadados contêm definições da estrutura de cada
arquivo, o tipo e formato de armazenamento de cada item de
dados, e várias restrições dos dados;
• O catálogo é usado pelo SGBD e ocasionalmente por
algum usuário do BD.
SGBD – Módulo Banco de Dados
• Controle sobre a redundância
– Espaço para armazenamento;
– Replicação;
• Compartilhamento de Dados
– Se diversos usuários tem aplicações integradas no BD, precisa-se de um software de controle de concorrênciapara a atualização do BD;
– Facilidade na definição da visão do usuário, especificando uma porção do BD que tem interesse particular de um grupo de usuários;
Características de um “bom” SGBD
• Restrição de acesso não autorizado
� Possui um sistema de segurança garantindo o acesso específico a cada usuário (personalizado para grupos ou individual)
–Segurança no acesso ao BD;
–Permissão de operação no BD;
–Proteção de contas pessoais (ou grupo) por senhas;
Características de um “bom” SGBD
• Fornecimento de múltiplas interfaces� Diversos níveis de conhecimento entre os usuários, onde o BD deve oferecer vários tipos de acesso aos dados:
– Linguagem para consulta de usuários casuais;
– Linguagem de programação para o programador de aplicações;
– Formulários e menus para acesso de outros usuários;
Características de um “bom” SGBD
• Forçar restrições de integridade�São regras associadas aos dados:
– Identificação do tipo de dado (restrição mais trivial);
– Unicidade de um dado;
– Impossibilidade do dado não ser informado (ser nulo);
– Relacionamento entre os dados armazenados.
�Dificultar o erro, mas ele ainda pode acontecer.
Características de um “bom” SGBD
• Sistema de Backup e Recuperação:–Facilidade e controle do BD no caso de falha do hardware ou do software.
• Vantagens adicionais na abordagem de BD:–Desenvolvimento de padrões – permite ao DBA definir e forçar padrões (nomes, formatos, terminologias, etc.) facilitando a comunicação e cooperação entre os setores, projetos e usuários dentro da organização;
–Flexibilidade – algumas alterações na estrutura do BD não afetam “muito” os programas de aplicações existentes.
Características de um “bom” SGBD
–Tempo de desenvolvimento reduzido – Projetar e implementar uma nova aplicação é mais rápido em um BD existente do que se ele não existisse ou fosse feito sobre a abordagem tradicional de arquivos;
–Disponibilidade de informação atualizada – Torna o BD disponível para todos os usuários (que tenham permissão de acesso) devido ao controle de concorrência e recuperação do SGBD;
Características de um “bom” SGBD
Papéis em Sistemas de Banco de Dados
� Os usuários diferenciados em quatro tipos:
� Programadores de aplicações: profissionais em computação que interagem com o sistema por meio de DMLs envolvidas em programas escritos em diferentes linguagens hospedeiras.
� Usuários sofisticados: interagem com os sistemas usando DMLs.
� Usuários especialistas: usuários sofisticados que escrevem aplicações especializadas.
� Usuários navegantes: usuários comuns que interagem com o sistema através das “interfaces”.
Exemplos de Sistemas Comerciais
� dBASE: Lançado pela Ashton-Tate e posteriormente adquirido pela Borland. Possuía uma linguagem de programação própria para desenvolvimento de aplicações, teve versões para DOS e Windows, trabalhava com gerenciamento de arquivos planos baseados em listas invertidas. A partir da versão 7, os direitos foram vendidos pela Borland.
� Paradox: Possui ambiente integrado de desenvolvimento para criação de aplicativos. Os direitos de produção foram vendido pela Borland para a Corel. Teve versões para DOS e hoje possui apenas versões para Windows.
� DataFlex: Popular para ambiente Unix, mas teve versões para DOS e Windows. Possui ambiente integrado para desenvolvimento de aplicações e hoje é comercializado com o nome de Visual Data Flex.
� FoxBase/FoxPro: Concorrente do dBase com total compatibilidade em termos de arquivos e programas-fontes. Com recursos adicionais como a capacidade de pré-compilação dos códigos-fontes para melhorar performance. Hoje, após a aquisição pela Microsoft da Fox Software (produtora original), se chama: Visual FoxPro.
Exemplos de Sistemas Comerciais
� Access: é padrão em banco de dados para microcomputadores do ambiente Windows. Possui ambiente integrado que permite a criação e gerenciamento do banco de dados, desenvolvimento de aplicações e geração de relatórios. A linguagem de programação usada neste ambiente deriva do Visual Basic.
� Oracle: O primeiro em Banco de Dados Corporativos (cliente/servidor) possuindo grande variedade de distribuições (para Macintosh, Windows, Linux, FreeBSD, Unix) e para computadores de grande porte. É padrão SQL com uma linguagem própria para desenvolvimento de aplicações.
� Interbase: Foi incluído, pela Borland, nas suas ferramentas de desenvolvimento (Delphi, C++Builder, JBuider). Teve uma versão liberada como Open Source.
� MS-SQL Server: Produzido pela Microsoft, inicialmente era uma versão especialdo Sybase. As versões atuais são independentes e operam exclusivamente sobre Windows.
Exemplos de Sistemas Comerciais
� Sybase SQL Anywhere: Concorre com o Oracle no mercado corporativo. Aplicações para este banco são desenvolvidas com o PowerBuilder.
� MySQL: Possui versões para Windows, Solaris, Unix, FreeBSD, Linux) e é gratuito. Muito poderoso, usado principalmente para desenvolvimento WEB como servidor de dados para comércio eletrônico.
� PostgreSQL: Gratuito e com boa aceitação. Originalmente concebido para rodar em Linux. Possui versões para Windows. Principalmente usado para comércio eletrônico juntamente com linguagem PHP.
� Informix: Boa escalabilidade e desempenho. Comercializado pela IBM.
� BD2: Produzido pela IBM, nasceu nos ambientes de grande porte, sendo posteriormente portado para plataformas mais simples (microcomputadores).
� Firebird: Nascido de uma iniciativa da Borland em abrir o código do InterBase 6, este sistema é open source e esbanja versatilidade e robustez. Possui recursos de trigger, store procedures e transações concorrentes.
Bibliografia Utilizada:
� Sistemas de Banco de Dados. (Cap. 1) AbrahamSilberchatz, Henry F. Korth e S. Sudarshan. 3ª Edição. Makron Books, 1999.
� Introdução a Banco de Dados (Apostila). (Cap. 1-3) Osvaldo Kotaro Takai, Isabel Cristina Italiano, João Eduardo Ferreira. DCC-IME-USP, 2005.