MangoDB: una alternativa de código abierto a MongoDB
MongoDB es un sistema de base de datos NoSQL, orientado a documentos que cambia la vida de muchos desarrolladores, permitiéndoles crear aplicaciones más rápido que con bases de datos relacionales. Sin embargo, MongoDB ha abandonado sus raíces de código abierto, cambiando la licencia a SSPL, lo que la hace inutilizable para muchos proyectos comerciales y de código abierto.
Ante ello se presentó MangoDB, la cual es una solución perfecta para aquellos que buscan una experiencia de desarrollo de MongoDB, ya que MangoDB ofrece una capa con la implementación del protocolo MongoDB orientado a documentos que se ejecuta sobre PostgreSQL.
El proyecto tiene como objetivo proporcionar la capacidad de migrar aplicaciones MongoDB a PostgreSQL y una pila de software completamente abierta. El código está escrito en el lenguaje Go y se distribuye bajo la licencia Apache 2.0.
Hay que tener en cuenta que MongoDB es un sistema de administración de bases de datos orientado a documentos que se puede distribuir en cualquier número de computadoras y no requiere un esquema de datos predefinido. Lo que permite manejar objetos estructurados en formato BSON (JSON binario), sin un esquema predeterminado.
En otras palabras, las claves se pueden agregar en cualquier momento «sobre la marcha», sin reconfigurar la base. Los datos adoptan la forma de documentos que a su vez se almacenan en colecciones, una colección que contiene cualquier número de documentos. Las colecciones son como tablas y los documentos son como registros en bases de datos relacionales.
La licencia pública del lado del servidor (SSPL) es una licencia de software patentada desarrollada por MongoDB Inc. Según MongoDB, la SSPL se basa en la licencia AGPL3, con la adición de una nueva sección que «establece clara y explícitamente los términos para distribuir el programa licenciado como un servicio de terceros ”, que requiere que todo el código fuente esté disponible cuando el software se ponga a disposición del público como parte de un servicio.
Este cambio se implemento en octubre de 2018, a lo cual las distribuciones de Debian, Red Hat Enterprise Linux y Fedora posteriormente abandonaron MongoDB, citando preocupaciones sobre SSPL. Amazon lanzó un servicio compatible pero patentado llamado DocumentDB, y parecía que SSPL no pudo aumentar los ingresos de la nube para MongoDB. La mayoría de los usuarios de MongoDB no necesitan las muchas funciones avanzadas que ofrece MongoDB, pero sí necesitan una solución de base de datos de código abierto y aqui es donde MangoDB entra al juego.
El núcleo de nuestra solución es un proxy sin estado, que convierte las consultas del protocolo MongoDB a SQL y utiliza PostgreSQL como motor de base de datos. Será compatible con los controladores MongoDB y, en muchos casos, debería funcionar como un reemplazo directo de MongoDB.
MangoDB tiene como objetivo convertirse en la alternativa de código abierto de facto a MongoDB. MangoDB es un proxy de código abierto, que convierte consultas de protocolo cableado MongoDB a SQL y utiliza PostgreSQL como motor de base de datos. MangoDB será compatible con los controladores MongoDB y funcionará como un reemplazo directo de MongoDB en muchos casos.
El programa funciona en forma de proxy que traduce las llamadas a MangoDB en consultas SQL a PostgreSQL, utilizando PostgreSQL como almacenamiento real. El proyecto es compatible con controladores para MongoDB, pero aún se encuentra en la etapa de prototipo y no es compatible con las funciones avanzadas del protocolo MongoDB, aunque ya es adecuado para traducir aplicaciones simples.
La necesidad de evitar el uso del DBMS MongoDB puede surgir debido a la transición del proyecto a una licencia SSPL no libre, que se basa en la licencia AGPLv3, pero no está abierta, ya que contiene un requisito discriminatorio para suministrar bajo SSPL no solo el código de la aplicación en sí, pero también los códigos fuente de todos los componentes involucrados en la prestación de servicios en la nube.
Finalmente si estás interesado en conocer más al respecto sobre MangoDB, puedes consultar los detalles en el siguiente enlace.