7 types de base de données

Pragmatic Nerdz
Oct 24, 2023 - 6 Minutes

Lors du développement d'applications, le choix de la base de données (BDD) est l'une des décisions les plus importantes à faire, car elle aura un impact important sur la performance et la stabilité de l'application.

Dans cet article, nous allons présenter les types de base de données utilisées dans l'industrie, et plus important: quand les utiliser. 

Les types de base de données

1. Le Système de fichiers

La manière la plus simple de gérer les informations est de les stocker dans un fichier. Le fichier doit être encodé dans un format afin d'être décoder par une machine: CSV, JSON, XML, binaire etc.

Les fichiers sont stockés sur disques, et organisés de manière hiérarchique dans des répertoires.

Ce type de base de données est recommandé pour le stockage de fichiers (images, vidéos, MP3, CSV etc). Ces fichiers peuvent être stockés soir dans un disque local, soit sur le Cloud en utilisant un service de stockage cloud (Amazon S3, Azure Blob Storage etc.).

2. BDD clé-valeur

Les BDD de type clé-valeur sont les BDD les plus simples. Elles sont structurées comme un dictionnaire: elles contiennent un ensemble de clés uniques associées à des valeurs.

Ce type de BDD stockent généralement leurs données en mémoire (contrairement aux autres BDD qui stockent dans le disque), ce qui limite la quantité de données qu'elles peuvent stocker, mais les rend extrêmement rapide (de l'ordre de 10 millisecondes) pour les lectures et écritures car elle ne font aucun accès aux disques.

Ces BDD n'offre pas de langage de requête complexe comme SQL, mais supporte uniquement 2 opérations:

  • SET: Pour ajouter une clé et une valeur dans la BDD
  • GET: Pour retourner une valeur à partir d'une clé.

Ce type de BDD est recommandé pour l'ajout de cache afin de réduire la latence du système.

3. BDD colonnes

Les BDD colonnes sont une variante de BDD clé-valeur où chacune des clé est associée une famille de colonnes, chacune des colonnes ayant une valeur.

Les BDD colonnes stockent les données en groupant les colonnes ensemble. 

Ce type de structure est optimisée pour les requêtes par colonnes. Exemple: L'âge moyen des joueurs. Cette requête est faite par un accès direct à la colonne age.

Par contre, si on veut faire une requête pour avoir les informations de l'usager 123, on devra extraire les informations à partir des colonnes name, age et country, ce qui n'est pas optimal pour ce type de BDD.

La structure de stockage des BDD colonnes leur permet de stocker des quantité massive de données, distribuées sur plusieurs serveurs, et offre un langage de requêtes similaire à SQL (Ex: Cassandra CQL) pour accéder facilement aux données.

Les BDD colonnes sont bien adaptées au traitement du Big Data, à la Business Intelligence (BI) et à l'analyse, la gestion des données chronologiques.

Le réseau social Discord a utilisé successivement Cassandra (200 serveurs) et ScyllaDB (72 serveurs) pour gérer des milliards de messages.

4. BDD documents

Receive my Stories your e-mail inbox as soon as I publish them.
Subscribe to my Blog

Les BDD documents sont une autre variante des BDD clé-valeur, où chacune des clé est associée un document, structuré dans un format JSON, XML ou BSON. Les documents sont regroupés en collections.

Ces BDD ne prescrivent aucun schéma spécifique pour les documents, ce qui les rend très flexibles. Les accès en lecture sont généralement rapides, mais les écritures plus lentes et complexes car la modification d'une information requiert la mise à jour du document entier.

Ce sont des BDD à usage plus général, par rapport aux BDD clé-valeur ou à colonnes. Ce qui en fait un bon choix pour le développement rapide, d'app mobile ou de gestion de contenu. Mais elles sont moins indiquées pour les applications ayant des données qui ont plusieurs relations entre elles.

5. BDD relationnelles

Les BDD relationnelles organisent les données dans des tables. Chaque entrée de la table est un enregistrement qui est composé de:

  • Une clé primaire (primary key) qui est l'identifiant unique de l'enregistrement dans la table
  • Des clés étrangères (foreign key) qui permettent d'établir les relations avec d'autres tables.
  • Les données associées à l'enregistrements

Chaque table doit avoir un schéma de données prédéfini, ce qui permet de garantir l'intégrité des données. Les BDD relationnelles supportent aussi les propriété ACID, qui garantit la fiabilité et intégrité de toute opération faite sur une ou plusieurs tables.

Le langage de requête appelé SQL permet d'interroger et joindre des données de plusieurs tables au sein d'une seule instruction. SQL peut également filtrer, agréger, résumer et limiter les données renvoyées. 

La flexibilité du langage SQL et la fiabilité des transactions font que les BDD relationnelles sont largement utilisées dans l'industrie. Cependant, le fait que les données doivent être structurées dans un schéma les rend plus rigides et complexes pour gérer des gros volumes de données.

6. BDD graphes

Les BDD graphes sont des bases de données dont l'objectif principal est de gérer les relations entre les données. Elles sont composées de noeuds et d'arêtes:

  • Les noeuds représentent les données
  • Les arêtes représentent les relations entre les données (au lien d'utiliser les tables et clé étrangères comme dans les BDD relationnelles).

Les BDD graphes sont recommandées dans dans les applications où les relations et connexions sont très importantes, tels que les réseaux sociaux, les systèmes de recommandations, les systèmes de détection de fraudes

Utiliser une BDD relationnelle pour l'interrogation de connexions entre les utilisateurs dans un réseau social nécessiterait plusieurs jointures de tables et serait donc plutôt gourmande en ressources. Cette même requête est plus simple dans une BDD graphe qui supporte directement les connexions.

LinkedIn utilise une BDD graphe pour gérer les connexions de leur 930M+ d'utilisateurs afin de modéliser la base de connaissance de leur domaine d'affaire.

7. BDD d'index de texte

Les BDD d'index de texte permettent de rechercher des informations à partir de mots clés.

Ces BDD sont composées de documents, dont le contenu est analysé pour créer un index de mots, chaque mot étant associé aux documents qui le contiennent. C'est similaire à un index que l'on retrouve à la fin de livres.

Les opérations d'écriture dans ces bases de données sont généralement lentes, à cause du processus d'indexation des mots. Par contre, les opérations de recherche sont très rapides car elles se font dans l'index, au lieu de rechercher dans tous les documents.

Les BDD d'index de texte sont recommandées pour les moteurs de recherche. Par exemple, la fonctionnalité de recherche dans Netflix, Spotify ou Amazon.

Comment choisir sa BDD

Il est important de comprendre qu'il n'existe aucune BDD qui réponde à tous les besoins. Il faut donc comprendre les cas d'utilisations pour lesquels chaque type de BDD est recommandé, et l'utiliser pour ces cas précis.

Par exemple, si vous avez à concevoir une application similaire à Spotify qui gère des centaine de millions d'utilisateurs et des milliards d'écoutes, vous aurez à utiliser différentes BDD:

  • MySQL ou MongoDB pour stocker les métadonnées des artistes et chansons (titre, description, catégories etc.)
  • Amazon S3 pour stocker les fichiers MP3 des chansons à streamer lors des écoutes.
  • Apache Solr pour la fonctionnalité de recherche de chanson et artistes.
  • Redis comme cache des méta-données des artistes et chansons pour réduire la latence des apps.
  • Neo4J pour connecter les utilisateurs et les chansons qu'il écoutent; les chansons avec les artistes et catégories. Ceci permettra de faire des recommandations aux utilisateurs en fonction de leur historique d'écoute.

Si vous avez aimé l'article, montrez votre soutien avec un ❤️ et abonnez vous a mon blog ! Votre engagement m’inspire!

SQL
MySQL
Base De Données
Redis