FerretDB 1.0 GA, une alternative réellement open source à MongoDB, est désormais disponible, le proxy est la version modernisée de MangoDB utilisant PostgresSQL comme moteur de base de données

FerretDB 1.0 vient d'être annoncé en disponibilité générale. Le système, anciennement dénommé MangoDB, est un proxy open source qui traduit les appels du protocole filaire MongoDB en requêtes SQL, en utilisant PostgreSQL comme moteur de base de données. Proposée sous la licence Apache 2.0, cette version FerretDB 1.0 GA vous permet de tirer parti de la puissance de l'écosystème MongoDB dans vos applications à travers une pile logicielle complètement ouverte.

Nom : ferretdb-v1.0.jpg
Affichages : 59096
Taille : 48,3 Ko

Après plusieurs mois de développement, FerretDB est maintenant prêt pour la production. Nous sommes heureux d'annoncer la disponibilité générale de FerretDB, une alternative Open Source à MongoDB, construite sur PostgreSQL, et publiée sous la licence Apache 2.0.

MongoDB n'est plus open source. Nous voulons ramener les charges de travail des bases de données MongoDB à leurs racines open source. Nous permettons à PostgreSQL et à d'autres bases de données d'exécuter des charges de travail MongoDB, en conservant les opportunités offertes par l'écosystème existant autour de MongoDB.

  • Déployez n'importe où et gardez le contrôle de vos données
  • Utilisez-le librement pour vos projets basés sur le cloud
  • Utilisez votre infrastructure PostgreSQL existante pour exécuter les charges de travail MongoDB.

Comment démarrer

Nous proposons des images Docker pour la production et le développement, ainsi que des paquets RPM et DEB. Si vous souhaitez tester FerretDB, nous fournissons une image Docker tout-en-un, contenant tout ce dont vous avez besoin pour évaluer FerretDB avec PostgreSQL.

De plus, grâce à nos partenaires, FerretDB est disponible sur deux fournisseurs de cloud pour les tests :


Principales fonctionnalités ajoutées au GA

Dans cette version GA, FerretDB supporte désormais la commande createIndexes. Cette commande vous permet de spécifier les champs que vous souhaitez indexer, ainsi que le type d'index à utiliser (par exemple, ascendant, descendant ou haché).

Par exemple, supposons que vous ayez une collection users contenant plusieurs champs, dont "age", "name" et "email", et que vous souhaitiez créer un index sur le champ "age". Vous pouvez maintenant exécuter la commande suivante :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
db.users.createIndex({ age: 1 })

Cela créera un index ascendant sur le champ "age", ce qui accélérera toutes les requêtes qui filtrent sur ce champ.

Nous avons également ajouté la commande dropIndexes, qui permet de supprimer un index d'une collection. Voici un exemple :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
db.users.dropIndex({ age: 1 })

Ceci supprimera l'index de la collection "users".

Nous avons étendu la fonctionnalité de notre pipeline d'agrégation pour inclure des étapes supplémentaires, telles que $unwind, $limit et $skip, en plus de l'accumulateur $sum dans l'étape $group. Grâce à ces ajouts, nous pouvons effectuer des calculs et des manipulations plus raffinés des données de collecte. En outre, nous avons également ajouté la prise en charge des champs count et storageStats dans l'étape du pipeline d'agrégation $collStats.

Pour vous aider à recueillir plus d'informations sur vos collections, vos bases de données et les performances de votre serveur, nous avons activé la prise en charge partielle de plusieurs commandes serveur, notamment collStats, dbStats et dataSize.

Pour récupérer des statistiques sur une collection, utilisez la commande collStats comme suit :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
db.runCommand({ collStats: "users" })

Si les statistiques concernent la base de données, exécutez la commande ci-dessous :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
db.runCommand({ dbStats: 1 })

Pour connaître la taille totale des données d'une collection, exécutez la commande suivante :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
db.runCommand({ dataSize: "<database>.<collection>" })

Où en sommes-nous maintenant ?

Avec la sortie de FerretDB 1.0 GA, aucun changement radical ne sera introduit dans les prochaines versions mineures.

Nous sommes également fiers d'annoncer que FerretDB a maintenant :

  • Plus de 40 contributeurs de code avec plus de 130 pull requests fusionnées de la part de notre communauté
  • Plus de 5 300 étoiles et 200 fourchettes sur GitHub
  • Plus de 100 instances en cours d'exécution avec la télémétrie activée.
  • Plus de 10 000 téléchargements de FerretDB

Avec la sortie de FerretDB 1.0, ces chiffres vont continuer à croître.

Nous respectons notre feuille de route et prévoyons d'ajouter d'autres fonctionnalités importantes dans les mois à venir.

Où allons-nous ?

Nous sommes en train de créer un nouveau standard pour les bases de données documentaires avec une compatibilité MongoDB. FerretDB est un remplaçant direct de MongoDB, mais il vise également à établir un nouveau standard qui non seulement ramène les bases de données documentaires faciles à utiliser à leurs racines open source, mais permet également à différents moteurs de base de données d'exécuter des charges de travail de base de données documentaires à l'aide d'une interface standardisée.

FerretDB offrira également la flexibilité des bases de données documentaires, avec la possibilité d'exécuter des requêtes sur le même ensemble de données à l'aide de SQL.

De quoi FerretDB GA est-il capable ?

FerretDB 1.0 GA comprend toutes les fonctionnalités essentielles permettant d'exécuter des charges de travail de bases de données documentaires.

Nous testons FerretDB contre des applications réelles, comme FastNetMon, Enmeshed Connector, BigBlueButton, Strapi, ou des frameworks tels que MeteorJS, entre autres.

Nous avons également confirmé que les outils de gestion de base de données populaires tels que mongosh, MongoDB Compass, NoSQL Booster, Mingo sont capables d'exploiter l'ensemble des fonctionnalités actuelles de FerretDB.

C'est comme gérer une base de données MongoDB, mais c'est FerretDB (et open source) sous le capot. Nous pensons que c'est incroyablement cool !

Quelles sont les bases de données prises en charge par FerretDB ?

FerretDB offre une architecture entièrement pluggable, nous supportons également d'autres backends, et le support de ces derniers peut être apporté par la communauté.

PostgreSQL
Nous construisons FerretDB sur PostgreSQL et nous pensons que ce sera notre principale base de données dans un avenir proche. C'est le backend qui bénéficiera des dernières fonctionnalités de FerretDB. Nous sommes en train d'implémenter des fonctionnalités ajoutant la compatibilité MongoDB à Postgres en utilisant principalement ses capacités JSONB. Cependant, nous reconnaissons que nous devrons nous écarter de cette approche pour augmenter les performances en créant notre propre extension ou en utilisant d'autres méthodes.

Tigris
Nous nous sommes associés à Tigris Data pour ajouter le support de Tigris, un backend qui offre une solution entièrement gérée et une alternative à MongoDB Atlas. Le support de Tigris est désormais assuré par Tigris Data.

SAP HANA
Nos amis de SAP travaillent actuellement à l'ajout de la compatibilité SAP HANA à FerretDB, ce qui nous réjouit beaucoup. Il est également intéressant de voir l'engagement de SAP en faveur de l'open source.

SQLite et les futures bases de données
Nous sommes ouverts à l'ajout d'un support pour d'autres backends. Actuellement, nous sommes en train d'ajouter un support de base pour SQLite.

Remerciements

Nous adressons nos plus sincères remerciements à notre communauté dévouée pour toutes les contributions et les commentaires qui ont conduit à FerretDB GA.

Nous sommes heureux d'accueillir de nouveaux membres dans notre communauté grandissante et nous encourageons tout le monde à nous rejoindre sur GitHub, et à explorer les nombreuses possibilités que FerretDB a à offrir.
Source : FerretDB

Et vous ?

Quel est votre avis sur FerretDB ? Seriez-vous prêt à le tester ?

Selon vous, quels pourraient-être les autres avantages de réimplémenter MongoDB au-dessus de Postgres ?

Selon vous, le proxy FerretDB peut-il se positionner comme une réelle alternative à MongoDB, en particulier si l'on s'intéresse aux fonctionnalités avancées de ce dernier ?

Voir aussi

MangoDB : une véritable alternative Open Source à MongoDB, un proxy open source, qui convertit les requêtes du protocole filaire de MongoDB en SQL

La version 6.0 du SGBD NoSQL MongoDB est disponible, avec des requêtes chiffrées, elle apporte la collecte de données chronologiques

YDB, une base de données SQL distribuée et open source, sous licence Apache 2.0, elle fonctionne sur des plateformes x86 64 bits avec un minimum de 8 Go de RAM