sql >> Base de Datos >  >> NoSQL >> MongoDB

¿Realizar una actualización parcial en un documento MongoDb en WiredTiger ofrece alguna ventaja sobre una actualización completa del documento?

WiredTiger usa Control de concurrencia multiversión (MVCC) para mantener múltiples vistas de datos durante toda la vida de los lectores. El formato en memoria de WiredTiger es diferente del formato en disco:en memoria almacena las diferencias de un documento, pero se construye una versión completa del documento cuando se descarga a los archivos de datos como parte de puntos de control periódicos.

Independientemente de cómo los diferentes motores de almacenamiento MongoDB manejen las actualizaciones persistentes en el disco, todavía hay beneficios de rendimiento al usar actualizaciones parciales en lugar de actualizaciones completas cuando sea posible (particularmente si está configurando valores de campo que son pequeños en relación con el tamaño total del documento).

Por ejemplo, considere:

  • Tráfico de red para actualizaciones de documentos (cualquier motor de almacenamiento)
  • Tamaño de las entradas en el diario (cualquier motor de almacenamiento)
  • Tamaño de las entradas en el oplog de replicación (cualquier motor de almacenamiento)
  • Tamaño de las versiones en memoria de las actualizaciones (WiredTiger)

Si envía actualizaciones de documentos completos cada vez, también crea escenarios en los que el orden en que las actualizaciones llegan al servidor es significativo, incluso cuando los cambios pueden ser para distintos conjuntos de campos. Puede agregar una lógica de aplicación adicional, como el control de versiones optimista, para asegurarse de no sobrescribir accidentalmente los valores de los campos, pero esto puede agregar una complejidad innecesaria según su caso de uso.