Partager cet article

Comme plus de 50 000 freelances, recevez des offres de mission tech à la messure de votre talent sur FreelanceRepublik.

Je m'inscris  ➔

Trouver des Freelances

Comme plus de 50 000 freelances, recevez des offres de mission tech à la messure de votre talent sur FreelanceRepublik.

En savoir +  ➔

Derniers articles

FreelanceRepublik

+100 missions tech
par semaine

Je m'inscris  ➔

A la recherche d'un freelance ?

Déposez gratuitement votre projet tech sur FreelanceRepublik

En savoir +  ➔
AccueilMarché de la techSQL vs NoSQL : Différences, applications... Lequel choisir ?

SQL vs NoSQL : Différences, applications… Lequel choisir ?

Opposer et comparer NoSQL et SQL, ça peut être un non-sens pour beaucoup. Cependant, ces deux technologies ont une même finalité – stocker des données – et le font de manière complètement différente. Aussi, les comparer pour pouvoir décider de la façon dont on va gérer nos données, pour un nouveau projet par exemple, est totalement légitime.

Dans cet article, nous allons faire un tour d’horizon de SQL, NoSQL, et comparer les deux pour savoir quel système utiliser et dans quel cas.

SQL, l’ancien

Historique et fonctionnement

SQL, ou Structured Query Language (langage de requête structurée en français), est la plus ancienne des deux technologies. Il s’agit d’un langage permettant de manipuler des données d’une base de données relationnelle.

Pour être plus précis, une base de données relationnelle contient des données sous formes de tables ayant des relations (jointures) entre elles, chaque table étant composée de colonnes, symbolisant une donnée dans une table.

Né dans les années 70, SQL sert donc à exploiter ce type de base de données, via différents mots-clés propres au langage (SELECT, WHERE, FROM, JOIN, etc.)

Schéma d'une base de données relationnelle SQL
Modèle d’une base de données relationnelle

Exemple

Prenons l’exemple d’un site e-commerce, comme Prestashop. Pour rester simple, on ne va prendre que deux tables : une table User (utilisateur) et une table Cart (panier).

On aura donc ces deux tables, avec dans chacune des colonnes qui leur seront propres. Dans la table User, on aura par exemple un identifiant unique, un nom, un prénom, une adresse mail, etc. Alors que dans le Cart, on pourrait avoir le prix total, la TVA, etc.

La relation entre ces deux tables serait une colonne dans la table Cart reliant Cart et User. Ça serait par exemple l’identifiant unique de l’utilisateur qui pourrait être stocké dans le Cart, via ce qu’on appelle une clé étrangère.

SQL, avantages et inconvénients

L’utilisation de SQL et des bases de données relationnelles vient avec des avantages, mais aussi des inconvénients. En voici une liste non exhaustive :

Avantages

  • Stockage optimisé (car pas de duplication des données – en théorie) ;
  • Stabilité de la techno et du langage, de part l’ancienneté.

Inconvénients

  • Modèle rigide, difficile à modifier une fois la base de données entièrement définie ;
  • Demande une certaine maitrise et expérience du langage en lui-même.

Les principaux SGBD

Parmi les principaux SGBD (systèmes de gestion de base de données) SQL, on retrouve MySQL, PostgresSQL et Oracle.

NoSQL, le petit nouveau

Historique et fonctionnement

Le NoSQL est lui plus récent. Signifiant Not Only SQL (pas seulement SQL), ou tout simplement No SQL, cette famille de SGBD est née autour des années 2010.

Le but du NoSQL est, comme son nom l’indique, de se passer du langage SQL, et de manipuler des données sous un autre format que via des bases relationnelles.

En clair, ici on n’utilise plus de tables liées entre elles, ni de colonnes. On parlera plutôt de stockage sous forme clé-valeur (comme on en a l’habitude dans le localStorage JavaScript), ou de documents. Le but, c’est de pouvoir stocker et récupérer toutes les données dont on a besoin au même endroit, sans avoir à passer par des relations entre les tables.

Techniquement, les valeurs sont (souvent) stockées au format JSON et peuvent être récupérées sans avoir à faire appel à des requêtes SQL contenant jointures et conditions.

Exemple

Si on reprend notre exemple de site e-commerce, la façon dont les données sont stockées est radicalement différente. Ici, pas de table, pas de colonnes. À la place, on pourrait retrouver un objet JSON (ou document), qui contient à la fois les données de l’utilisateur et son panier, sans avoir besoin d’un attribut pour lier ces deux éléments.

Par exemple, un objet user aurait comme valeur toutes les données le concernant (nom, prénom, etc.) mais également tout ce qu’il a dans son panier.

NoSQL, avantages et inconvénients

L’utilisation des base de données sous forme de stockage de documents, ou de clé-valeur, possède elle aussi des avantages et des inconvénients.

Avantages

  • Simplicité d’apprentissage ; ce n’est pas un langage complet à apprendre ;
  • Modèle de données flexible (car non relationnel) ;
  • Stockage sous format JSON, qui peut directement être interprété dans le code du développeur.

Inconvénients

  • Parfois trop permissif, comparé à SQL (notamment au niveau du typage de SQL qui ajoute une couche de validation de format).

Les principaux SGBD

Parmi les principaux SGBD NoSQL, on retrouve MongoDB, CouchDB et Redis.

Comparaison SQL vs NoSQL

Image de comparaison de base de données SQL et NoSQL

Pour quelles utilisations ?

Maintenant qu’on en sait un peu plus sur ces deux différentes technologies de gestion de données, voyons dans quels cas utiliser l’un plutôt que l’autre.

Quand utiliser SQL et les bases relationnelles

Si vous avez besoin (ou envie) d’une base structurée, segmentée, SQL est probablement une meilleure solution, car c’est le but d’une base de données relationnelle.

De même, si la validité et le typage de vos données sont très importants, il vaut mieux se diriger vers SQL, qui impose un typage des colonnes (int, string, bool, etc.).

Si le projet que vous souhaitez développer doit faire beaucoup d’écriture de données sur des éléments particuliers, SQL est plus adapté. Notamment car cela permet de modifier une ligne spécifique d’une table par exemple, et non pas d’intervenir sur un document entier pour modifier une donnée.

Quand utiliser NoSQL ?

L’utilisation de NoSQL est recommandée pour les bases de données avec un schéma qui n’est pas vraiment spécifique. En effet, la structure d’un objet JavaScript n’étant pas figée, on peut la modifier à la guise, avec moins de risques de provoquer des erreurs en cascade.

Lorsqu’on doit faire beaucoup de requêtes en lecture, NoSQL est aussi avantagé, une collection récupérée via une seule requête pouvant contenir toutes les données dont on a besoin ; pas besoin de faire de multiples jointures sur plusieurs tables pour récupérer une collection de données.

Tableau récapitulatif des différences entre SQL et NoSQL

On a vu une rapide comparaison fonctionnelle, mais si on veut rentrer dans les détails, les différences entre les deux technologies sont plus importantes. Voici un tableau récapitulant celles qu’on a vues et en exposant de nouvelles :

Élément de comparaisonSQLNoSQL
TypeLes bases de données SQL sont basées sur le relationnelLes bases NoSQL sont majoritairement basées sur un format de document et/ou de couples clé-valeur
SchémaSchéma prédéfini et statiqueSchéma dynamique
Année de créationAnnées 1970Fin des années 2000
Open SourceOpen Source (ex : MySQL) ou sous licence (ex : Oracle)Open Source
Langage de requêteStructured Query Language (SQL)Pas de langage défini
StockageBesoin d’un stockage spécialiséPeut être stocké sur un simple fichier
Exemples de SGBDMySQL, Oracle, PostgresSQLMongoDB, CouchDB, Redis, Firebase

Conclusion : Lequel choisir ?

Comme on l’a vu, NoSQL et SQL (ou plutôt, les bases de données relationnelles), sont toutes les deux des technologies permettant de stocker, récupérer et manipuler des données. C’est plus ou moins le seul point commun qu’elles ont, tant ces deux technos sont différentes.

NoSQL, plus récent, tend à être de plus en plus utilisé, boosté par plus de simplicité d’utilisation et de manipulation. SQL tient cependant bon et reste toujours plus utilisé que son cousin, notamment car cette techno est présente depuis plus longtemps.

Bref, si vous vous posez la question sur quelle techno partir lorsque vous commencez un projet, voici une réponse simplifiée : si vous n’avez pas ou peu de connaissances avec SQL, commencez directement avec du NoSQL, avec Mongo par exemple. Si vous êtes un expert du SQL, vous pouvez bien évidemment utiliser votre techno favorite, mais essayer autre chose de plus trendy peut être aussi une bonne idée !

Et vous, vous êtes plutôt SQL ou NoSQL ? Dites-le en commentaire !


Voir aussi : Créer une app mobile, quelle techno choisir ?

X

Vous avez des besoins
en recrutement IT ?

Prenez RDV  ➔

Ces articles peuvent vous intéresser

Comment créer un business plan en tant que freelance dans le secteur de l’informatique

Être freelance dans le secteur de l’informatique est un rêve que beaucoup souhaitent concrétiser. Pour autant, nombreux sont les...

Guide Complet du Sprint Planning : Organisation et Astuces

La gestion de projets tech apporte souvent son lot de défis et de challenges. Vous vous sentez submergé par...

Comment choisir le bon logiciel de gestion de données ?

Le volume croissant des données utilisées par les entreprises rend leur gestion de plus en plus complexe. Sans le...

Ne perdez plus de temps à prospecter en vain. Inscrivez-vous gratuitement sur FreelanceRepublik, et recevez de belles offres de missions tech. FreelanceRepublik est gratuit pour les freelances.

Je m'inscris  ➔