MangoDB est modernisé et passe maintenant à FerretDB

Récemments jours la nouvelle du lancement du projet a été annoncée FerretDB, (anciennement MangoDB), qui vous permet de remplacer le SGBD orienté document de MongoDB par PostgreSQL sans apporter de modifications au code de votre application.

FerretDB est implémenté en tant que serveur proxy qui traduit les appels à MongoDB en requêtes SQL vers PostgreSQL, vous permettant d'utiliser PostgreSQL comme stockage réel.

FerretDB (anciennement MangoDB) a été fondée pour devenir de facto le remplacement open source de MongoDB. FerretDB est un proxy open source qui convertit les requêtes du protocole filaire MongoDB en SQL, en utilisant PostgreSQL comme moteur de base de données.

Le besoin de migration peut survenir en raison de la transition de MongoDB vers une licence SSPL non libre, qui est basée sur la licence AGPLv3, mais n'est pas open source, car elle contient une exigence discriminatoire de fournir sous la licence SSPL non seulement l'application du code lui-même, mais aussi les codes sources de tous les composants impliqués dans la fourniture du service cloud.

Le public cible de FerretDB est les utilisateurs qui n'utilisent pas les fonctionnalités avancées de MongoDB dans leurs applications, mais souhaitent utiliser une pile logicielle complètement ouverte.

Au stade actuel de développement, FerretDB il ne prend toujours en charge qu'une partie des fonctionnalités de MongoDB qui sont le plus souvent utilisés dans les applications typiques. À l'avenir, ils prévoient d'obtenir une prise en charge complète des pilotes pour MongoDB et de fournir la possibilité d'utiliser FerretDB en remplacement transparent de MongoDB.

Rappelez-vous que MongoDB occupe une niche parmi les systèmes rapides et évolutifs qui opèrent sur des données au format clé/valeur, et des SGBD relationnels, fonctionnels et pratiques pour générer des requêtes.

La plupart des utilisateurs de MongoDB n'ont pas besoin de la plupart des fonctionnalités avancées offertes par MongoDB ; cependant, ils ont besoin d'une solution de base de données open source facile à utiliser. Reconnaissant cela, FerretDB est là pour combler cette lacune.

MongoDB prend en charge le stockage de documents dans un format de type JSON, a un langage assez flexible pour générer des requêtes, peut créer des index pour divers attributs stockés, fournit un stockage d'objet binaire volumineux efficace, prise en charge de la journalisation des opérations de modification et d'ajout de données à la base de données, il peut fonctionner selon le paradigme Map/Reduce, il prend en charge la réplication et la construction de configurations tolérantes aux pannes.

Dans la version de FerretDB 0.1.0, il est noté que complètement repensé la façon dont les données PostgreSQL sont récupérées. Auparavant, pour chaque requête MongoDB entrante, une requête SQL vers PostgreSQL était générée, en utilisant des fonctions pour travailler avec le format JSON et en filtrant les résultats côté PostgreSQL.

En raison des différences dans la sémantique des fonctions json PostgreSQL et MongoDB, il y avait un écart dans le comportement lors de la comparaison et de la commande de différents types. Pour résoudre ce problème, un échantillon de données redondantes est maintenant extrait de PostgreSQL et le filtrage du résultat se fait côté FerretDB, ce qui a permis de répéter le comportement de MongoDB dans la plupart des situations.

Le prix d'une compatibilité accrue était une pénalité de performance, qui, dans les versions futures, devrait être compensé par un filtrage sélectif du côté FerretDB des seules requêtes pour lesquelles il existe une divergence de comportement.

Par exemple, la requête "db.collection.find({_id: 'some-id-value'})" peut être entièrement traitée dans PostgreSQL. L'objectif principal du projet à ce stade de développement est d'atteindre la compatibilité avec MongoDB, et les performances sont toujours reléguées au second plan.

Parmi les changements fonctionnels de la nouvelle version, il y a la prise en charge de tous les opérateurs au niveau du bit, l'opérateur de comparaison "$e", ainsi que les opérateurs "$elemMatch" et "$bitsAllClear".

Enfin pour ceux qui souhaitent en savoir plus, ils doivent savoir que le code est écrit en Go et est distribué sous la licence Apache 2.0 et vous pouvez vérifier son code dans le lien suivant.


Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont marqués avec *

*

*

  1. Responsable des données : AB Internet Networks 2008 SL
  2. Finalité des données: Contrôle du SPAM, gestion des commentaires.
  3. Légitimation: votre consentement
  4. Communication des données: Les données ne seront pas communiquées à des tiers sauf obligation légale.
  5. Stockage des données: base de données hébergée par Occentus Networks (EU)
  6. Droits: à tout moment, vous pouvez limiter, récupérer et supprimer vos informations.