Está en la página 1de 2

FerretDB se implementa como un servidor proxy que traduce las llamadas a MongoDB

en consultas SQL a PostgreSQL, lo que le permite usar PostgreSQL como


almacenamiento real.

FerretDB (anteriormente MangoDB) se fundó para convertirse en el sustituto de código


abierto de facto de MongoDB. FerretDB es un proxy de código abierto que convierte las
consultas del protocolo de conexión de MongoDB a SQL, utilizando PostgreSQL como
motor de base de datos.

La necesidad de migración puede surgir debido a la transición de MongoDB a una licencia


SSPL no libre, que se basa en la licencia AGPLv3, pero no es de código abierto, ya que
contiene un requisito discriminatorio para proporcionar bajo la licencia SSPL no solo la
aplicación del código en sí, sino también los códigos fuente de todos los componentes
involucrados en la prestación del servicio en la nube.

El público objetivo de FerretDB son los usuarios que no utilizan las funciones
avanzadas de MongoDB en sus aplicaciones, pero desean utilizar una pila de software
completamente abierta.

En la etapa actual de desarrollo, FerretDB aún admite solo una parte de las


características de MongoDB que se usan con mayor frecuencia en las aplicaciones
típicas. En el futuro, planean lograr una compatibilidad total con los controladores para
MongoDB y brindar la capacidad de usar FerretDB como un reemplazo transparente
para MongoDB.

Cabe recordar que MongoDB ocupa un nicho entre los sistemas rápidos y


escalables que operan sobre datos en formato clave/valor, y los DBMS relacionales,
funcionales y convenientes en la generación de consultas.

La mayoría de los usuarios de MongoDB no necesitan muchas funciones avanzadas que


ofrece MongoDB; sin embargo, necesitan una solución de base de datos de código abierto
fácil de usar. Reconociendo esto, FerretDB está aquí para llenar ese vacío.

MongoDB admite el almacenamiento de documentos en un formato similar a


JSON, tiene un lenguaje bastante flexible para generar consultas, puede crear índices
para varios atributos almacenados, proporciona almacenamiento eficiente de objetos
binarios grandes, admite el registro de operaciones para cambiar y agregar datos a
la base de datos, puede trabajar de acuerdo con el paradigma Map/Reduce, admite la
replicación y la construcción de configuraciones tolerantes a fallas.
En el lanzamiento de FerretDB 0.1.0 se destaca que se ha rediseñado por completo la
forma en que se recuperan los datos de PostgreSQL. Anteriormente, para cada
solicitud entrante de MongoDB, se generaba una consulta SQL a PostgreSQL, utilizando
funciones para trabajar con el formato JSON y filtrando los resultados del lado de
PostgreSQL.

Debido a las diferencias en la semántica de las funciones json de PostgreSQL y


MongoDB, hubo una discrepancia en el comportamiento al comparar y ordenar
diferentes tipos. Para resolver este problema, ahora se extrae una muestra de datos
redundantes de PostgreSQL y el filtrado del resultado se realiza en el lado de FerretDB,
lo que hizo posible repetir el comportamiento de MongoDB en la mayoría de las
situaciones.

El precio de una mayor compatibilidad fue una penalización en el rendimiento, que


en versiones futuras se espera que se compense con el filtrado selectivo en el lado de
FerretDB de solo consultas para las que existe una divergencia de comportamiento.

Por ejemplo, la consulta «db.collection.find({_id: ‘some-id-value’})» se puede procesar


completamente en PostgreSQL. El objetivo principal del proyecto en esta etapa de
desarrollo es lograr la compatibilidad con MongoDB, y el rendimiento aún está relegado a
un segundo plano.

De los cambios funcionales en la nueva versión, hay soporte para todos los operadores
de bits, el operador de comparación «$e» , así como los operadores » $elemMatch » y
«$bitsAllClear».

También podría gustarte