Este corto tutorial tiene como objetivo que al final de su lectura te encuentres en la capacidad de tener una instancia de MongoDB activada y lista para recibir datos funcionando con docker.
No es un tutorial a fondo, ya que no vamos a indagar en temas como pueden ser las bases de datos de tipo SQL, las bases de datos no relacionales, o las bases de datos orientadas a almacenar documentos.
De todo eso ya hay bastante en internet, este tutorial es más un “primeros pasos” que te ayuden a tener cuanto antes, listo y preparado un Mongo para comenzar a hacer pruebas.
Dicho esto, veamos los requisitos previos.
Requisitos previos para cursar este tutorial:
- Docker instalado (aprende a instalarlo haciendo click aquí).
- Conocimientos mínimos de qué es una base de datos.
Cómo te has podido percatar, casi no hay requisitos previos.
Y es que para tener una instancia de MongoDB levantada, escuchando y lista para almacenar documentos la verdad es que no se necesita demasiado.
Sin embargo, tú puedes instalar MongoDB directamente en tu máquina local.
Yo te recomiendo usar Docker porque así puedes instalar la versión exacta que esté funcionando en tu servidor.
Con lo cual tienes la garantía de que todos los procesos que vayas a crear en local terminen funcionando de maravilla cuando estén en producción.
Lo siguiente que comento sobre los conocimientos mínimos de “qué es una base de datos” es porque en este tutorial -para ir más rápido- no te voy a explicar todo lo relacionado con las bases de datos.
Como puede ser su historia, el contexto, porque se usa (por qué Excel no es una base de datos xd) y demás tópicos. Ya eso mínimo y deberías saberlo, sino ¿qué haces leyendo un tutorial de MongoDB? Bueno, continuamos ahora con qué es MongoDB.
¿Qué es mongoDB?
MongoDB es una base de datos orientada al almacenamiento de documentos.
Esto le trae una serie de ventajas y desventajas que ya vamos a ver más en detalle, de momento quédate con la idea de que si tú estás capturando/creando documentos JSON lo mejor que puedes hacer para almacenar dichos documentos es utilizar una base de datos como MongoDB que está optimizada para el almacenamiento de documentos.
Ventajas de usar mongoDB
Entre las principales ventajas tenemos su flexibilidad.
Los documentos no deben tener todos la misma forma, ni el mismo número de campos, ni el mismo tipo de datos para ser almacenados.
Es decir, dentro de la misma base de datos -inclusive la misma colección- tú puedes tener diferentes documentos con diferentes formas todos almacenados sin romper nada.
Esto de las “colecciones” lo vamos a ver más en detalle, de momento quédate con la idea de que Mongo es flexible ya que usa “colecciones” en lugar de “tablas” y por ende no debe tener campos ya creados en las bases de datos antes de guardar documentos nuevos.
Por el contrario, en el mismo instante en el que Mongo recibe un documento con campos que él no conoce asimila los nuevos campos como si nada hubiera pasado.
Incluso crea la base de datos y las respectivas colecciones en caso de que no las termine encontrando porque tú no las hayas creado previamente.
Desventajas de usar mongoDB
Esa misma flexibilidad que mencioné en las ventajas trae unas cuantas desventajas…
Y es que para ser flexible Mongo crea colecciones en lugar de tablas. Esto se debe a que MongoDB es una base de datos no relacional…
Es decir, que si tú quieres hacer una búsqueda dentro de un largo número de documentos, dicha consulta va a tardar.
¡Va a tardar muchísimo!
La razón es que Mongo es más una base de datos para el almacenamiento en lugar de estar pensada para la consulta.
Esto no es una desventaja como tal, sino que es un punto a tener en cuenta antes de intentar utilizar MongoDB como tu base de datos.
Otra ventaja que al mismo tiempo se puede ver como una desventaja (por eso la pongo entre desventajas) es la creación de índices.
Para ir más rápido en las búsquedas, MongoDB se las apaña utilizando índices. Es decir, dentro de una colección que está en una base de datos tú puedes crear campos indexados de manera que las consultas que se hagan sobre esos campos sean extremadamente rápidas.
¿Qué pasa?
Que como todo pues igual y necesitas tener pocos índices para que tus consultas sean rápidas porque si todos los campos se encuentran indexados es igual como si no estuviera indexado ninguno.
Esto lo vamos a entender mejor en la siguiente sección que es cuando usamos mongoDB
¿Cuándo usar mongoDB?
Si lees entre líneas en la sección anterior donde te hablo de sus ventajas y desventajas ya te habrás dado cuenta de cuando es preciso utilizar este tipo de base de datos.
Que al ser una base de datos donde las consultas son muy lentas y poco eficientes MongoDB es ideal cuando queremos almacenar datos en el largo plazo.
Para documentos que se van a utilizar una sola vez, la vez que sean creados, o muy pero muy poco MongoDB es perfecto porque es ligero, es flexible, es rápido para almacenar documentos y no tienes que estar rompiéndote la cabeza creando relaciones entre tablas.
Esa es la virtud principal de MongoDB y es la razón por la cual deberías usarlo cuando vayas almacenar documentos cuyo objetivo es tenerlos ahí disponibles por un almacenamiento de largo largo plazo.
¿Cómo instalar MongoDB usando Docker?
Bien, como ya te había comentado, necesitas tener instalado Docker en tu máquina para que esta parte del tutorial funcione.
Y es que en lugar de buscar resolver dependencias, o que funcione correctamente en tu máquina, te voy a invitar a que utilices Doker.
Ya lo había expresado antes, sin embargo, me gustaría enfatizar el porqué de esto.
La razón de usar Docker es simple y radica en el hecho de que utilizando Docker tú puedes elegir cuál versión de MongoDB te vas a instalar.
Esto es una ventaja increíble ya que te permite instalar la versión exacta que tengas instalada en producción -o que vayas a tener en producción- y así ya sea que tu entorno haya estado construido antes de que tú llegaras, o que vas a empezar a construirlo desde este momento, te aseguras de tener una versión que va a funcionar todo el tiempo.
Ya que las actualizaciones tienden a hacer que las cosas dejen de funcionar ya sea por dejar de soportar funcionalidad o agregar funcionalidad que no necesitas. Dicho todo esto vamos a ver un pequeño docker-compose que nos va a ayudar a tener un contenedor de MongoDB.
Docker-compose para instalar mongoDB 5.0.13
Puedes guiarte por la documentación oficial de docker que te dejo disponible a golpe de clic o seguir este tutorial, eso ya como quieras.
Antes que nada debes tener todo organizado, así que lo primero será ejecutar el siguiente comando por consola:
$ mkdir ~/mongo_tutorial && cd ~/mongo_tutorial && touch docker-compose.yml
El comando anterior crea la carpeta mongo_tutorial
en el directorio raíz de tu sistema, luego entra en la carpeta y crea el archivo docker-compose.yml
Ahora debes abrir el archivo con tu editor de código favorito, elige uno de estos 3 comandos:
$ code docker-compose.yml (recomendado)
$ nano docker-compose.yml (avanzado)
$ vim docker-compose.yml (para frikis como yo)
Una vez abierto el archivo vas a copiar y pegar el siguiente snnipet:
version: '3.1'
services:
mongo-tutorial:
container_name: 'mongo-tutorial'
image: mongo:5.0.13
restart: always
ports:
- '27018:27017'
Este docker-compose.yml
te va ayudar a crear un contenedor de mongo con el nombre mongo-tutorial
en la versión 5.0.13
que escucha en el puerto 27018
.
Para levantar el servicio solo queda hacer:
$ docker-compose up -d
¡Y ya está!
Tienes mongo instalado y listo para usar en tu máquina.
En caso de que desees instalar mongo de manera local directamente en tu máquina aquí tienes la documentación para que te diviertas: instalar mongoDB localmente.
En caso de que desees borrar todo lo que hicimos en este tutorial ejecuta este comando por consola:
$ cd ~/mongo_tutorial && docker-compose down -v --remove-orphans
Llegados a este punto ya tenemos cubierto el objetivo principal de este corto tutorial que era tener mongo instalado.
Para meter documentos, crear bases de datos, manipular documentos y otros etc vas a necesitar utilizar un IDE (como datagrid o studio 3T), hacerlo por consola (como los frikis -yo incluído) o emplear al siempre maravilloso Python (con la librería de Pymongo)
En todo caso ya esto lo vamos a dejar aquí que si no se alarga el tutorial y nadie lo va a terminar leyendo.
Aquí te dejo Con la continuación de este tutorial que te va a permitir comenzar a meter documentos en tu MongoDB: Pymongo para automatizar mongodb desde python.