Pergunta de entrevista para Desenvolvedor Backend

Uma única tabela cresceu para vários bilhões de linhas e as escritas estão ficando lentas. Quais são suas opções?

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

Resposta rápida

Esgote primeiro as opções mais baratas: índices melhores, arquivamento de linhas frias, mover colunas grandes para fora e réplicas de leitura para a carga de leitura. Depois particione a tabela, normalmente por tempo ou por tenant, para que cada partição fique pequena e partições antigas possam ser descartadas instantaneamente. Sharding entre bancos separados vem por último, porque custa queries entre shards, transações distribuídas e rebalanceamento, e a escolha da chave de shard é muito difícil de mudar depois.

Por que os entrevistadores perguntam isso

O entrevistador quer ver que você escala em ordem de custo em vez de pular para a solução mais complexa. Ele presta atenção à distinção entre particionamento dentro de um banco e sharding entre vários, a uma discussão sensata de chave de shard incluindo pontos quentes, e à realidade operacional de migrar uma tabela em produção. Ir direto para sharding costuma ser um sinal de alerta.

Como estruturar sua resposta

  • Diagnostique primeiro: é escrita, manutenção de índice ou contenção de lock.
  • Ordene as opções da mais barata à mais invasiva.
  • Explique particionamento e os ganhos de poda e retenção.
  • Cubra a escolha da chave de shard e o que você perde com sharding.

Exemplo de resposta

Exemplo falado, em primeira pessoa

Primeiro eu descobriria o que está lento de fato, porque uma tabela grande não é automaticamente um problema. Normalmente é manutenção de índice em cada insert, ou alguns índices que ninguém usa, ou o autovacuum ficando para trás. Então começo pelos ganhos baratos: derrubar índices que nada usa, mover uma coluna grande de texto ou JSON para uma tabela lateral para as linhas principais ficarem compactas, e arquivar tudo mais velho que a política de retenção. Se ainda estiver grande demais de verdade, eu particiono, normalmente por tempo para dados de evento, o que mantém cada partição pequena, permite ao planner podar para a faixa relevante e transforma apagar os dados do ano passado em descartar uma partição em vez de um delete que roda por um dia. Sharding é o último recurso porque muda o modelo de programação: joins entre shards somem, transações viram distribuídas, e rebalancear é um projeto. Se eu fizer sharding, a chave recebe pensamento de verdade, já que fazer sharding de uma tabela de eventos por id de cliente te dá um shard quente no minuto em que um cliente é dez vezes maior que 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

  • Como você escolheria uma chave de shard que evita pontos quentes?
  • Como você migra uma tabela em produção para uma particionada sem indisponibilidade?
  • Quais queries ficam caras depois que os dados são shardeados?

Mais perguntas para Desenvolvedor Backend

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