MongoDB
 sql >> Base de Dados >  >> NoSQL >> MongoDB

A execução de uma atualização parcial em um documento MongoDb no WiredTiger oferece alguma vantagem sobre uma atualização completa do documento?


O WiredTiger usa o Controle de simultaneidade de várias versões (MVCC) para manter várias visualizações de dados durante toda a vida útil dos leitores. O formato na memória do WiredTiger é diferente do formato em disco:na memória, ele armazena diferenças em um documento, mas uma versão completa do documento é construída quando descarregada nos arquivos de dados como parte de pontos de verificação periódicos.

Independentemente de como os diferentes mecanismos de armazenamento do MongoDB lidam com atualizações persistentes no disco, ainda há benefícios de desempenho no uso de atualizações parciais em vez de atualizações completas sempre que possível (especialmente se você estiver definindo valores de campo pequenos em relação ao tamanho geral do documento).

Por exemplo, considere:
  • Tráfego de rede para atualizações de documentos (qualquer mecanismo de armazenamento)
  • Tamanho das entradas no diário (qualquer mecanismo de armazenamento)
  • Tamanho das entradas no oplog de replicação (qualquer mecanismo de armazenamento)
  • Tamanho das versões de atualizações na memória (WiredTiger)

Se você estiver enviando atualizações completas de documentos todas as vezes, também criará cenários em que a ordem em que as atualizações chegam ao servidor é significativa, mesmo quando as alterações podem ser para conjuntos de campos distintos. Você pode adicionar lógica de aplicativo adicional, como versão otimista, para garantir que não substitua acidentalmente valores de campo, mas isso pode adicionar complexidade desnecessária dependendo do seu caso de uso.