Dossier : Quand choisir MySQL ou NoSQL ?
0De plus en plus, on voit une division entre les pro-MySQL et les pro-NoSQL. Si MySQL est le plus utilisé historiquement, NoSQL (Not Only SQL) se développe dans le monde du web. Pour la plupart des développeurs, MySQL est déjà une technologie connue et NoSQL semble représenter un « Eldorado » de part sa légèreté et surtout parce qu’il aurait été pensé pour le web. Mais d’où vient cet engouement pour NoSQL ? Cela vaut-il vraiment le coût de se lancer dans cette technologie ? Nous commencerons par voir ce qui différencie ces deux systèmes et nous verrons dans quelles conditions il vaut mieux utiliser une technologie plutôt que l’autre. Petite précision avant de commencer : quand on oppose MySQL et NoSQL, on oppose surtout deux schémas de pensée différents : MySQL sera apparenté aux bases de données relationnelles et NoSQL aux bases de données non-relationnelles. À l’intérieur de la famille NoSQL, il y a beaucoup d’organisation de bases différentes (orientée documents comme MongoDB ou CouchDB, orientée graphe comme Neo4J, etc.).
MySQL et les bases relationnelles
MySQL est le plus connu et utilisé des SGBD. Il repose sur le modèle relationnel : des tables ont des enregistrements , et ces tables peuvent avoir des relations. Ceci a l’avantage de pouvoir lier très facilement des enregistrements d’une table à l’autre (par exemple, l’utilisateur n°27 a ses informations enregistrées sur la table « users » et s’il achète quelque chose, son identifiant sera consigné dans la table « commands » pour savoir que c’est bien lui qui a commandé tel produit dans la table « products » et etc.). De plus, lors des enregistrements, les transactions sont soumises aux contraintes ACID (atomicité, cohérence, isolation et durabilité), ce qui signifie qu’un enregistrement incomplet ou incorrect ne sera pas enregistré en base. De quoi sérieusement limiter les erreurs ! MySQL permet ainsi de facilement structurer les informations et de les réutiliser avec aisance. Finalement, MySQL est un système où l’intégrité des enregistrements est pris en charge par le logiciel et le risque d’erreurs est donc peu élevé.
NoSQL : nouvelles idées pensées pour le web
Pourtant, MySQL pose un problème dans le domaine du web : s’il est extrêmement pratique de manière générale dans tout environnement informatique, les contraintes inhérente à l’outil font qu’il est parfois ardu (pour le serveur) de trouver l’information dont on a besoin, surtout quand des dizaines de milliers de personnes cherchent à accéder à une information. Une information à chercher en base peut être coûteuse en termes de ressources. C’est dans cette optique qu’a été pensé le NoSQL : plutôt que de s’appuyer sur des contraintes lourdes et consommatrice de ressources, on va se concentrer sur l’accès direct à l’information car c’est finalement ce que recherche l’utilisateur. Inspiré tout d’abord des annuaires, NoSQL cherche donc à mettre en avant la lecture des données avant tout. Le résultat ? Une scalabilité immédiate car pour augmenter la performance de la base, il « suffit » d’acheter un serveur supplémentaire en parallèle. NoSQL est donc un modèle de BDD adapté au web, où l’utilisateur et l’accès à l’information sont mis en avant. Logiquement, ces types de base vont continuer à se développer dans le futur et acquérir de plus en plus d’utilisateurs.
Alors tout le monde doit se mettre au NoSQL ?
Cela dépend des cas. Car même si ces nouveaux BDD ont certains avantages réels, il faut prendre en compte certaines choses avant de se lancer : – MySQL est loin d’être mort, il continue d’évoluer et justement dans le sens de la scalabilité/rapidité d’accès en lecture. De plus il suffit très bien dans certains cas où l’utilisateur ne recherche pas la vitesse à tout prix. – NoSQL demande un niveau de conception supérieur, dans le sens où l’on doit très bien penser en amont à comment on va structurer l’information et s’assurer qu’elle arrive jusqu’au serveur sans être corrompue. Finalement, comme le dit Dare Obansajo dans son blog, les BDD relationnelles, c’est comme avoir une voiture avec transmission automatique et les BDD non-relationnelle une transmission manuelle : si tout est fait automatiquement pour les premiers, c’est à nous de faire attention avec les seconds. Il va même jusqu’à dire que le NoSQL n’est pas une fatalité dans le web : tout le monde n’est pas Google / Amazon et n’a pas forcément besoin de passer par le NoSQL pour avoir de bonnes performances … Pour résumer, il faut savoir ce qu’on veut faire : est-ce que l’accès à une information doit être rapide ? Si oui, il vaut mieux privilégier NoSQL. Est-ce que notre client a besoin de stocker de grandes quantités de données pour les réutiliser de temps à autre ? À ce moment-là, MySQL semble plus adapté. Voici aussi un lien pouvant vous aider à choisir la meilleure solution pour votre projet : Visual guide to NoSQL systems
Quel est votre avis sur la question ? Préférez-vous utiliser le MySQL ou le NoSQL pour vos projets ?
Sources : Wikipédia, le blog de Dare Obansajo, article sur Slashdot





