Les Bases de Données : plongée dans les différentes façons de stocker la donnée de vos applications
SQL, NoSQL, NewSQL... Comment choisir la bonne base de données pour votre produit ? Plongeons dans les différents types de bases de données et découvrons leurs avantages et inconvénients.
Je suis bien conscient que peu de Product Managers se retrouvent dans la position de devoir choisir quelle base de données est ou va être utilisée dans leur produit. L’idée ici c’est de rappeler les bases et de vous proposer un tour d’horizon des différentes technologies que vous pourrez rencontrer au gré de vos expériences.
Commençons par expliquer le concept à ta grand-mère
Imagine que tu as une grande boîte où tu gardes toutes tes recettes de cuisine. Chaque recette est une petite fiche avec des informations comme les ingrédients, les étapes, et le temps de cuisson. Une base de données, c'est un peu comme cette boîte, mais pour les informations numériques. Elle stocke toutes les données dont ton application a besoin, comme les utilisateurs, les produits, les commandes, etc., et les organise pour que tu puisses les retrouver facilement.
Let’s dive in !
Les bases de données jouent un rôle crucial pour les applications en permettant de stocker, retrouver, et manipuler les informations de manière efficace. Elles servent à enregistrer des données utilisateur, des transactions, des configurations, et bien plus encore. Elles permettent aux applications de fonctionner de manière fluide et cohérente, en assurant que les données sont accessibles rapidement et de manière fiable. Il en existe plusieurs types que nous allons analyser ensemble.
Les Bases de Données Relationnelles (SQL)
Les bases de données relationnelles utilisent des tables pour organiser les données et des relations pour lier ces tables entre elles. Elles utilisent le langage SQL (Structured Query Language) pour interroger et manipuler les données.
Ces bases ayant une structure rigide cela permet d’avoir des données bien organisées et structurées, ce qui facilite les opérations complexes.
Mais c’est aussi un problème car cela peut entraîner la création de schémas complexes difficiles à requêter. Un autre grand avantage est le SQL, qui est un langage très simple à utiliser même pour des personnes n’ayant pas de formation technique rendant les données très facilement accessibles.
Exemples :
MySQL : Très populaire pour les applications web.
PostgreSQL : Connu pour sa robustesse et ses fonctionnalités avancées.
Oracle Database : Utilisé dans les grandes entreprises pour des applications critiques.
Les Bases de Données NoSQL
Les bases de données NoSQL (Not Only SQL) sont conçues pour gérer des volumes massifs de données non structurées ou semi-structurées. Elles offrent une flexibilité et une scalabilité accrues par rapport aux bases de données relationnelles. Mais le NoSQL c’est avant tout une grande famille de base de données qui regroupe différents types :
Orientées Document
Les bases de données NoSQL orientées documents, comme MongoDB, stockent les données sous forme de documents JSON ou BSON. Elles sont idéales pour gérer des données semi-structurées et évolutives, offrant une grande flexibilité et facilité d'utilisation pour les applications modernes.Clé-Valeurs Les bases de données NoSQL clé-valeur, telles que Redis et DynamoDB, stockent les données sous forme de paires clé-valeur. Elles sont optimisées pour des opérations de lecture et d'écriture rapides, et sont souvent utilisées pour le caching, les sessions utilisateur et les configurations.
Orientées colonnes Les bases de données NoSQL orientées colonnes, comme Apache Cassandra et HBase, organisent les données en familles de colonnes. Elles sont conçues pour gérer de grandes quantités de données distribuées sur plusieurs serveurs, offrant une haute disponibilité et une tolérance aux pannes.
Orientées graph : Les bases de données NoSQL orientées graphes, comme Neo4j, stockent les données sous forme de nœuds, de relations et de propriétés. Elles sont particulièrement efficaces pour modéliser et interroger des relations complexes, comme les réseaux sociaux, les recommandations et la détection de fraudes.
Contrairement aux bases de données relationnelles, les bases No-SQL sont très flexibles, peuvent très facilement évoluer horizontalement et sont optimisées pour des lectures et écritures rapides. Néanmoins elles ont plusieurs inconvénients majeurs : elles ne permettent pas de garantir une cohérence des données by design et sont souvent plus complexes à gérer.
Les autres types de base de données
Ces deux types sont les plus connus mais il existe d’autres types de base de données dont tu n’as peut-être encore jamais entendu parler :
Les bases de données NewSQL
Elles combinent les avantages des bases de données relationnelles et NoSQL. Elles offrent la scalabilité des bases de données NoSQL tout en maintenant les garanties de cohérence des bases de données relationnelles mais sont plus coûteuses et complexes à maintenir.Les bases de données en mémoire
Elles stockent les données principalement en RAM pour des performances ultra-rapides. Elles sont idéales pour les applications nécessitant des temps de réponse très faibles comme des applications embarquées où d’analyse en temps réel. Elles sont néanmoins coûteuses en matériel et doivent être couplées à une bonne gestion de la persistance pour ne pas perdre de données.Les bases de données Time-Series
Elles sont optimisées pour le stockage et la gestion des données temporelles, comme les métriques de performance, les journaux d'événements, et les données de capteurs. En tant que bases très spécialisées, elles sont beaucoup moins performantes pour d’autres use cases plus génériques.
Et d’un point de vue Product ?
En tant que Product Manager, comprendre les différents types de bases de données est crucial non pas pour faire les bons choix techniques (qui ne sont pas de ton ressort) mais pour comprendre dans quel écosystème se trouve ton application et pour pouvoir challenger certaines décisions.
En effet, choisir la bonne base de données peut faire une différence significative en termes de performance, de scalabilité et de coût. C’est aussi le rôle du PM de s’assurer que divers critères ont bien été considérés avant de faire ce choix :
Flexibilité et Évolutivité :
Les bases de données NoSQL offrent une grande flexibilité et évolutivité, ce qui peut être particulièrement utile pour les startups et les applications en croissance rapide. En revanche, les bases de données relationnelles offrent une structure rigide et des garanties de cohérence, ce qui peut être crucial pour les applications financières ou médicales.
Performance et Cohérence :
Les bases de données en mémoire et NewSQL offrent des performances ultra-rapides et des garanties de cohérence, ce qui peut être essentiel pour les applications nécessitant des temps de réponse très faibles et une grande fiabilité.
Spécialisation :
Les bases de données Time-Series sont optimisées pour les données temporelles, ce qui peut être particulièrement utile pour les applications de surveillance, d'analyse et de gestion des événements.
Mais, si comme la plupart d'entre nous, tu construis un produit classique, les bases de données relationnelles restent souvent le meilleur choix. Elles sont plus compréhensibles et accessibles pour un Product Manager. Écrire trois lignes de SQL pour accéder à une information est à la portée de tout le monde là ou requêter une base NoSQL est une tâche plus complexe et fastidieuse. La donnée étant une clé de la réussite d'une stratégie produit, je considère qu’il est dangereux d’en limiter/complexifier l'accès.