SQL vs NoSQL : perspective des langages de programmation

Le débat SQL versus NoSQL est en train de devenir un rite de passage pour les administrateurs de bases de données, mais également pour tous les geeks. Jeff Cogswell, auteur chez O’Reilly, a récemment contribué à mettre de l’huile sur le feu sur Slashdot.
Bien que les commentaires de l’article mettre portés sur les points résumés du débat SQL vs NoSQL par Cogswell, l’article en lui-même tente de se concentrer sur la façon dont la programmation implémente les deux langages dédiés aux bases de données, SQL et NoSQL, jusqu’à les comparer, et apporter des exemples concrets.
Malheureusement, la tentative de Cogswell de voir un débat intéressant sur les bibliothèques des langages et des paradigmes de programmation était semble t-il trop demandé…

Les langages de programmation sont des outils. Les programmes prennent les données, les manipulent, et ce afin d’en créer de nouvelles plus précieuses. Ainsi, les bases de données sont essentielles à la réussite d’un programme, puisqu’il s’agit de la persistance de celui-ci ; elles peuvent donc être vues comme le cœur de la programmation.

Ainsi, en replaçant le débat SQL et NoSQL aux langages de programmation est comme débattre sur choisir un couteau ou une cuillère au moment de savoir comment tartiner votre brioche ! Il n’est pas pertinent de savoir quel couvert est le meilleur pour notre sandwich, en supposant que les deux couverts puissent faire le même travail. Les vraies questions tournent autour du beurre d’arachide, de la confiture, et du pain à utiliser !

Jeff a vraiment fait un excellent travail afin de démontrer que le langage de programmation n’est pas vraiment important. Tous les langages de programmation matures ont eu amplement le temps de développer une variété de bibliothèques SQL excellentes. En fait, les langages de programmation infantiles seraient voués à l’échec sans s’ils ne disposent d’une bibliothèque SQL adéquate. Donc, l’avantage va hériter de SQL, même si cet avantage est minime. Comme la base de données NoSQL gagne en popularité, nous devrions disposer de bibliothèques efficaces très prochainement.

Cogswell a choisi le pire exemple NoSQL pour son argumentation ! MongoDB est l’une des meilleures bases de données NoSQL, et ainsi les bibliothèques pour la base de données désormais « populaire » se sont multipliées, avec une fréquence de plus en plus rapide, puisqu’il continue à gagner en popularité.
L’argument aurait été plus adapté et convaincant si Cogswell avait regardé des bases de données NoSQL moins populaires, telles que neo4j, qui ne disposent que de librairies officielles pour Ruby et de Java.
Les exemples de programmation fournis par Cogswell sont du développement Node.js et C#. Ainsi, il aurait eu à utiliser les librairies non officiels et/ou l’API REST de neo4j…

Le débat SQL versus NoSQL sera toujours alimenté dès lors qu’il s’agit d’un projet indépendant. En effet, selon le théorème CAP ou CDP, aussi connu sous le nom de théorème de Brewer, il est impossible sur un système informatique de calcul distribué de garantir en même temps les trois contraintes, cohérence, disponibilité et résistance au morcellement, une base de données NoSQL ou SQL ne sera jamais la bonne solution…

La popularité croissante des bases de données NoSQL est le résultat de nouvelles problématiques et des nouveaux modèles de données, dont les bases de données relationnelles traditionnelles ne permettent pas de correctement représenter.
Même si les bases de données relationnelles auront toujours une place dans la majorité des applications, en tant que développeurs vous devez être conscients sur ce que permettre le NoSQL, ainsi que les options disponibles pour ce dernier, et là où chacune de ces bases de données doivent mettre en exergue votre modèle de données, la combinaison appropriée de SQL et NoSQL fera surface.

Avez-vous déjà opté pour le NoSQL ? Trouvez-vous ce SGBD assez mûr ? Venez partager votre expérience…

Un commentaire pour “SQL vs NoSQL : perspective des langages de programmation”

  1. Fonctionnellement les technos NoSQL sont plus limité, elles ne sont pas pensées pour représenter les données en respectant les « Formes Nomales » (
    http://fr.wikipedia.org/wiki/Forme_normale_(bases_de_donn%C3%A9es_relationnelles) ) qui sont très pratiques pour manipuler / mixer les données entre différentes tables. Leur avantages, c’est leur rapidité à récupérer beaucoup de données, parmi une grosse « table » (l’équivalent des tables en NoSql).

    Bref si je ne sais pas ou je vais (terrain / chemin / routes / autoroutes) je prend un 4×4 qui fait tout (SGBD Relationnel – SQL quoi – et je modélise les données en me rapprochant des formes normales), si je sais que je vais faire que de l’autoroute et que la rapidité est importante pour moi je prend une voiture de sport (NoSQL et je modélise tout à « plat » donc en m’éloignant des formes normales).

    Remarque : Là où le débat commence vraiment, c’est quand on s’apercoit que les SGBD Relationnel avec une modélisation des données « à plat » (en s’éloignant des formes normales) on des performances vraiment très bonnes …

Laissez un commentaire

Commentaires en lien dofollow à partir de 2e commentaire, profitez-en !

XHTML: Vous pouvez utiliser ces balises et attributs: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>