Banco de Dados I 2007 Módulo I: Introdução a Sistemas de Banco de Dados (Aula 1) Clodis Boscarioli 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óprio código do aplicativo Alta dependência entre dados e aplicação, dificultando as atividades de manutenção; Compartilhamento de um arquivo por vários programas comprometido. A definição das estruturas dos arquivos eram duplicadas nos programas; Arquivos e programas de um mesmo sistema desenvolvidos, de forma isolada, por diferentes programadores, e até mesmo, em linguagens 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. Sistemas de Arquivos - Problemas 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 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ção simultâ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 Sistema de arquivos Aplicativos Sistema de Banco de Dados (SBD) Dados (arquivos) O acesso/gerenciamento aos/dos dados é feito diretamente pelos programas aplicativos. Aplicativos SGBD Dados (arquivos) O acesso/gerenciamento aos/dos dados é feito pelo SGBD. O SGBD funciona como uma interface entre o BD e os programas 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ção precise 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ção precise 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. SGBDs - Propósitos Gerais Definição de banco de dados envolve usuários 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. PROGRAMAS 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 Mundo real Visão Geral de um SGBD Processador de consultas Usuários navegantes Programadores de aplicações Interface com Programas de aplicações aplicações Programas de aplicações em código objeto Usuários sofisticados Consultas (queries) Pré-compilador de comandos DML Administradores de BD Usuários Esquema de Banco de Dados Compilador DML Interpretador DDL Componentes de execução de consultas SGBD Gerenciador de memória Gerenciador de transações Gerenciador de buffer Gerenciador de arquivos Armazenamento em disco Índices Arquivos de dados Dados estatísticos Dicionário de dados BD 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). SGBD - Linguagens dos Sistemas 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 - 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. SGBD – Módulo Banco de Dados • 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. Características de um “bom” SGBD • 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ência para 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; 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 especial do 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) Abraham Silberchatz, Henry F. Korth e S. Sudarshan. 3ª Edição. Makron Books, 1999. Introdução a Banco de Dados (Apostila). (Cap. 13) Osvaldo Kotaro Takai, Isabel Cristina Italiano, João Eduardo Ferreira. DCC-IME-USP, 2005.