CHABAS AlexandreCHABAS Alexandre
Présentation
  • Techniques

    • C# .NET
    • Flutter
    • Technologie Web - Frameworks
    • Docker
    • Base de données
    • Maquettage
  • Humaines

    • Autonomie
    • Travail en équipe
    • Gestion de projet
    • Anglais
Expériences
  • TesfriX
  • RésaResto
  • Gestion Commerciale
  • La Box À Rôtir
  • Ça Monte En Bas
  • Vue d'enssemble
Contactez-moi
Présentation
  • Techniques

    • C# .NET
    • Flutter
    • Technologie Web - Frameworks
    • Docker
    • Base de données
    • Maquettage
  • Humaines

    • Autonomie
    • Travail en équipe
    • Gestion de projet
    • Anglais
Expériences
  • TesfriX
  • RésaResto
  • Gestion Commerciale
  • La Box À Rôtir
  • Ça Monte En Bas
  • Vue d'enssemble
Contactez-moi
  • Compétence - Base de données

Compétence - Base de données

Base de données

Ma définition

Une base de données est un système organisé permettant de stocker, de gérer et de récupérer efficacement des informations et des données. Elle va bien au-delà d'un simple outil de stockage est représente un élément clé dans la gestion, l'analyse et l'exploitation des informations au sein d'un environnement informatique. Une base de données est conçue pour répondre à des besoins précis, tels que la structuration, l'organisation et la manipulation rapide des données, tout en assurant leur sécurité, leur intégrité et leur accessibilité.

Historiquement, les bases de données sont apparues pour résoudre des problématiques liées à la gestion de volumes croissants d'informations. Ainsi, elles ont permis de centraliser les données, de les structurer de manière logique et de faciliter leur utilisation, qu'il s'agisse d'un traitement automatisé ou d'une prise de décision stratégique. De plus, ce rôle fondamental en fait un outil incontournable dans presque tous les secteurs d'activité,commme de la finance à la santé, en passant par le commerce et les technologies de l'information.

Il existe plusieurs types de bases de données adaptées à l'ensemble des besoins. Les bases de données relationnelles, comme MySQL ou PostgreSQL, utilisent le langage SQL afin de définir un modèle de stockage structuré et des liaisons entre les données. À l'inverse, les bases de données non-relationnelles, dites NoSQL, comme MongoDB, sont conçues pour gérer des données non structurées ou semi-structurées, offrant une flexibilité accrue pour des applications spécifiques, comme les réseaux sociaux ou les systèmes de recommandation.

Par conséquent, une base de données relationnelle repose sur plusieurs concepts fondamentaux. Tout d'abord, la notion de tables, qui permettent d'organiser les données en lignes et colonnes, selon un format structuré. Deuxièmement, les clés primaires et étrangères assurent la relation entre les différentes tables, facilitant ainsi les requêtes complexes et l'analyse approfondie. Enfin, les bases de données modernes intègrent des mécanismes sophistiqués pour garantir la cohérence et la sécurité des données, même en cas de défaillance matérielle ou d'accès simultané par plusieurs utilisateurs.

Néanmoins, une base de données non relationnelle répond aux besoins croissants en flexibilité et en scalabilité, particulièrement dans les contextes de Big Data, où le stockage massif de données est crucial. En effet, ces bases permettent de gérer des données non structurées ou semi-structurées sous différents formats, comme des documents, avec MongoDB, des paires clé-valeur, avec Redis, ou des graphes, avec Neo4j. Contrairement aux bases relationnelles, les bases non relationnelle mettent l'accent sur la disponibilité élevée et la cohérence éventuelle, les rendant particulièrement adaptées aux environnements distribués et massivement parallèles, comme ceux des infrastructures cloud. De plus, leur capacité à évoluer horizontalement, à stocker et à traiter de vastes volumes de données les rend incontournables pour des cas d'usage modernes tels que les réseaux sociaux, l'analyse en temps réel ou encore les systèmes de recommandation, tout en offrant robustesse et haute performance.

Mon anecdote

Pour évoquer une situation concrète où j'ai été confronté à l'utilisation d'une base de données, je souhaite partager mon expérience au sein du projet Ça Monte En Bas. Pour rappel, cette association essaie de dynamiser et de représenter les quartiers de la ville basse de Montauban. Cependant, elle était confrontée à une problématique autour de la gestion des événements locaux et le suivi des réservations de ses adhérents. Ainsi, l'objectif du projet était donc de concevoir une solution numérique pour simplifier ces processus et offrir une expérience optimale à ses membres. Mon rôle principal, avec mon équipe, consistait à concevoir une application Web utilisant Angular et Java, permettant aux adhérents de réserver facilement des emplacements pour divers événements, comme des vide-greniers.

Ce projet m'a permis de structurer efficacement le système de stockage des données. Nous avons opté pour MariaDB comme base de données relationnelle, garantissant ainsi des performances optimales et une gestion fiable des informations. Par la suite, afin de modéliser les relations entre les entités et la structure des tables de stockage, telles que les adhérents, les réservations et les emplacements, nous avons utilisé JPA, accronyme de Java Persistence API avec EclipseLink, en adoptant l'approche code-first. Ainsi, cette combinaison a simplifié la gestion des entités tout en assurant l'intégrité des données, et a permis de répondre aux besoins de l'application en termes de fiabilité et d'évolutivité.

Information

Pour découvrir la suite de cette expérience et voir comment elle s’intègre au projet dans son ensemble, je vous invite à consulter la tâche Back-end, accessible depuis la page du projet Ça Monte En Bas. Vous y trouverez également l’ensemble des autres tâches réalisées, ainsi que le contexte technique et fonctionnel complet de ce projet.

Mon autocritique

Au fil des années, mon expertise en bases de données s'est solidifiée à travers des projets variés et des défis techniques complexes. Cette expérience m'a permis de développer une maîtrise approfondie des bases de données relationnelles et non-relationnelles et d'acquérir une perspective claire sur leur rôle fondamental dans les systèmes modernes. Bien que je me considère comme un expert dans ce domaine, je reconnais qu'il reste toujours des évolutions et des particularités à explorer pour perfectionner davantage cette compétence essentielle.

En effet, je considère avoir atteint un niveau avancé, me qualifiant d'une certaine façon d'expert, en ce qu'il concerne la conception et l'implémentation de solutions robustes et performantes, adaptées aux divers contextes. Par concéquent, cette expertise s'étend aux bases de données relationnelles comme MariaDB et aux bases de données non-relationnelles comme MongoDB. À travers des projets comme TesfriX et RésaResto, j'ai pu démontrer ma capacité à structurer efficacement les systèmes de stockage, que ce soit avec des approches code-first via Entity Framework Core ou des modèles NoSQL pour le stockage documentaire. Ces expériences m'ont permis de comprendre et de mettre en œuvre des concepts complexes comme la gestion des transactions, la modélisation relationnelle avancée ou encore la scalabilité horizontale.

Malgré cette expertise, je reste conscient qu'il existe des axes d'amélioration et de progression, notamment dans des contextes spécifiques ou moins fréquents. Par exemple, bien que familier avec les bases de données distribuées, je peux encore approfondir l'optimisation des performances dans des environnements massivement parallèles ou améliorer ma maîtrise des outils avancés comme les mécanismes de réplication en temps réel ou les pipelines d'agrégation complexes dans MongoDB. Un autre axe de progression réside dans l'amélioration continue de mes choix architecturaux et de modélisation. En effet, dans des projets aux enjeux complexes et dynamiques, il est parfois difficile de trouver un juste équilibre entre la normalisation poussée et la performance brute. Cette adaptabilité est essentielle pour répondre aux besoins croissants des utilisateurs et garantir une pérennité des données.

Au-delà des axes d'amélioration, il est crucial de souligner l'importance centrale de cette compétence dans mon profil d'ingénieur logiciel. Les bases de données représentent le cœur de nombreuses applications que j'ai développées, qu'il s'agisse de TesfriX, où j'ai combiné MariaDB pour les données structurées et MongoDB pour le stockage documentaire, ou encore Ça Monte En Bas, où la gestion des événements et des adhérents reposait sur une modélisation relationnelle rigoureuse avec JPA et EclipseLink. Ces projets, chacun dans leur singularité, ont confirmé que maîtriser les bases de données est une condition indispensable pour réussir à livrer des applications fiables, évolutives et performantes.

En effet, cette compétence essentielle m'a également permis de tirer profit de méthodologies et d'outils modernes pour optimiser mes approches de développement. Par exemple, dans RésaResto, l'intégration d'Entity Framework Core avec une base MariaDB en approche code-first m'a offert une flexibilité considérable pour évoluer rapidement en fonction des besoins. De même, dans le projet Gestion Commerciale, j'ai su exploiter pleinement les fonctionnalités de PHPMyAdmin pour structurer et gérer efficacement une base de données relationnelle, garantissant ainsi une manipulation fluide des informations.

Avec l'expérience acquise, je recommande à ceux qui souhaitent maîtriser les bases de données de se familiariser à la fois avec les concepts fondamentaux comme la modélisation relationnelle et les transactions, mais aussi avec les tendances modernes comme les bases de données NoSQL et les architectures distribuées. Il est essentiel d'apprendre en travaillant sur des projets concrets et variés, car c'est en relevant des défis techniques spécifiques que l'on affine véritablement ses compétences. De plus, il est impératif de se tenir informé des évolutions technologiques constantes dans ce domaine, car les bases de données évoluent rapidement pour répondre aux besoins changeants des systèmes modernes.

Néanmoins, je reste convaincu que l'apprentissage continu et l'amélioration constante sont nécessaires pour rester pertinent dans un domaine en perpétuelle évolution. Mon expérience pratique m'a permis de développer une solide maîtrise, mais je m'efforce toujours de progresser et d'explorer de nouvelles perspectives d'évolution pour rester toujours le plus efficace possible sur les évolutions technologiques et les bonnes pratiques naissantes.

De cette façon, en tant qu'expert en bases de données, je m'efforce également de partager mes connaissances avec mes collègues et de promouvoir les bonnes pratiques en matière de conception et de gestion des systèmes de stockage. Cela inclut le maintien d'une veille active pour anticiper les changements technologiques et intégrer les dernières innovations dans mes projets. Je suis convaincu que cette approche proactive est indispensable pour garantir des solutions fiables et innovantes adaptées aux défis techniques de demain.

Mon évolution

À moyen terme, je souhaite élargir mes compétences en bases de données en explorant davantage les pratiques avancées et en participant à des projets impliquant des configurations complexes. Je prévois également d'expérimenter un paradigme différent, comme l'approche database-first, pour enrichir ma compréhension et mes connaissances au-delà de l'approche code-first, qui est par ailleurs celle avec laquelle j'ai la plus grande expérience. De plus, l'autoformation restera au cœur de mon développement, avec un focus particulier sur les environnements micro-services et la gestion des bases de données relationnelles, qui sont à mon sens la référence lorsqu'on évoque la création d'applications modulaires. Sans compromettre certains aspects du sujet et à travers ces efforts, mon objectif est de continuer à m'adapter aux technologies émergentes et de consolider ma maîtrise des systèmes relationnels, tout en explorant les spécificités des bases NoSQL pour des besoins complémentaires.

Ainsi, dans le cadre de mes aspirations professionnelles, je considère les bases de données relationnelles comme une compétence centrale et une clé essentielle pour atteindre mes objectifs de lead développeur, à court terme, et de chef de projet, à long terme. De ce fait, mon objectif est de développer une expertise approfondie, permettant de concevoir, gérer et optimiser des bases de données relationnelles robustes, performantes et scalables. Je veux également approfondir des concepts tels que l'optimisation avancée des performances, la modélisation relationnelle complexe, la gestion des stratégies de réplication, et l'indexation efficace dans des contextes exigeants.

De cette manière, je vise à devenir un expert en bases de données relationnelles, capable d'effectuer des choix technologiques éclairés et d'assurer une gestion efficace des données dans des projets complexes. Par ailleurs, je souhaite consolider mes connaissances sur les bases de données distribuées et explorer les environnements NoSQL lorsque cela répond à des besoins spécifiques. Ces compétences complémentaires me permettront de soutenir ma progression vers des rôles de leadership technique et de gestion de projets.

Pour atteindre ces objectifs, je m'engage à maintenir une autoformation continue et proactive. Je me forme régulièrement via des ressources variées : articles, documentations techniques, projets concrets. Également, j'envisage de participer à des communautés spécialisées et à des événements techniques autour des bases de données relationnelles, lorsque mes connaissances et acquis seront plus importants sur divers sujets de maîtrise de bases de données. Enfin, l'ensemble de ces démarches me permettra d'élargir mes connaissances, de renforcer mon expertise et d'améliorer ma capacité à répondre efficacement aux besoins complexes des projets dans lesquels j'interviens à ce jour et j'interviendrai dans mon futur professionnel.

Réalisations liées

TesfriX - RésaResto - Gestion Commerciale - Ça Monte En Bas