Quand et pourquoi utiliser une base de données NoSQL? Introduction Les bases de données NoSQL sont devenues un sujet très à la mode dans le milieu du développement web. Il n est pas rare de tomber sur des articles les présentant comme étant la solution ultime à tous les problèmes rencontrés par le développeur web, qu il s agisse de performance ou encore de montée en puissance. Cet enthousiasme trouve sa source dans les nombreuses qualités intrinsèques des grands noms du NoSQL, mais un certain nombre de points sont à considérer avant de foncer tête baissée dans le choix d une solution de stockage non relationnelle. En effet, si les systèmes de stockage relationnels sont utilisés depuis tant d années, c est bien parce qu ils possèdent aussi de nombreuses qualités. L une des raisons les plus fréquemment invoquée concerne le gain supposé de performances dû au passage d une base de données relationnelle à une base de données NoSQL. Dans la pratique, un gain de performance est observé lorsque la charge ou la quantité de données devient trop importante pour une utilisation classique d un système de stockage relationnel. En général, le gain de performances est alors dû au fait qu il est beaucoup plus aisé de répartir la charge et les données sur plusieurs serveurs. Il est important de noter qu avec une application et un design relationnel bien construit, les limites des systèmes relationnels ne sont pas facilement atteintes. Il faut compter plusieurs centaines de requêtes par seconde, avec des ensembles de données contenant soit beaucoup de petites entrées, soit des entrées de taille importante avant d arriver aux limites d une base de données relationnelle. Avantages L intérêt des systèmes de stockage NoSQL réside surtout dans les choix d architecture logicielle qui ont été pris lors de leurs conceptions. Parmi les raisons principales qui ont mené à la création de ces systèmes, on retrouve surtout deux points principaux : La possibilité d utiliser autre chose qu un schéma fixe sous forme de tableaux dont toutes les propriétés sont fixées à l avance ; La possibilité d avoir un système facilement distribué sur plusieurs serveurs et avec lequel un besoin supplémentaire en stockage ou en montée en charge se traduit
simplement par l ajout de nouveaux serveurs. Les vraies raisons qui devraient vous pousser à choisir une base de données NoSQL devraient donc être directement liées ou découler des deux points énoncés ci-dessus. Inconvénients Il faut néanmoins être conscient que les avantages apportés par ces systèmes ne sont pas sans contreparties, aucun système n étant parfait. Les principaux inconvénients apportés par les choix de design des NoSQL sont les suivants : Le schéma flexible apporte une plus grande liberté au développeur et lui permet de stocker de façon optimale des ensembles de données dont les entrées peuvent être très disparates. Mais en contrepartie, le langage permettant d effectuer des requêtes vers le système NoSQL est beaucoup moins riche et la complexité intrinsèque de la requête est déplacée du SQL vers la logique de l application elle-même ; La distribution aisée de l ensemble des données et des requêtes permet d éviter d avoir à acquérir un serveur hors de prix afin d'accommoder le nombre croissant de requêtes ou de données. Il s agit de la stratégie mise en place par Google, qui préfère utiliser un grand nombre de serveurs à bas prix plutôt qu un nombre plus restreint de serveurs très chers afin d économiser de l argent. Ici, la contrepartie se situe au niveau des propriétés de consistance des données. En effet, les systèmes NoSQL les plus populaires ne respectent pas l ensemble des propriétés A.C.I.D. comme le fait un système relationnel classique. Cela se traduit en pratique par un effort supplémentaire du développeur dans certains cas pour s assurer de la cohérence des données. Conclusion Les bases de données NoSQL ne sont donc pas la solution miracle pour répondre à toutes les problématiques de stockage sur le web ou ailleurs. Il est surtout très important de bien comprendre ce que le choix d une base de données de ce type va avoir comme conséquences en terme d architecture logicielle et complexité de développement. Dans un prochain article, je présenterai différentes bases de données NoSQL populaires ainsi que leurs spécificités afin de fournir une base simple pour que vous puissiez faire le bon choix parmi elles.