Arquitetura de Sistemas de Bancos de Dados
Claudio J. BiazusE-mail: [email protected]
2.1 Introdução
• Agora temos condições de apresentar uma arquitetura para um sistema de banco de dados.
• Nosso objetivo é fornecer um “arcabouço” para descrever conceitos gerais de banco de dados.
• Explicar a estrutura de sistemas de banco de dados específicos.
2.2 Os Três Níveis da Arquitetura
• A arquitetura ANSI/SPARC se divide em três níveis: inteiro, conceitual e externo.
• O nível interno: (físico) é o mais próximo do meio de armazenamento físico – ou seja, ele se ocupa do modo como os dados são fisicamente armazenado.
• O nível externo: (lógico do usuário) é o mais próximo dos usuários – ou seja, ele se ocupa do modo como os dados são vistos por usuários individuais.
• O nível conceitual: (lógico comunitário, ou apenas indireto) é o nível de “simulação” entre o nível interno e o nível externo.
4
NívelFísico
Visão 1 Visão 2 Visão N
NívelConceitual
BD
Nível externoVisões de usuários
Visão da comunidade de usuários
Visão da meio dearmazenamento
2.3 O Nível Externo
• O nível externo é o nível do usuário individual.• Um usuário pode ser Programador de Aplicações ou um
Usuário Final (solicitação).– Para o programador de aplicações: a linguagem
utilizada é uma linguagem de “quarta geração”. Exemplo: PL/I, C++, Java, etc...
– Para o usuário final: a linguagem é uma linguagem de consulta ou de uso especial, através de formulários ou menus, adaptada aos requisitos do usuário com suporte a programas aplicativos on-line.
2.4 O Nível Conceitual
• A visão conceitual é uma representação de todo o conteúdo de informações do banco de dados.
• É uma forma um tanto abstrata em comparação com o modo como os dados são armazenados fisicamente.
• A visão conceitual consiste em muitas ocorrências de cada um dos vários tipos de registros conceituais. Por exemplo:– Coleção de registros de departamentos;– Coleção de registros de empregados;– Coleção de registros de fornecedores;– Coleção de registros de peças;
2.4 O Nível Conceitual
• Um registro conceitual não é necessariamente o mesmo que um registro externo, nem o mesmo que um registro armazenado.
• A visão conceitual é definida por meio do esquema conceitual, que inclui definições de cada um dos vários tipos de registros conceituais.
• A visão conceitual é uma visão do conteúdo total do banco de dados, e o esquema conceitual é uma definição dessa visão.
• As definições no esquema conceitual pretendem incluir muitos recursos adicionais, como as restrições de segurança e integridade.
2.5 O Nível Interno
• A visão interna é uma representação de baixo nível do banco de dados por inteiro.
• Consiste em muitas ocorrências de cada um dos vários tipos de registros internos.
• Corresponde a construção que chamamos de registro armazenado.
• A visão interna ainda está muito afastada do nível físico “não manipula registros físicos” – conhecidos por blocos ou páginas.
• Também não leva em consideração especificações específicas de dispositivos, tais como tamanho do cilindro ou trilha.
2.5 O Nível Interno
• A visão interna é descrita por meio do esquema interno.• Não só define os diversos tipos de registros armazenados
mas também especifica:– Quais índices existem;– Como os campos armazenados estão representados;– Em que seqüência física estão os registros
armazenados;
2.6 Mapeamentos
• Além dos três níveis básicos, uma arquitetura envolve, em geral certos mapeamentos:O mapeamento conceitual/interno – Define a correspondência entre a visão conceitual e o
banco de dados armazenado;– O modo como os registros e campos conceituais são
representados no nível interno.• Se a estrutura do banco de dados armazenado for alterada
– o mapeamento conceitual/interno terá de ser alterado para que possa permanecer invariável.
2.6 Mapeamentos
Mapeamento externo/conceitual– Define a correspondência entre uma visão externa
específica e a visão conceitual;– Em geral, as diferenças que podem existir entre esses dois
níveis são semelhantes às que podem existir entre a visão conceitual e o banco de dados armazenado. Por exemplo:
• Os campos podem ter diferentes tipos de dados;• Os nomes de campos e registros podem ser alterados;• Vários campos conceituais podem ser combinados em um
único campo externo.
2.7 O Administrador do Banco de Dados
• O administrador de dados – DA – é a pessoa que toma as decisões estratégicas com relação aos dados da empresa.
• O administrador do banco de dados – DBA – é a pessoa que fornece o suporte técnico necessário para implantar as decisões.
• Assim, podemos descrever algumas das atribuições do DBA:
2.7 O Administrador do Banco de Dados
• Definir o esquema conceitual– Cabe ao administrador de dados decidir quais
informações devem ser mantidas no banco de dados.– Identificar as entidades de interesse para a empresa e
identificar as informações a serem registradas.– Esse processo é referenciado como projeto lógico - de
banco de dados.– Uma vez que o DA tenha definido o conteúdo, o DBA
então criará o esquema conceitual correspondente usando a linguagem de definição de dados.
2.7 O Administrador do Banco de Dados
• Definir o esquema interno– O DBA também decidir como serão representados os
dados no banco de dados armazenado.– Em geral, esse processo é chamado projeto de banco
de dados físico.– O DBA também deve definir o mapeamento
conceitual/interno associado.
2.7 O Administrador do Banco de Dados
• Ligação com usuários– A tarefa do DBA é fazer a ligação com os usuários, a
fim de garantir que os dados de que eles necessitam estão disponíveis.
– Deve escrever os esquemas externos necessários, usando a linguagem de definição de dados externa aplicável.
– Os mapeamentos externos/conceituais correspondentes também devem ser definidos.
2.7 O Administrador do Banco de Dados
• Definir restrições de segurança e integridade– As restrições de segurança e integridade podem ser
consideradas uma parte do esquema conceitual.– A linguagem de definição de dados conceitual deve
incluir recursos para a especificação de tais restrições.
2.7 O Administrador do Banco de Dados
• Definir normas de descarga e recarga– Uma vez que a empresa esteja comprometida com um
sistema de banco de dados, ela se tornara dependente do sucesso desse sistema.
– Em caso de danos a qualquer parte do banco de dados – provocado por erro humano, falho do hardware, sistema operacional.
– É necessário reparar os dados em questão com um mínimo de demora e com o menor efeito possível sobre o restante do sistema.
– Por exemplo: as dados que não tenham sido danificados não devem ser afetados.
2.7 O Administrador do Banco de Dados
• Monitorar o desempenho e responder a requisitos de mudanças– O DBA é responsável pela organização do sistema de
modo a se obter o melhor desempenho possível.– É responsável por fazer os ajustes apropriados.– Por exemplo: poderia ser necessário reorganizar o
banco de dados armazenando de tempos em tempos para assegurar que os níveis de desempenho permanecerão aceitáveis.
2.8 O Sistema de Gerenciamento de Bancos de Dados
• O sistema de gerenciamento de bancos de dados (SGBD) é o software que trata de todo o acesso ao banco de dados:1. Um usuário faz um pedido de acesso usando uma
determinada sublinguagem de dados (em geral em SQL).2. O SGBD intercepta o pedido e o analisa.3. O SGBD inspeciona, o esquema externo para esse usuário,
o mapeamento externo/conceitual correspondente, o esquema conceitual, o mapeamento conceitual/interno e a definição da estrutura de armazenamento.
4. O SGBD executa as definições necessárias sobre o banco de dados armazenado.
2.8 O Sistema de Gerenciamento de Bancos de Dados
• Vamos examinar agora as funções de SGBD com um pouco mais de detalhes.
• Essas funções incluirão o suporte a pelo menos todos os itens a seguir:– Definição de dados;– Manipulação de dados;– Otimização e execução;– Segurança e integridade de dados;– Recuperação e concorrência de dados;– Dicionário de dados;– Desempenho.
2.8 O Sistema de Gerenciamento de Bancos de Dados
Definição de dados• O SGBD deve ser capaz de aceitar definições de dados
(esquemas externos, esquema conceitual, esquema interno e todos os mapeamentos associados) em formato fonte e convertê-los para o formato objeto apropriado.
• Por exemplo: ele deve entender que os registros externos EMPREGADO incluem um campo SÁLARIO;
• E deve então ser capaz de usar esse conhecimento para analisar e responder ao pedido: “obtenha todos os empregados com salário < R$ 50.000,00”
2.8 O Sistema de Gerenciamento de Banco de Dados
Manipulação de dados• O SGBD deve ser capaz de lidar com solicitações do
usuário para buscar, atualizar e excluir dados existentes no B.D.
• Ou acrescentar novos dados ao banco de dados.• As solicitações de (DML – Linguagem de Manipulação
de Dados) podem ser “planejadas” ou “não-planejadas”
2.8 O Sistema de Gerenciamento de Banco de Dados
• Uma solicitação planejada é aquela para a qual a necessidade foi prevista com antecedência em relação ao momento em que a solicitação é executada.
• Exemplo: O DBA ajusta o projeto físico para atender a solicitação planejada.
• Uma solicitação não-planejada é uma consulta ad hoc, isto é, uma solicitação cuja necessidade não foi prevista com antecedência e surgiu no último instante.
• Exemplo: O projeto físico pode estar ou não adaptado de forma ideal para a solicitação.
2.8 O Sistema de Gerenciamento de Banco de Dados
Otimização e execução• As requisições de DML, planejadas ou não-planejadas,
devem ser processadas pelo componente otimizador, cujo propósito é determinar um modo eficiente de implementar a requisição.
• As requisições otimizadas são então executadas sob o controle do gerenciador em tempo de execução.
2.8 O Sistema de Gerenciamento de Banco de Dados
Segurança e integridade de dados• O SGBD deve monitorar requisições de usuários e rejeitar
toda tentativa de violar as restrições de segurança e integridade definidas pelo BDA.
• Essas tarefas podem ser executadas em tempo de compilação ou em tempo de execução, ou combinado compilação e execução.
2.8 O Sistema de Gerenciamento de Banco de Dados
Recuperação e concorrência de dados• O SGBD – ou algum componente de software
relacionado, chamado gerenciador de transações ou monitor de processamento de dados, deve impor certos controles de recuperação e concorrência.
• Obs.: Em geral não faz parte do SGBD.
2.8 O Sistema de Gerenciamento de Banco de Dados
Dicionário de dados• O SGBD deve fornecer uma função de dicionário de
dados.• O dicionário de dados é um banco de dados do sistema e
não um banco de dados do usuário.• O dicionário contém “dados sobre os dados” (chamados
de metadados).• Ou seja, definições de outros objetos do sistema, em vez
de “dados brutos”.• Em particular, todas as restrições de segurança e
integridade estarão armazenadas, tanto na forma de fonte quanto de objeto, no dicionário.
2.8 O Sistema de Gerenciamento de Banco de Dados
Desempenho• É desnecessário dizer que o SGBD deve realizar todas as
funções identificadas anteriormente de forma tão eficiente quanto possível.
dados
Metadados (dicionário de dados)
banco de dados
Otimizador
Gerenciador tempo de execução
Processadores de DDL
Processadores de DML
Processadores de linguagem de consulta
requisiçõesotimizadas
requisiçõescompiladas
metadadosesquema e fonte
e objeto e mapeamento
esquema e fontee mapeamento
Requisições deDML planejadas
Requisições deDML não-planejadas
Impõem restrições
de segurançae integridade
30
Interfaces doAplicativo
ProgramasAplicativos Consulta Esquema de
Banco de Dados
Pré-compiladorda linguagem de
manipulação de dados
Processadorde consultas
Compilador delinguagem de
definição de dados
UsuáriosComuns
Programadoresde Aplicação
Usuários deAlto Nível
Administradorde banco de dados
Gerenciador de banco de dados
Código-objetode programas
aplicativos
Disco deArmazenamentoArquivos
de dadosDicionário de
dados
Gerenciadorde Arquivos
Sistema gerenciadorde banco de dados
Estrutura do SGBD
2.9 O Gerenciamento de Comunicação de
de Dados• As requisições feitas pelo usuário final, são transmitidas da
estação de trabalho do usuário – para alguma aplicação on- line (embutida ou não), e daí até o SGBD, sob a forma de mensagens de comunicação.
• Da mesma forma, as respostas do SGBD com a aplicação on-line.
• O gerenciador de Comunicação de dados não faz parte SGBD, ele é um sistema autônomo.
• Mas o gerenciador de Comunicação de dados e o SGBD devem trabalhar em harmonia.
2.10 Arquitetura Cliente/Servidor
• Um sistema de banco de dados pode ser considerado como tendo uma estrutura muito simples em duas partes: Servidor / Clientes.– O servidor é o próprio SGBD. – Ele têm todas as funções básicas do SGBD – definição de
dados, manipulação de dados, segurança e integridade de dados.
– Os clientes são as diversas aplicações executadas sobre o SGBD – tanto aplicações escritas por usuários quanto aplicações internas.
– Ou seja, aplicações fornecidas pelo fabricante do SGBD ou por produtores idependentes.
2.12 Processamento Distribuído
Aplicações
SGBD Servidor
Usuários finais
Clientes
Fig. ArquiteturaCliente/servidor
Banco de dados
2.10 Arquitetura Cliente/Servidor
• Aplicações escritas por usuários são basicamente programas aplicativos comuns, escritos em uma linguagem de programação convencional de 4G.
• Aplicações fornecidas por fabricante são aplicações cuja finalidade básica é auxiliar na criação e execução de outras aplicações. Exemplo: Gerador de relatórios.
2.10 Arquitetura Cliente/Servidor
• As ferramentas fornecidas pelo fabricante podem ser dividas em classes:– Processadores de linguagem de consulta (XML, SQL,
XQUERY).– Geradores de relatórios (SARG ).– Subsistemas gráficos de negócios. – Planilhas eletrônicas.– Processadores de linguagem natural (ELIZA ).– Pacotes estatísticos.– Ferramentas para gerenciamento de cópias “extração de dados”.– Geradores de aplicações (Incluindo processadores L4G).– Outras ferramentas para desenvolvimento de aplicações,
software de engenharia de software.
2.11 Utilitários
• Utilitários são programas projetados para auxiliar o DBA com diversas tarefas administrativas.
• Alguns exemplos de utilitários:– Rotinas de carga, a fim de criar a versão inicial do
banco de dados a partir de um ou mais arquivos de sistema operacional.
– Rotinas de descarregamento ou recarregamento, a fim de descarregar o banco de dados, ou partes dele, para o meio de armazenamento de backup e recarregar dados desse backup.
2.11 Utilitários
– Rotinas de reorganização, para rearranjar os dados no banco de dados. Por exemplo: agrupar dados no disco, ou para reaver o espaço ocupado por dados obsoletos.
– Rotinas estatísticas, a fim de calcular diversas estatísticas de desempenho, tais como tamanhos de arquivos e distribuição de valores de dados ou contagens de E/S.
– Rotinas de análise, a fim de analisar as estatísticas mencionadas.
2.12 Processamento Distribuído
Aplicações
SGBD Máquina servidora
Máquina cliente
Acesso remoto transparente
Fig. Cliente(s) e servidoresrodando em máquinas
diferentes
2.12 Processamento Distribuído
SGBD Máquina servidora
Máquina cliente
Rede de comunicação
Fig. Um equipamento servidorvários equipamentos clientes
. . .
40
2.12 Banco de Dados Distribuídos
• O banco de dados é armazenado em diversos computadores que se comunicam através de uma tecnologia de rede;
• Um banco de dados distribuído consiste em uma coleção de nós, cada qual podendo participar na execução de transações que fazem acesso a dados em um ou diversos nós;
• A execução das transações entre os nós devem ser transparente para o usuário.
2.12 Processamento Distribuído
Rede de comunicação
Fig. Cada máquina pode rodar tantoCliente(s) servidor
ClienteServidor
ClienteServidor
ClienteServidor
ClienteServidor
ClienteServidor
42
Site 4
Site 2
Site 3
Site 5
Site 1
Rede
Banco de Dados Centralizado
Site 4
Site 2
Site 3
Site 5
Site 1
Rede
Banco de Dados Distribuído
43
Prós
• Controle distribuído;• Diminuição nos custos de comunicação e
equipamentos;• Confiabilidade;• Disponibilidade;• Facilidade no crescimento modular (escalabiliade);• Aceleração das consultas.
44
Contras
• Maiores custo e complexidade de desenvolvimento, tanto do SGBD quanto do esquema de dados;
• Dificuldades da coordenação e controle dos dados arnazenados;
• Aumento na troca de mensagens para sincronização e controle.
45
Autonomia
• Autonomia se refere a distribuição do controle;• Indica o grau de independência de um SGBD;• Funções consideradas:
– Se os componentes do sistema trocam informação;– Se eles podem independentemente executar
transações;– Se é permitido que um componente influencie os
outros.
46
Dimensões de Autonomia
• Autonomia de Projeto: SGBDs individuais são livres para usar o modelo de dados e as técnicas de gerenciamento de trasações que eles preferirem;
• Autonomia de Participação: Cada SGBD local tem o direito de decidir como irá participar no sistema distribuído;
• Autonomia de Comunicação: Cada SGBD é livre para decidir que tipo de informação ele deseja trocar e o software que fará o controle das trasações;
• Autonomia de Execução: Cada SGBD pode executar as transações que são submetidas a ele de várias formas basta ele escolher qual é a melhor.
47
Questões relacionadas ao armazenamento distribuído
• Duplicação: O sistema mantém diversas cópias idênticas armazenadas em nós diferentes;– Vantagens: Maior disponibilidade e aumento do
paralelismo;– Desvantagem: aumento da sobrecarga na
atualização;• Fragmentação: A relação é dividida em vários
fragmentos. Cada fragmento é armazenado em um nó diferente. Existem dois tipos de fragmentação: Horizontal e vertical;