MongoDB
Descripción
MongoDB es una de las bases de datos NoSQL más populares, conocida por su flexibilidad y escalabilidad.
Características principales
Orientada a documentos
A diferencia de las bases de datos relacionales (como MySQL o PostgreSQL) que usan tablas y filas, MongoDB utiliza colecciones y documentos.
- Documento: Es la unidad básica de almacenamiento en MongoDB. Los documentos se almacenan en formato BSON (una representación binaria de JSON), lo que permite almacenar datos de manera rica y estructurada.
- Colección: Es el equivalente a una tabla en una base de datos relacional. Una colección es un grupo de documentos.
- Esquema flexible: Los documentos en una misma colección no tienen que compartir la misma estructura de campos. Esto permite una gran agilidad al desarrollar y modificar aplicaciones, ya que no se necesita definir un esquema rígido de antemano.
Ejemplo: En un solo documento JSON podemos almacenar toda la información de un usuario, incluyendo sus nombres, dirección y una lista de sus pedidos, todo en una sola estructura.
Escalabilidad horizontal
MongoDB está diseñado para la escalabilidad horizontal mediante una técnica llamada sharding.
- Sharding: Consiste en distribuir grandes datasets a través de múltiples servidores (o shards). Esto permite manejar volúmenes de datos y cargas de tráfico masivas que un solo servidor no podría soportar.
Alto rendimiento
Utiliza un motor de almacenamiento que soporta búsquedas e indexación rápida, lo que la hace ideal para aplicaciones que requieren una alta velocidad de lectura y escritura.
Utilidad
MongoDB es una excelente opción cuando:
- Se necesita agilidad: El esquema de datos evoluciona rápidamente (por ejemplo, durante el desarrollo inicial de una aplicación).
- Se manejan datos no estructurados o semi-estructurados: Como datos de redes sociales, catálogos de productos con atributos variables o información de sensores.
- Se requiere escalabilidad extrema: Para aplicaciones con un gran volumen de usuarios o datos que necesitan escalar distribuyendo la carga entre muchos servidores.