Qué es MongoDB y cuándo conviene utilizarlo
Autor: Redacción Domeny.ForSale Publicado
En breve: MongoDB es una base de datos documental: almacena la información en estructuras parecidas a objetos JSON, en lugar de organizarla exclusivamente en tablas con filas y columnas. Resulta útil, entre otros casos, en aplicaciones cuyos datos tienen una estructura anidada o distintos conjuntos de atributos. Sin embargo, no es automáticamente una alternativa más rápida ni más sencilla que las bases SQL: la elección depende, ante todo, de cómo se escriben y se leen los datos.
Cómo almacena los datos MongoDB
MongoDB pertenece al grupo de bases NoSQL, sistemas que no se basan exclusivamente en el modelo relacional tradicional. La unidad básica de datos es el documento: un conjunto de campos y valores que describe, por ejemplo, un producto, un usuario o un pedido. Los documentos se agrupan en colecciones, que cumplen una función similar a la de las tablas, pero no exigen que todos los registros tengan el mismo conjunto de campos.
Un documento puede representarse en un formato JSON fácil de leer:
{
"_id": "producto-101",
"nombre": "Mochila urbana",
"precioGroszy": 18900,
"colores": ["negro", "azul marino"],
"parametros": {
"capacidadLitros": 20,
"impermeable": true
}
}
El campo _id es el identificador único del documento. Si la aplicación no lo proporciona, al añadir el documento de la forma habitual se suele asignar un identificador de tipo ObjectId. Los demás campos pueden contener, entre otras cosas, texto, números, listas y otros documentos.
Internamente, MongoDB utiliza BSON, un formato binario de documentos que también admite tipos de datos que no existen directamente en JSON, como las fechas. Por tanto, decir que MongoDB «almacena JSON» es una simplificación útil, no una descripción exacta del formato de almacenamiento.
En qué se diferencia MongoDB de una base SQL
Las bases de datos relacionales, como PostgreSQL o MySQL, organizan los datos en tablas y permiten relacionarlos mediante campos comunes. Por ejemplo, una tabla de pedidos puede hacer referencia a una tabla de clientes. SQL es un lenguaje que sirve, entre otras cosas, para consultar estas bases de datos.
En MongoDB, la información relacionada suele incluirse dentro de un mismo documento. Un pedido puede contener la lista de artículos y la dirección de entrega que se indicó al realizar la compra. Así, la aplicación recupera todos los datos necesarios sin tener que reunirlos a partir de varias estructuras independientes.
| Aspecto | MongoDB | Base de datos relacional |
|---|---|---|
| Estructura principal | Documentos en colecciones | Filas en tablas |
| Modelo de datos | Estructuras anidadas y listas de forma natural | Columnas y relaciones definidas explícitamente |
| Relaciones | Datos embebidos o referencias | Claves foráneas y uniones |
| Consultas | Operaciones sobre documentos y pipelines de agregación | Consultas SQL |
Esta comparación no implica una separación estricta de capacidades. Las bases relacionales pueden admitir JSON, y MongoDB permite combinar datos de distintas colecciones, entre otras formas, mediante la operación $lookup. También admite transacciones que abarcan varios documentos, aunque hay que tener en cuenta su coste y sus requisitos de despliegue al diseñar el proyecto.
Un esquema flexible no significa ausencia de reglas
Los documentos de una misma colección pueden tener campos diferentes. En el catálogo de una tienda, una mochila puede tener una capacidad en litros, mientras que un monitor puede tener una diagonal de pantalla y una resolución. No hace falta crear para cada tipo de producto el mismo conjunto de columnas vacías.
Sin embargo, la flexibilidad no elimina la necesidad de diseñar el modelo de datos. Si una parte de la aplicación guarda el precio como un número y otra como texto, el filtrado y los cálculos se complican. MongoDB ofrece validación de esquemas: reglas que comprueban, entre otras cosas, los campos obligatorios y sus tipos.
También hay que decidir qué datos se incluyen dentro del documento y para cuáles se guarda una referencia. La dirección de entrega guardada en un pedido normalmente debe conservarse como una copia histórica. Es mejor almacenar por separado el perfil actual del cliente, en lugar de actualizar sus copias en todos los pedidos.
No conviene añadir datos sin límite a un mismo documento. MongoDB establece un tamaño máximo de 16 MiB para un documento BSON, por lo que un historial de eventos que crece continuamente suele requerir una colección independiente.
Cuándo elegir MongoDB y cuándo considerar PostgreSQL
MongoDB es una opción razonable cuando la aplicación trabaja con objetos complejos cuyo contenido suele leerse de forma conjunta. Algunos ejemplos son un catálogo de productos con distintos atributos, un sistema de gestión de contenidos o las configuraciones de dispositivos. El mero hecho de que la aplicación utilice JavaScript no es motivo suficiente para elegirlo.
Conviene considerar primero una base relacional cuando lo más importante son las numerosas relaciones, las restricciones de integridad entre tablas y los informes que combinan varios tipos de datos. Es el caso, por ejemplo, de un sistema de liquidación de cuentas, en el que la facilidad para controlar las relaciones entre datos puede importar más que la libertad en la estructura de los documentos.
Antes de decidir, anota las tres operaciones más frecuentes de la aplicación, por ejemplo, buscar un producto, recuperar el carrito y guardar un pedido. Después, prepara un modelo de ejemplo en ambas bases. Comprueba cuántas lecturas y actualizaciones requiere cada operación y dónde se generan copias de la misma información.
Cómo empezar y qué tener en cuenta al desplegar
Puedes ejecutar MongoDB en tu propia infraestructura o utilizar MongoDB Atlas, un servicio gestionado en la nube. Para trabajar con los datos existen, entre otras herramientas, la aplicación gráfica MongoDB Compass, la shell mongosh y los controladores para distintos lenguajes de programación. Consulta los precios actuales, los límites y la cobertura de las copias de seguridad de Atlas en la documentación oficial y en la información de precios del plan elegido.
Para empezar, crea una colección de prueba, añade entre diez y veinte documentos y ejecuta las consultas habituales. A continuación, elige índices, estructuras adicionales que aceleran las búsquedas, en función de los filtros y las ordenaciones que realmente se utilicen. Un exceso de índices ocupa espacio y aumenta el coste de las escrituras.
Antes del despliegue en producción, configura la autenticación, las restricciones de acceso a la red y las copias de seguridad, y prueba la restauración de los datos. Utiliza el primer prototipo para comprobar el modelo y las consultas: solo al medir su comportamiento con datos representativos podrás evaluar si MongoDB encaja en la aplicación concreta.
Consulta también: ¿Qué es 2FA?
