O problema N+1 nos resolvers de GraphQL
Pergunta
Como o problema N+1 aparece numa API GraphQL e como o DataLoader o resolve?
Resposta esperada
GraphQL resolve campos por resolver. Numa query que pede `posts { author { name } }`, o resolver de `posts` traz N posts (1 query), e aí o resolver de `author` é chamado uma vez por post — N queries ao banco pra buscar cada autor, muitas vezes repetidas. É o N+1. DataLoader resolve com batching e cache por request: em vez de buscar já, o resolver de `author` registra 'preciso do autor X' num loader; o DataLoader junta todos os ids pedidos no mesmo tick do event loop e faz UMA query `WHERE id IN (...)`, além de deduplicar ids repetidos e cachear dentro daquela requisição. Você cria um DataLoader novo por request (o cache não deve vazar entre usuários).
Por que perguntam isso
Pergunta pleno de GraphQL. Sinais de domínio: 'batch no mesmo tick do event loop', 'IN (...)', e 'um DataLoader novo por request'.