Arquitetura de Três Níveis (ANSI/SPARC)

// Externo, Conceitual e Interno

Nível Externo / Visão

Define a parte do banco de dados vista por cada usuário ou aplicação. Cada visão esconde detalhes desnecessários, fornecendo abstração e segurança. Criada via DDL.

Nível Conceitual / Lógico

Representa o esquema global dos dados, independente do armazenamento físico. O DBA cria e mantém o esquema conceitual para a comunidade de usuários.

Nível Interno / Físico

Detalha como os dados são armazenados (arquivos, índices, blocos). Garante abstração em relação aos bits e bytes físicos.

db_admin@postgres:~#
-- Criando uma visão externa
CREATE VIEW clientes_resumo AS
SELECT id, nome FROM clientes WHERE ativo = true;
-- Consultando a visão
SELECT * FROM clientes_resumo;
      
Atividade Prática: Crie uma visão que mostre apenas o nome e email de clientes com pedidos acima de R$100.

Componentes de um SGBD

// De consultas a transações

Processador de Consultas

  • Parser: valida e gera árvore de análise.
  • Otimizador: escolhe plano de execução mais eficiente (ex.: RDS no System R).
  • Executor: processa operações de leitura e escrita.

Mecanismo de Armazenamento

  • Buffer manager: gerencia páginas em memória (ex.: RSS no System R).
  • Arquivos e índices: B-Tree, Hash, etc.
  • Alocação de espaço em disco.

Gerenciador de Transações

  • Controle de concorrência: locks, MVCC.
  • Recuperação: logs, checkpoints.

Dicionário de Dados / Catálogo

Repositório de metadados: tabelas, colunas, tipos, permissões, estatísticas.

db_admin@postgres:~#
-- Consultando dicionário de dados
SELECT table_name, column_name, data_type
FROM information_schema.columns
WHERE table_name = 'clientes';
-- Exemplo de transação
BEGIN;
UPDATE clientes SET ativo = false WHERE id = 1;
COMMIT;
      
Atividade Prática: Consulte o dicionário de dados para listar as colunas da tabela `pedidos` e seus tipos.

Independência de Dados

// Lógica e Física

Independência Lógica

Alterações no esquema conceitual (ex.: adicionar atributo) não afetam visões externas nem aplicações existentes.

Independência Física

Mudanças no armazenamento físico (ex.: índices, estruturas de arquivo) são transparentes ao esquema conceitual.

db_admin@postgres:~#
-- Exemplo de independência lógica
ALTER TABLE clientes ADD COLUMN telefone VARCHAR(20);
-- Visão existente não é afetada
SELECT * FROM clientes_resumo;
-- Exemplo de independência física
CREATE INDEX idx_clientes_email ON clientes(email);
      
Atividade Prática: Adicione uma coluna `data_nascimento` à tabela `clientes` e verifique se a visão `clientes_resumo` continua funcionando.

Atividade: Estudo de Caso

// Mapeando a arquitetura do PostgreSQL

Estudo de Caso Guiado:
Escolha o PostgreSQL e desenhe um diagrama textual mostrando:
1. Visões externas (ex.: visão para app de vendas).
2. Esquema conceitual (tabelas e relacionamentos).
3. Esquema interno (arquivos, índices B-Tree).
Discuta como os componentes (processador de consultas, armazenamento, transações, catálogo) interagem para executar:
SELECT * FROM produto WHERE categoria_id = 10;
db_admin@postgres:~#
-- Exemplo de visão externa
CREATE VIEW produtos_vendas AS
SELECT nome, preco FROM produto WHERE categoria_id = 10;
-- Esquema conceitual
CREATE TABLE produto (
  id SERIAL PRIMARY KEY,
  nome VARCHAR(100),
  preco DECIMAL,
  categoria_id INT
);
-- Índice interno
CREATE INDEX idx_produto_categoria ON produto(categoria_id);
      
Atividade Prática: Execute a consulta acima e analise o plano de execução com EXPLAIN.

Quiz Interativo

// Teste seus conhecimentos sobre arquitetura de SGBDs

Teste de Conhecimento

Responda às perguntas abaixo para consolidar o aprendizado sobre a arquitetura de SGBDs relacionais.

1. Qual é o propósito do nível externo na arquitetura ANSI/SPARC?

a) Definir o armazenamento físico
b) Fornecer visões simplificadas para usuários
c) Gerenciar transações
d) Otimizar consultas SQL
Resposta Correta: b) Fornecer visões simplificadas para usuários. O nível externo cria visões personalizadas, escondendo a complexidade do banco de dados.

2. O que descreve o nível conceitual?

a) Estrutura de arquivos no disco
b) Visão global dos dados e relacionamentos
c) Visão personalizada para usuários
d) Gerenciamento de índices
Resposta Correta: b) Visão global dos dados e relacionamentos. O nível conceitual define o esquema lógico, independente do armazenamento físico.

3. Qual componente do SGBD gerencia índices e buffers?

a) Processador de Consultas
b) Mecanismo de Armazenamento
c) Gerenciador de Transações
d) Dicionário de Dados
Resposta Correta: b) Mecanismo de Armazenamento. O mecanismo de armazenamento (ex.: RSS no System R) gerencia índices, buffers e alocação de espaço.

4. O que é independência lógica de dados?

a) Alterar armazenamento físico sem afetar aplicações
b) Alterar esquema conceitual sem afetar visões externas
c) Gerenciar concorrência
d) Criar índices automaticamente
Resposta Correta: b) Alterar esquema conceitual sem afetar visões externas. A independência lógica permite mudanças no esquema lógico sem impactar aplicações.

5. Qual é a função do dicionário de dados?

a) Executar consultas SQL
b) Armazenar metadados sobre o banco
c) Gerenciar transações concorrentes
d) Otimizar índices físicos
Resposta Correta: b) Armazenar metadados sobre o banco. O dicionário de dados contém informações sobre tabelas, colunas, visões e relacionamentos.

6. Qual nível da arquitetura ANSI/SPARC representa o esquema global, independente do armazenamento físico?

a) Nível Externo/Visão
b) Nível Conceitual/Lógico
c) Nível Interno/Físico
d) Nível de Aplicação
Resposta Correta: b) Nível Conceitual/Lógico. É o nível que descreve o modelo de dados da comunidade de usuários, sem detalhes de armazenamento físico.

7. Qual componente do SGBD é responsável por gerenciar buffers e estruturas em disco?

a) Processador de Consultas
b) Dicionário de Dados/Catálogo
c) Gerenciador de Transações
d) Mecanismo de Armazenamento
Resposta Correta: d) Mecanismo de Armazenamento. Ele gerencia buffers, arquivos físicos e índices para leitura e gravação de dados.

8. O que descreve a independência física de dados?

a) Alterar visões externas sem modificar aplicações
b) Modificar o esquema conceitual sem afetar o esquema interno
c) Mudar técnicas de armazenamento sem impactar o esquema conceitual
d) Adicionar novos usuários sem redefinir permissões
Resposta Correta: c) Mudar técnicas de armazenamento sem impactar o esquema conceitual. A independência física permite alterar índices ou estruturas de arquivo sem afetar as camadas superiores.

9. Qual componente do SGBD interpreta, otimiza e executa consultas SQL?

a) Gerenciador de Transações
b) Mecanismo de Armazenamento
c) Processador de Consultas
d) Dicionário de Dados/Catálogo
Resposta Correta: c) Processador de Consultas. Ele inclui parser, otimizador e executor para processar instruções SQL.
db_quiz_results:~#
RUN db_architecture_check;
-- Quiz finalizado. Parabéns por explorar a arquitetura de SGBDs!