Pergunta de entrevista para Engenheiro de Software

Como você decide entre um banco relacional e um document store para um serviço novo?

O que o entrevistador está avaliando, como estruturar sua resposta e um exemplo falado que você pode adaptar.

Resposta rápida

Comece relacional a menos que você tenha um motivo específico para não começar. O Postgres te dá transações, joins, restrições e um query planner, o que cobre a maioria das cargas e mantém suas opções abertas. Recorra a um document store quando o padrão de acesso é genuinamente uma chave para um blob, quando o schema realmente varia por registro, ou quando você precisa de throughput de escrita além do que um único primário aguenta.

Por que os entrevistadores perguntam isso

O entrevistador quer ver se você escolhe infraestrutura a partir de requisitos ou de moda. Eles escutam por um padrão honesto, um entendimento de que bancos relacionais escalam mais do que as pessoas supõem, e consciência de que abrir mão de joins e transações é um custo real que você paga depois em código de aplicação. Candidatos que dizem que NoSQL é mais rápido sem qualificar geralmente não rodaram nenhum dos dois em escala.

Como estruturar sua resposta

  • Diga qual é o seu padrão e por que é o seu padrão.
  • Liste os padrões de acesso que te fariam mudar de ideia.
  • Cite o que você abre mão ao largar recursos relacionais.
  • Aponte que modelos de dados sobrevivem aos serviços.

Exemplo de resposta

Exemplo falado, em primeira pessoa

Meu padrão é Postgres, e eu quero ser convencido a sair dele, não a entrar. O motivo é que um banco relacional me dá transações, joins e restrições de graça, então eu não preciso acertar meus padrões de acesso logo no primeiro dia. Modelos de dados sobrevivem aos serviços que escrevem neles, e eu prefiro manter flexibilidade na camada de consulta do que na camada de armazenamento. Eu recorro a um document store em casos específicos. Se cada registro é genuinamente autocontido, se o formato varia por tenant, ou se eu preciso de throughput de escrita além de um único primário, a troca faz sentido. O que eu tento ser honesto sobre é o custo: sem joins, cada relacionamento vira código de aplicação, e sem transações, cada atualização de múltiplos documentos vira um problema de idempotência. No meu último projeto a gente manteve as entidades centrais no Postgres e colocou um log de eventos de alto volume em algo feito para isso, o que nos deu escala onde precisávamos sem abrir mão de correção em todo o resto.

Vai encarar essa entrevista em breve? O GhostPilot escuta a sua chamada ao vivo, identifica a pergunta no instante em que ela é feita e coloca uma resposta estruturada na sua tela em tempo real. Teste na sua próxima entrevista simulada ou pegue um Session Pass de $29, sem assinatura, para a hora da verdade.

Veja como funciona

Perguntas de acompanhamento que você pode esperar

  • Até onde você levaria uma única instância de Postgres antes de fazer sharding?
  • Como você modela um relacionamento muitos para muitos num document store?
  • Quando você usaria colunas JSONB em vez de um banco separado?

Mais perguntas para Engenheiro de Software

Seu entrevistador vai fazer a própria versão desta. Cole a descrição real da vaga no Question Predictor gratuito e receba as 20 perguntas que essa vaga tem mais chance de fazer, com o que cada uma está de fato sondando.

Prever minhas perguntas

Ensaie as perguntas difíceis antes que elas apareçam

Pratique com um copiloto ao vivo e depois entre pronto. Um Session Pass de $29 te leva até o fim da entrevista, sem assinatura e sem amarras.

Instalar o GhostPilot