22 Juin 2015

[NoSQL] Introduction

Le terme NoSQL est largement utilisé et est souvent associé à innovation, performance, le “must have” du développeur. Mais qu’est-ce que le NoSQL? D’où cela vient-il?


Ma première idée est de demander à mon ami “Google”.
01-noSQL - Definition

Illumination! NoSQL veut dire « Not only SQL ». Très bien, continuons.

Remontons le temps jusqu’au début de l’informatique d’entreprise. A cette époque, nos systèmes sont faits pour réaliser des actes de gestion de manières « automatisées ». Pour ce faire, les applications doivent fournir et donc stocker des données pour les terminaux des utilisateurs. Les possibilités d’usage sont limitées et les utilisateurs formés pour être des experts de l’utilisation de ces outils. Les données sont alors conservées dans des fichiers plats qui seront rapidement indexés pour accélérer les recherches/affichages.

La complexité croissante des applications et l’arrivée des applications clients/serveurs a fait émerger la nécessité d’organiser les données différemment. Les données ont été modélisées, structurées, normalisées et avec ces pratiques la base de données relationnelle c’est imposée. Les SGBD-R (système de gestion de base de données relationnelles) sont accompagnés de leur langage de requête: le SQL (Structured Query Language). Les applications proposent des affichages progressifs des données sur le principe des vues maîtres/détails. L’aspect relationnel de la donnée est dominant et structure la façon de penser et d’utiliser nos applications. La cohérence des données, aussi bien à la lecture qu’à l’écriture, est assurée par le biais de transactions et de contraintes.

A la fin des années 1990, l’Internet s’ouvre au grand public. Les annuaires de sites Web deviennent des moteurs de recherches. Le nombre d’utilisateurs de ces services devient très supérieur au nombre de salariés accédant aux outils informatique d’une entreprise. Les usages ne sont plus localisés à un site géographique ou un à territoire national mais ils sont mondiaux. La capacité de nos infrastructures augmente et les réponses doivent se faire dans l’instant. C’est dans ce contexte que des SGBD qui existaient semblent renaitre commercialement. Ils répondent à des besoins qui se généralisent avec la mondialisation et l’augmentation du volume de données générés par les applications.

Aujourd’hui, NoSQL est un système de gestion de données différents des SGBD-R classiques, dont les objectifs sont :

  • Avoir des temps de réponse très rapides
  • Etre facilement scalable pour :
    • Adapter la taille de la base de données très rapidement
    • Supporter un plus grand nombre d’utilisateur très rapidement
  • Permettre le géo-clustering pour :
    • Rapprocher la donnée de l’utilisateur

Ainsi, les bases NoSQL supportent, généralement, très bien l’ajout ou la suppression de serveurs à chaud dans un cluster de serveurs actifs pour ajuster à la demande la capacité de montée en charge tant au niveau utilisateurs que volume de données.

Au quotidien, nos usages sont baignés de bases NoSQL, par exemple :

De ces exemples, on comprend rapidement qu’à une typologie d’usage, nous avons le choix entre plusieurs moteurs. Chacun proposant des avantages et des inconvénients. Il existe toutefois un premier niveau de classification dont les principales sont :

  • Document, ex : fichiers au format json ou bson
  • Graph, ex : relation entre des personnes
  • Clé/Valeur, ex : cache
  • Colonne
  • Objet

Les SGBD évoluent pour répondre aux différents usages actuels. Le NoSQL n’est pas une finalité en soit ou même le saint graal du stockage/recherche de données. Il s’agit d’un outil à notre disposition, un outil qu’il faut choisir. Comme il est assez difficile de se retrouver dans la jungle des solutions techniques, je vous propose de nous retrouver dans un prochain article pour voir les différentes caractéristiques et cas d’utilisation du NoSQL.

Share