¿Cuáles son los principales beneficios de usar MongoDB en aplicaciones web?

Un par de cosas:

* Es un puente realmente agradable entre SQL y NoSQL. Mongo, especialmente cuando usa un ORM, tiene muchas características que son similares a las bases de datos relacionales, por lo que es una manera fácil de mojarse los pies con los almacenes de documentos.
* Se asigna muy bien a la mayoría de los lenguajes dinámicos. Dado que comprende matrices y hashes de forma nativa, casi se siente como una base de datos de objetos cuando se usa con Ruby.
* MapReduce tiene una buena interfaz. Su implementación de JavaScript es mucho más limpia que otras tiendas NoSQL.
* Está volviendo loco rápidamente.
* Las operaciones atómicas le permiten hacer algunas cosas que necesitarían una transacción en una base de datos relacional.
* Las consultas geoespaciales están integradas. No dependas más de terceros para estas cosas, a menos que tengas necesidades realmente específicas o necesites ser extremadamente preciso.

Dicho esto, hay cosas sobre Mongo que son agradables, pero que tienen más que ver con el contraste entre bases de datos relacionales y almacenes de documentos que con Mongo en sí:

* El modelado de documentos se ajusta muy bien a ciertos casos de uso. Todavía estoy explorando algunos en particular, pero tener comentarios incrustados en algún tipo de modelo de dominio es espectacular.
* El modelado de documentos puede reducir drásticamente sus consultas por página. Tengo una aplicación que solo necesita dos consultas en la mayoría de las páginas, debido a la ‘desnormalización’.
* Debido a la naturaleza sin esquema de los almacenes de documentos, es mucho más rápido comenzar a trabajar y cambiar la forma en que almacena sus datos.

También hay algunos inconvenientes:

* Ni siquiera te molestes en usar 32 bits. Tiene un límite de tamaño de base de datos 2G allí.
* Es rápido porque, de forma predeterminada, solo imprime en el disco una vez por segundo, por lo que teóricamente podría perder datos.
* También es rápido porque con ciertas configuraciones en realidad regresa antes de saber si la escritura falla o no, esto puede o no ser lo que desea.

En pocas palabras: conozca sus herramientas. usa el mejor.

Para agregar a la respuesta de Steve, otro beneficio importante de usar bases de datos NoSQL es la flexibilidad del modelo de datos que permiten. Con las bases de datos relacionales hay reglas más estrictas sobre cómo debe almacenar los datos. Sin embargo, con esta flexibilidad viene un mayor riesgo de perder la integridad de los datos. En las bases de datos relacionales, puede realizar verificaciones automáticas de integridad de datos con claves foráneas y disparadores. Con las bases de datos NoSQLl, debe realizar la mayoría de las comprobaciones de integridad en la capa de aplicación.

More Interesting

¿Cuál es el futuro de la gamificación de aplicaciones web?

Para un tipo de aplicación de diario público principalmente monetizada con anuncios, ¿cuál construiría primero, con fondos limitados, un sitio web móvil HTML5 o una aplicación para iPhone?

¿Cuál es la ventaja de escribir una aplicación web con Node.js en EC2 frente a Python en Google App Engine?

¿Cuál es el mejor editor de texto HTML 2016?

¿Qué tecnología web debo aprender ahora para el futuro?

¿Qué idiomas debo saber para crear aplicaciones web?

¿Cuáles son algunas buenas herramientas de monitoreo de rendimiento de aplicaciones para aplicaciones Rails?

¿Es un buen momento para entrar en el diseño y desarrollo de aplicaciones web y móviles?

¿Cuáles son las ventajas y desventajas de usar Sinatra vs Express para un servicio web API?

¿Qué temas debería cubrir un programa de estudios de "Tecnologías de la Web Social 101" si se enseña en la escuela de Derecho?

¿Es mejor implementar rápidamente con Parse o hacer una compilación personalizada de Django / Python? Desde una perspectiva de inversión y salida, me preocupa que si construimos con Parse, la compañía será menos atractiva.

¿Cuál es la mejor manera de incluir una galería de videos en un sitio web?

¿Por qué el navegador agrega o reemplaza el juego de caracteres de tipo Contenido con UTF-8 al realizar una solicitud XMLHttpRequest?

Cómo implementar una aplicación web ReactJS en Heroku

¿Qué tipo de servidor web (VPS o dedicado) necesitaré para mi aplicación de prueba en línea? Puede haber 2,000 usuarios a la vez tomando la prueba.