Hace algún tiempo completé uno de los fantásticos curso de mongo university y me encantó. A veces, cuando utilizo mongo, me toca rebuscar entre los apuntes para recordar algún dato de los que habitualmente pueden caer en el olvido… y para evitarlo: a modo de nota personal, y para compartirlo con vosotros, he pensado en escribir un breve resumen del aprendizaje obtenido en dicho curso en una serie de varios posts. Espero que os guste, y no dudéis en hacer preguntas ¡o en comentar vuestras experiencias si también hicisteis el curso!

MongoDB, introducción, propósito y conceptos clave.

Instalación

Mongo puede instalarse en prácticamente cualquier plataforma, y el modo de lograrlo depende un poco de cada una y está bien documentada en su página web, por lo que no voy a decir gran cosa al respecto, salvo compartir que en mi experiencia, me resultó mucho más sencillo de instalar y utilizar en Mac OSX que en windows, aunque a día de hoy lo utilizo por igual en ambos entornos.

Qué es MongoDB

MongoDB es una base de datos no relacional, o NO-SQL, de código abierto que proporciona un altísimo rendimiento, alta disponibilidad y escalado automático.

En el núcleo de MongoDB están los documentos. Todo en mongo gira en torno a ellos, incluso la forma de configurar y obtener información del propio motor de base de datos será empleando documentos.

Qué son los documentos

Podemos entender un documento como el equivalente a una fila en una base de datos basada en SQL… una estructura de datos compuesta por atributos (pares de clave-valor). Sin embargo, un documento puede ser mucho más rico que una única tabla de una base de datos SQL, puesto que de hecho puede almacenar relaciones y datos complejos como en SQL conseguiríamos a través de una colección de tablas y relaciones.

Los documentos de MongoDB son similares a los ya tan habituales objetos JSON, pero de mayor complejidad puesto que cuentan con tipos adicionales para sus valores. A este formato se le llama BSON puesto que se trata de una representación binaria de datos serializados.

Ventajas de los documentos

Los documentos son objetos que corresponden directamente con tipos de datos nativos en una gran mayoria de lenguajes de programación, por lo que dichos objetos empleados en la programación pueden ser directamente almacenados o recuperados en la base de datos.

Los documentos permiten incluir en sí mismos otros documentos (embedded documents) o arrays de documentos, lo que reduce drásticamente la necesidad de “joins” que habitualmente encarecen el tratamiento de datos en SQL.

Finalmente, y no poco importante, los documentos en MongoDB admiten la definición dinámica de esquemas, por lo que cambiar la estructura de un objeto a almacenar en base de datos no requiere reconstruir ni alterar ningún modelo de datos.

Características clave

  • Alto rendimiento del mecanismo de persistencia.
  • Soporta un modelo de datos embebido que reduce drásticamente la actividad de accesos al disco o a memoria.
  • Soporta índices para acelerar las consultas en gran medida.
  • Gran disponibilidad, basada en la replicación, que proporciona seguridad ante fallos y redundancia de datos.
  • Escalado automático que proporciona escalabilidad horizontal como parte de la funcionalidad nativa, (conocido como sharding, que distribuye los datos a través de un cluster de máquinas).
  • Operaciones

    MongoDB almacena datos en forma de documentos similares a JSON, denominados BSON. Un valor de un campo de un documento BSON puede ser cualquier tipo de los tipos admitidos por BSON, incluso podría ser otro documento o un array de documentos.

    MongoDB almacena todos los documentos en colecciones. Una colección es un grupo de documentos relacionados de algún modo relevante para la aplicación, y que comparten un índice común.

    Las colecciones, por lo tanto, podrían considerarse el homólogo a las tablas SQL pero con una gran diferencia: pueden almacenarse documentos con distintas estructuras en la misma colección, sin necesidad de especificar previamente la estructura que tendrán.

    Las operaciones admitidas en MongoDB son de lo más diversas y flexibles, en cualquiera de las acciones que pudiéramos desear realizar sobre los datos (consulta, actualización, borrado…). E incluso empleando ciertos frameworks podremos realizar agregaciones, transformaciones y secuencias de operaciones basadas en pipelines.

    Enlaces a la guía completa