2011-04-06 18 views
10

¿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

+0

Palabras de sabiduría sabio, tenga en cuenta mi comentario sobre el paralelismo respuesta WRT aceptado. –

Respuesta

7

¿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() ...

+6

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. –

+0

@Brendan ... gran punto, gracias. –

0

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.

Cuestiones relacionadas