SQL vs NoSQL : quelle techno choisir ?

-

Trouvez votre prochaine mission freelance !

Rejoignez FreelanceRepublik, et recevez des offres de missions tech à la mesure de votre talent : +100 nouvelles missions par semaine !

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

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

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

Comme on l’a vu, NoSQL et SQL (ou plutôt, les base de données relationnelles), sont tous 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 ?

Alexandre Griseyhttps://nomadlife.fr/
Content Writer et Digital Nomad, j'écris des articles et du contenu autour des thématiques de la tech, du voyage et du monde du freelance.

Partager cet article

Missions FreelanceRepublik

Les derniers articles

Missions Freelance !

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

Newsletter

Le podcast

Le podcast la voix du freelance donne la parole aux freelances.

Freelances, gagnez du temps !

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.

Vous devriez lire également ces articles

1 COMMENTAIRE

  1. MongoDB, un BD No-Sql, est l’avenir des Base de Données.
    Elle offre toute une panoplie de de fonctions fort désirables en plus d’éviter à la base l’approche SQL.
    1. Les applications Web se développent avec aisance volontaire et expresse
    2. les données sont stockés en fichiers – comme le CSV – par le traitement massif et en parallèle de serveurs
    3 MongoDB se sert du langage Json et Bson. Celui-ci est une sérialisation de Json
    4 Bson indexe les documents dits ‘nested’
    5. MongoDB a relevé le défi de l’évolution quotidienne à grande échelle des données Web; le sharding
    C’est une méthode de distribution à très haut vitesse des données aux divers serveurs tout en comprenant l’ajout si necessaire.
    6. L’ajout de serveurs apporte la caractéristique de l’évolution horizontale.
    7. Chaque ‘shard’ est une partie de la BD et constitue une BD en soi. D’ou un processus de reconnaissance entre Shards qui forment une seule BD
    8. La reconnaisse de la BD ultime exige des opérations du routeur de requetes, du serveur des applications et configutions, ce qui équilibrent les charges de données
    9. MongoDB exerce des requetes ad hoc
    10. MongoDB n’a pas de schémas et donc la rend beaucoup plus flexible que les tables-SQL traditionnelles
    11. MongoDB fait office de système de fichiers qui y gèrent les charges et la distribution explicite des serveurs de réplication exacte des données.
    12. La réplication réfère à des données distribuées sur au moins 3 ‘nodes’ et qui veillent à la sauvegarde du ‘node’ primaire.
    13. SI celui-ci déchoit, l’un des autres sera élu pour remplacer le primaire déchu, le système va toujours fonctionner sans arret aucun

LAISSER UN COMMENTAIRE

S'il vous plaît entrez votre commentaire!
S'il vous plaît entrez votre nom ici