Quel est le fonctionnement d’une base de données ?

Quel est le fonctionnement d’une base de données ?

Les bases de données sont devenus l’outil incontournable pour stocker nos données. Leur utilisation s’est démocratisée il y a déjà plusieurs années de ça, mais comment fonctionnent-elles ? Afin de mieux utiliser cet outil à notre avantage, il convient de le comprendre un minimum. Je vais donc aborder en quelques points le fonctionnement d’une base de données.

 

C’est quoi une base de données ?

Une base de données est un outil qui a pour but de collecter et organiser des informations, appelées données. Ces données peuvent concerner des personnes, des produits, des commandes… A la base, une base de données peut simplement être une liste créée via un logiciel de traitement de texte ou une feuille de calcul (excel). Mais au fur et à mesure que cette liste grandit, elle devient de plus en plus compliquée à gérer et de nombreuses redondances apparaissent. On utilise alors des systèmes de gestion de base de données (SGBD), qui répondent à ces problèmes. Pour faire simple, le SGBD est un logiciel communiquant avec la base de données sous forme de requêtes.

 

Comment sont modélisées les données à notre échelle ?

Une base de données peut être vue comme un conteneur, celui-ci pouvant contenir plusieurs tables. Par exemple, un système de blog basé sur 3 tables (utilisateurs, articles, commentaires) correspond à une seule base de données. De manière générale, à moins que la quantité d’informations soit très importante ou qu’un site aborde deux thématiques diamétralement opposées, un site n’utilise qu’une seule base de données. De plus, les tables contiennent plusieurs lignes et colonnes. Les colonnes représentent le type d’informations présentes, alors que les lignes représentent une entrée d’informations.

table-phpmyadmin

Ci-dessus, une capture d’écran d’une table obtenue sur phpMyAdmin, un SGBD que je vous conseille au tout début. Des centaines de tutoriels existent à son sujet, et il a l’avantage d’être gratuit. Vous pouvez créer, modifier, supprimer des champs, des tables, des bases de données et en gérer les permissions. Vous pouvez également directement exécuter une requête SQL, comme dans la plupart des SGBD.

 

Comment sont stockées les données en interne ?

On approche un peu plus du fonctionnement d’une base de données ! La notion de stockage des données fait appel à la notion de complexité temporelle. Cette notion est utilisée afin de déterminer combien de temps (ou plutôt combien d’opérations) prendrait un algorithme à s’exécuter pour un nombre de données spécifique. Les données que nous voyons sous forme de tableau ont une complexité dite de O(n) : consulter n données prendra n opérations.

notion-complexite

En réalité, si les données étaient stockées en tant que simple tableau en interne, les requêtes prendraient beaucoup plus de temps ! Les bases de données modernes utilisent 2 autres types de stockage, en plus des tableaux : les arbres et les tableaux en hashs.

Les arbres

Une structure en arbre bien optimisée a une complexité de l’ordre de O(log(n)). Lorsque les données sont structurées en arbre, les clés sont ordonnées, et on les compare deux à deux. Au lieu de regarder toute la table, on regarde la partie de la table qui nous intéresse ! Ainsi, le nombre d’opérations est vraiment faible en comparaison des tableaux. Ils sont utilisés notamment dans la sélection des données.

Les tableaux en hashs

Les tableaux en hashs sont utilisés lors des opérations de jointure entre deux tables par exemple. Les données sont accessibles par des clés, qui sont réparties en sous-groupes. Enfin, une fonction est appelée afin de sélectionner ces sous groupes, et regarder leurs valeurs. Un hash efficace contient de nombreux sous-groupes, qui contiennent le minimum de données possibles (idéalement 0 ou 1). Bien que cela ressemble à un simple tableau, les tableaux en hashs permettent d’isoler efficacement les données. Les sous-groupes sont indépendants les uns des autres et on peut sélectionner facilement la clé que l’on souhaite.

 

Afin d’illustrer mes propos, un petit exemple. Imaginons que notre algorithme doit traiter 1 000 000 d’éléments (ce qui n’est pas tant que ça pour une base de données):

  • Avec une complexité de O(1) (hash), l’algorithme nous coûtera une seule opération.
  • Avec une complexité de O(log(n)) (arbres), l’algorithme nous coûtera 14 opérations.
  • Avec une complexité de O(n) (tableaux), l’algorithme nous coûtera 1 000 000 opérations.

Les SGBD optimisent donc les requêtes afin d’être les mieux adaptées : si la différence est négligeable, ils utiliseront des tableaux, simples à implémenter. Plus le nombre d’opérations à traiter augmentent, et plus ils devront se diriger vers les arbres, puis les tableaux en hashs.

 

Organisation d’une base de données

Une base de données est organisée en plusieurs composants qui interagissent entre eux. On peut séparer ces composants en 4 parties :

Les composants principaux : gestion de la sécurité, du système de fichiers, du client, des processus, du réseau et de la mémoire.

La gestion des requêtes : exécution, optimisation, réécriture et analyse des requêtes.

La gestion des données : gestion des transactions, du cache et de l’accès aux données.

Des outils divers : gestion des sauvegardes, de l’administration

Voici un petit schéma récapitulatif :

organisation-donnees

Voici en 4 grands points, le fonctionnement d’une base de données. Si vous souhaitez approfondir le sujet, je vous invite à consulter cet article (en anglais).

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *