Dès que l'on commence à aborder la création d'un système informatique un tant soit peu complexe, que ce soit un logiciel, une application ou un site web, une base de données est un composant essentiel.

Mais qu'entend-on réellement par le terme "base de données" ? C'est ce que nous allons voir dans cette introduction sur le sujet.

Définition

Le terme "base de données" (ou database en anglais) porte à confusion car il est souvent utilisé comme raccourci pour désigner les différents concepts suivants :

  • Le système de gestion de base de données (SGBD), c'est à dire le logiciel qui permet de gérer le stockage et la récupération des données.
  • Le serveur de base de données, c'est à dire la machine sur laquelle tourne le logiciel.
  • L'instance, c'est à dire la mise en service d'un SGBD sur une machine, que l'on utilise réellement, celle où sont stockées les données utilisées par notre application.
Pour faire simple, une base de données est une instance d'un SGBD tournant sur une machine, que l'on appelle un serveur.

Pourquoi ne pas stocker les informations dans un ou plusieurs fichiers

Un système de gestion de base de données sert à stocker des données et à les retrouver de manière efficaces afin de pouvoir les exploiter.

Chaque SGBD a un format de stockage bien particulier et la manière de sauvegarder et récupérer des données est normalisée pour chaque système.

C'est notamment cette normalisation, ainsi que l'optimisation qui permet de gérer une grande quantité d'informations qui différencie une base de données d'un simple fichier dans lequel on viendrait stocker et récupérer ces informations.

Pourtant la majorité des SGBD stockent eux aussi leurs données dans des fichiers sur le disque de la machine sur laquelle ils sont installés, la nuance est que ces fichiers sont (la plupart du temps) stockés sous forme binaire pour des raisons de performance.

Ils sont optimisés et lisibles uniquement par le logiciel en question.

De plus, une partie des informations contenues dans une base de données est chargée dans la mémoire vive, ce qui permet de rendre la récupération de données beaucoup plus rapide que la simple lecture d'un fichier.

SQL vs NoSQL

Il existe deux catégories principales de SGBD : ceux compatibles avec le SQL, et les autres, appelés NoSQL (littérallement "pas de SQL").

Le SQL (signifiant Structured Query Langage) est un langage inventé dans les années 70 chez IBM par Donald D. Chamberlin et Raymond F. Boyce et particulièrement adapté pour gérer des données dans des bases de données relationnelles.

Il n'y a pas de chiffres exacts sur le pourcentage d'utilisation du SQL, mais ce derniers dominent encore largement le marché, malgré l'avènement du NoSQL de ces dernières années.

Les bases SQL

Les bases de données SQL sont ce que l'on appelle des bases de données relationnelles, c'est à dire que toutes les entités sont structurées et peuvent être mises en relation les unes avec les autres.

Une entité est un ensemble de données simples, qui misent ensemble, forment une information plus complexe.

En SQL on parle souvent de tables, de lignes et de colonnes, comme dans un fichier Excel :

  • Une table est un ensemble d'entités complexes structurées de la même manière (on peut avoir autant de tables que l'on souhaite, avec des structures différentes)
  • Une colonne de cette table représente une donnée simple
  • Une ligne représente une seule entité complexe

Il existes plusieurs types de données simples (texte, nombre, date, etc...), dont certaines que l'on utilisera comme identifiants pour relier des entités (lignes) de plusieurs tables entre elles afin de leur donner plus de sens.

Exemple : Un article A1 a comme auteur l'utilisateur U1 et comme lecteur l'utilisateur U2

On parle alors d'un schéma relationnel, car les entités sont mises en relation les unes avec les autres.

Voici quelques exemples de SGBD relationnels compatibles avec SQL :

  • Oracle
  • MySQL
  • PostgreSQL
  • SQL Server
  • MariaDB
  • ...

Les bases NoSQL

Le NoSQL est une catégorie qui regroupe plusieurs sous-groupes de base de données, car comme son nom signifie, il indique seulement que ces SGBD n'utilise pas le langage SQL pour gérer leurs données.

Certains de ces SGBD gèrent des bases de données relationnelles (structurées ou non), et d'autres des bases de données non-relationnelles (et souvent non-structurées).

Voici quelques-uns des SGBD NoSQL les plus populaires, avec leur type respectif :

  • Redis (clé-valeur, ni structuré ni relationnel)
  • MongoDB (documents, ni structuré ni relationnel)
  • Neo4J (graphes, non-structuré mais relationnel)
Si vous voulez découvrir Redis, je vous invite à lire mon article dédié !

Les bases de données non-relationnelles sont (en général) plus rapide en lecture et en écriture que les bases relationnelles, justement dû à l'absence de relation, et donc de vérification de ces dernières.

Cette rapidité est souvent la raison pour laquelle un projet va plutôt utiliser une base NoSQL, mais une base de données relationnelle reste incontournable dès lors que votre schéma de données contient des relations.

En conclusion

On parle de base de données pour une instance, sinon on parlera plutôt de Système de Gestion de Base de Données (ou SGBD).

Un SGBD peut prendre différentes formes tout comme les données stockées à l'intérieur et la structuration des requêtes pour gérer ces données.

Il existe le langage SQL pour gérer envoyer et demander des informations structurées issues de bases de données relationnelles, mais toutes les bases de données relationnelles ne fonctionnent pas forcément avec SQL.

Il n'y a pas de définition précise de ce qui peut être appelée une base de données ou non, mais on considère qu'une normalisation de la manière de gérer les données, ainsi que la possibilité de récupérer/modifier une quantité très importante de données sont les deux principes minimums qui différencie un SGBD d'un moyen de stockage de données plus basique, comme un fichier.

On choisira plutôt de stocker des données qui n'évoluent pas dans un fichier (configuration par exemple), et les données dynamiques dans une base de données !

J'espère que cet article vous aura été utile, et à bientôt sur le blog !

Les articles les plus populaires du blog

Envie de continuer à lire des articles autour du développement web (entre autres) ? Voici la sélection des articles de mon blog les plus lus par la communauté !

Voir la sélection 🚀

Recevez les articles de la semaine par e-mail pour ne rien manquer !

S'abonner à la newsletter 📧

À propos de l'auteur

Hello, je suis Nicolas Brondin-Bernard, ingénieur web indépendant depuis 2015 passionné par le partage d'expériences et de connaissances.

Aujourd'hui je suis aussi coach pour développeurs web juniors, tu peux me contacter sur nicolas@brondin.com, sur mon site ou devenir membre de ma newsletter pour ne jamais louper le meilleur article de la semaine et être tenu au courant de mes projets !


Photo d'illustration provenant de Pexels