Developpez.com - Rubrique MongoDB

Le Club des Développeurs et IT Pro

MangoDB : une véritable alternative Open Source à MongoDB,

Un proxy open source, qui convertit les requêtes du protocole filaire de MongoDB en SQL

Le 2021-11-02 17:54:28, par Bruno, Chroniqueur Actualités
MongoDB est une technologie qui change la vie de nombreux développeurs, leur permettant de créer des applications plus rapidement qu'avec des bases de données relationnelles. Cependant, MongoDB a abandonné ses racines Open Source, en changeant la licence en SSPL, ce qui le rend inutilisable pour de nombreux projets Open Source et commerciaux. MangoDB va être une solution parfaite pour ceux qui recherchent une expérience de développement MongoDB disponible en tant que logiciel entièrement Open Source.

Notons que MongoDB est un système de gestion de base de données orienté documents, répartissable sur un nombre quelconque d'ordinateurs et ne nécessitant pas de schéma prédéfini des données. Il permet de manipuler des objets structurés au format BSON (JSON binaire), sans schéma prédéterminé. Il est écrit en C++. Le serveur et les outils sont distribués sous licence SSPL.


En d'autres termes, des clés peuvent être ajoutées à tout moment « à la volée », sans reconfiguration de la base. Les données prennent la forme de documents enregistrés eux-mêmes dans des collections, une collection contenant un nombre quelconque de documents. Les collections sont comparables aux tables, et les documents aux enregistrements des bases de données relationnelles.

La Server Side Public License (SSPL) est une licence logicielle propriétaire développée par MongoDB Inc. Selon MongoDB, la SSPL est basée sur la licence AGPL3, avec l'ajout d'une nouvelle section qui « énonce clairement et explicitement les conditions pour distribuer le programme sous licence en tant que service tiers », exigeant de rendre disponible l'intégralité du code source lorsque le logiciel est rendu accessible au public dans le cadre d'un service.

Selon MongoDB, la SSPL est basée sur la licence AGPL3, avec l'ajout d'une nouvelle section qui « énonce clairement et explicitement les conditions pour distribuer le programme sous licence en tant que service tiers », exigeant de rendre disponible l'intégralité du code source lorsque le logiciel est rendu accessible au public dans le cadre d'un service. Selon le journaliste Richard Gall, la nouvelle phrase la plus importante de la licence est la suivante : « Si vous distribuez une fonctionnalité du programme ou une version modifiée à la disposition de tiers en tant que service, vous devez rendre le code source du service accessible par téléchargement réseau à tous sans frais, selon les termes de cette licence. »


En octobre 2018, la base de données MongoDB est publiée sous SSPL. Les distributions Debian, Red Hat Enterprise Linux et Fedora Linux ont par la suite abandonné MongoDB, invoquant des inquiétudes concernant la SSPL. Amazon a publié un service compatible mais propriétaire nommé DocumentDB, et il est apparu que la SSPL n'a pas réussi à augmenter les revenus du cloud pour MongoDB. La plupart des utilisateurs de MongoDB n'ont pas besoin des nombreuses fonctionnalités avancées offertes par MongoDB, mais ils ont besoin d'une solution de base de données open source. Conscient de cela, MangoDB est là pour combler ce vide en offrant une alternative.

MongoDB, MySQL ou MangaDB

MongoDB

MongoDB est également gratuit et open source ; cependant, ses principes de conception diffèrent des systèmes relationnels traditionnels. Souvent qualifié de système non relationnel (ou NoSQL), MongoDB adopte une approche sensiblement différente du stockage des données, en représentant les informations sous la forme d'une série de documents de type JSON (en réalité stockés sous forme de JSON binaire, ou BSON), par opposition au format de table et de ligne des systèmes relationnels.

Les documents MongoDB sont constitués d'une série de paires clé/valeur de différents types, y compris des tableaux et des documents imbriqués ; toutefois, la principale différence réside dans le fait que la structure des paires clé/valeur dans une collection donnée peut varier d'un document à l'autre. Cette approche plus flexible est possible parce que les documents sont auto-décrits.

MySQL

MySQL est un système de gestion de base de données relationnelle (SGBDR) populaire, gratuit et open-source, développé par Oracle. Comme les autres systèmes relationnels, MySQL stocke les données à l'aide de tables et de lignes, applique l'intégrité référentielle et utilise le langage de requête structuré (SQL) pour l'accès aux données. Lorsque les utilisateurs ont besoin d'extraire des données d'une base de données MySQL, ils doivent construire une requête SQL qui joint plusieurs tables pour créer la vue sur les données dont ils ont besoin.

Les schémas de base de données et les modèles de données doivent être définis à l'avance, et les données doivent correspondre à ce schéma pour être stockées dans la base de données. Cette approche rigide du stockage des données offre un certain degré de sécurité, mais elle n'est pas synonyme de flexibilité. Si un nouveau type ou format de données doit être stocké dans la base de données, il faut procéder à une migration des schémas, ce qui peut devenir complexe et coûteux à mesure que la taille de la base de données augmente.

MangoDB

MangoDB a pour objectif de devenir l'alternative open source de facto à MongoDB. MangoDB est un proxy open source, qui convertit les requêtes du protocole filaire de MongoDB en SQL, et utilise PostgreSQL comme moteur de base de données. MangoDB sera compatible avec les pilotes MongoDB et fonctionnera comme un remplacement direct de MongoDB dans de nombreux cas.

Source : MangoDB

Et vous ?

Quel est votre avis sur MongoDB ? L'utilisez-vous ?

Pensez-vous que la plupart des utilisateurs de MongoDB n'ont pas besoin des nombreuses fonctionnalités avancées offertes par MongoDB ?

Selon vous, y a t'il la nécessite de migrer vers MangoDB ?

En l'état actuel, êtes vous pour MongoDB, MySQL ou MangaDB ?

Voir aussi :

MongoDB Inc. annonce un chiffre d'affaires de 99,4 millions USD au deuxième trimestre de son exercice fiscal 2020, une hausse de 67 % largement tirée par la part des abonnements en hausse de 71 %

MongoDB annonce l'abandon d'AGPL pour une nouvelle licence, autour de laquelle la désignation open source fait débat

Les revenus de MongoDB au 4T19 augmentent sur le cloud, MongoDB Atlas a dépassé le seuil annuel des 100 millions de dollars

MongoDB : 202 millions de CV privés exposés sur internet, à cause d'une base de données non protégée
  Discussion forum
6 commentaires
  • SQLpro
    Rédacteur
    Code :
    MongoDB est une technologie qui change la vie de nombreux développeurs, leur permettant de créer des applications plus rapidement qu'avec des bases de données relationnelles.
    Ce genre d'affirmation sans aucun benchmark ni aucune preuve n'est qu'une accroche marketing qui discrédite MongoDB... Dommage !
  • Exagone313
    Membre du Club
    Le site du projet indique qu'il s'agit d'une "véritable alternative open source" :
    A truly Open Source MongoDB alternative
    Or, ils utilisent une CLA (Contribution Licensing Agreement), ce qui signifie que toute contribution leur appartient :
    You hereby grant to the Company and to recipients of software distributed by the Company a perpetual, worldwide, non-exclusive, no-charge, royalty-free, irrevocable copyright license to reproduce, prepare derivative works of, publicly display, publicly perform, sublicense, and distribute Your Contributions and such derivative works.
    Il se trouve aussi que le nom était déjà utilisé pour un projet "meme" : https://github.com/MangoDB-io/MangoDB/issues/13

    Vu l'état du projet (un POC), je pense qu'il vaut mieux le suivre de loin plutôt que d'en considérer une véritable solution.
  • dragonofmercy
    Membre régulier
    Envoyé par Exagone313

    Or, ils utilisent une CLA (Contribution Licensing Agreement), ce qui signifie que toute contribution leur appartient
    Tu as vu où cette information car sur le repo c'est bien une licence Apache 2.0 ?

    https://github.com/MangoDB-io/MangoDB/blob/main/LICENSE
  • Aspartame
    Membre confirmé
    Je lance un projet dès ce soir ...

    ça va s'appeler mungodb , et ça s'appuiera sur des javaBeans

    qui me suit ?
  • Exagone313
    Membre du Club
    Envoyé par dragonofmercy
    Tu as vu où cette information car sur le repo c'est bien une licence Apache 2.0 ?

    https://github.com/MangoDB-io/MangoDB/blob/main/LICENSE
    Il suffit de regarder les issues du projet et la première contribution au projet.

    Ça ne change rien à la licence, quiconque peut faire un fork du projet, le renommer et le faire vivre sans la CLA.
  • esperanto
    Membre émérite
    Envoyé par Bruno
    un proxy open source, qui convertit les requêtes du protocole filaire de MongoDB en SQL
    Protocole filaire, vraiment?

    Envoyé par Bruno
    En l'état actuel, êtes vous pour MongoDB, MySQL ou MangaDB ?
    Bah c'est sûr en matière de BD j'aime bien les mangas aussi

    Envoyé par SQLpro
    Code :
    MongoDB est une technologie qui change la vie de nombreux développeurs, leur permettant de créer des applications plus rapidement qu'avec des bases de données relationnelles.
    Ce genre d'affirmation sans aucun benchmark ni aucune preuve n'est qu'une accroche marketing qui discrédite MongoDB... Dommage !
    ça prouve surtout que tu comprends ce qui t'arrange. Je n'ai encore jamais vu un benchmark pour mesurer la productivité des développeurs (et non les performances de l'outil utilisé)

    Envoyé par Exagone313
    Il suffit de regarder les issues du projet et la première contribution au projet.

    Ça ne change rien à la licence, quiconque peut faire un fork du projet, le renommer et le faire vivre sans la CLA.
    Exact. Mais du coup, pourquoi n'a-t-on pas plutôt forké une ancienne version de MongoDB? Après tout, le choix d'une licence n'est pas rétroactif. Même s'il est dit ici que la nouvelle licence s'appliquera à tous les correctifs publiés par eux (même soumis par quelqu'un d'autre) elle ne s'appliquera pas à un fork basé sur une version antérieure, n'est-ce pas?