Definición:
MongoDB es un sistema de datos NoSQL, orientado a documentos y de código abierto.
Table of Contents
¿Qué es el MongoDB?
El MongoDB es una base de datos orientada a documentos. En otras palabras, en vez de guardar los datos en registros, guarda los datos en documentos. Estos documentos son almacenados en BSON, que es una representación binaria de JSON.
Una de las diferencias claves con respeto a las base de datos relacionada, es que no tiene que seguir un esquema. Los documentos de una misma colección o concepto similar pueden presentar esquemas diferentes.
Características del MongoDB
Algunas de las características del MongoDB son las siguientes:
- Consultas ad hoc. Soporta la búsqueda por campos, consultas de rangos y expresiones regulares.
- Indexación. Cualquier campo que se encuentre en documento de MongoDB puede ser indexado, al igual que es posible hacer índices secundarios.
- Replicación. MongoDB soporta el tipo de replicación primario-secundario. Cada grupo primario y secundario se califica como réplica set.
- Balanceo de carga. Permite escalar tanto de forma horizontal usando el concepto shard.
- Almacenamiento de archivos. Puede ser usado como un sistema de archivos, aprovechando la capacidad de MongoDB para el balanceo de carga y la replicación de datos en múltiples servidores. Esta funcionalidad, llamada GridFS15 e incluida en la distribución oficial.
- Agregación. Proporciona un framework de agregación que permite realizar operaciones similares al «GROUP BY» de SQL. Se construye como un pipeline en el que los datos van pasando a través de diferentes etapas en los cuales estos datos son modificados, agregados, filtrados y formateados hasta obtener el resultado deseado.
- Ejecución de JavaScript del lado del servidor. MongoDB puede realizar consultas usando JavaScript, haciendo que estas sean enviadas directamente a la base de datos para ser ejecutadas.
¿Dónde se puede utilizar MongoDB?
La aplicación de MongoDB, a diferencia de las bases de datos NoSQL, tienen un ámbito de aplicación amplio. Se puede usar en muchos proyectos en la actualidad. Podemos decir que se puede usar en cualquier aplicación que necesite almacenar datos semi estructurados.
MongoDB es especialmente útil en entornos que requieran escalabilidad. Con sus opciones de replicación y sharding, que son muy sencillas de configurar, podemos conseguir un sistema que escale horizontalmente sin demasiados problemas.
Sin embargo solo puede garantizar operaciones atómicas a nivel de documento. Si las transacciones son algo indispensable en nuestro desarrollo, deberemos pensar en otro sistema.
Tampoco existen los JOINS. Si queremos consultar datos relacionados en más de dos colecciones tenemos que realizar más de una consulta.
MongoDB tiene un framework para realizar consultas de este tipo llamado Aggregation Framework. También puede usar Map Reduce. Pero por otro lado no llega a la potencia de un sistema relacional. Si vamos a necesitar explotar informes complejos, deberemos pensar en utilizar otro sistema. Punto que se va modificando y mejorando en cada versión.
Términos relacionados