¿El trabajo de MongoDB MapReduce bloquea la base de datos? Estoy desarrollando una aplicación web MongoDB multiusuario y me preocupan los conflictos y el rendimiento de múltiples usuarios. ¿Alguien tiene alguna palabra de sabiduría para mí?¿MongoDB MapReduce bloquea la base de datos
Respuesta
¿Respuesta simple? A veces ...
Depende mucho de cómo se usa map/reduce ... pero en mi experiencia nunca ha sido un problema.
No hay mucha información sobre esto, pero está claramente indicado en el docs que se hace a veces bloqueo pero "Permite la operación simultánea sustancial".
Hay un par de preguntas en el grupo mongodb usuario asking sobre esto ... la mejor respuesta que he visto offically es que ... "en el 1,4 cede, pero no es tan agradable como lo debería ser, en 1.5 es mucho más amigable a otras solicitudes ".
Eso no significa que no bloquea en absoluto, pero en comparación con db.eval() que bloquea el whole mongod process ... es su mejor apuesta.
Dicho esto, en 1.7.2 y hasta ahora hay una opciónnolock para db.eval() ...
Sin embargo, tenga en cuenta que se está pasando por alto el problema más importante: MapReduce bloquea todo el contexto de Javscript, del cual solo hay uno por mongod. Por lo tanto, no puede ejecutar múltiples trabajos simultáneos de MapReduce en un solo servidor MongoDB; tenga cuidado de usarlo como un mecanismo de consulta. –
@Brendan ... gran punto, gracias. –
No, mapreduce no bloquea la base de datos. Consulte the note here, justo después de "Usar db.eval()" (esto explica por qué mapreduce puede ser más apropiado de usar que eval, porque mapreduce no bloquea).
Si va a ejecutar una gran cantidad de trabajos de reducción de mapas, debe utilizar la fusión, porque de esa manera el trabajo puede ejecutarse en paralelo en todos los fragmentos. Lamentablemente, los trabajos de mapreduce no pueden ejecutarse en secundarios en un conjunto de réplicas, ya que los resultados deben escribirse y las réplicas son de solo lectura.
En la versión 2.1.0 añade una bandera "no atómica" a la opción de salida .
- 1. MongoDB MapReduce no devuelve datos en PHP
- 2. MongoDB: efectos secundarios de mapReduce
- 3. MongoDB: Terrible rendimiento de MapReduce
- 4. MongoDB eliminar la colección de mapreduce
- 5. MongoDB como la base de datos principal?
- 6. MongoDB MapReduce actualización en el lugar cómo
- 7. Programación de trabajos de MapReduce para MongoDB
- 8. Arquitectura de base de datos MongoDB
- 9. Cifrado de base de datos MongoDB
- 10. crear base de datos segura en mongodb
- 11. MongoDB: ¿De qué sirve utilizar MapReduce sin paralelismo?
- 12. DataSize base de datos en MongoDB
- 13. ¿SQLite bloquea el archivo de base de datos en lecturas?
- 14. ¿Cómo eliminar registros duplicados en MongoDB de MapReduce?
- 15. ¿Cómo suprimir colecciones de MapReduce temporales en MongoDB
- 16. Cuándo cerrar la conexión de la base de datos MongoDB en Nodejs
- 17. Base de datos de más de 2 GB en MongoDB
- 18. Diseño de esquema de base de datos MongoDB
- 19. MongoDB Estructura de base de datos y prácticas recomendadas Ayuda
- 20. MongoDB MapReduce - Emitir una clave/valor uno duerma llamar reducir
- 21. Aplicación web MongoDB +: base de datos por usuario
- 22. ¿Se puede hacer una base de datos relacional usando MongoDB?
- 23. base de datos mongodb con Java play 2.0
- 24. La aplicación se bloquea al actualizar la base de datos sqlite por primera vez
- 25. Borrar todo en una base de datos MongoDB
- 26. Almacenar imágenes en una base de datos MongoDB
- 27. MongoDB o CouchDB como base de datos para dispositivos móviles?
- 28. Establecer cuota de base de MongoDB (SIZE)
- 29. Ordenando datos grandes usando MapReduce/Hadoop
- 30. ¿Puede funcionar MongoDB cuando el tamaño de la base de datos es mayor que la RAM?
Palabras de sabiduría sabio, tenga en cuenta mi comentario sobre el paralelismo respuesta WRT aceptado. –