Récemment, on m'a demandé:
Pourquoi NoSQL est-il plus rapide que SQL?
Je n'étais pas d'accord avec la prémisse de la question ... c'est juste un non-sens pour moi personnellement. Je ne vois aucune amélioration des performances en utilisant NoSQL au lieu de SQL. Peut-être SQL sur NoSQL, oui mais pas de cette façon.
Suis-je en train de manquer quelque chose à propos de NoSQL?
Il existe de nombreuses solutions NoSQL autour, chacune avec ses propres forces et faiblesses, donc les suivantes doivent être prises avec un grain de sel.
Mais essentiellement, ce que font de nombreuses bases de données NoSQL, c'est de s'appuyer sur la dénormalisation et d'essayer d'optimiser pour le cas dénormalisé. Par exemple, supposons que vous lisez un article de blog avec ses commentaires dans une base de données orientée document. Souvent, les commentaires seront enregistrés avec le message lui-même. Cela signifie qu'il sera plus rapide de les récupérer tous ensemble, car ils sont stockés au même endroit et vous n'avez pas besoin d'effectuer une jointure.
Bien sûr, vous pouvez faire de même en SQL, et la dénormalisation est une pratique courante lorsque l'on a besoin de performances. C'est juste que de nombreuses solutions NoSQL sont conçues dès le départ pour être toujours utilisées de cette façon. Vous obtenez alors les compromis habituels: par exemple, l'ajout d'un commentaire dans l'exemple ci-dessus sera plus lent car vous devez enregistrer l'intégralité du document avec. Et une fois que vous avez dénormalisé, vous devez prendre soin de préserver l'intégrité des données dans votre application.
De plus, dans de nombreuses solutions NoSQL, il est impossible de faire des jointures arbitraires, d'où des requêtes arbitraires. Certaines bases de données, comme CouchDB, vous obligent à anticiper les requêtes dont vous aurez besoin et à les préparer dans la base de données.
Dans l'ensemble, cela revient à attendre un schéma dénormalisé et à optimiser les lectures pour cette situation, et cela fonctionne bien pour les données qui ne sont pas très relationnelles et qui nécessitent beaucoup plus de lectures que d'écritures.
Ce qui manque à NoSQL, c'est que NoSQl ne peut en aucun cas être comparé à SQL. NoSQL est le nom de toutes les technologies de persistance qui ne sont pas SQL. Les DB de documents, les DB de valeurs-clés et les DB d'événements sont tous des NoSQL. Ils sont tous différents dans presque tous les aspects, que ce soit la structure des données enregistrées, les requêtes, les performances et les outils disponibles.
Donc, si quelqu'un vous pose une telle question lors de l'entretien, cela devrait être la réponse.
Les bases de données "NoSQL" (ou plus précisément: non relationnelles) abandonnent certaines fonctionnalités des bases de données traditionnelles pour la vitesse, mais plus important encore pour l'évolutivité horizontale.
Les caractéristiques manquantes dépendent du produit en béton, en général les propriétés ACID complètes ou même les opérations de jointure ne sont pas prises en charge. C'est le prix de l'augmentation des performances.
Vous avez raison, il serait absurde de le dire dans une déclaration générale. C'est probablement tout le problème; au lieu d'une seule réponse, l'intervieweur s'attend probablement à ce que vous répondiez avec des questions pour vous aider à comprendre quel est le contexte du problème (quel type de données, combien, dans quel environnement d'exploitation, etc.), la solution NoSQL particulière . Ils essaieront de savoir comment vous analysez les problèmes et, en cours de route, vous feront une idée de vos connaissances sur les différentes solutions qui existent.
Les bases de données NoSQL n'ont normalement de sens que si vous concevez vos données autour d'elles.
Si vous avez l'intention de les utiliser simplement comme remplacement de SGBDR, vous obtiendrez peut-être moins de performances plutôt que plus, surtout si vous n'avez pas assez de budget pour payer des serveurs avec de grandes quantités de RAM.
Regardez cet article qui compare l'utilisation de l'espace disque de MySQL avec celle de MongoDB: http://blog.trackerbird.com/content/mysql-vs-mongodb-disk-space-usage
Quelle base de données NoSQL? Quelle base de données SQL? Si quelqu'un vous dit que NoSQL est plus rapide que SQL, vous devez vous éloigner. Ou mieux encore, regardez cette vidéo:
http://www.youtube.com/watch?v=b2F-DItXtZs
Je ne dirai pas que la moitié des affirmations sur NoSQL sont fausses, mais je dirai qu'il y a beaucoup de fanboyisme NoSQL de la part de gens qui ne le comprennent vraiment pas très bien.
SQL a ses limites (bien sûr) mais c'est aussi une technologie très mature, qui est bien comprise, et qui dispose d'un large bassin de développeurs qui savent bien l'utiliser. Je ne peux pas en dire autant de toutes les formes de NoSQL.