## glossário

O que é Database?

Database (banco de dados) é uma coleção organizada de informações estruturada para permitir armazenamento, consulta e atualização eficientes. O software que gerencia esse acesso é o SGBD (Sistema de Gerenciamento de Banco de Dados) — PostgreSQL, MySQL, MongoDB e Oracle são exemplos.

O SGBD faz muito mais que guardar arquivos. Ele garante integridade, controla acesso concorrente de milhares de usuários, otimiza consultas, mantém backups consistentes e assegura que uma queda de energia no meio de uma operação não deixe os dados corrompidos.

Modelos de banco de dados

  • Relacional — dados em tabelas com relações explícitas, consultados via SQL. O modelo dominante desde os anos 1970.
  • Documento — registros JSON flexíveis, sem esquema rígido. Ver NoSQL.
  • Chave-valor — acesso direto por chave, otimizado para velocidade.
  • Grafo — nós e arestas, para dados em que os relacionamentos são o foco.
  • Séries temporais — otimizado para métricas indexadas por tempo, como monitoramento e IoT.

ACID: as garantias das transações

Uma transação agrupa operações que devem acontecer como uma unidade. As quatro propriedades ACID definem o que o banco garante:

  • Atomicidade — ou tudo é aplicado, ou nada é. Não existe meio caminho.
  • Consistência — o banco nunca fica num estado que viole suas regras e restrições.
  • Isolamento — transações simultâneas não enxergam os estados intermediários umas das outras.
  • Durabilidade — uma vez confirmada, a alteração sobrevive a falhas de energia ou queda do processo.
Transação: a transferência que não pode dar errado pela metade
BEGIN;

UPDATE contas SET saldo = saldo - 500 WHERE id = 1;
UPDATE contas SET saldo = saldo + 500 WHERE id = 2;

-- se qualquer comando falhar, ROLLBACK desfaz tudo
COMMIT;

Índices: o que separa milissegundos de minutos

Sem índice, encontrar um registro exige varrer a tabela inteira. Um índice é uma estrutura auxiliar — geralmente uma árvore B — que localiza o dado diretamente. O ganho é enorme na leitura e o custo é real na escrita: cada índice precisa ser atualizado a cada inserção, e ocupa espaço em disco.

Investigando por que uma consulta está lenta
-- mostra o plano de execução escolhido pelo banco
EXPLAIN ANALYZE
SELECT * FROM pedidos
WHERE cliente_id = 42 AND status = 'pendente';

-- Seq Scan   = varredura completa (ruim em tabela grande)
-- Index Scan = usou índice (bom)

CREATE INDEX idx_pedidos_cliente_status
  ON pedidos (cliente_id, status);

Normalização e o equilíbrio prático

Normalizar é organizar os dados para eliminar redundância, garantindo que cada informação exista em um único lugar. Isso evita inconsistências, mas exige junções para reconstruir a visão completa. Em cargas de leitura intensa, é comum desnormalizar deliberadamente — duplicar dados para acelerar consultas — aceitando o custo de manter as cópias sincronizadas.

## faq

Perguntas frequentes

Qual a diferença entre banco de dados e SGBD?

O banco de dados é o conjunto de informações armazenadas. O SGBD é o software que gerencia esse conjunto — controla acesso, executa consultas, garante integridade e cuida de backups. No uso cotidiano os termos se confundem, mas tecnicamente são coisas distintas.

PostgreSQL ou MySQL: qual escolher?

PostgreSQL tende a ser a escolha padrão hoje, por recursos mais avançados como tipos JSON robustos, extensões e maior aderência ao padrão SQL. MySQL segue muito difundido, com boa performance em leituras e ampla disponibilidade em hospedagens. Ambos são maduros e adequados para produção.

Quando devo criar um índice?

Em colunas usadas com frequência em WHERE, JOIN e ORDER BY, especialmente em tabelas grandes. Evite indexar tudo: índices demais degradam escritas e consomem disco. O caminho correto é medir com EXPLAIN ANALYZE antes e depois, em vez de adivinhar.

## leia também

Artigos relacionados