2011-12-19 13 views
8

Estoy leyendo en MongoDB y tratando de entender dónde se usa mejor. Una pregunta a la que no veo una respuesta clara es qué operaciones son baratas o caras y bajo qué condiciones.¿Qué operaciones son baratas/caras en mongodb?

¿Me puede ayudar a aclarar?

Gracias.

Respuesta

4

A menudo se afirma que mongodb tiene escrituras insensatamente rápidas. Si bien no son lentos, esta es una exageración. El rendimiento de escritura en mongodb está limitado por el bloqueo de escritura global. Sí, me escuchó bien, solo puede haber UNA operación de escritura en el servidor en cualquier momento.

También le sugiero que aproveche la naturaleza sin esquemas de mongodb y almacene sus datos desnormalizados. A menudo es posible hacer solo un disco para buscar todos los datos requeridos (porque todo está en el mismo documento). Menos búsqueda de disco: consultas más rápidas.

Si los datos se encuentran en la memoria RAM - no se requieren búsquedas de disco en absoluto, los datos se sirven directamente desde la memoria. Por lo tanto, asegúrese de tener suficiente RAM.

Map/Reduce, group, $where consultas son lentas.

No es rápido seguir escribiendo en un documento grande (usando $push, por ejemplo). El documento superará los límites de su disco y tendrá que ser copiado a otro lugar, lo que implica más operaciones de disco.

Y estoy de acuerdo con @AurelienB, algunos principios básicos son universales en todas las bases de datos.

+0

Lo que le oigo decir es "mongodb tiene escrituras individuales muy rápidas, pero el sistema de cerradura lo limita a uno a la vez". ¿Eso se aplica incluso con sharding? – Abe

+0

No, sharding mitiga este problema. Cada fragmento tiene su propio bloqueo. –

1

Esto no es muy diferente de todos los sistemas de bases de datos.

La consulta en los datos indexados es rápida. Las consultas sobre muchos datos son ... lentas. Debido a la desnormalización, si no hay un índice, la escritura en la base será rápida, por eso el registro es el caso de uso básico.

Por el contrario, leer datos que están en el disco (no en la RAM) sin índice puede ser muy lento cuando tiene miles de millones de documentos.

3

Desde mi práctica una cosa que debe mencionado es que mongodb no es muy buena opción para la presentación de informes, ya que es habitual en los informes que necesita los datos de diferentes colecciones ('unen') y mongodb no proporciona una buena manera de agregar múltiples de datos colecciones (y no se supone que proporcionen). Para algunos informes, el mapa/reducir o incremental map/reduce puede funcionar bien, pero es una situación rara.

Para los informes que algunas personas sugieren para migrar datos a las bases de datos de relaciones, eso tiene muchas herramientas para informar.

Cuestiones relacionadas