Josselin Dionisi - Développeur indépendant

Base de donnée, principes et évolution, avec quelques exemples

ionicons-v5-k Josselin Dionisi 29 août 2022
1434 lectures Niveau :

Allez c’est la reprise, et comme tous les développeurs vous avez eu un millier de nouvelles idées pendant vos vacances (mais si ne faites pas semblant). Alors je vous propose de parler du point le plus crucial quand vous en êtes au stade de l’idée et que vous allez passer à la conception de votre projet de méga start-up incroyable : la base de données.

Quasiment tout ce que vous utilisez aujourd’hui sur Internet est relié à une base de données. Comme son nom l’indique, son rôle est de stocker des données diverses et variées afin de mener à bien les actions d’un site internet ou d’une application.

Vous vous êtes forcément tous déjà connectés quelque part et pour que votre login fonctionne il faut forcément que votre identifiant et votre mot de passe (pas en clair hein !) soient stockés quelque part. Pour que l’on se “souvienne de vous”. 

La base de données c’est donc la mémoire d’un site ou d’une appli. Sans elle il n’y aurait aucune trace d’activité passée ou presque.

“Ah ouais c’est super important comme organe du coup ! 😲”

Oui et c’est bien pour ça que lorsque l’on pense un nouveau projet ou une évolution, c’est globalement la première chose que l’on regarde en priorité.

Il existe plusieurs types de bases et aussi plusieurs façons d’en créer. De la même manière que les langages de programmation, tout dépend des besoins et de l’évolution du projet.

Les bases de données relationnelles

Etant donné que c’est le leader du marché je vous en parle en premier. C’est un système de base de données (SGBD) relationnel, c’est à dire qu’il fonctionne avec des relations entre type de données.

Vous pouvez vous représenter ça sous forme de tableaux qui se connecteraient les uns avec les autres. Par exemple un tableau d’utilisateurs avec toutes leurs infos et un tableau d’articles avec tout leur contenu. Chaque article ayant été écrit par un utilisateur, il y a une relation entre les deux tableaux. 

“Ok super mais à quoi ça sert d’inscrire les relations dans la base de données ? On pourrait très bien avoir des articles et des utilisateurs chacun de leur côté non ?”

Dans les faits oui c’est possible, mais si vous arrivez à ce résultat lorsque vous concevez votre projet c’est qu’il y a un problème quelque part. En effet comment retrouverez-vous par la suite qui a écrit quoi ? Ou à l’inverse qu’est-ce qui a été écrit par qui ? Et oui, car chaque relation a un double sens qui ne donne pas le même résultat. 

Pour la faire courte : un utilisateur peut écrire plein d’articles alors qu’un article n’aura qu’a priori un seul auteur. Si vous enregistrez tout séparément et que vous listez les articles vous n’aurez alors que leur auteur propre, probablement des doublons etc et il vous sera impossible de savoir facilement par exemple tous les articles qu’un utilisateur a écrit. 

La conception de la base de données est donc très importante dans un projet non seulement pour le fonctionnement basique mais aussi pour les performances futures et de nos jours pour extraire des données précieuses facilement.

Mysql

Leader sur le marché depuis de nombreuses années, Mysql est la référence en matière de système de base de données dans le monde du développement web. Il utilise ce fameux principe de base de données relationnelle que l’on vient d’évoquer et fonctionne à la façon d’un client-serveur. 

Comme son nom l’indique il utilise le langage SQL pour interpréter des requêtes qui s’occuperont d’extraire les données voulues de la base.

Pour en savoir plus, leur site officiel couvre pas mal de sujets de fond : 

Pourquoi MySQL?

MariaDB

MariaDB est un “fork” de Mysql, c’est à dire que tout son fonctionnement est basé sur MySQL et ce système reprend donc tous ses principes fondamentaux. (Fork vient du vocabulaire de Git et signifie créer une branche sur laquelle on va développer une couche supplémentaire de code).

Le principal avantage de MariaDB est sans doute sa performance qui va au-delà de celle de MySQL, ce qui semble assez logique vu qu’il a été créé pour des projets plus modernes dans l’idée. En effet, il existe une mise en cache relativement conséquente ainsi qu’une indexation plus performante. Son caractère open-source en fait aussi un argument de choix pour certains développeurs.

PostgreSQL

Sans doute l’outil le plus robuste et évolutif en matière de bases de données web. En effet Postgre peut être utilisé par plusieurs langages, peut contenir une multitude de types de données, peut stocker des fonctions et autres scripts directement implémentés par les utilisateurs. Oui vous pouvez donc directement toucher d’une certaine manière au code et au fonctionnement interne du SGBD. Le tout est couplé avec une facilité de sauvegarde très ergonomique et la possibilité de stocker de lourds volumes (fichiers images, vidéo, etc).

Vous comprendrez donc bien qu’il n’est pas étonnant de le retrouver tout juste derrière Mysql sur le marché. Son concurrent a en effet un caractère historique et très répandu qui en fait sa place de leader mais Postgre attire beaucoup de nouveaux développeurs et projets pour tous ses atouts indéniables. 

On vous en parlait déjà ici, Mysql n’est effectivement pas fait pour tous les usages 😛 : 

Bon, voilà pour les principaux SGBD (système de gestion de base de données) que vous devriez être amené à voir ces prochaines années. Mais en terme de conclusion il est difficile à dire lequel d’entre eux est meilleur qu’un autre. C’est d’ailleurs une conclusion que l’on retrouve souvent dans notre domaine, tout simplement parce que les outils sont développés pour gérer certains types de cas.

Les bases de données NoSQL

À la différence des systèmes listés ci-dessus, les bases de données NoSQL, n'utilisent pas du SQL (structured query language) pour retrouver les données, mais ici on parle de "document".
Arrivé avec la mouvance de NodeJS (JavaScript), on les retrouve souvent de nos jours, leurs utilisations est très déroutante pour un développeur qui a l'habitude des bases de données utilisant SQL.

MongoDB

Ici, et encore bien plus que pour MariaDB on va parler de performances ! En effet MongoDB est un système beaucoup plus rapide sur certains points. Notamment l’enregistrement de données car au contraire de Mysql et ses dérivés, il est possible d’enregistrer plusieurs données à la fois au lieu de les traiter une par une.

Vous vous en doutez le gain de temps est donc assez conséquent pour les gros traitements et c’est ce qui en fait un choix privilégié lorsque l’on conçoit un projet de grande envergure dès le départ.

Dans l’Internet moderne, MongoDB a su faire ses preuves notamment dans le monde des applications mobiles. Leur propension a insérer et mettre à jour des données quasiment à chaque seconde a nécessité un système pouvant répondre à autant de charge, de requêtes et de synchronicité. 

Pour choisir votre système et concevoir votre base de données il va donc falloir vous poser plusieurs questions : 

  • Est-ce que mon projet va stocker beaucoup de volume de données ? Est-ce qu’il va stocker beaucoup de types de données différents ?
  • Est-ce que je vais avoir besoin de rapidement faire évoluer ma base (ajout de données, de types, de volume)
  • Est-ce que ma base va être relativement statique ou au contraire constamment active et va devoir répondre très rapidement ?

En suivant ces points et en relisant ce que chacun fait vous devriez être en mesure de pouvoir vous orienter au mieux pour votre projet.

Bien sûr rien n’est figé dans le marbre, surtout dans nos métiers et vous pourrez être confronté un jour à un changement de ligne directrice plus ou moins radical. 

En d’autres termes, si votre start-up décolle à plusieurs millions d’utilisateurs en 3 mois, va falloir revoir votre copie. 😀

Comme d’habitude n’hésitez pas à vous faire part de commentaires, compléments, suggestions sur les articles. En attendant on se dit à la prochaine !