Les Bases de Données
Les bases de données servent à stocker, organiser et gérer des informations pour pouvoir les retrouver et les utiliser facilement.
Pour pouvoir stocker et structurer ces données et les rendre plus facile à gérer on utilise des systèmes de gestion de base de données (SGBD).
On a différents systèmes de gestion de base de données comme :
- MySQL
- MariaDB
- MongoDB
- Firebase
MySQL
👍 Avantages
- Gratuit et accessible : la version communautaire est téléchargeable librement, adaptée aux petites entreprises et projets personnels.
- Facile à utiliser : sa syntaxe claire et simple rend la prise en main rapide, même sans développeur expert.
- Compatible avec le cloud : il est pris en charge par des plateformes comme Amazon Web Services ou Microsoft Azure, facilitant les déploiements web.
👎 Inconvénients
- Évolutivité limitée : MySQL n’est pas idéal pour les bases de données de très grande taille (contrairement à certains systèmes NoSQL).
- Partiellement open source : depuis son acquisition par Oracle, certaines fonctionnalités sont fermées, limitant la contribution de la communauté.
- Conformité SQL incomplète : MySQL ne respecte pas totalement les standards SQL, ce qui peut compliquer la migration vers d’autres systèmes.
MariaDB
👍 Avantages
- Sécurité renforcée : MariaDB propose un cryptage des tables et journaux, ainsi que des systèmes d’authentification avancés garantissant une protection solide des données.
- Fonctionnalités étendues : support des coordonnées géographiques (SIG), colonnes dynamiques permettant de gérer à la fois SQL et NoSQL, et compatibilité avec de nombreux plugins et moteurs de stockage.
- Excellentes performances : gestion optimisée de la mémoire et des espaces libres, statistiques indépendantes du moteur pour un traitement des requêtes plus rapide et une analyse des données plus efficace.
👎 Inconvénients
- Communauté encore limitée : bien que croissante, la communauté MariaDB reste moins vaste que celle de MySQL, ce qui peut restreindre le support et les ressources disponibles.
- Différences avec MySQL : des écarts de compatibilité apparaissent entre les versions (ex. : MariaDB 10.4 et MySQL 8.0), rendant la migration ou l’alignement entre les deux systèmes plus complexe.
MongoDB
👍 Avantages
- Accès rapide et simple aux données : les opérations d’ajout, de stockage et de récupération sont très rapides grâce à l’utilisation de la mémoire RAM, sans compromettre la fiabilité des données.
- Grande compatibilité : MongoDB peut être intégré avec d’autres bases de données SQL ou NoSQL et permet d’utiliser des moteurs de stockage personnalisés, offrant ainsi une grande flexibilité.
- Évolutivité horizontale : les données peuvent être réparties sur plusieurs serveurs (cluster), ce qui accélère le traitement et améliore les performances pour les applications à grande échelle.
👎 Inconvénients
- Forte consommation de mémoire : utilisation importante de la mémoire.
- Sécurité limitée : l’authentification n’est pas activée par défaut et les options avancées sont souvent réservées à la version commerciale, ce qui réduit la sécurité des données.
- Difficulté d’interprétation : la traduction de requêtes SQL vers le langage de MongoDB peut être complexe et ralentir le développement, notamment pour les projets utilisant des modèles relationnels.
Firebase
👍 Avantages
- Facile à démarrer : Firebase s’intègre très simplement dans un projet, ce qui le rend idéal pour les développeurs débutants comme expérimentés.
- Fonctionnalités complètes : il propose deux types de bases de données, du stockage, un système d’authentification, des analyses, des publicités et des fonctions cloud, offrant ainsi une solution tout-en-un.
- Hébergement fiable : le service fournit un hébergement stable et performant, pratique pour les développeurs cherchant une solution prête à l’emploi.
- Idéal pour éviter le back-end : parfait pour ceux qui souhaitent créer des applications sans gérer la partie serveur.
- Coût raisonnable : même si les tarifs reposent sur Google Cloud, Firebase reste abordable pour la plupart des projets, avec une offre gratuite généreuse.
👎 Inconvénients
- API incohérentes : certaines incohérences dans la conception des API peuvent créer de la confusion et ralentir le développement.
- Problèmes de confidentialité : les données stockées appartiennent à Google, ce qui peut poser problème pour les projets sensibles en matière de protection des données.
- Complexité et bugs : les fonctionnalités avancées peuvent devenir complexes à gérer et sont parfois touchées par des bugs persistants (ex. : authentification).
- Documentation insuffisante : la documentation est souvent incomplète, entraînant des difficultés d’intégration.
- Coût élevé au-delà de la limite gratuite : une fois les quotas gratuits dépassés, les tarifs Google Cloud peuvent devenir onéreux.
SQL vs NoSQL
On a 2 catégories de base de données dites SQL ou NoSQL :
Les bases de données en SQL sont des bases de données dites relationnelles tandis que celles en NoSQL sont dites non relationnelles !
Mais qu’est-ce qui les différencie ?
🗃️ SQL (Relationnel)
On a pour le SQL un nombre de tables avec des colonnes définies et chaque colonne est une ligne de données, c’est plus structuré avec l’ID de chaque élément qu’on pourra attribuer à d’autres tables.
Il permet de faire des requêtes complexes en cherchant plusieurs données ensemble.
Il fonctionne en vertical scaling, ça veut dire qu’on devra faire augmenter le stockage ou la RAM.
On l’utilise si : la base de données est principalement orientée utilisateur avec une grande quantité de données !
📄 NoSQL (Non-Relationnel)
En NoSQL ce sont des documents qui peuvent être orientés colonne ou graphe mais généralement on le reconnait par un document proche du JavaScript répertoriant chaque élément et ses données.
Il est bien plus dynamique car on peut facilement attribuer d’autres données par la suite à une même catégorie.
On ne pourra pas faire plusieurs liens car les tables ne sont pas relationnelles mais il reste utile pour les données non structurées.
En NoSQL on est en Horizontal Scaling ce qui permet de plus facilement déployer sur d’autres serveurs et répliquer, et s’adaptera mieux à l’afflux de personnes en cherchant les données nécessaires !
On l’utilise pour : des données qui n’ont pas de lien entre elles ou quand on n’a pas besoin de structure précise !
Sources
- https://azure.microsoft.com/fr-fr/resources/cloud-computing-dictionary/what-are-databases
- https://www.mongodb.com/fr-fr/resources/basics/databases/nosql-explained
- https://www.data-bird.co/blog/base-de-donnees
- https://youtu.be/2rkvCnZVsow?si=MHIh0Vdvf5uMQamX
- https://share.google/ytFo1RdMdcbmCkhi3
- https://www.joinsecret.com/fr/firebase/reviews