Beanie se positionne en tant qu'Object Document Mapper (ODM), également connu sous le nom d'ORM (Object Relational Mapper) pour les bases de données relationnelles. Découvrons ses avantages et inconvenients
Beanie se positionne en tant qu'Object Document Mapper (ODM), également connu sous le nom d'ORM (Object Relational Mapper) pour les bases de données relationnelles. Conçu spécifiquement pour MongoDB, Beanie tire parti des concepts du Modern Python, notamment les annotations de type.
Lors d'un meetup Flint animé par Thibault Djaballah, nous avons eu l'opportunité de découvrir cet ODM. Avant de plonger dans son live coding, où il met en avant les différentes fonctionnalités de Beanie (documents, relations entre documents, gestion de l'état, agrégations, migrations, etc.), explorons ses avantages et inconvénients.
L'utilisation d'un ODM ou ORM, comme Beanie, offre une première ligne de défense contre les risques d'injection. En évitant d'écrire manuellement des requêtes (MongoDB ou SQL), le risque d'exposition à des injections est considérablement réduit.
Quant au côté Modern Python, les annotations de type jouent un double rôle en servant de documentation et d'aide pour les développeurs dans leur IDE, tout en validant les objets destinés à être sauvegardés dans MongoDB.
Un autre point fort de Beanie réside dans sa documentation complète disponible sur https://beanie-odm.dev/. Cela élimine le besoin de documenter chaque aspect du projet et facilite l'intégration des nouveaux développeurs qui peuvent rapidement se familiariser avec Beanie.
Un troisième argument clé en faveur de Beanie est sa palette de fonctionnalités, pratiques au fil du développement d'un projet :
Il est également important de noter que Beanie est basé sur Pydantic, ce qui s'avère particulièrement avantageux lors de l'utilisation de FastAPI. Les schémas Beanie, en tant que modèles Pydantic, peuvent également être utilisés comme schémas de validation pour FastAPI.
L'intégration de Beanie peut entraîner un léger surcoût en raison de la couche d'abstraction supplémentaire, bien que souvent négligeable par rapport au délai d’I/O avec la base de données.
Il est important de noter que Beanie est une bibliothèque relativement jeune, peu connue, et principalement maintenue par son fondateur (https://github.com/roman-right/beanie). Des modifications substantielles entre les versions et des bugs peuvent être plus fréquents que dans d'autres bibliothèques Python bien établies.
Enfin, le framework de migration de Beanie présente un comportement assez différent de son homologue, Alembic, utilisé pour les bases de données SQL, ce qui peut sembler déroutant au premier abord.
Malgré ces quelques points négatifs, les avantages offerts par Beanie surpassent largement ces inconvénients, notamment lorsqu'il s'agit de travailler sur le développement d'un serveur FastAPI. La facilité d'intégration, la sécurité renforcée, et les fonctionnalités avancées fournies par Beanie en font un choix judicieux.