Write concern e read preference
Pergunta
O que `write concern` e `read preference` controlam num MongoDB replicado, e qual o trade-off?
Resposta esperada
Num replica set (primário + secundários), write concern define QUANDO um write é considerado confirmado: `w: 1` (só o primário escreveu — rápido, mas se o primário cair antes de replicar, você perde o dado), `w: majority` (a maioria dos nós confirmou — durável mesmo com failover, mas mais lento), `j: true` (esperar o journal em disco). Read preference define DE ONDE ler: `primary` (sempre consistente, mas concentra carga), `secondaryPreferred` (distribui leitura, mas os secundários podem estar atrás — replication lag, mesma questão do Postgres), `nearest` (menor latência). Trade-off central: `w:majority` + ler do primário = consistência forte, menos throughput; `w:1` + ler de secundário = rápido e escalável, mas com janela de perda e de leitura desatualizada. Escolha por operação: saldo/estoque → majority + primary; contador de views → pode relaxar.
Por que perguntam isso
Pergunta sênior de Mongo. Paralelo direto com read replica lag do system-design/Postgres. Sinal bom: 'w:majority pra saldo, relaxa pra contador'.