La sortie du projet FerretDB 0.3 a été publiée, permettant de remplacer la base de données orientée documents MongoDB par PostgreSQL sans modifier le code des applications. FerretDB est implémenté comme un serveur proxy, traduisant les requêtes vers MongoDB en requêtes SQL vers PostgreSQL, ce qui permet d'utiliser PostgreSQL comme véritable stockage. Le code est écrit en Go et est distribué sous la licence Apache 2.0.
Le besoin de migration peut surgir en raison du passage de MongoDB à la licence non libre SSPL, qui est basée sur la licence AGPLv3, mais n'est pas ouverte, car elle comprend une exigence discriminatoire de fourniture sous la licence SSPL non seulement du code de l'application elle-même, mais aussi des codes sources de tous les composants impliqués dans la fourniture du service cloud.
La principale cible de FerretDB sont les utilisateurs qui n'utilisent pas les fonctionnalités avancées de MongoDB dans leurs applications, mais souhaitent utiliser une pile logicielle entièrement ouverte. À ce stade, FerretDB ne prend en charge qu'une partie des fonctionnalités de MongoDB, celles qui sont les plus fréquemment utilisées dans les applications courantes. À l'avenir, ils prévoient d'atteindre une compatibilité totale avec les pilotes pour MongoDB et de permettre d'utiliser FerretDB comme un remplacement transparent de MongoDB.
MongoDB occupe une niche entre les systèmes rapides et évolutifs manipulant des données au format clé/valeur, et les SGBD relationnels, fonctionnels et faciles à interroger. MongoDB prend en charge le stockage de documents au format similaire à JSON, dispose d'un langage suffisamment flexible pour élaborer des requêtes, peut créer des index pour divers attributs stockés, assure efficacement le stockage de grands objets binaires, prend en charge le journal des opérations de modification et d'ajout de données à la base de données, peut travailler selon le paradigme Map/Reduce, et prend en charge la réplication et la construction de configurations tolérantes aux pannes.
Dans la version FerretDB 0.3, la commande findAndModify a été mise en œuvre pour modifier un document tout en renvoyant sa version originale. Les opérateurs pour la mise à jour des champs — $inc et $set — ont été réalisés. La prise en charge du tri des types de données scalaires a été ajoutée.
Source : opennet.ru
