~/VibeHandbook
PDF grátis

Capítulo 14 · 01

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.

TipoExemplosMelhor paraTrade-offs
Relacional ()PostgreSQL, MySQL, SQLiteDados estruturados com relacionamentos; qualquer coisa crítica em termos de dinheiro ou precisãoVocê precisa desenhar um schema antecipadamente; escalar escritas muito grandes é mais difícil
Documento / MongoDB, Firestore, DynamoDBDados flexíveis ou aninhados, iteração rápida, formatos de registro variadosFácil de criar dados inconsistentes; relacionamentos e relatórios ficam complicados
Chave-ValorRedis, Memcached, Cloudflare KV, sessões, contadores, buscas rápidas por uma chave conhecidaSem 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.

Quer offline?

Baixe o livro inteiro em PDF ou EPUB — grátis.