Compétence Technique
MongoDB
Manipuler une base de données NoSQL pour stocker et organiser des données de manière flexible.
Ma définition
MongoDB est un système de gestion de base de données NoSQL (Not only SQL) orienté documents. Contrairement aux bases de données relationnelles traditionnelles, il ne repose pas sur des tables structurées avec des schémas fixes, mais sur des collections de documents au format JSON (ou BSON).
Cette approche permet une grande flexibilité dans la modélisation des données, notamment pour des applications nécessitant des structures évolutives ou des données hétérogènes. MongoDB facilite également le développement dans des environnements modernes, en particulier dans des architectures orientées microservices ou avec des applications web dynamiques.
Dans le développement logiciel, MongoDB est souvent utilisé pour sa capacité à gérer de gros volumes de données, sa scalabilité horizontale et sa simplicité d’intégration avec des technologies comme Node.js ou des frameworks backend modernes comme Spring.
Éléments de preuve
J’ai utilisé MongoDB concrètement dans le cadre de mon projet étudiant Galactic Airlines, réalisé en quatrième année à l’ESIEA. Ce projet consistait à concevoir une application backend en Java avec Spring Boot, destinée à gérer les réservations d’une compagnie aérienne fictive.
Le système devait permettre la gestion de plusieurs entités métiers telles que les clients, les employés, les avions, les aéroports, les vols ainsi que les réservations. Il devait également offrir la possibilité de réserver des billets, soit directement par les clients via un service en ligne, soit par l’intermédiaire d’un agent.
Dans ce contexte, la gestion des données a été assurée avec MongoDB. Ce choix s’inscrivait dans une volonté de découvrir une technologie différente des bases de données relationnelles (SQL) habituellement utilisées dans notre formation. Cela nous a amenés à adapter notre manière de modéliser les données, notamment dans la gestion des relations entre les différentes entités du système, qui ne reposaient plus sur des jointures classiques mais sur une logique plus flexible propre au NoSQL.
L’intégration de MongoDB avec Spring Boot s’est faite via la dépendance Spring Data, qui permet de manipuler les données à travers des interfaces de type repository. Cela m’a permis de mettre en place des opérations de persistance (CRUD) sans avoir à écrire de requêtes complexes, tout en conservant un code structuré et lisible.
J’ai pu comprendre les avantages et les limites d’une base NoSQL, notamment en termes de flexibilité de modélisation, mais aussi les compromis à faire lorsqu’il s’agit de gérer des relations entre données.
J’ai également utilisé MongoDB lors de mon alternance chez AUXASPHERE SAS, dans le cadre du développement d’une application souveraine. Dans cette architecture, nous utilisions une combinaison de bases de données, avec PostgreSQL pour les données structurées et homogènes, comme les utilisateurs, et MongoDB pour des données plus flexibles et volumineuses, notamment celles liées au stockage de fichiers dans le drive.
Cette utilisation de SQL et NoSQL m’a permis de mieux comprendre l’intérêt de choisir une technologie de base de données en fonction du besoin métier. J’ai ainsi pu appréhender MongoDB dans un contexte réel, où il s’intègre dans une architecture plus large et complémentaire à d’autres solutions de stockage.
Auto-critique
Du fait de mon expérience actuelle, j’ai acquis une première compréhension de MongoDB, que je considère aujourd’hui comme un niveau initié. Je suis capable de manipuler des collections, de réaliser des opérations CRUD et de comprendre les principes de base de la modélisation de données en NoSQL.
J’ai eu une première vision concrète de son utilisation, mais je reste encore limité en termes de cas d’usage.
Je suis conscient que je n’ai pas encore suffisamment de recul pour maîtriser pleinement les enjeux liés à MongoDB. Je n’ai pas eu l’opportunité de travailler sur de nombreux projets utilisant cette technologie, ni d’explorer en profondeur des aspects plus avancés comme l’optimisation des performances, l’indexation ou la gestion de volumes de données importants.
Par ailleurs, je n’ai encore qu’une expérience limitée avec l’ODM Mongoose qui sert d'interface pour MongoDB en permettant de définir des modèles, ce qui constitue un axe de progression important pour mieux exploiter la puissance du NoSQL dans des applications modernes.
Perspective d'Évolution
Mon objectif est de progresser d’un niveau initié vers un niveau expert sur MongoDB, en développant à la fois mes compétences pratiques et ma compréhension des enjeux liés à la gestion de données en NoSQL.
Pour cela, je souhaite multiplier les cas d’usage concrets à travers différents projets, afin de mieux maîtriser la modélisation des données en fonction des besoins métiers.
Je souhaite également approfondir ma maîtrise des outils associés comme l’ODM Mongoose afin de mieux comprendre leurs mécanismes, leurs bonnes pratiques et leurs limites dans des environnements applicatifs modernes. Pour se faire j’ai accès à plusieurs sources de documentation aussi (tuto et livres).
À plus long terme, dans le cadre de mon évolution vers mon projet professionnel d’atteindre un profil Tech Lead, il sera essentiel pour moi de maîtriser les aspects avancés de MongoDB.