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
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 funcionaPerguntas 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