## 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.
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.
-- 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