Chapitre 5
Les bases de données

Analyse, prise de décision, parcours client, elles sont partout.
Temps de lecture : 5 minutes


Les systèmes informatiques ont besoin de garder en mémoire tout un tas d’informations. Comptes clients, état d’un abonnement ou encore tout simplement le contenu du site.

Ces informations sont stockées via des logiciels que l’on nomme “système de gestion de bases de données”. Un site web d’envergure utilise plusieurs technologies de base de données, chacune spécialisée pour une utilisation particulière. Entre autres :

  • Travail sur d’énormes lots de données.
  • Ou au contraire sur une donnée unitaire.
  • Moteur de recherche.
  • Identification des relations.
  • Stockage de documents et de médias.
  • Accès ultra rapide.

Aujourd’hui, nous allons nous focaliser sur les systèmes de gestion de bases de données relationnelles. Ce sont les technologies les plus utilisées par les développeurs dans leur vie quotidienne. Tu as peut-être déjà entendu parler de MySQL, Oracle, SQL Server ou PostgreSQL.

Construisons une newsletter 💪

Imagine une base de données comme étant un fichier Excel.
Un onglet du fichier représente ce qu’on nomme une “table”.
Une colonne d’une table se nomme un “champ”.
Une ligne d’une table est appelée “tuple”, “entrée”, “ligne” ou “enregistrement”.


Par exemple, si tu veux modéliser dans une base de données la newsletter, les merveilleuses personnes qui s’y sont abonnées et les envois de mail :


Table : chapitre

identifiant titre date_publication contenu
bases-de-donnees Chapitre 5 - Les bases de données 2024-01-05 Bienvenue dans…
frontend-backend Chapitre 4 - Front-end et Back-end 2023-09-10 👋, bienvenue…

Table : abonnement

identifiant email
1 foo@bar.com
2 hello@world.com

Table : mail_envoyé

identifiant_chapitre identifiant_abonnement date_envoi
bases-de-donnees 1 2024-01-05
bases-de-donnees 2 2024-01-06

Tu obtiens deux tables qui représentent des objets concrets : chapitre et abonnement. Chaque ligne se voit attribuer manuellement ou automatiquement un identifiant unique. On le nomme “clé primaire”.

La troisième table, mail_envoyé, utilise ces clés pour mettre en relation les chapitres et les abonnements entre eux. Elle manipule des “clés étrangères”.

Cette façon d’organiser les données explique le nom “base de données relationnelle”.

SQL

Pour manipuler ces tables, nous utilisons le Structured Query Language.

Le SQL, prononcé S.Q.L et anciennement sequel, se veut un langage naturel proche de l’Anglais. Il permet très facilement d’écrire des requêtes pour réaliser les 4 opérations de base du traitement de données :

  • Création. Exemple : quelqu’un s’abonne à la newsletter.
  • Lecture. Exemple : vérifier qui a déjà reçu le chapitre pour ne pas l’envoyer 2 fois.
  • Mise à jour. Exemple : correction d’une faute d’orthographe dans le contenu.
  • Suppression. Exemple : désinscription de la newsletter.

Par exemple, pour obtenir les détails de ce chapitre :
SELECT titre, contenu FROM chapitre WHERE identifiant = “bases-de-donnees”

Facile n'est-ce pas ? 😉
On peut faire des trucs de zinzin en SQL, mais la syntaxe de base reste vraiment accessible à tout le monde.

C’est exactement cette requête qui est jouée si tu affiches la page https://fr.the-tech.guide/post/bases-de-donnees/. L’URL est analysée pour en extraire l’identifiant du chapitre. Il est ensuite injecté dans la requête SQL permettant de construire la page.

La base de données me sert dans ce cas à n’avoir à coder qu’une seule page et à générer automatiquement toutes les variantes.

😱 Et si quelqu’un trafique l’URL dans l’espoir de modifier la requête SQL sous-jacente ?

Ça s’appelle une injection SQL. C’est la faille exploitée dans 90% des hacks de sites.
Chaque utilisation d’une donnée publique aux utilisateurs doit être sécurisée. Tous les jours, des robots tentent aléatoirement des milliers d’injections sur les sites les plus connus.

NoSQL

Les bases de données relationnelles, malgré leur puissance, montrent toutefois des limites sur de gros volumes de données.

L’avènement du Cloud et du BigData a vu émerger de nouvelles technologies catégorisées comme “NoSQL”.

Globalement, on nomme NoSQL les bases de données qui ne sont pas relationnelles. C’est une dénomination super large regroupant tout un tas de technologies.
Fun fact : les technologies NoSQL utilisent souvent le langage SQL ou un dérivé 🤪. Ils ont essayé de rattraper ce nommage moisi en Not Only SQL.

Dans une base NoSQL, les données sont organisées complètement différemment, en tout cas dans le moteur interne du logiciel. Ça permet de les distribuer plus facilement sur différentes machines et donc d’augmenter à l’infini la puissance de calcul et la mémoire disponible.