As Três Formas de Armazenamento de Dados
A maioria dos bancos de dados se encaixa em três famílias. Você não precisa memorizar produtos — precisa reconhecer qual forma se encaixa no seu problema.
| Tipo | Exemplos | Melhor para | Trade-offs |
|---|---|---|---|
| Relacional () | PostgreSQL, MySQL, SQLite | Dados estruturados com relacionamentos; qualquer coisa crítica em termos de dinheiro ou precisão | Você precisa desenhar um schema antecipadamente; escalar escritas muito grandes é mais difícil |
| Documento / | MongoDB, Firestore, DynamoDB | Dados flexíveis ou aninhados, iteração rápida, formatos de registro variados | Fácil de criar dados inconsistentes; relacionamentos e relatórios ficam complicados |
| Chave-Valor | Redis, Memcached, Cloudflare KV | , sessões, contadores, buscas rápidas por uma chave conhecida | Sem busca por conteúdo; geralmente não é sua fonte de verdade |
As três formas armazenam dados de maneiras genuinamente diferentes. Imagine-as lado a lado:
RELACIONAL (SQL) DOCUMENTO (NoSQL) CHAVE-VALOR
linhas + colunas blobs autocontidos uma chave → um valor
┌────┬───────┬──────┐ ┌──────────────────┐ ┌─────────┬─────────┐
│ id │ email │ name │ │ { │ │ key │ value │
├────┼───────┼──────┤ │ id, email, │ ├─────────┼─────────┤
│ 1 │ a@... │ Ana │ │ name, │ │ session │ "x9f2" │
│ 2 │ b@... │ Bob │ │ posts: [ ... ] │ │ count │ "42" │
└────┴───────┴──────┘ │ } │ └─────────┴─────────┘
tabelas referenciam └──────────────────┘ sem busca interna —
uma à outra tudo aninhado procure só por chave
Pense em um banco de dados relacional como um conjunto de planilhas que sabem como se referenciar mutuamente. A linguagem que você usa para conversar com um deles é SQL (Structured Query Language, ou Linguagem de Consulta Estruturada). Um bom padrão para 90% dos projetos: comece com um banco de dados relacional (Postgres). Ele é maduro, previsível, impõe estrutura e lida com os relacionamentos que apps de verdade inevitavelmente desenvolvem. Recorra a bancos de documentos quando seus dados forem genuinamente sem forma fixa, e a bancos chave-valor como uma camada de apoio (cache), não seu armazenamento principal.
A armadilha a evitar é escolher pela vibe. "NoSQL (bancos de dados que não usam tabelas SQL — eles armazenam registros flexíveis, de formato livre) escala melhor" só é verdade para um conjunto estreito de problemas que a maioria dos apps nunca encontra, e mesmo assim o preço é abrir mão das garantias de consistência que tornam os dados confiáveis. Escolha a forma que combina com seus dados, não a que soa mais impressionante em um vídeo de design de sistemas. Quando estiver em dúvida, relacional é a aposta segura — você sempre pode adicionar um cache ou um banco de documentos depois, mas desemaranhar um modelo de dados NoSQL confuso é doloroso.