Primera versión estable de FerretDB, implementación de MongoDB basada en PostgreSQL DBMS

Se ha publicado el lanzamiento del proyecto FerretDB 1.0, que permite reemplazar el DBMS MongoDB orientado a documentos por PostgreSQL sin realizar cambios en el código de la aplicación. FerretDB se implementa como un servidor proxy que traduce las llamadas a MongoDB en consultas SQL a PostgreSQL, lo que le permite utilizar PostgreSQL como almacenamiento real. La versión 1.0 está marcada como la primera versión estable lista para uso general. El código está escrito en Go y distribuido bajo la licencia Apache 2.0.

El principal público objetivo de FerretDB son los usuarios que no utilizan funciones avanzadas de MongoDB en sus aplicaciones, pero que desean utilizar una pila de software completamente abierta. En su etapa actual de desarrollo, FerretDB admite un subconjunto de las características de MongoDB más comúnmente utilizadas en aplicaciones típicas. La necesidad de implementar FerretDB puede surgir en relación con la transición de MongoDB a una licencia SSPL no libre, que se basa en la licencia AGPLv3, pero no está abierta, ya que contiene un requisito discriminatorio de suministrar bajo la licencia SSPL no solo el código de la aplicación en sí, sino también los códigos fuente de todos los componentes implicados en la prestación de servicios en la nube.

MongoDB ocupa un nicho entre los sistemas rápidos y escalables que operan con datos clave/valor y los DBMS relacionales que son funcionales y fáciles de consultar. 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.

Entre los cambios en FerretDB 1.0:

  • Se implementaron los comandos createIndexes y dropIndexes para crear y colocar uno o más índices en una colección.
  • El comando getMore se ha implementado para mostrar una nueva porción del resultado obtenido de la ejecución de comandos que devuelven un cursor, como buscar y agregar.
  • Se agregó soporte para el operador de agregación $sum para calcular la suma de los valores del grupo.
  • Se agregó soporte para los operadores $limit y $skip para limitar el número y omitir documentos al agregar.
  • Se agregó soporte para el operador $count para contar documentos al agregar.
  • Se agregó soporte para el operador $unwind para analizar campos de matriz en documentos entrantes y formar una lista con un documento separado para cada elemento de la matriz.
  • Se agregó soporte parcial para los comandos collStats, dbStats y dataSize para obtener estadísticas de colecciones y bases de datos y el tamaño de los datos.

Fuente: opennet.ru

Añadir un comentario