Débutant

Quel type de base de données choisir ?

Quel type de base de données choisir ?

L’utilisation d’une base de données est une grande étape à franchir pour un développeur. Car en algorithmique par exemple, on voit comment stocker des données dans un fichier.

Pareil avec son premier langage de programmation. Mais très vite, nous voulons aller plus loin en utiliser une vraie base de données.

Et derrière cette envie, beaucoup de questions surviennent :

  • Quelle est la meilleure base de données ?
  • Laquelle faut-il utiliser ?
  • Pourquoi telle base de données plutôt qu’une autre ?

Tant de questions pour vouloir faire le meilleur choix possible comme pour son premier langage de programmation. Et cet article va vous aider à faire VOTRE choix par rapport à VOTRE parcours.

commitstrip stocker données

Source : https://www.commitstrip.com/fr/2018/04/04/storing-data/

Les différents types de SGDB

Il faut d’abord savoir qu’il existe 2 grands types de systèmes de gestion de base de données (SBGD). Nous avons les bases de données relationnelles et les bases de données non relationnelles.

Base de données relationnelle

On appelle aussi les bases de données relationnelles des bases de données SQL. Et il faut savoir que le SQL (Structured Query Data) est un langage, un langage de base de données.

La disposition des données est sous forme de tableau et on peut créer autant de tableaux que l’on veut et les faire interagir entre eux.

C’est ce qu’on appelle des relations.

C’est grâce à ce langage que l’on peut interagir avec la base de données.

Vous pouvez ajouter, modifier ou supprimer des données. Bien entendu, vous pouvez également lire les données en appliquant des critères de restriction.

Mais ce qui fait la grande force et la spécificité de ce moteur de base de données c’est la possibilité de créer la structure de la base de données. En SQL, on appelle cela des schémas.

Les schémas permettent de définir comment les données seront stockées, le type de données, ce qui est obligatoire et/ou optionnel, etc.

C’est un gage de cohérence, de sécurité et d’intégrité de vos données au sein de votre base de données.

Il existe beaucoup de SGDB SQL dont voici les plus couramment utilisées :

  • MySQL (gratuit et Open Source)
  • PosgreSQL (gratuit et Open Source)
  • Oracle (payant et propriétaire)
  • SQL Server (payant et propriétaire)

Base de données non relationnelle

On appelle aussi les bases de données non relationnelles des bases de données NoSQL (Not Only SQL).

Leur principale différence avec les bases de données relationnelles est qu’elle s’abstienne de la plupart des contraintes que peut avoir le relationnel, à commencer par les schémas.

N’oubliez pas que les schémas définissent la structure de vos données. Si vous ne respectez pas toutes les contraintes du schéma, aucune de vos données ne sera stockée.

Et puisque les données sont agencées sous forme de tableau, ne pas respecter une colonne ne stockera pas votre ligne.

Le NoSQL fait totalement abstraction de tout cela. Vous pouvez stocker les données un peu comme vous le voulez, n’importe comment même si ce n’est pas conseillé de le faire bien sûr.

Mais par définition, vous pouvez le faire.

Il y a plusieurs types de bases de données NoSQL : les orientées documents (MongoDB, CouchDB), les clés-valeurs (Redis, Memcached) et les orientées colonnes (ElasticSearch, BigTable).

Dans les bases de données NoSQL il n’y a pas de schéma. Par exemple dans MongoDB, on peut stocker un document puis un autre document complètement différent dans la même collection.

En clair, chaque document peut avoir d’une certaine façon son propre schéma ce qui rend l’utilisation et la pratique du NoSQL beaucoup plus souple, simple et rapide à utiliser.

Bien entendu, vous faites complètement l’impasse sur l’intégrité de vos données ainsi que de leur sécurité et de leur cohérence même s’il est possible de pallier avec votre langage de programmation.

Ce que vous devez retenir de ces types de SGBD

  • Base de données relationnelle (SQL)
    • Avantages
      • données structurées
      • cohérente
      • sécurisée
      • Possibilité de gérer des droits d’accès différents à la base de données et aux données
      • Base de données scalable
    • Inconvénients
      • Pas adaptée aux données non structurées
      • Le fait de structurer ses données peut rendre difficile et très complexe l’évolution de votre base de données dans le futur
      • Le fait de connaître le langage SQL pour pouvoir utiliser ce moteur de base de données
  • Base de données non relationnelle (NoSQL)
    • Avantages
      • Non structurée et semi-structurée
      • Flexibilité de votre base de données et de vos données
      • Rapidité de prise en main
      • Rapidité plus forte dans l’écriture des données que le relationnel
    • Inconvénients
      • La sécurité et la cohérence des données sont sacrifiées même si une équipe de développeur peut le minimiser, il y aura toujours un risque.
      • le regroupement et le croisement de données sont plus difficiles à réaliser qu’en SQL

Les 2 critères de choix d’une base de données

Je vous ai expliqué les 2 types de bases de données en vous citant leurs forces et faiblesses. Mais alors, comment choisir un type de base de données par rapport à un autre. Il suffit de se poser les bonnes questions.

Votre projet

Quels sont les enjeux de votre projet ?

Que recherchez-vous spécifiquement pour les données de celui-ci ?

Si vous recherchez une intégrité de vos données c’est-à-dire une cohérence, une sécurité et de pouvoir les structurer de telle sorte qu’il n’y ait pas de redondance dans vos données et de pouvoir créer des liens alors il sera très conseillé d’utiliser une base de données relationnelle.

Si par contre vous cherchez à faire un prototype d’application, que vous n’avez pas besoin de structurer forcément vos données ou encore que vous voulez un accès et un stockage rapide des données alors il sera très conseillé d’utiliser une base de données non relationnelle.

Bref, vous l’aurez compris !

C’est tout d’abord votre projet et ses enjeux qui vous orienteront plus vers un type de base de données plutôt que l’autre.

Le plus simple étant de confronter les enjeux du projet aux avantages de chaque type de base de données.

Votre langage de programmation

Une fois que vous savez quel type de base de données vous allez utiliser, vous allez devoir choisir la base de données à utiliser. Comme je vous ai montré pour l’un comme pour l’autre il y a plusieurs acteurs sur le marché.

Je vous conseille de vous renseigner sur ceux que je vous ai cités pour connaître précisément leurs avantages et leurs inconvénients, mais ce qui peut aussi vous aider à faire un choix c’est votre langage de programmation que vous comptez utiliser pour votre projet.

Même si techniquement la plupart des bases de données fonctionnent avec la plupart des langages, il faut tout de même reconnaître que certains d’entre eux fonctionnent mieux avec certains langages de programmation.

Par exemple, il est possible de faire du MongoDB avec PHP, mais la syntaxe d’écriture en PHP est vraiment spéciale et pas du tout agréable (j’en sais quelque chose).

Alors qu’avec un langage de programmation comme JavaScript/Typescript cela va tout seul. De même, le couple PHP/MySQL est assez efficace (en plus d’être très connu).

Essayez de sonder les retours d’autres développeurs sur les couples bases de données/langages de programmation. Cela vous facilitera la vie en plus de votre choix de base de données pour votre projet.

Epilogue

Le dernier conseil que vous pourrez vous donner c’est de ne pas s’enfermer avec un type de base de données, mais d’essayer les bases de données relationnelles et non relationnelles.

C’est important de connaître les forces et faiblesses de chacun dans la pratique.

De même, si vous êtes en apprentissage, commencez par une base de données relationnelle.

Pourquoi ?

Pour les mêmes raisons que de commencer par un langage de programmation typé plutôt que non typé. Cela vous donnera de bons réflexes et de bonnes pratiques pour la suite de votre carrière de développeur.

Partager ce contenu
  • 9
    Partages

Leave a Comment

Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur comment les données de vos commentaires sont utilisées.