19

7 razones para usar MongoDB en tus proyectos

520Puntos

hace 5 años

Qué es MongoDB

Para los que no conocen qué es MongoDB, este es un motor de base de datos NoSQL basado en documentos. Esto quiere decir que Mongo guarda los datos en estructuras parecidas a un JSON.

Antes de comenzar, quiero que te familiarices con los términos empleados en MongoDB:

Colecciones
Semejante a una tabla en el mundo de bases de datos relacionales y sirven para agrupar documentos.

Documentos
La unidad fundamental en que se guarda información dentro de MongoDB, son estructuras parecidas a un JSON. Semejante a una fila en una tabla de una base de datos relacional.

Drivers
Son las librerías empleadas por nuestras aplicaciones para comunicarse con MongoDB.

¿Estás listo para conocer las 7 razones por las cuales te recomiendo usar MongoDB?

1. Modelamiento de datos

Si estás pensando en emplear NodeJS como tu backend, es posible que hayas escuchado hablar de arquitecturas MERN (Mongo Express React Node.js) o MEAN (Mongo Express Angular Node.js) es común usar Mongo debido a que los datos se almacenan en estructuras parecidas a un JSON, esto hace que el flujo de datos dentro de la aplicación no tenga mayores cambios en la estructura de datos.

Si no estás usando un stack basado en JavaScript, no hay problema ya todos los drivers de MongoDB vienen con serializadores que convierten las estructuras de datos de tu lenguaje de programación en documentos que MongoDB puede entender.

2. Escalabilidad

Si estás esperando un gran flujo de usuarios es ideal que la base de datos que elijas pueda escalar con la demanda, MongoDB al ser una base de datos distribuida puede escalar no solamente de forma vertical (CPU y RAM) si no que también de forma horizontal (creando más nodos).

3. Flexibilidad

El usar una base de datos basado en documentos y que sea Schema Less como lo es MongoDB hace que tu base de datos crezca con tu aplicación sin tener que ejecutar scripts que crean campos con valores por defecto cada vez que quieras agregar un campo nuevo en tus registros. Dentro de MongoDB es normal que los documentos dentro de una colección no tengan exactamente los mismos campos.

4. Alta disponibilidad

Si tienes usuarios en muchas partes del mundo y quieres que las aplicaciones se encuentren distribuidas regionalmente, MongoDB te permite tener cluster distribuidos. Esto mejora la velocidad de consulta al disminuir la latencia que existe entre entre el cluster de base de datos y el servicio que ejecuta la query. Además de la ventaja adicional de que si una región no se encuentra disponible, las otras pueden mantener la aplicación disponible.

5.Transacciones

Si vienes del mundo SQL y habías estado prevenido de usar MongoDB debido a que no ofrecía transacciones, te cuento que en su versión 4.0 MongoDB nos trae transacciones ACID (Atomicity, Consistency, Isolation, Durability) entre múltiples documentos.

6. Poderosa sintaxis para hacer consultas

En MongoDB tenemos múltiples operadores que nos permiten crear consultas poderosas con poco código, además que contamos con las Agregaciones que son un mecanismo que nos permite realizar operaciones entre múltiples colecciones.

7. Es de código abierto

Esto es una ventaja mayúscula ya que no tienes que pagar licencias para usar MongoDB dentro de tu proyecto de forma comercial, además de que existen muchos proveedores que ofrecen MongoDB como SaaS como es el caso de MongoDB Atlas, MLab entre otros. Aprende a instalar MongoDB en Windows, Linux y Mac.

Te invito a estudiar un poco más sobre el tema con nuestro blogpost MongoDB vs SQL: Di no a la rebeldía. Usa MongoDB con responsabilidad.

¿Has usado MongoDB en tus proyectos? ¿cuáles son las ventajas que has encontrado? comparte tus respuestas con nosotros.

Albert
Albert
albertramirez

520Puntos

hace 5 años

Todas sus entradas
Escribe tu comentario
+ 2
Ordenar por:
5
19322Puntos

Hola, creo que el punto 7- Es de código abierto es discutible, parece que desde el 1 de Octubre del 2018 han cambiado su licencia, tanto es así que OSI(Open Source Initiative) dice que no participa su Licencia en las licencias Open Source.

OSI no le impide utilizar ninguna licencia. Simplemente no lo llames Open Source. -Bruce Perens

Con ello se abre una interrogante enorme ya que es posible que en distribuciones como RED HAT lo elimine de sus repositorios como ya lo hizo con fedora.

Habra que esperar, he abierto el debate.

Referencias

2
21631Puntos
5 años

Gracias por la noticia, siempre hay que estar al tanto del tema tan importante como lo son las licencias.

2
24864Puntos

Genial! Muchas gracias, yo he usado MongoDB (Versión 3) en mi proyecto de grado https://github.com/MontoyaAndres/GradeProject y lo genial es que en unos cuantos segundos, se pueden insertar una montaña de datos, lo cual no pasa con SQL. En el caso de mi proyecto, el usuario inserta un Excel con más de 3000 datos de golpe, y MongoDB con tal cantidad queda intacto! Con MySQL se me rompía cuando llegaba a los 300 por segundo xD.

2
21631Puntos

Excelente artículo @albertramirez, es claro, conciso y directo. Dado que no tengo experiencia en MongoDB ¿Es muy difícil migrar un proyecto del SQL tradicional a MongoDB, tiene sentido? Saludos cordiales.

2
520Puntos
5 años

Hola darvin_orozco, el problema quizás no sea el migrar los datos de tu base de datos SQL a MongoDb, hacerlo no es más que un script. El lío es ajustar la lógica de tu aplicación al uso de la nueva base de datos. Quizás tenga más sentido que re-escribas el código de tu aplicación y que modeles tus datos usando la estructura de documentos que te ofrece Mongo, puede llegar a ser más trabajo pero obtendrás las ventajas que se describen en el artículo.

2
11531Puntos

MongoDB, en el corto tiempo de mi experiencia con este motor, me ha parecido muy ágil y versátil, ademas de practico, pero aun tengo esa extraña sensación de que en algún punto futuro de mi app deba migrar a bases sql, por el hecho de las relaciones. se que se puede con los documentos embebidos, pero no es claro para mi si es la forma correcta o versátil de llevar una base de datos.

1
21451Puntos

Excelente post, muy intuitivo para entender sobre MongoDB y es una gran Herramienta que vale la pena aprender, incluso si sabes SQL podrás hacer queries, pero también deberás aprender las sentencias que tiene Mongo para consultar con mayor profundidad. (Será más fácil de aprender si vienes de datos estructurados, pero no es un requisito imprescindible).

1
21516Puntos

las consultas o querys son muy fáciles de hacer comprados con los del sql, mas velocidad.

1
1241Puntos

Excelente contenido.

Muy entendible, gracias por la explicación.

1
5Puntos

Alguien alguna vez trabajo con
Wordpress + Mongodb

1
3Puntos

Hola Albert, no se si todavia estas por all, Estoy buscando opciones para definir los menu de local de comida rapida, en mysql que es la base de datos del proyecto, es muy rigida para definir la estructura de datos de un menu y sus opciones.
Viendo esta opcion pareciera que mongodb es una salida para gestionar estos dos elementos, los item del menu y sus adiconales o extras o cosas que no quieren q lleve el producto.
Ahora es recomendable que esta parte de datos no estructurados como los menus de un negocio de comida rapida definidos en mongodb puedan coexistir con mysql o l tabla de productos previmente definida, ya que el producto en su caracteristica principal como titulo del item y descripcion es comun.
Pero no se si seri auna buena estrategia combinar mabas bases de datos para aprovechar las ventajas q me dan los dos mundos de MySQL y Mongodb.
no se que opinas tu?

0
25270Puntos

Excelente, muchas gracias. Desconocía muchas de estas ventajas, entre ellas la transaccionalidad .