MongoDB es una Base de Datos orientada a documentos, esto quiere decir que, en lugar de guardar los datos en registros los guarda en documentos. Como base de datos “no relacional”, puede procesar datos estructurados, semiestructurados y no estructurados.
MongoDB es muy flexible y permite combinar y almacenar múltiples tipos de datos. También almacena y maneja cantidades de datos mucho más grandes que las bases de datos relacionales tradicionales.
El formato de almacenamiento es el BSON que es una variante binaria de JSON, esto le da la capacidad de gestionar datos más complejos y extensos, es por eso que grandes corporaciones como eBay y LinkedIn lo utilizan.
MongoDB tiene un uso intuitivo y de código abierto, esto permite su utilización independientemente de cual sea el conocimiento técnico del usuario. Se adapta a lenguajes de programación como C++, C#, Java, PHP y Python.
MongoDB almacena objetos de datos en colecciones y documentos en lugar de tablas y filas que se usan en bases de datos relacionales. Las colecciones abarcan “conjuntos de documentos” que son el equivalente a las tablas de una base de datos relacional. Los documentos consisten en pares clave – valor que son la unidad principal de datos en esta base de datos.
La estructura de un documento se la puede cambiar añadiendo nuevos campos o eliminando campos existentes. En los documentos se añade una clave como identificador único y los valores pueden ser de una variedad de tipos de datos como otros documentos, matrices y matrices de documentos.
MongoDB es una de las Bases de Datos que cuenta con mayores capas de seguridad y con una gran escalabilidad que se obtiene gracias a que tiene un modelo de gestión de datos con usuarios ilimitados y con uso simultáneo lo que no afecta el rendimiento.
Características de MongoDB:
- Con MongoDB se puede realizar cualquier tipo de consultas, se puede hacer búsquedas por campos, consultas de rangos y expresiones regulares. Estas consultas pueden devolver un campo específico del documento aunque también podría ser una función JavaScript definida por el usuario.
- Tiene una buena indexación. Esto quiere decir que cualquier campo documentado puede ser indexado y se puede añadir varios índices secundarios.
- Permite la “replicación”, de esta forma, mientras se realizan consultas con el primario, el secundario actúa como una réplica de datos de solo lectura como una copia de seguridad con la posibilidad de que los nodos secundarios poseen la habilidad de poder elegir un nuevo primario en caso de que el primario actual deje de responder.
- MongoDB posee la capacidad de ejecutarse de forma simultánea en múltiples servidores, con lo que se logra un balanceo de carga o servicio de replicación de datos, de manera que podemos mantener el sistema funcionando en caso de un fallo del hardware.
- Si se aprovecha la capacidad de MongoDB para el balanceo de carga y la replicación de datos, a la Base de Datos se la puede utilizar también como un sistema de archivos. Esta funcionalidad se llama GridFS y está incluida en la distribución oficial , esto permite manipular archivos y contenido.
- Ejecución de JavaScript del lado del servidor. Esto es la capacidad de hacer consultas utilizando JavaScript para que estas sean enviadas directamente a la Base de Datos para que sean ejecutadas.
Ventajas:
- Es ideal para entornos que tienen pocos recursos de computación. Cualquier equipo servidor o cualquier equipo personal permite montar a MongoDB y con esto tener un servidor para un proyecto.
- Es una herramienta de bajo costo. Lo único que se paga es por el servicio de soporte en caso de ser necesario.
- Existe una gran documentación. Existe una documentación muy buena, muy amplia y muy detallada a diferencia de otras bases de datos NoSQL (que no utilizan SQL).
- Se complementa perfectamente con JavaScript. Si alguien desarrolla aplicaciones utilizando este lenguaje, ese programador puede utilizar toda la potencia de sus funciones y operadores en MongoDB.
Desventajas:
- No es una base de datos adecuada para aplicaciones con transacciones complejas. Las bases de datos relacionales son más convenientes para este tipo de aplicaciones.
- Aunque es ampliamente utilizada en la actualidad, se la considera todavía como una tecnología joven.
- No tiene Joins para consultas. Esto es una gran desventaja de MongoDB, por lo que no se puede hacer Joins para consultas, es decir no se pueden realizar consultas en las que se combinan diferentes tablas. En MongoDB esto se hace de otra manera.