La version 0.7 du projet FerretDB a été publiée, permettant de remplacer la base de données orientée documents MongoDB par PostgreSQL sans modifications du code des applications. FerretDB est mis en œuvre en tant que serveur proxy, traduisant les requêtes MongoDB en requêtes SQL pour PostgreSQL, ce qui permet d'utiliser PostgreSQL comme véritable magasin de données. 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.
Parmi les changements dans FerretDB 0.7 :
- La commande diagnostic msg_explain a été implémentée, nécessaire pour la plateforme Tigris.
- La commande listCollections a ajouté la prise en charge des filtres (option « filter »).
- L'utilisation du caractère « - » dans les noms de bases de données est désormais autorisée.
- Le nombre de paramètres pris en charge dans la commande find a été augmenté.
- Le paquet wire, qui implémente le protocole « wire » (protocole pour interagir avec MongoDB), a ajouté la possibilité de vérifier les documents. La version minimale prise en charge du protocole wire a été abaissée à 13, ce qui correspond à MongoDB 5.0.
Source : opennet.ru
