Isso é o que o MongoDB diz sobre registro no diário:
Para fornecer durabilidade em caso de falha, o MongoDB usa registro de gravação antecipada para arquivos de diário em disco.
Mas com WiredTiger :
Importante
Entre as operações de gravação, enquanto os registros do diário permanecem nos buffers do WiredTiger, as atualizações podem ser perdidas após um desligamento forçado do mongod.
Se o registro no diário no WiredTiger não pode garantir totalmente que não haverá atualizações perdidas, temos que escrever nosso aplicativo para estar ciente de que alguns documentos podem simplesmente "desaparecer", então por que ativar o registro no diário, considerando que isso retardará as gravações?
Parece que, se você não pode perder atualizações*, deve escolher MMAPv1 com registro no diário e, se puder, pode preferir escolher WiredTiger sem registro no diário.
(*) Você ainda pode perder atualizações em um cluster do MongoDB devido a reversões , embora possa evitar reversões com w: preocupação de gravação majoritária ou fazer algo com os arquivos na pasta rollback/ .
Não importa se é um wiredTiger ou MMAPv1, eles são apenas mecanismos de armazenamento. Se você perde atualizações ou não, depende de questões de gravação.
Seu aplicativo se comunica com o servidor MongoDB que grava principalmente na memória que possui um cache de páginas que são periodicamente gravadas e lidas no disco permanente. Há também um diário que registra tudo.
Quando você grava no banco de dados, ele grava nas páginas e no diário simultaneamente. As páginas serão gravadas no disco dependendo da pressão da memória. Por padrão, você não espera pela confirmação do diário porque o diário pode não gravar no disco por um tempo, o que é representado por j=false. E, por padrão, w=1, o que significa que ele reconhece apenas a gravação nas páginas do cache.
Padrão: w = 1, j = false - isso é rápido, mas se algo acontecer antes que o diário tenha a chance de gravar no disco, os dados serão perdidos. O pior é que ele mostrará como se os dados tivessem sido gravados/persistidos se você confiar em w = 1.
w = 1, j = true - neste caso, você espera a confirmação do diário de que ele foi gravado no disco. Isso é muito mais lento, mas garante que os dados sejam mantidos.