Introdução a Sistemas de BD

Propaganda
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.
Download