MongoDB: la base de datos NoSQL flexible y escalable

Durante décadas, las bases de datos relacionales fueron una solución indiscutida para la gestión de datos electrónicos. No sin razón, MySQL, el sistema de gestión de bases de datos publicado en 1995, sigue sirviendo como base de un sinnúmero de proyectos web. Las nuevas aplicaciones web se caracterizan por un inmenso volumen y una gran variedad de datos, aspectos que han aumentado la popularidad de las bases de datos no relacionales, convirtiéndolas en el principal competidor del modelo tradicional. Estos sistemas distribuidos de almacenamiento de datos, como MongoDB, publicado en 2009, están orientados a documentos y también se conocen como bases de datos NoSQL, ya que no dependen únicamente de SQL (Structure Query Language), el lenguaje clsico de consulta de las bases de datos relacionales. Aunque dicha condición implica mayores exigencias a la capa de aplicación, también permite la distribución de procesos de trabajo y conjuntos de datos en múltiples servidores, lo que hace que la escalabilidad de estas modernas bases de datos sea prácticamente ilimitada.

¿Qué es MongoDB?

En 2007, la compañía de software 10gen comenzó con el desarrollo de MongoDB (que proviene del inglés humongous = “gigante, enorme”), una base de datos de código abierto para documentos que, casi dos años después de ser publicada, se convertiría en la base de datos NoSQL más popular. Hasta la fecha, 10gen, ahora bajo el nombre de MongoDB Inc., ha sido la responsable del desarrollo del software y de la distribución comercial de soluciones empresariales.

MongoDB está escrito en el lenguaje de programación C++ y almacena los datos en formato BSON (Binary JSON), que se basa, a su vez, en JSON (JavaScript Object Notation). Gracias a esto se soportan todos los tipos de datos de JavaScript, lo que convierte a MongoDB en la elección ideal para plataformas Node.js. Las bases de datos en MongoDB contienen una o más colecciones de datos y administran diversos documentos con varios campos de datos.

La conexión con el servidor de MongoDB puede establecerse de diferentes maneras. El shell de Mongo, un intérprete de comandos, viene instalado por defecto en la mayoría de distribuciones y sirve para facilitar su acceso a través de la línea de comandos. También es posible activar una interfaz administrativa basada en HTTP para acceder al navegador. Adicionalmente, existen diferentes interfaces de usuario como MongoChef, Robomongo o Mongoclient, que permiten la edición y representación gráfica de los datos. MongoDB se ejecuta en los principales sistemas Windows, Linux y Mac.

MongoDB vs. MySQL: la comparación de dos modelos de base de datos

A diferencia de MySQL, MongoDB es un gestor de bases de datos orientado a documentos que, por lo tanto, tiene un enfoque completamente diferente en cuanto al almacenamiento de datos. Sin embargo, su estructura base muestra similitudes, como por ejemplo:

  • En lugar de tablas, los datos se almacenan en carpetas (collections).

  • Los documentos en formato BSON sustituyen a las líneas, definiendo campos en las columnas de las tablas SQL.

  • Estos campos consisten siempre en un par de una clave, que representa al mismo tiempo el nombre del campo, y un valor. Este valor puede representar una cifra, una palabra o un texto, pero también una lista completa de palabras o cifras e incluso un archivo completo.

  • Un documento MongoDB es, de esta forma, una colección de pares clave/valor, como lo son, en principio, las filas en las tablas de MySQL.

La diferencia fundamental es que, mientras que todas las filas de una tabla de MySQL tienen la misma estructura, en MongoDB los documentos no están sujetos a un orden fijo. Las filas en MySQL tienen el mismo número de valores, cada uno con los mismos tipos de datos. Por su parte, en MongoDB los documentos individuales tienen su propia estructura. De esta manera, es posible crear nuevos campos concualquier valor, mientras que para una base de datos relacional como MySQL, se necesita una reestructuración completa. Aunque con MongoDB la clave debe ser única dentro de un documento, es posible que esta aparezca en otros documentos, algo que no es posible en las bases de datos MySQL y debe ser regulado por medio de relaciones (joins) entre las diferentes tablas, que en MongoDB pueden, opcionalmente, ser creadas en forma de documentos incorporados o referencias.

Otra diferencia fundamental que resulta de la comparativa entre MongoDB vs. MySQL es el enfoque dado a la recuperación de datos. Como base de datos NoSQL, MongoDB no utiliza SQL como lenguaje de consulta, disponiendo de su propio idioma para el procesamiento de datos. Esto permite la comunicación entre MongoDB y el respectivo cliente. Para este fin, la base de datos utiliza los métodos específicos del correspondiente lenguaje de programación del cliente, valiéndose de la ayuda de los llamados drivers (librerías), que pueden ser descargados por separado en su página web oficial.

Adicionalmente, como es común para las bases de datos para documentos, es posible realizar consultas complejas mediante el modelo de programación MapReduce.

Posibles escenarios de aplicación para MongoDB

MongoDB siempre es una excelente opción cuando se quieren realizar proyectos web apoyados en grandes conjuntos de datos sin estructurar. Sin estar atado a ningún esquema, el trabajo basado en documentos es el método ideal para gestionar un gran número de datos diferentes que deben ser almacenados y procesados rápidamente. La escalabilidad horizontal de este sistema de bases de datos es casi ilimitada, pues las bases de datos se pueden distribuir fácilmente en diferentes servidores sin comprometer la funcionalidad. Para garantizar la seguridad y la disponibilidad de los datos a largo plazo, MongoDB facilita la creación de copias de la totalidad de los datos y las pone a disposición en diferentes servidores. Esta base de datos orientada a documentos también juega un papel importante a la hora de resumir grandes cantidades de datos de una o más fuentes.

Así, la implementación de MongoDB resulta apropiada para casi todo tipo de proyectos web que quieran caracterizarse por:

  • Escalabilidad: si tu proyecto web está en crecimiento, probablemente aumentará el número de visitas y solicitudes, lo que demanda una mayor capacidad de respuesta por parte de la base de datos.

  • Disponibilidad: una de las prioridades de todo proyecto web es la disponibilidad en todo momento, incluso en el caso de fallos en el servidor.

  • Flexibilidad: un proyecto debe poder ajustarse en cualquier momento de forma dinámica.

Con la distribución de datos en múltiples servidores se produce también una diferencia crucial entre MongoDB y las bases de datos relacionales: al almacenar datos en una base de datos MongoDB, se presenta un pequeño intervalo de tiempo en el que el acceso de lectura solo está permitido para los datos más antiguos, lo que se denomina Consistencia Eventual (del inglés Eventual Consistency, EC). Este modelo de consistencia de datos es utilizado, entre otros, por MariaDB, sistema de gestión de bases de datos derivado de MySQL, y permite, por ejemplo, el acceso de escritura sobre las aplicaciones, debido principalmente a que el servidor de la base de datos está separado de los clústeres de bases de datos más grandes por medio de particiones de red.

¿No sabes cuál es el modelo de base de datos más apropiado para tu proyecto? No es necesario que tomes una decisión, también es posible decantarse por una combinación de diferentes modelos que puede representar la solución perfecta para tus necesidades.


¡No te vayas! ¡Tenemos algo para ti!
Consigue tu dominio .es un año gratis.

Introduce el dominio que deseas en la barra de búsqueda para comprobar su disponibilidad.
12 meses desde 0€/año IVA incl.
después 12,10 €/año IVA incl.