Análisis en profundidad

Qué es MongoDB y qué diferencia hay con las bases de datos tradicionales

En un mundo cada vez más atravesado por los datos, MongoDB se presenta como una muy buena solución de almacenamiento. A continuación el por qué.

Publicado el 10 Abr 2023

MongoDB

Cuando hablamos de MongoDB nos estamos refiriendo a un sistema de gestión de bases de datos de código abierto. Tiene la característica de ser NoSQL y de estar orientado principalmente a documentos.

Se trata de una novedosa opción para almacenar grandes volúmenes de datos en nuestras aplicaciones. Tiene un funcionamiento particular, ya que no es SQL y, por ende, no cuenta con tablas ni registros.

Lo cierto es que esta plataforma guarda muchas diferencias con las bases de datos tradicionales, empezando por el rendimiento y la flexibilidad que posee. 

Por otra parte, tal como comentamos, en lugar de guardar la información en tablas, MongoDB tiene la particularidad de guardar los datos estructurados en BSON. Esto permite que el proceso de integración en las aplicaciones sea más efectivo y, sobre todo, más ágil.

Cabe aclarar que, en cuanto al formato de datos utilizado por MongoDB, BSON, se trata del fichero JSON con binarización. Por ende, la representación de la estructura de los datos es binaria.

En este artículo, veremos qué ventajas ofrece MongoDB y te contaremos todo lo que necesitás saber acerca de esta aplicación de bases de datos tan popular.

Licencias

Una de las características principales de MongoDB es que es de código abierto y de uso gratuito. Lanzado en 2009 por la compañía 10g que hoy posee el nombre de MongoDB Inc, tenía una licencia pública del lado del servidor.

Hay que aclarar que el hecho de que sea de código abierto quiere decir que cualquiera lo puede descargar y modificar debido a que el código fuente y otros derechos de autor del software son publicados bajo una licencia determinada de uso público.

En el caso particular de MongoDB, la licencia es de GNU, un sistema operativo de tipo UNIX, y se puede obtener bajo la licencia pública AGPL.

Por otro lado, los drivers que se usan en los lenguajes de programación están bajo la licencia de Apache. 

Usos comunes de MongoDB

Hemos dicho hasta aquí que MongoDB es un sistema de bases de datos no relacional muy potente y que posee una novedosa forma de almacenar los datos.

Ahora bien, cabe preguntarse para qué se usa generalmente este software de código abierto tan popular y por qué es tan exitoso. De eso nos encargaremos en este apartado, de ver los usos comunes de MongoDB.

En primer lugar, debemos decir que Mongo se utiliza en muchas compañías a lo largo del mundo para almacenar datos o para servir como base de datos en distintas aplicaciones. 

A su vez, se trata de un programa que puede ser útil para la creación de tiendas online e incluso para el diseño de aplicaciones.

En el caso de las aplicaciones, tenemos al caso particular de los videojuegos. Por lo general, aquellos que sean escalables y de alto rendimiento utilizan Mongo para el almacenamiento de sus datos.

En el mismo sentido, si nos referimos a la creación de páginas web, debemos decir que Mongo es una plataforma muy útil para el gestor de contenidos WordPress, así como también lo es para sistemas basados en la nube.

Mongo es capaz de administrar contenidos en sistemas que poseen una gran cantidad de documentos. 

Asimismo, otro entorno en el que este software suele ser utilizado es en el de las estadísticas, ya que permite analizarlas y manejarlas en tiempo real y a gran velocidad.

Ahora que hemos indagado acerca de las diversas utilidades que se le pueden dar a Mongo, cabe realizar una aclaración. Es cierto que se trata de un programa cuyo uso tiende a ser más sencillo que un sistema relacional o SQL. Sin embargo, y aunque sea una gran opción, no es útil en la totalidad de los casos. Esto se debe a que es un software que no soporta las transacciones y por ende nos restringe la posibilidad de usarlo para determinadas operaciones o desarrollos.

Instalar y configurar según el sistema operativo

Ahora que ya hemos visto que es MongoDB y hemos descrito algunas de sus funcionalidades, llega el momento de analizar cómo instalarlo y configurarlo según el sistema operativo con el que cuentes en tu computadora

Instalar y configurar MongoDB en Windows

Antes de comenzar a describir la instalación de MongoDB en Windows, cabe aclarar que el primer paso es la creación de un directorio de datos. Este se trata de un contenedor virtual en el cual podemos almacenar archivos informáticos. Es de suma importancia, ya que, sin él, no podemos concretar la tarea.

Pues bien, una vez hecho esto, el siguiente paso es encontrar el instalador para Windows en el centro de descargas de la página oficial de Mongo. Recordemos que al ser de código abierto no debemos pagar por su uso.

El link donde podemos encontrarlo es el siguiente: https://www.MongoDB.com/try#community. También puedes descargarlo directamente desde este enlace: https://fastdl.MongoDB.org/windows/MongoDB-windows-x86_64-6.0.4-signed.msi.

Es importante que iniciemos la instalación como administradores. Una vez hecho esto, estaremos frente a un asistente de configuración que nos irá arrojando diferentes ventanas. La primera de ellas será una que nos dará la bienvenida al programa y en la que debemos presionar ‘next’.

Lógicamente, antes de continuar, el instalador nos solicitará que prestemos conformidad con los términos del acuerdo de la licencia AGPL. En cuanto al tipo de instalación, debemos elegir la opción ‘complete’ para que el proceso se realice de forma correcta. 

En cada una de las ventanas que aparezcan, luego de seleccionar las opciones, debemos presionar ‘Next’ para seguir avanzando. Se trata de un proceso sencillo y amigable para el usuario.

Antes de continuar, tienes que saber que no se debe instalar MongoDB Compass al mismo tiempo que MongoDB. Es una importante aclaración ya que el instalador nos dará esa opción. 

Una vez que hayamos completado todo lo que el instalador nos pide y hayamos avanzado presionando ‘next’, llegaremos a una ventana que dirá ‘Ready to install MongoDB’ que quiere decir que estamos listos para completar la instalación. 

En este punto, debemos presionar install, esperar a que termine la instalación y por último presionar en finalizar.

Posteriormente, para configurar el programa de forma correcta en nuestra computadora con sistema operativo Windows, debemos agregar la RUTA a la instalación y copiarla en nuestro portapapeles.

Al tener copiada la RUTA en nuestro portapapeles, podremos modificar las variables ambientales del sistema. 

Instalar y configurar MongoDB en Mac OS

Para instalar MongoDB en Mac OS es importante tener instalados previamente Homebrew y Xcode. El primero se trata de un sistema de gestión de paquetes que nos ayudará con la instalación, actualización y eliminación de software y programas en este sistema operativo.

Pues bien, una vez que nos hayamos asegurado de tener esos dos programas, debemos ejecutar una serie de comandos. El primer de ellos es “brew tap MongoDB/brew”. Luego, debemos ejecutar el siguiente: brew install MongoDB-community@6.0

Qué es la replicación en MongoDB

MongoDB, como sistema de bases de datos, posee ciertas características que hacen a su funcionamiento. Una de ellas es la replicación.

Se trata de la posibilidad de realizar copias de los datos mediante un proceso denominado, justamente, replicación. A su vez, permite desplegar esas copias en varios servidores.

La realización de copias de seguridad de los datos es una característica y una función que deben tener estos sistemas, sobre todo para gestionar las posibles fallas que puedan surgir. 

Siempre se está expuesto a la falla de un servidor, por lo que nunca está de más tener copias en varios de ellos para no perder información.

¿Funciona el Sharding en MongoDB?

El Sharding o fragmentación es una función muy útil que tienen los sistemas de bases de datos y que funciona muy bien en MongoDB.

Se trata, como su nombre lo indica, de fragmentar los datos en varios servidores con el objetivo de que cada uno de ellos tenga una parte de la totalidad de la información. Pues, en algunas ocasiones no se pueden almacenar todos los datos en un único servidor.

Es una operación de escalado horizontal, lo que quiere decir que tiene como fin mejorar el rendimiento del sistema desde un enfoque global. 

Cabe mencionar que el grupo de servidores en los que se almacena una totalidad de datos determinada se conoce como sharded cluster o conjunto fragmentado.

Sin embargo, más allá del enfoque global de la escalabilidad, para asegurar que cada fragmento tolera los fallos por separado, estos se configuran como un conjunto replicado.

Características destacadas

Existen además de la fragmentación o sharding otras herramientas que hacen a las características de MongoDB que analizaremos a continuación.

Consultas Ad Hoc

Las consultas Ad Hoc son comandos que funcionan de forma temporal que otorgan diferentes rendimientos para ejecutar las consultas. 

Por su parte, MongoDB posibilita la realización de consultas de rango, expresiones regulares, y búsquedas de campo. Asimismo, es posible actualizar las búsquedas en tiempo real utilizando el lenguaje de consulta de la plataforma (MQL).

Indexación 

Otra de las características de MongoDB es que, en un documento, cualquier campo puede ser indexado, así como también es posible la realización de índices secundarios.

Entre otras cosas, esto colabora con la mejora del rendimiento de la base de datos y facilita la búsqueda y la consulta, que se pueden hacer en los índices en vez de en todo el documento. De esta manera, lógicamente estaríamos incrementando la velocidad de búsqueda.

Replicación 

Tal como hemos descrito previamente, la replicación es una característica muy importante de MongoDB. 

Básicamente, se trata de realizar varias copias de datos generando un conjunto de réplicas que luego es distribuido en varios servidores.  

Balanceo de carga 

El balanceo de carga es una herramienta que mucho tiene que ver con el sharding. Esto se debe a que su principal fin es el de reducir la carga de cada servidor particular y distribuirla.

Por otra parte, facilita e incrementa la escalabilidad de las aplicaciones, así como también ofrece una garantía del tiempo de actividad y la consistencia de los datos.

En otras palabras, se trata de manejar las peticiones de varios clientes en forma simultánea con varios servidores.

Almacenamiento de archivos 

En este punto cabe recordar que una de las funciones primordiales de MongoDB es la de almacenar información. 

Se le puede dar uso como un sistema de archivos que además posee otras funciones que ya explicamos como la replicación de datos para dar respuesta a las fallas y el equilibrio de cargas para que los archivos no se almacenen en una sola computadora.

El nombre de la especificación es GridFS y está incluida en la distribución oficial. Incluye controladores de MongoDB y el acceso es a través de un plugin.

Agregación 

En el caso de la agregación, estamos ante una herramienta similar a la de SQL. Se trata de un tipo de asociación en la que una clase es parte de otra clase. 

Entre las diferentes funciones que tienen las clases de agregación podemos destacar que son utilizadas para agregar documentos de una colección y para procesar datos por lotes con el objetivo de obtener resultados agregados.

Ejecución de JavaScript del lado del servidor

Por último, una importante característica que debemos mencionar es la posibilidad de utilizar JavaScript para realizar consultas.

Dichas consultas pueden ser enviadas de forma directa a la base de datos para ser ejecutadas.

Limitaciones

Como suele suceder con la mayoría de los software, estos tienen ciertas ventajas que los hacen útiles en diversos campos, pero también, en comparación con otros, suelen tener limitaciones o desventajas.

En este apartado veremos cuáles son las limitaciones de MongoDB.

En primer lugar, algo que ya hemos mencionado cuando hablamos de la utilidad de Mongo: no sirve para transacciones complejas debido a que en estos casos es mejor optar por una base de datos de estilo relacional.

Además, más allá de la velocidad y flexibilidad que aporta, es un programa que solo garantiza operaciones atómicas que tengan que ver con el campo de los documentos.

Por otra parte, MongoDB suele tener inconvenientes con las sentencias SQL debido a que no son admitidas el 100% de las consultas existentes.

Asimismo, una característica de MongoDB que, en cierto punto, le juega en contra es su juventud. Pues, se trata de un sistema muy nuevo. 

Aunque sea una gran opción para el almacenamiento de datos, aún existen funciones por mejorar. Es por esto que lo más probable sea que alcance su máxima utilidad en el futuro.

Por último, otra desventaja que debemos mencionar, en pos de hacer un análisis completo de esta aplicación, es la falta de estandarización entre las bases de datos NoSQL. Esto es algo relevante ya que tiene que ver con la uniformidad de los datos.

Pues bien, lo cierto es que más allá de las limitaciones o desventajas que MongoDB pueda tener y de que aún tenga espacio para mejorar, se trata de un programa muy popular y útil por lo cual su uso es plenamente recomendado.

Por ende, la elección de este software tendrá que ver con el tipo de funciones que se necesiten y con las preferencias de cada usuario.

¿Qué herramientas están disponibles para administrar y monitorear una instancia de MongoDB?

Ahora que ya hemos analizado con profundidad varios de los conceptos relativos a MongoDB, sabemos que se trata de un sistema de bases de datos que permite almacenar datos en forma masiva.

Pero, además, a través de este software podemos alcanzar una escalabilidad muy alta en las aplicaciones lo cual hace que el funcionamiento mismo de ella sea complejo. 

Es así que se vuelve importante la constante evaluación de las estadísticas de rendimiento, de afirmación y de replicación, así como también las operaciones de rendimiento y la saturación de recursos.

Por todas estas cuestiones es que MongoDB precisa una herramienta que monitoree su desempeño en pos de diagnosticar fallas y distribuir la carga. Se trata de una tarea esencial luego de haber instalado este software. Afortunadamente, existen varias opciones para realizar esta tarea que analizaremos a continuación.

En primer lugar, mencionaremos a Mongotop. Se trata de una aplicación de monitoreo que ofrece la posibilidad de observar de forma dinámica una instancia de MongoDB mientras está siendo ejecutada.

Entre sus funciones de monitoreo podemos destacar que realiza un seguimiento acerca del tiempo que tarda una instancia de MongoDB en leer y escribir datos devolviendo valores constantemente. 

En segundo lugar, otra de las herramientas de monitoreo de instancia de MongoDB más conocidas es MongoStat. 

La principal funcionalidad de esta aplicación es la de entregar de forma rápida una descripción general del estado de la base de datos. Además, al igual que Mongotop, proporciona una vista en tiempo real de una instancia Mongod en ejecución.

Por último, no podemos dejar de mencionar otras herramientas que también son utilizadas en este sentido como Collstats, ComandoDB Stats y Comando Server Status.

Realizar consultas complejas

Si nos referimos a la realización de consultas en MongoDB, debemos hablar de la herramienta más importante para esta tarea, el comando Find (). 

Este último nos permite ubicar los documentos que necesitamos de forma definitiva y así poder operar correctamente.

Pues bien, para el correcto desempeño del comando Find (), debemos pasarle un array o vector con todas las propiedades que posea el documento específico que queramos consultar.

De esa manera, estaremos en condiciones de ver el retorno de todo aquello que cumpla, lógicamente, con las condiciones que hayamos establecido.

¿Cuál es el papel del framework Mongoose en la creación de aplicaciones basadas en Node.js con MongoDB como base de datos?

Mongoose adquiere un papel clave en la creación de aplicaciones basadas en Node.js con MongoDB. 

Cuando hablamos de Mongoose nos referimos a una librería que nos facilita la posibilidad de escribir consultas para una base de datos de MongoDB. Sin duda, la clave del uso de Mongoose está en la definición de un esquema en el cual se indica la configuración de los documentos para una colección del software. 

Para explicarlo, en otros términos, podemos decir que Mongoose opera como un programa adicional a MongoDB con el objetivo de implementar y automatizar algunas de las tareas que generalmente se llevan a cabo en una base de datos.

Como si fuera poco, Mongoose además posibilita el uso de plugins que sirven también para la automatización de tareas, algo que es muy importante en este ámbito. La paginación, el encriptado de información y las consultas adicionales son algunos ejemplos.

¿Cómo protege MongoDB los datos almacenados mediante autenticación, autorización y cifrado? 

Es sabido que los datos han adquirido una particular relevancia y un gran valor en los últimos tiempos. Esto ha provocado que sea necesario desarrollar herramientas de seguridad para prevenir y repeler ataques de ciberseguridad que puedan afectar la integridad de estos.

Mongo, al ser una base de datos que almacena un gran volumen de datos, no se queda atrás en materia de seguridad y provee algunos métodos como la autenticación, autorización, cifrado y encriptación.

A través de MongoDB Atlas ofrece además otras herramientas como el aislamiento de red, la gestión de acceso basada en roles y la encriptación integral.

En el caso del aislamiento de red, podemos profundizar diciendo que los clústeres se implementan en una red privada virtual con firewalls dedicados. Para otorgar acceso se debe crear una lista IP o a través del emparejamiento con la red.

Por su parte, la gestión de acceso basada en roles también juega un rol esencial en materia de seguridad. Se trata de reglas sofisticadas para el control minucioso de qué usuarios y equipos pueden acceder, modificar y eliminar datos en las bases MongoDB.

Pues bien, hemos descrito profundamente de que se trata MongoDB, cuáles son sus principales características, sus ventajas y desventajas y hasta hemos analizado su seguridad y como instalarlo y configurarlo.

Lo cierto es que se trata de un software de código abierto muy novedoso y joven que tiene mucho potencial por delante. Es cierto que aún no ha alcanzado el nivel que podría tener en un futuro, sin embargo, es uno de los sistemas de bases de datos más populares.

¿Qué te ha parecido este artículo?

¡Su opinión es importante para nosotros!

Artículos relacionados

Artículo 1 de 3