Dados e armazenamento / SQL vs NoSQL

SQL vs NoSQL

SQL vs NoSQL Sem Slogan

Como escolher armazenamento olhando para acesso, consistencia e evolucao do sistema, nao para torcida por tecnologia.

O problema

Discussao sobre SQL e NoSQL costuma virar slogan rapido.

Parece que uma opcao e moderna e a outra e antiga, ou que uma escala e a outra organiza.

Na pratica, essa conversa quase sempre piora a decisao em vez de ajudar.

Modelo mental

A pergunta util nao e “qual banco e melhor?”.

A pergunta util e:

Qual estrutura combina melhor com o tipo de acesso, consistencia e evolucao que este sistema precisa?

Quando voce pensa assim, a conversa sai do hype e volta para o problema.

Quebrando o problema

Antes de escolher, tente responder:

  1. os dados tem relacoes fortes e consultas cruzadas frequentes?
  2. a consistencia precisa ser mais rigida?
  3. o formato do dado muda muito entre registros?
  4. o gargalo principal e consulta relacional ou distribuicao simples em escala?

Essas perguntas costumam dar mais sinal do que qualquer comparacao superficial.

Exemplo simples

Imagine um sistema de pedidos, clientes e pagamentos.

Se voce precisa:

  • relacionar pedido com cliente e item
  • fazer joins com frequencia
  • garantir integridade transacional

SQL costuma ser um encaixe melhor.

Agora imagine um sistema que armazena eventos ou documentos sem estrutura muito fixa, com leitura simples por chave e grande volume distribuido.

Nesse caso, NoSQL pode fazer mais sentido.

O ponto nao e que um venceu o outro.

O ponto e que o formato do uso mudou.

Erros comuns

  • escolher tecnologia pela moda
  • chamar NoSQL para fugir de modelagem
  • usar SQL sem pensar no padrao de acesso real
  • falar de escala antes de validar o problema de consistencia e consulta

Como um senior pensa

Um senior forte nao responde essa pergunta com torcida.

Ele puxa a decisao para o uso real.

Normalmente isso soa assim:

Se a forca do sistema esta em relacao, consulta e consistencia, SQL tende a encaixar melhor. Se o problema pede formato mais flexivel e acesso simples em grande escala, NoSQL pode ser a melhor ferramenta.

Essa resposta e melhor porque parte do problema, nao da ferramenta favorita.

O que o entrevistador quer ver

Em entrevista, isso costuma mostrar maturidade bem rapido:

  • voce entende trade-off entre estrutura e flexibilidade
  • voce sabe ligar escolha de storage ao padrao de acesso
  • voce nao depende de frase pronta para responder

Quem faz isso bem parece alguem que escolhe tecnologia com criterio, nao com hype.

SQL e NoSQL nao competem em abstrato. Eles respondem melhor a formatos diferentes de problema.

Se voce ainda nao sabe como o dado vai ser lido e escrito, a escolha do banco ainda esta cedo demais.

Proximas leituras