Introdução: Banco de Dados PROF. MSC. WANDER MEDEIROS ENGENHARIA AUXILIADA POR COMPUTADOR Sistema de Arquivos Primeira arquitetura de sistemas para armazenamento e manipulação de dados e geração de informação. Inconvenientes desta arquitetura: Definição das estruturas de arquivos inseridas no próprio código do aplicativo (alta dependência entre dados e aplicação) dificultando os trabalhos de manutenção; compartilhamento de um arquivo por vários programas. definição das estruturas de arquivos duplicadas nos programas. Arquivos e programas de um mesmo sistema são desenvolvidos de forma isolada por diferentes programadores e até mesmo em linguagens diferentes. Inconsistência, redundância, dificuldade de acesso, isolamento de dados e problemas com segurança. Falta de gerenciamento para acessos concorrentes aos dados e recuperação de dados. 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. Sistemas de Arquivos - Problemas 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. 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 ser implementada 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 leêm o valor 500; Um tira 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 x Sistemas de Banco de Dados Sistema de arquivos Aplicativos Dados (arquivos) O acesso/gerenciamento aos/dos dados é feito diretamente pelos programas aplicativos. Sistema de Banco de Dados 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. Definições ... Dados: são fatos que podem ser gravados e que possuem um significado implícito. Banco de Dados (BD): é uma coleção de dados relacionados: Representa aspectos do mundo real (minimundo ou universo de discurso) e mudanças no mundo real devem ser refletidas no BD. É uma coleção lógica e coerente de dados com algum significado inerente. Uma organização randômica de dados não pode ser considerada um BD. Um BD é construído em atendimento a uma proposta específica. Definições .... Um Sistema Gerenciador de Banco de Dados (SGBD) é uma coleção de programas que permite aos usuários criar e manter um banco de dados. É um sistema de software de propósito geral que facilita os processos de definição, construção, manipulação e compartilhamento de bancos de dados entre vários usuários e aplicações. Sistema de Banco de Dados (SBD): o banco de dados mais ou software SGBD SISTEMA DE BANCO DE DADOS Usuários/Programadores Programas de Aplicações / Consultas (Queries) SGBD Programas para Processamento de consultas / gerenciamento de dados Software para Acesso aos Dados Armazenados Definição dos dados (metadados) Banco de dados armazenados Exemplo 1 Arquitetura de Sistemas de Banco de Dados Primeira arquitetura: Centralizada (uso de Mainframes) O processamento principal e de todas as funções do sistema (aplicativos, interface e SGBD) eram executados nos mainframes. Os usuários interagiam com o sistema via terminais sem poder de processamento, conectados ao mainframe por redes de comunicação. Com o barateamento do hardware, os terminais foram sendo trocados por estações de trabalho e naturalmente a tecnologia de banco de dados começou a aproveitar esse potencial de processamento no lado do usuário. Surge a segunda arquitetura. Arquitetura de Sistemas de Banco de Dados Segunda arquitetura: Cliente-Servidor Dividiu as tarefas de processamento criando servidores especializados como os servidores de arquivos. As máquinas clientes disponibilizavam as interfaces para os usuários, de forma a capacitá-lo ao uso de servidores. Também tinham autonomia para executar aplicações locais. No caso específico de banco de dados, nesta arquitetura, um SGBD centralizado é implantado no servidor, assim as consultas (servidor SQL) e funcionalidades transacionais são executadas no servidor. No lado do cliente é possível formular as consultas e desenvolver programas aplicativos. O servidor SQLé conhecido como Back-End Machine e o cliente como Front-End Machine. Tipos de arquitetura cliente-servidor Bi-nível Simples Servidor Servidor Servidor Cliente Cliente Cliente Servidor Cliente Tipos de arquitetura cliente-servidor Múltipla Servidor Peer to Peer Servidor Servidor Servidor/ Cliente Servidor/ Cliente Cliente Cliente Cliente Servidor/ Cliente Tipos de arquitetura cliente-servidor Servidores locais e remotos Servidor remoto Aplicações Servidor local Aplicações Arquitetura de Sistemas de Banco de Dados Terceira arquitetura: sistemas de computador pessoal Trabalham no sistema stand-alone, executando sozinhos todas as funções necessárias para o funcionamento do SBD. Vantagem: simplicidade Arquitetura de Sistemas de Banco de Dados Quarta arquitetura: Distribuída (N camadas) Os dados e o processamento são distribuídos para diversos servidores (ou hosts). Cada host pode atua como um servidor de um sistema cliente-servidor, e como cliente. Muito usados em base de dados corporativas onde o volume de informações é muito grande. Desvantagem: aumento da complexidade de gerenciamento. Arquitetura de Sistemas de Banco de Dados Quinta arquitetura: Paralela O processamento do sistema é realizado utilizando-se as técnicas de paralelismo. Ou um computador multi-processado é utilizado ou vários computadores são utilizados para o processamento paralelo de uma única transação. Desvantagem: custo e complexidade de gerenciamento. 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 opera 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. Exemplos de sistemas comerciais Além dos gerenciadores, pode-se citar algumas linguagens/ferramentas de desenvolvimento, que manipulam os banco de dados desses gerenciadores: Clipper: Comumente utilizado junto ao dBase. O Brasil foi o líder mundial em vendas e uso dessa ferramenta. Joiner: Produto nacional concorrente do Clipper, produzido por uma empresa paulista chamada Tuxon Software, com versões para DOS, Unix, e algum suporte para Windows. Delphi/C++Builder/JBuilder: Ferramentas de desenvolvimento da Borland que possuem suporte nativo aos bancos de dados Interbase e MySQL. Delphi e C++Builder também podem acessar arquivos no formato dBase, Paradox e Access nativamente, enquanto outras bases de dados podem ser maipuladas através da tecnologia ODBC. Visual Basic/Visual C++: O programador pode criar aplicações que acessam bancos de dados Access ou, por meio de ODBC, outros formatos. Quando não usar um SGBD SGBDs são caros porque: Exigem investimentos iniciais altos em hardware, software e treinamento. Oferecem generalidade para definição e processamento de dados. Tem altos custos de desenvolvimento. Não se indica o uso de SGBDs: O banco de dados e suas aplicações são simples, bem definidas e sem previsão de mudanças; Há requisitos de tempo real para algums programas que são difíceis de serem atendidos por SGBDs; O acesso de múltiplos usuários aos dados não é necessário. Bibliografia Utilizada Sistemas de Banco de Dados. Silberchatz, Korth e Sudarshan. Makron Books, Terceira Edição. Sistemas de Banco de Dados. Elsmari e Navateh. Pearson-Addison Wesley, Quarta Edição. Fundamentos de Bancos de Dados. William Pereira Alves. Editora Érica. 2004. Apostila: Introdução a Banco de Dados. Osvaldo Kotaro Takai, Isabel Cristina Italiano, João Eduardo Ferreira. DCC-IME-USP – 2005 Revista INFO-Exame.No. 227. Editora Abril, fevereiro de 2005.